[irqbalance] [RFC][PATCH 3/5] log: added support for systemd-journal loglevels

  • From: Andrej Manduch <amanduch@xxxxxxxxx>
  • To: irqbalance@xxxxxxxxxxxxx
  • Date: Tue, 3 Mar 2015 12:51:44 -0500

Note: It's important to point out that in this commit
      we still don't need systemd-libs or systemd-devel

Signed-off-by: Andrej Manduch <amanduch@xxxxxxxxx>
---
 irqbalance.c | 10 +++++++++-
 irqbalance.h | 25 ++++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/irqbalance.c b/irqbalance.c
index 8057591..60f5411 100644
--- a/irqbalance.c
+++ b/irqbalance.c
@@ -59,6 +59,11 @@ char *banscript = NULL;
 char *polscript = NULL;
 long HZ;
 
+#ifdef HAVE_SYSTEMD
+       char *line_buffer_7ee22e61_f183;
+       char *log_buffer_4c93_8665;
+#endif /* HAVE_SYSTEMD */
+
 static void sleep_approx(int seconds)
 {
        struct timespec ts;
@@ -259,7 +264,10 @@ int main(int argc, char** argv)
        sigaddset(&sigset,SIGUSR1);
        sigaddset(&sigset,SIGUSR2);
        sigprocmask(SIG_BLOCK, &sigset, &old_sigset);
-
+#ifdef HAVE_SYSTEMD
+       line_buffer_7ee22e61_f183 = malloc(sizeof(char) * 2048);
+       log_buffer_4c93_8665 = malloc(sizeof(char) * 2048);
+#endif /* HAVE_SYSTEMD */
 #ifdef HAVE_GETOPT_LONG
        parse_command_line(argc, argv);
 #else /* ! HAVE_GETOPT_LONG */
diff --git a/irqbalance.h b/irqbalance.h
index e6f4f87..c301427 100644
--- a/irqbalance.h
+++ b/irqbalance.h
@@ -60,6 +60,7 @@ enum hp_e {
 };
 
 extern int debug_mode;
+extern int journal_logging;
 extern int one_shot_mode;
 extern int need_rescan;
 extern enum hp_e global_hint_policy;
@@ -136,12 +137,34 @@ static inline void for_each_object(GList *list, void 
(*cb)(struct topo_obj *obj,
 
 extern char * log_indent;
 extern unsigned int log_mask;
+#ifdef HAVE_SYSTEMD
+extern char *line_buffer_7ee22e61_f183;
+extern char *log_buffer_4c93_8665;
+#define log(mask, lvl, fmt, args...) do {                                      
\
+       if (journal_logging) {                                                  
\
+               sprintf(log_buffer_4c93_8665,fmt, ##args);                      
\
+               strcat(line_buffer_7ee22e61_f183, log_buffer_4c93_8665);        
\
+               if 
(line_buffer_7ee22e61_f183[strlen(line_buffer_7ee22e61_f183)-1]\
+                    == '\n' || strlen(line_buffer_7ee22e61_f183) > 256 ) {     
\
+                       printf("<%d>%s", lvl, line_buffer_7ee22e61_f183);       
\
+                       line_buffer_7ee22e61_f183[0] = '\0';                    
\
+                       line_buffer_7ee22e61_f183[0] = '\0';                    
\
+               }                                                               
\
+       } else {                                                                
\
+               if (log_mask & mask & TO_SYSLOG)                                
\
+                       syslog(lvl, fmt, ##args);                               
\
+               if (log_mask & mask & TO_CONSOLE)                               
\
+                       printf(fmt, ##args);                                    
\
+       }                                                                       
\
+}while(0)
+#else /* ! HAVE_SYSTEMD */
 #define log(mask, lvl, fmt, args...) do {\
        if (log_mask & mask & TO_SYSLOG)\
                syslog(lvl, fmt, ##args);\
        if (log_mask & mask & TO_CONSOLE)\
                printf(fmt, ##args);\
 }while(0)
+#endif /* HAVE_SYSTEMD */
 
-#endif
+#endif /* __INCLUDE_GUARD_IRQBALANCE_H_ */
 
-- 
2.1.0


Other related posts:

  • » [irqbalance] [RFC][PATCH 3/5] log: added support for systemd-journal loglevels - Andrej Manduch