Hi guys, my name is Kosta. I've been working for Trimble Inc on 'ptp4l' performance issues. I am proposing the next patch for improving 'ptp4l' performance.
diff --git a/print.h b/print.h index 1723d8a..7e765da 100644 --- a/print.h +++ b/print.h @@ -38,14 +38,32 @@ void print_set_syslog(int value); void print_set_level(int level); void print_set_verbose(int value); -#define pr_emerg(x...) print(LOG_EMERG, x) -#define pr_alert(x...) print(LOG_ALERT, x) -#define pr_crit(x...) print(LOG_CRIT, x) -#define pr_err(x...) print(LOG_ERR, x) -#define pr_warning(x...) print(LOG_WARNING, x) -#define pr_notice(x...) print(LOG_NOTICE, x) -#define pr_info(x...) print(LOG_INFO, x) -#define pr_debug(x...) print(LOG_DEBUG, x) + /* + * Better check print log level before execution of print itself. + * Otherwise all arguments are evaluated and slow down the system. + * e.g. in 'unicast_service.c' unicast_service_clients() + * pid2str() is the killer + * pr_debug("%s wants 0x%x", pid2str(&client->portIdentity), + * client->message_types); + */ + + extern + int print_get_level( void); + + #define PRINT_CL(l, x...) /* PRINT Check Level */ \ + do { \ + if ( print_get_level() >= l) \ + print(l, x); \ + } while (0) + + #define pr_emerg(x...) PRINT_CL(LOG_EMERG, x) + #define pr_alert(x...) PRINT_CL(LOG_ALERT, x) + #define pr_crit(x...) PRINT_CL(LOG_CRIT, x) + #define pr_err(x...) PRINT_CL(LOG_ERR, x) + #define pr_warning(x...) PRINT_CL(LOG_WARNING, x) + #define pr_notice(x...) PRINT_CL(LOG_NOTICE, x) + #define pr_info(x...) PRINT_CL(LOG_INFO, x) + #define pr_debug(x...) PRINT_CL(LOG_DEBUG, x) #define PRINT_RL(l, i, x...) \ do { \ Thanks Kosta
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel