[Openais] [PATCH 2/9] logsys: merge tags into rec_ident

Steven Dake sdake at redhat.com
Wed Jun 17 08:42:06 PDT 2009


Looks good

On Wed, 2009-06-17 at 12:53 +0200, Fabio M. Di Nitto wrote:
> Signed-off-by: Fabio M. Di Nitto <fdinitto at redhat.com>
> ---
> :100644 100644 682d7dd... 4f97dfc... M	exec/logsys.c
> :100644 100644 2e9a337... 9901788... M	exec/main.c
> :100644 100644 5db1fba... 847194a... M	exec/mainconfig.c
> :100644 100644 6705311... 59c8a3e... M	exec/totemnet.c
> :100644 100644 2ea45ff... bb34451... M	exec/totempg.c
> :100644 100644 bcfd68e... 6ad24c2... M	exec/totemrrp.c
> :100644 100644 125a1bc... 19beb42... M	exec/totemsrp.c
> :100644 100644 804df5d... c2fe08a... M	include/corosync/engine/logsys.h
> :100644 100644 7623718... f4e4220... M	test/logsys_s.c
> :100644 100644 58240ff... 268086b... M	test/logsys_t1.c
> :100644 100644 c720a5b... 8cb6095... M	test/logsys_t2.c
> :100644 100644 44e4d02... 1e10201... M	test/logsysbench.c
> :100644 100644 c621f40... 56457ba... M	test/logsysrec.c
> :100644 100644 a8f39f0... e75d239... M	tools/corosync-fplay.c
>  exec/logsys.c                    |  158 +++++++-------------------------------
>  exec/main.c                      |    5 +-
>  exec/mainconfig.c                |   59 --------------
>  exec/totemnet.c                  |    7 +-
>  exec/totempg.c                   |    7 +-
>  exec/totemrrp.c                  |    7 +-
>  exec/totemsrp.c                  |    7 +-
>  include/corosync/engine/logsys.h |  103 ++++++++++---------------
>  test/logsys_s.c                  |    1 -
>  test/logsys_t1.c                 |    1 -
>  test/logsys_t2.c                 |    1 -
>  test/logsysbench.c               |    1 -
>  test/logsysrec.c                 |    1 -
>  tools/corosync-fplay.c           |   66 ++++++++++------
>  14 files changed, 133 insertions(+), 291 deletions(-)
> 
> diff --git a/exec/logsys.c b/exec/logsys.c
> index 682d7dd..4f97dfc 100644
> --- a/exec/logsys.c
> +++ b/exec/logsys.c
> @@ -67,7 +67,7 @@
>  #define MIN(x,y) ((x) < (y) ? (x) : (y))
>  
>  /*
> - * syslog tagnames, priorityanmes, facility names to value mapping
> + * syslog prioritynames, facility names to value mapping
>   * Some C libraries build this in to their headers, but it is non-portable
>   * so logsys supplies its own version.
>   */
> @@ -76,22 +76,6 @@ struct syslog_names {
>  	int c_val;
>  };
>  
> -struct syslog_names tagnames[] =
> -{
> -	{ "log", LOGSYS_TAG_LOG },
> -	{ "enter", LOGSYS_TAG_ENTER },
> -	{ "leave", LOGSYS_TAG_LEAVE },
> -	{ "trace1", LOGSYS_TAG_TRACE1 },
> -	{ "trace2", LOGSYS_TAG_TRACE2 },
> -	{ "trace3", LOGSYS_TAG_TRACE3 },
> -	{ "trace4", LOGSYS_TAG_TRACE4 },
> -	{ "trace5", LOGSYS_TAG_TRACE5 },
> -	{ "trace6", LOGSYS_TAG_TRACE6 },
> -	{ "trace7", LOGSYS_TAG_TRACE7 },
> -	{ "trace8", LOGSYS_TAG_TRACE8 },
> -	{ NULL, -1 }
> -};
> -
>  struct syslog_names prioritynames[] =
>  {
>  	{ "alert", LOG_ALERT },
> @@ -156,7 +140,6 @@ struct logsys_logger {
>  	FILE *logfile_fp;			/* track file descriptor */
>  	unsigned int mode;			/* subsystem mode */
>  	unsigned int debug;			/* debug on|off */
> -	unsigned int tags;			/* trace tags */
>  	int syslog_facility;			/* facility */
>  	int syslog_priority;			/* priority */
>  	int logfile_priority;			/* priority to file */
> @@ -236,23 +219,6 @@ static char *decode_mode(int subsysid, char *buf, size_t buflen)
>  	return buf;
>  }
>  
> -static char *decode_tags(int subsysid, char *buf, size_t buflen)
> -{
> -	unsigned int i;
> -
> -	memset(buf, 0, buflen);
> -
> -	for (i = 0; tagnames[i].c_name != NULL; i++) {
> -		if (logsys_loggers[subsysid].tags & tagnames[i].c_val) {
> -			snprintf(buf+strlen(buf), buflen, "%s,", tagnames[i].c_name);
> -		}
> -	}
> -
> -	memset(buf+strlen(buf)-1,0,1);
> -
> -	return buf;
> -}
> -
>  static const char *decode_debug(int subsysid)
>  {
>  	if (logsys_loggers[subsysid].debug)
> @@ -272,7 +238,6 @@ static const char *decode_status(int subsysid)
>  static void dump_subsys_config(int subsysid)
>  {
>  	char modebuf[1024];
> -	char tagbuf[1024];
>  
>  	fprintf(stderr,
>  		"ID: %d\n"
> @@ -281,7 +246,6 @@ static void dump_subsys_config(int subsysid)
>  		"logfile_fp: %p\n"
>  		"mode: %s\n"
>  		"debug: %s\n"
> -		"tags: %s\n"
>  		"syslog_fac: %s\n"
>  		"syslog_pri: %s\n"
>  		"logfile_pri: %s\n"
> @@ -292,7 +256,6 @@ static void dump_subsys_config(int subsysid)
>  		logsys_loggers[subsysid].logfile_fp,
>  		decode_mode(subsysid, modebuf, sizeof(modebuf)),
>  		decode_debug(subsysid),
> -		decode_tags(subsysid, tagbuf, sizeof(tagbuf)),
>  		logsys_facility_name_get(logsys_loggers[subsysid].syslog_facility),
>  		logsys_priority_name_get(logsys_loggers[subsysid].syslog_priority),
>  		logsys_priority_name_get(logsys_loggers[subsysid].logfile_priority),
> @@ -456,7 +419,7 @@ static void log_printf_to_logs (
>  	const char *function_name,
>  	int file_line,
>  	unsigned int level,
> -	unsigned int tag,
> +	unsigned int rec_ident,
>  	const char *buffer)
>  {
>  	char normal_output_buffer[COMBINE_BUFFER_SIZE];
> @@ -470,21 +433,15 @@ static void log_printf_to_logs (
>  	size_t cutoff;
>  	unsigned int normal_len, syslog_len;
>  	int subsysid;
> -	int c, i, has_tag = 0;
> +	int c;
>  
> -	subsysid = _logsys_config_subsys_get(subsys);
> -	if (subsysid <= - 1) {
> +	if (rec_ident != LOGSYS_RECID_LOG) {
>  		return;
>  	}
>  
> -	for (i = 1; tagnames[i].c_name != NULL; i++) {
> -		if (tag & tagnames[i].c_val) {
> -			if ((logsys_loggers[subsysid].tags & tag) == 0) {
> -				return;
> -			} else {
> -				has_tag = 1;
> -			}
> -		}
> +	subsysid = _logsys_config_subsys_get(subsys);
> +	if (subsysid <= - 1) {
> +		return;
>  	}
>  
>  	while ((c = format_buffer[format_buffer_idx])) {
> @@ -579,7 +536,7 @@ static void log_printf_to_logs (
>  	 */
>  	if ((logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_SYSLOG) &&
>  	     ((level <= logsys_loggers[subsysid].syslog_priority) ||
> -	     (logsys_loggers[subsysid].debug != 0) || (has_tag > 0))) {
> +	     (logsys_loggers[subsysid].debug != 0))) {
>  		syslog (level | logsys_loggers[subsysid].syslog_facility, "%s", syslog_output_buffer);
>  	}
>  
> @@ -595,7 +552,7 @@ static void log_printf_to_logs (
>  	if (((logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_FILE) &&
>  	     (logsys_loggers[subsysid].logfile_fp != NULL)) &&
>  	    ((level <= logsys_loggers[subsysid].logfile_priority) ||
> -	     (logsys_loggers[subsysid].debug != 0) || (has_tag > 0))) {
> +	     (logsys_loggers[subsysid].debug != 0))) {
>  		/*
>  		 * Output to a file
>  		 */
> @@ -627,7 +584,7 @@ static void log_printf_to_logs (
>  	 */
>  	if ((logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_STDERR) &&
>  	     ((level <= logsys_loggers[subsysid].logfile_priority) ||
> -	     (logsys_loggers[subsysid].debug != 0) || (has_tag > 0))) {
> +	     (logsys_loggers[subsysid].debug != 0))) {
>  		if (write (STDERR_FILENO, normal_output_buffer, strlen (normal_output_buffer)) < 0) {
>  			char tmpbuffer[1024];
>  			/*
> @@ -653,7 +610,7 @@ static void record_print (const char *buf)
>  	const int *buf_uint32t = (const int *)buf;
>  	unsigned int rec_size = buf_uint32t[0];
>  	unsigned int level = buf_uint32t[1];
> -	unsigned int tag = buf_uint32t[2];
> +	unsigned int rec_ident = buf_uint32t[2];
>  	unsigned int file_line = buf_uint32t[3];
>  	unsigned int i;
>  	unsigned int words_processed;
> @@ -684,24 +641,24 @@ static void record_print (const char *buf)
>  		(char *)arguments[2],
>  		file_line,
>  		level,
> -		tag,
> +		rec_ident,
>  		(char *)arguments[3]);
>  }
>  
>  static int record_read (char *buf, int rec_idx, int *log_msg) {
>  	unsigned int rec_size;
> +	unsigned int level;
>  	unsigned int rec_ident;
> -	unsigned int tag;
>  	int firstcopy, secondcopy;
>  
>  	rec_size = flt_data[rec_idx];
> -	rec_ident = flt_data[(rec_idx + 1) % flt_data_size];
> -	tag = flt_data[(rec_idx + 2) % flt_data_size];
> +	level = flt_data[(rec_idx + 1) % flt_data_size];
> +	rec_ident = flt_data[(rec_idx + 2) % flt_data_size];
>  
>  	/*
>  	 * Not a log record
>  	 */
> -	if ((tag & LOGSYS_TAG_LOG) == 0) {
> +	if (rec_ident != LOGSYS_RECID_LOG) {
>  		*log_msg = 0;
>          	return ((rec_idx + rec_size) % flt_data_size);
>  	}
> @@ -991,8 +948,7 @@ int _logsys_system_setup(
>  	const char *logfile,
>  	int logfile_priority,
>  	int syslog_facility,
> -	int syslog_priority,
> -	unsigned int tags)
> +	int syslog_priority)
>  {
>  	int i;
>  	const char *errstr;
> @@ -1025,8 +981,6 @@ int _logsys_system_setup(
>  	logsys_loggers[i].syslog_priority = syslog_priority;
>  	syslog_facility_reconf();
>  
> -	logsys_loggers[i].tags = tags;
> -
>  	logsys_loggers[i].init_status = LOGSYS_LOGGER_INIT_DONE;
>  
>  	logsys_system_needs_init = LOGSYS_LOGGER_INIT_DONE;
> @@ -1131,8 +1085,8 @@ void _logsys_log_rec (
>  	const char *function_name,
>  	const char *file_name,
>  	int file_line,
> +	unsigned int level,
>  	unsigned int rec_ident,
> -	unsigned int tag,
>  	...)
>  {
>  	va_list ap;
> @@ -1150,7 +1104,7 @@ void _logsys_log_rec (
>  	/*
>  	 * Decode VA Args
>  	 */
> -	va_start (ap, tag);
> +	va_start (ap, rec_ident);
>  	arguments = 3;
>  	for (;;) {
>  		buf_args[arguments] = va_arg (ap, void *);
> @@ -1193,10 +1147,10 @@ void _logsys_log_rec (
>  	flt_data[idx++] = 0;
>  	idx_word_step(idx);
>  
> -	flt_data[idx++] = rec_ident;
> +	flt_data[idx++] = level;
>  	idx_word_step(idx);
>  
> -	flt_data[idx++] = tag;
> +	flt_data[idx++] = rec_ident;
>  	idx_word_step(idx);
>  
>  	flt_data[idx++] = file_line;
> @@ -1273,7 +1227,7 @@ void _logsys_log_rec (
>  	 * the new head position and commit the new head.
>  	 */
>  	logsys_lock();
> -	if (tag & LOGSYS_TAG_LOG) {
> +	if (rec_ident == LOGSYS_RECID_LOG) {
>  		log_requests_pending += 1;
>  	}
>  	if (log_requests_pending == 0) {
> @@ -1290,7 +1244,7 @@ void _logsys_log_vprintf (
>  	const char *file_name,
>  	int file_line,
>  	unsigned int level,
> -	unsigned int tag,
> +	unsigned int rec_ident,
>  	const char *format,
>  	va_list ap)
>  {
> @@ -1321,7 +1275,7 @@ void _logsys_log_vprintf (
>  		file_name,
>  		file_line,
>  		level,
> -		tag |= LOGSYS_TAG_LOG,
> +		rec_ident,
>  		logsys_print_buffer, len + 1,
>  		LOGSYS_REC_END);
>  
> @@ -1331,7 +1285,7 @@ void _logsys_log_vprintf (
>  		 * expect the worker thread to output the log data once signaled
>  		 */
>  		log_printf_to_logs (logsys_loggers[subsysid].subsys,
> -			file_name, function_name, file_line, level, tag,
> +			file_name, function_name, file_line, level, rec_ident,
>  			logsys_print_buffer);
>  	} else {
>  		/*
> @@ -1347,7 +1301,7 @@ void _logsys_log_printf (
>  	const char *file_name,
>  	int file_line,
>  	unsigned int level,
> -	unsigned int tag,
> +	unsigned int rec_ident,
>  	const char *format,
>  	...)
>  {
> @@ -1355,7 +1309,7 @@ void _logsys_log_printf (
>  
>  	va_start (ap, format);
>  	_logsys_log_vprintf (subsysid, function_name, file_name, file_line,
> -		level, tag, format, ap);
> +		level, rec_ident, format, ap);
>  	va_end (ap);
>  }
>  
> @@ -1415,40 +1369,6 @@ unsigned int logsys_config_mode_get (const char *subsys)
>  	return logsys_loggers[i].mode;
>  }
>  
> -unsigned int logsys_config_tags_set (const char *subsys, unsigned int tags)
> -{
> -	int i;
> -
> -	pthread_mutex_lock (&logsys_config_mutex);
> -	if (subsys != NULL) {
> -		i = _logsys_config_subsys_get_unlocked (subsys);
> -		if (i >= 0) {
> -			logsys_loggers[i].tags = tags;
> -			i = 0;
> -		}
> -	} else {
> -		for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
> -			logsys_loggers[i].tags = tags;
> -		}
> -		i = 0;
> -	}
> -	pthread_mutex_unlock (&logsys_config_mutex);
> -
> -	return i;
> -}
> -
> -unsigned int logsys_config_tags_get (const char *subsys)
> -{
> -	int i;
> -
> -	i = _logsys_config_subsys_get (subsys);
> -	if (i < 0) {
> -		return i;
> -	}
> -
> -	return logsys_loggers[i].tags;
> -}
> -
>  int logsys_config_file_set (
>  		const char *subsys,
>  		const char **error_string,
> @@ -1652,30 +1572,6 @@ const char *logsys_priority_name_get (unsigned int priority)
>  	return (NULL);
>  }
>  
> -int logsys_tag_id_get (const char *name)
> -{
> -	unsigned int i;
> -
> -	for (i = 0; tagnames[i].c_name != NULL; i++) {
> -		if (strcasecmp(name, tagnames[i].c_name) == 0) {
> -			return (tagnames[i].c_val);
> -		}
> -	}
> -	return (-1);
> -}
> -
> -const char *logsys_tag_name_get (unsigned int tag)
> -{
> -	unsigned int i;
> -
> -	for (i = 0; tagnames[i].c_name != NULL; i++) {
> -		if (tag == tagnames[i].c_val) {
> -			return (tagnames[i].c_name);
> -		}
> -	}
> -	return (NULL);
> -}
> -
>  int logsys_thread_priority_set (
>  	int policy,
>  	const struct sched_param *param,
> diff --git a/exec/main.c b/exec/main.c
> index 2e9a337..9901788 100644
> --- a/exec/main.c
> +++ b/exec/main.c
> @@ -90,7 +90,6 @@ LOGSYS_DECLARE_SYSTEM ("corosync",
>  	LOG_INFO,
>  	LOG_DAEMON,
>  	LOG_INFO,
> -	0,
>  	NULL,
>  	1000000);
>  
> @@ -553,14 +552,14 @@ static void ipc_log_printf (const char *format, ...) {
>  	va_start (ap, format);
>  
>  	_logsys_log_vprintf (ipc_subsys_id, __FUNCTION__,
> -		__FILE__, __LINE__, LOGSYS_LEVEL_ERROR, 0, format, ap);
> +		__FILE__, __LINE__, LOGSYS_LEVEL_ERROR, LOGSYS_RECID_LOG, format, ap);
>  
>  	va_end (ap);
>  }
>  
>  static void ipc_fatal_error(const char *error_msg) {
>         _logsys_log_printf (ipc_subsys_id, __FUNCTION__,
> -                __FILE__, __LINE__, LOGSYS_LEVEL_ERROR, 0, "%s", error_msg);
> +                __FILE__, __LINE__, LOGSYS_LEVEL_ERROR, LOGSYS_RECID_LOG, "%s", error_msg);
>  	exit(EXIT_FAILURE);
>  }
>  
> diff --git a/exec/mainconfig.c b/exec/mainconfig.c
> index 5db1fba..847194a 100644
> --- a/exec/mainconfig.c
> +++ b/exec/mainconfig.c
> @@ -251,35 +251,6 @@ parse_error:
>  	return (-1);
>  }
>  
> -static char * strsep_cs(char **stringp, const char *delim)
> -{
> -	char *s;
> -	const char *spanp;
> -	int c, sc;
> -	char *tok;
> -
> -	if ((s = *stringp) == NULL) {
> -		return (NULL);
> -	}
> -
> -	for (tok = s; ; ) {
> -		c = *s++;
> -		spanp = delim;
> -		do {
> -			if ((sc = *spanp++) == c) {
> -				if (c == 0) {
> -					s = NULL;
> -				}
> -				else {
> -					s[-1] = 0;
> -				}
> -				*stringp = s;
> -				return (tok);
> -			}
> -		} while (sc != 0);
> -	}
> -}
> -
>  static int corosync_main_config_set (
>  	struct objdb_iface_ver0 *objdb,
>  	hdb_handle_t object_handle,
> @@ -485,36 +456,6 @@ static int corosync_main_config_set (
>  		}
>  	}
>  
> -	if (!objdb_get_string (objdb, object_handle, "tags", &value)) {
> -		char *temp, *token;
> -		unsigned int tags = 0;
> -
> -		temp = strdup(value);
> -		if (temp == NULL) {
> -			error_reason = "exhausted virtual memory";
> -			goto parse_error;
> -		}
> -
> -		while ((token = strsep_cs(&temp, "|")) != NULL) {
> -			int val;
> -
> -			val = logsys_tag_id_get(token);
> -			if (val < 0) {
> -				error_reason = "bad tags value";
> -				goto parse_error;
> -			}
> -			tags |= val;
> -		}
> -		free(temp);
> -
> -		tags |= LOGSYS_TAG_LOG;
> -
> -		if (logsys_config_tags_set (subsys, tags) < 0) {
> -			error_reason = "unable to set tags";
> -			goto parse_error;
> -		}
> -	}
> -
>  	return (0);
>  
>  parse_error:
> diff --git a/exec/totemnet.c b/exec/totemnet.c
> index 6705311..59c8a3e 100644
> --- a/exec/totemnet.c
> +++ b/exec/totemnet.c
> @@ -56,6 +56,7 @@
>  #include <time.h>
>  #include <sys/time.h>
>  #include <sys/poll.h>
> +#include <limits.h>
>  
>  #include <corosync/sq.h>
>  #include <corosync/list.h>
> @@ -158,7 +159,7 @@ struct totemnet_instance {
>  		const char *function,
>  		const char *file,
>  		int line, unsigned int level,
> -		unsigned int tag,
> +		unsigned int rec_ident,
>  		const char *format,
>  		...)__attribute__((format(printf, 7, 8)));
>  
> @@ -241,11 +242,13 @@ static void totemnet_instance_initialize (struct totemnet_instance *instance)
>  	instance->my_memb_entries = 1;
>  }
>  
> +#define	RECID_LOG UINT_MAX - 1
> +
>  #define log_printf(level, format, args...)				\
>  do {									\
>          instance->totemnet_log_printf (instance->totemnet_subsys_id,	\
>                  __FUNCTION__, __FILE__, __LINE__,			\
> -		level, 0, (const char *)format, ##args);		\
> +		level, RECID_LOG, (const char *)format, ##args);	\
>  } while (0);
>  
> 
> diff --git a/exec/totempg.c b/exec/totempg.c
> index 2ea45ff..bb34451 100644
> --- a/exec/totempg.c
> +++ b/exec/totempg.c
> @@ -92,6 +92,7 @@
>  #include <assert.h>
>  #include <pthread.h>
>  #include <errno.h>
> +#include <limits.h>
>  
>  #include <corosync/swab.h>
>  #include <corosync/hdb.h>
> @@ -159,7 +160,7 @@ static int totempg_log_level_notice;
>  static int totempg_log_level_debug;
>  static int totempg_subsys_id;
>  static void (*totempg_log_printf) (int subsys_id, const char *function,
> -	const char *file, int line, unsigned int level, unsigned int tag,
> +	const char *file, int line, unsigned int level, unsigned int rec_ident,
>  	const char *format, ...) __attribute__((format(printf, 7, 8)));
>  
>  struct totem_config *totempg_totem_config;
> @@ -236,10 +237,12 @@ static pthread_mutex_t callback_token_mutex = PTHREAD_MUTEX_INITIALIZER;
>  
>  static pthread_mutex_t mcast_msg_mutex = PTHREAD_MUTEX_INITIALIZER;
>  
> +#define RECID_LOG UINT_MAX - 1
> +
>  #define log_printf(level, format, args...)				\
>  do {									\
>          totempg_log_printf (totempg_subsys_id, __FUNCTION__,		\
> -		__FILE__, __LINE__, level, 0, format, ##args);		\
> +		__FILE__, __LINE__, level, RECID_LOG, format, ##args);	\
>  } while (0);
>  
>  static int msg_count_send_ok (int msg_count);
> diff --git a/exec/totemrrp.c b/exec/totemrrp.c
> index bcfd68e..6ad24c2 100644
> --- a/exec/totemrrp.c
> +++ b/exec/totemrrp.c
> @@ -56,6 +56,7 @@
>  #include <time.h>
>  #include <sys/time.h>
>  #include <sys/poll.h>
> +#include <limits.h>
>  
>  #include <corosync/sq.h>
>  #include <corosync/list.h>
> @@ -206,7 +207,7 @@ struct totemrrp_instance {
>  	int totemrrp_subsys_id;
>  
>  	void (*totemrrp_log_printf) (int subsys, const char *function,
> -		const char *file, int line, unsigned int level, unsigned int tag,
> +		const char *file, int line, unsigned int level, unsigned int rec_ident,
>  		const char *format, ...)__attribute__((format(printf, 7, 8)));
>  
>  	hdb_handle_t handle;
> @@ -467,11 +468,13 @@ struct rrp_algo *rrp_algos[] = {
>   */
>  DECLARE_HDB_DATABASE (totemrrp_instance_database,NULL);
>  
> +#define RECID_LOG UINT_MAX - 1
> +
>  #define log_printf(level, format, args...)				\
>  do {									\
>  	rrp_instance->totemrrp_log_printf (				\
>  		rrp_instance->totemrrp_subsys_id,			\
> -		__FUNCTION__, __FILE__, __LINE__, level, 0,		\
> +		__FUNCTION__, __FILE__, __LINE__, level, RECID_LOG,	\
>  		format, ##args);					\
>  } while (0);
>  
> diff --git a/exec/totemsrp.c b/exec/totemsrp.c
> index 125a1bc..19beb42 100644
> --- a/exec/totemsrp.c
> +++ b/exec/totemsrp.c
> @@ -69,6 +69,7 @@
>  #include <time.h>
>  #include <sys/time.h>
>  #include <sys/poll.h>
> +#include <limits.h>
>  
>  #include <corosync/swab.h>
>  #include <corosync/cs_queue.h>
> @@ -435,7 +436,7 @@ struct totemsrp_instance {
>  
>  	void (*totemsrp_log_printf) (int subsys,
>  		const char *function, const char *file,
> -		int line, unsigned int level, unsigned int tag,
> +		int line, unsigned int level, unsigned int rec_ident,
>  		const char *format, ...)__attribute__((format(printf, 7, 8)));;
>  
>  	enum memb_state memb_state;
> @@ -621,10 +622,12 @@ struct message_handlers totemsrp_message_handlers = {
>  
>  static const char *rundir = NULL;
>  
> +#define RECID_LOG UINT_MAX - 1
> +
>  #define log_printf(level, format, args...)				\
>  do {									\
>  	instance->totemsrp_log_printf (instance->totemsrp_subsys_id,	\
> -		__FUNCTION__, __FILE__, __LINE__, level, 0,		\
> +		__FUNCTION__, __FILE__, __LINE__, level, RECID_LOG,	\
>  		format, ##args);					\
>  } while (0);
>  
> diff --git a/include/corosync/engine/logsys.h b/include/corosync/engine/logsys.h
> index 804df5d..c2fe08a 100644
> --- a/include/corosync/engine/logsys.h
> +++ b/include/corosync/engine/logsys.h
> @@ -41,6 +41,7 @@
>  #include <stdlib.h>
>  #include <syslog.h>
>  #include <pthread.h>
> +#include <limits.h>
>  
>  #ifdef __cplusplus
>  extern "C" {
> @@ -70,32 +71,24 @@ extern "C" {
>  #define LOGSYS_LEVEL_DEBUG		LOG_DEBUG
>  
>  /*
> - * All of the LOGSYS_TAG's can be ORed together for combined behavior
> + * All of the LOGSYS_RECID's are mutually exclusive. Only one RECID at any time
> + * can be specified.
>   *
> - * TAG_LOG controls the behaviour for tracing and it's mostly for internal
> - * use only. Enable it to see tracing messages in normal log output.
> - * Disable to record tracing only in the flight recorder.
> - * logging via log_printf will set TAG_LOG automatically.
> - *
> - * ENTER/LEAVE/TRACE* will not set TAG_LOG.
> - *
> - * All tracing messages have priority set to LOGSYS_LEVEL_DEBUG and cannot
> - * be changed.
> - *
> - * Enabling output for debug will not enable logging of tracing messages
> - * automatically. Tracing has to be enabled explicitly.
> + * RECID_LOG indicates a message that should be sent to log. Anything else
> + * is stored only in the flight recorder.
>   */
> -#define LOGSYS_TAG_LOG			(1<<0)
> -#define LOGSYS_TAG_ENTER		(1<<1)
> -#define LOGSYS_TAG_LEAVE		(1<<2)
> -#define LOGSYS_TAG_TRACE1		(1<<3)
> -#define LOGSYS_TAG_TRACE2		(1<<4)
> -#define LOGSYS_TAG_TRACE3		(1<<5)
> -#define LOGSYS_TAG_TRACE4		(1<<6)
> -#define LOGSYS_TAG_TRACE5		(1<<7)
> -#define LOGSYS_TAG_TRACE6		(1<<8)
> -#define LOGSYS_TAG_TRACE7		(1<<9)
> -#define LOGSYS_TAG_TRACE8		(1<<10)
> +#define LOGSYS_RECID_LOG		UINT_MAX - 1
> +#define LOGSYS_RECID_ENTER		UINT_MAX - 2
> +#define LOGSYS_RECID_LEAVE		UINT_MAX - 3
> +#define LOGSYS_RECID_TRACE1		UINT_MAX - 4
> +#define LOGSYS_RECID_TRACE2		UINT_MAX - 5
> +#define LOGSYS_RECID_TRACE3		UINT_MAX - 6
> +#define LOGSYS_RECID_TRACE4		UINT_MAX - 7
> +#define LOGSYS_RECID_TRACE5		UINT_MAX - 8
> +#define LOGSYS_RECID_TRACE6		UINT_MAX - 9
> +#define LOGSYS_RECID_TRACE7		UINT_MAX - 10
> +#define LOGSYS_RECID_TRACE8		UINT_MAX - 11
> +
>  
>  /*
>   * Internal APIs that must be globally exported
> @@ -118,8 +111,7 @@ extern int _logsys_system_setup(
>  	const char *logfile,
>  	int logfile_priority,
>  	int syslog_facility,
> -	int syslog_priority,
> -	unsigned int tags);
> +	int syslog_priority);
>  
>  extern int _logsys_config_subsys_get (
>  	const char *subsys);
> @@ -134,7 +126,7 @@ extern void _logsys_log_vprintf (
>  	const char *file_name,
>  	int file_line,
>  	unsigned int level,
> -	unsigned int tag,
> +	unsigned int rec_ident,
>  	const char *format,
>  	va_list ap) __attribute__((format(printf, 7, 0)));
>  
> @@ -144,7 +136,7 @@ extern void _logsys_log_printf (
>  	const char *file_name,
>  	int file_line,
>  	unsigned int level,
> -	unsigned int tag,
> +	unsigned int rec_ident,
>  	const char *format,
>  	...) __attribute__((format(printf, 7, 8)));
>  
> @@ -153,8 +145,8 @@ extern void _logsys_log_rec (
>  	const char *function_name,
>  	const char *file_name,
>  	int file_line,
> +	unsigned int level,
>  	unsigned int rec_ident,
> -	unsigned int tag,
>  	...);
>  
>  extern int _logsys_wthread_create (void);
> @@ -215,13 +207,6 @@ extern unsigned int logsys_config_mode_set (
>  extern unsigned int logsys_config_mode_get (
>  	const char *subsys);
>  
> -extern unsigned int logsys_config_tags_set (
> -	const char *subsys,
> -	unsigned int tags);
> -
> -extern unsigned int logsys_config_tags_get (
> -	const char *subsys);
> -
>  /*
>   * to close a logfile, just invoke this function with a NULL
>   * file or if you want to change logfile, the old one will
> @@ -248,7 +233,7 @@ extern unsigned int logsys_config_debug_set (
>  /*
>   * External API - helpers
>   *
> - * convert facility/priority/tag to/from name/values
> + * convert facility/priority to/from name/values
>   */
>  extern int logsys_facility_id_get (
>  	const char *name);
> @@ -262,12 +247,6 @@ extern int logsys_priority_id_get (
>  extern const char *logsys_priority_name_get (
>  	unsigned int priority);
>  
> -extern int logsys_tag_id_get (
> -	const char *name);
> -
> -extern const char *logsys_tag_name_get (
> -	unsigned int tag);
> -
>  extern int logsys_thread_priority_set (
>  	int policy,
>  	const struct sched_param *param,
> @@ -281,12 +260,12 @@ extern void *logsys_rec_end;
>  #define LOGSYS_REC_END (&logsys_rec_end)
>  
>  #define LOGSYS_DECLARE_SYSTEM(name,mode,debug,file,file_priority,	\
> -		syslog_facility,syslog_priority,tags,format,rec_size)	\
> +		syslog_facility,syslog_priority,format,rec_size)	\
>  __attribute__ ((constructor))						\
>  static void logsys_system_init (void)					\
>  {									\
>  	if (_logsys_system_setup (name,mode,debug,file,file_priority,	\
> -			syslog_facility,syslog_priority,tags) < 0) {	\
> +			syslog_facility,syslog_priority) < 0) {		\
>  		fprintf (stderr,					\
>  			"Unable to setup logging system: %s.\n", name);	\
>  		exit (-1);						\
> @@ -327,75 +306,75 @@ static void logsys_subsys_init (void)					\
>  #define log_rec(rec_ident, args...)					\
>  do {									\
>  	_logsys_log_rec (logsys_subsys_id,  __FUNCTION__,		\
> -		__FILE__,  __LINE__, rec_ident, 0, ##args);		\
> +		__FILE__,  __LINE__, rec_ident, 0, ##args,		\
> +		LOGSYS_REC_END);					\
>  } while(0)
>  
> -#define log_printf(lvl, format, args...)				\
> +#define log_printf(level, format, args...)				\
>   do {									\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
> -		__FILE__, __LINE__, lvl, 0, format, ##args);		\
> +		__FILE__, __LINE__, level, LOGSYS_RECID_LOG,		\
> +		format, ##args);					\
>  } while(0)
>  
>  #define ENTER() do {							\
> -	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
> +	_logsys_log_rec (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG, 		\
> -		LOGSYS_TAG_ENTER, "ENTERING function [%s] line [%d]\n", \
> -		__FUNCTION__, __LINE__);				\
> +		LOGSYS_RECID_ENTER, LOGSYS_REC_END);			\
>  } while(0)
>  
>  #define LEAVE() do {							\
> -	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
> +	_logsys_log_rec (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_LEAVE, "LEAVING function [%s] line [%d]\n",	\
> -		__FUNCTION__, __LINE__);				\
> +		LOGSYS_RECID_LEAVE, LOGSYS_REC_END);			\
>  } while(0)
>  
>  #define TRACE1(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG, 		\
> -		LOGSYS_TAG_TRACE1, format, ##args);			\
> +		LOGSYS_RECID_TRACE1, format, ##args);			\
>  } while(0)
>  
>  #define TRACE2(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE2, format, ##args);			\
> +		LOGSYS_RECID_TRACE2, format, ##args);			\
>  } while(0)
>  
>  #define TRACE3(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE3, format, ##args);			\
> +		LOGSYS_RECID_TRACE3, format, ##args);			\
>  } while(0)
>  
>  #define TRACE4(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE4, format, ##args);			\
> +		LOGSYS_RECID_TRACE4, format, ##args);			\
>  } while(0)
>  
>  #define TRACE5(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE5, format, ##args);			\
> +		LOGSYS_RECID_TRACE5, format, ##args);			\
>  } while(0)
>  
>  #define TRACE6(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE6, format, ##args);			\
> +		LOGSYS_RECID_TRACE6, format, ##args);			\
>  } while(0)
>  
>  #define TRACE7(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE7, format, ##args);			\
> +		LOGSYS_RECID_TRACE7, format, ##args);			\
>  } while(0)
>  
>  #define TRACE8(format, args...) do {					\
>  	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
>  		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
> -		LOGSYS_TAG_TRACE8, format, ##args);			\
> +		LOGSYS_RECID_TRACE8, format, ##args);			\
>  } while(0)
>  
>  #ifdef __cplusplus
> diff --git a/test/logsys_s.c b/test/logsys_s.c
> index 7623718..f4e4220 100644
> --- a/test/logsys_s.c
> +++ b/test/logsys_s.c
> @@ -46,7 +46,6 @@ LOGSYS_DECLARE_SYSTEM ("logsystestsubsystems",
>  	LOGSYS_LEVEL_INFO,
>  	LOG_DAEMON,
>  	LOGSYS_LEVEL_INFO,
> -	0,
>  	NULL,
>  	1000000);
>  
> diff --git a/test/logsys_t1.c b/test/logsys_t1.c
> index 58240ff..268086b 100644
> --- a/test/logsys_t1.c
> +++ b/test/logsys_t1.c
> @@ -46,7 +46,6 @@ LOGSYS_DECLARE_SYSTEM ("logsystestNOsubsystems",
>  	LOGSYS_LEVEL_DEBUG,
>  	LOG_DAEMON,
>  	LOGSYS_LEVEL_DEBUG,
> -	0,
>  	NULL,
>  	1000000);
>  
> diff --git a/test/logsys_t2.c b/test/logsys_t2.c
> index c720a5b..8cb6095 100644
> --- a/test/logsys_t2.c
> +++ b/test/logsys_t2.c
> @@ -46,7 +46,6 @@ LOGSYS_DECLARE_SYSTEM ("logtest_t2",
>  	LOGSYS_LEVEL_INFO,
>  	LOG_DAEMON,
>  	LOGSYS_LEVEL_INFO,
> -	0,
>  	NULL,
>  	1000000);
>  
> diff --git a/test/logsysbench.c b/test/logsysbench.c
> index 44e4d02..1e10201 100644
> --- a/test/logsysbench.c
> +++ b/test/logsysbench.c
> @@ -48,7 +48,6 @@ LOGSYS_DECLARE_SYSTEM ("logtest_rec",
>  	LOGSYS_LEVEL_INFO,   /* logfile_priority */
>  	LOG_DAEMON,       /* syslog facility */
>  	LOGSYS_LEVEL_INFO,   /* syslog level */
> -	0,                /* tags */
>  	NULL,             /* use default format */
>  	1000000);         /* flight recorder size */
>  
> diff --git a/test/logsysrec.c b/test/logsysrec.c
> index c621f40..56457ba 100644
> --- a/test/logsysrec.c
> +++ b/test/logsysrec.c
> @@ -45,7 +45,6 @@ LOGSYS_DECLARE_SYSTEM ("logtest_rec",
>  	LOG_INFO,
>  	LOG_DAEMON,
>  	LOG_INFO,
> -	0,
>  	NULL,
>  	100000);
>  
> diff --git a/tools/corosync-fplay.c b/tools/corosync-fplay.c
> index a8f39f0..e75d239 100644
> --- a/tools/corosync-fplay.c
> +++ b/tools/corosync-fplay.c
> @@ -370,7 +370,7 @@ static void logsys_rec_print (const void *record)
>  	const unsigned int *buf_uint32t = record;
>  	unsigned int rec_size;
>  	unsigned int rec_ident;
> -	unsigned int tag;
> +	unsigned int level;
>  	unsigned int line;
>  	unsigned int arg_size_idx;
>  	unsigned int i;
> @@ -383,8 +383,8 @@ static void logsys_rec_print (const void *record)
>  	int arg_count = 0;
>  
>  	rec_size = buf_uint32t[rec_idx];
> -	rec_ident = buf_uint32t[rec_idx+1];
> -	tag = buf_uint32t[rec_idx+2];
> +	level = buf_uint32t[rec_idx+1];
> +	rec_ident = buf_uint32t[rec_idx+2];
>  	line = buf_uint32t[rec_idx+3];
>  	record_number = buf_uint32t[rec_idx+4];
>  
> @@ -405,31 +405,51 @@ static void logsys_rec_print (const void *record)
>  			for (j = 0; j < printer_subsystems[i].record_printers_count; j++) {
>  				if (rec_ident == printer_subsystems[i].record_printers[j].ident) {
>  				  printer_subsystems[i].record_printers[j].print_fn ((const void **)&arguments[3]);
> -					found = 1;
> +					return;
>  				}
>  			}
>  		}
>  	}
> -	if (tag & LOGSYS_TAG_ENTER) {
> -		printf ("ENTERING function [%s] line [%d]\n", arguments[2], line);
> -		found = 1;
> -	}
> -	if (tag & LOGSYS_TAG_LEAVE) {
> -		printf ("LEAVING function [%s] line [%d]\n", arguments[2], line);
> -		found = 1;
> -	}
> -	if (found == 1) {
> -		tag &= ~LOGSYS_TAG_LOG;
> -	}
> -	if (tag & LOGSYS_TAG_LOG) {
> -		printf ("Log Message=%s\n", arguments[3]);
> -		found = 1;
> -	}
> -	if (found == 0) {
> -		printf ("Unknown record type found subsys=[%s] ident=[%d]\n",
> -			arguments[0], rec_ident);
> -	}
>  
> +	switch(rec_ident) {
> +		case LOGSYS_RECID_LOG:
> +			printf ("Log Message=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_ENTER:
> +			printf ("ENTERING function [%s] line [%d]\n", arguments[2], line);
> +			break;
> +		case LOGSYS_RECID_LEAVE:
> +			printf ("LEAVING function [%s] line [%d]\n", arguments[2], line);
> +			break;
> +		case LOGSYS_RECID_TRACE1:
> +			printf ("Tracing(1) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE2:
> +			printf ("Tracing(2) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE3:
> +			printf ("Tracing(3) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE4:
> +			printf ("Tracing(4) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE5:
> +			printf ("Tracing(5) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE6:
> +			printf ("Tracing(6) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE7:
> +			printf ("Tracing(7) Messsage=%s\n", arguments[3]);
> +			break;
> +		case LOGSYS_RECID_TRACE8:
> +			printf ("Tracing(8) Messsage=%s\n", arguments[3]);
> +			break;
> +		default:
> +			printf ("Unknown record type found subsys=[%s] ident=[%d]\n",
> +				arguments[0], rec_ident);
> +			break;
> +	}
>  #ifdef COMPILE_OUT
>  printf ("\n");
>  #endif



More information about the Openais mailing list