Просмотр исходного кода

logsys: port to new packed rec_ident version


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2250 fd59a12c-fef9-0310-b244-a6a79926bd2f
Fabio M. Di Nitto 16 лет назад
Родитель
Сommit
6d5ce092a1
10 измененных файлов с 164 добавлено и 146 удалено
  1. 47 53
      exec/logsys.c
  2. 12 4
      exec/main.c
  3. 9 6
      exec/totemnet.c
  4. 11 5
      exec/totempg.c
  5. 11 6
      exec/totemrrp.c
  6. 12 7
      exec/totemsrp.c
  7. 40 46
      include/corosync/engine/logsys.h
  8. 7 9
      include/corosync/totem/totem.h
  9. 6 2
      test/logsysrec.c
  10. 9 8
      tools/corosync-fplay.c

+ 47 - 53
exec/logsys.c

@@ -414,12 +414,10 @@ static inline int strcpy_cutoff (char *dest, const char *src, size_t cutoff,
  * any number between % and character specify field length to pad or chop
  * any number between % and character specify field length to pad or chop
 */
 */
 static void log_printf_to_logs (
 static void log_printf_to_logs (
-	const char *subsys,
+	unsigned int rec_ident,
 	const char *file_name,
 	const char *file_name,
 	const char *function_name,
 	const char *function_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	const char *buffer)
 	const char *buffer)
 {
 {
 	char normal_output_buffer[COMBINE_BUFFER_SIZE];
 	char normal_output_buffer[COMBINE_BUFFER_SIZE];
@@ -433,16 +431,15 @@ static void log_printf_to_logs (
 	size_t cutoff;
 	size_t cutoff;
 	unsigned int normal_len, syslog_len;
 	unsigned int normal_len, syslog_len;
 	int subsysid;
 	int subsysid;
+	unsigned int level;
 	int c;
 	int c;
 
 
-	if (rec_ident != LOGSYS_RECID_LOG) {
+	if (LOGSYS_DECODE_RECID(rec_ident) != LOGSYS_RECID_LOG) {
 		return;
 		return;
 	}
 	}
 
 
-	subsysid = _logsys_config_subsys_get(subsys);
-	if (subsysid <= - 1) {
-		return;
-	}
+	subsysid = LOGSYS_DECODE_SUBSYSID(rec_ident);
+	level = LOGSYS_DECODE_LEVEL(rec_ident);
 
 
 	while ((c = format_buffer[format_buffer_idx])) {
 	while ((c = format_buffer[format_buffer_idx])) {
 		cutoff = 0;
 		cutoff = 0;
@@ -463,8 +460,8 @@ static void log_printf_to_logs (
 
 
 			switch (format_buffer[format_buffer_idx]) {
 			switch (format_buffer[format_buffer_idx]) {
 				case 's':
 				case 's':
-					normal_p = subsys;
-					syslog_p = subsys;
+					normal_p = logsys_loggers[subsysid].subsys;
+					syslog_p = logsys_loggers[subsysid].subsys;
 					break;
 					break;
 
 
 				case 'n':
 				case 'n':
@@ -573,9 +570,13 @@ static void log_printf_to_logs (
 			logsys_close_logfile(subsysid);
 			logsys_close_logfile(subsysid);
 			logsys_loggers[subsysid].mode &= ~LOGSYS_MODE_OUTPUT_FILE;
 			logsys_loggers[subsysid].mode &= ~LOGSYS_MODE_OUTPUT_FILE;
 			pthread_mutex_unlock (&logsys_config_mutex);
 			pthread_mutex_unlock (&logsys_config_mutex);
-			log_printf_to_logs(logsys_loggers[subsysid].subsys,
+			log_printf_to_logs(
+					   LOGSYS_ENCODE_RECID(
+						LOGSYS_LEVEL_EMERG,
+						subsysid,
+						LOGSYS_RECID_LOG),
 					   __FILE__, __FUNCTION__, __LINE__,
 					   __FILE__, __FUNCTION__, __LINE__,
-					   LOGSYS_LEVEL_EMERG, 0, tmpbuffer);
+					   tmpbuffer);
 		}
 		}
 	}
 	}
 
 
@@ -598,9 +599,13 @@ static void log_printf_to_logs (
 			snprintf(tmpbuffer, sizeof(tmpbuffer),
 			snprintf(tmpbuffer, sizeof(tmpbuffer),
 				"LOGSYS EMERGENCY: %s Unable to write to STDERR.",
 				"LOGSYS EMERGENCY: %s Unable to write to STDERR.",
 				logsys_loggers[subsysid].subsys);
 				logsys_loggers[subsysid].subsys);
-			log_printf_to_logs(logsys_loggers[subsysid].subsys,
-				__FILE__, __FUNCTION__, __LINE__,
-				LOGSYS_LEVEL_EMERG, 0, tmpbuffer);
+			log_printf_to_logs(
+					   LOGSYS_ENCODE_RECID(
+						LOGSYS_LEVEL_EMERG,
+						subsysid,
+						LOGSYS_RECID_LOG),
+					   __FILE__, __FUNCTION__, __LINE__,
+					   tmpbuffer);
 		}
 		}
 	}
 	}
 }
 }
@@ -609,17 +614,16 @@ static void record_print (const char *buf)
 {
 {
 	const int *buf_uint32t = (const int *)buf;
 	const int *buf_uint32t = (const int *)buf;
 	unsigned int rec_size = buf_uint32t[0];
 	unsigned int rec_size = buf_uint32t[0];
-	unsigned int level = buf_uint32t[1];
-	unsigned int rec_ident = buf_uint32t[2];
-	unsigned int file_line = buf_uint32t[3];
+	unsigned int rec_ident = buf_uint32t[1];
+	unsigned int file_line = buf_uint32t[2];
 	unsigned int i;
 	unsigned int i;
 	unsigned int words_processed;
 	unsigned int words_processed;
 	unsigned int arg_size_idx;
 	unsigned int arg_size_idx;
 	const void *arguments[64];
 	const void *arguments[64];
 	unsigned int arg_count;
 	unsigned int arg_count;
 
 
-	arg_size_idx = 5;
-	words_processed = 5;
+	arg_size_idx = 4;
+	words_processed = 4;
 	arg_count = 0;
 	arg_count = 0;
 
 
 	for (i = 0; words_processed < rec_size; i++) {
 	for (i = 0; words_processed < rec_size; i++) {
@@ -636,29 +640,25 @@ static void record_print (const char *buf)
 	 */
 	 */
 
 
 	log_printf_to_logs (
 	log_printf_to_logs (
-		(char *)arguments[0],
+		rec_ident,
 		(char *)arguments[1],
 		(char *)arguments[1],
 		(char *)arguments[2],
 		(char *)arguments[2],
 		file_line,
 		file_line,
-		level,
-		rec_ident,
 		(char *)arguments[3]);
 		(char *)arguments[3]);
 }
 }
 
 
 static int record_read (char *buf, int rec_idx, int *log_msg) {
 static int record_read (char *buf, int rec_idx, int *log_msg) {
 	unsigned int rec_size;
 	unsigned int rec_size;
-	unsigned int level;
 	unsigned int rec_ident;
 	unsigned int rec_ident;
 	int firstcopy, secondcopy;
 	int firstcopy, secondcopy;
 
 
 	rec_size = flt_data[rec_idx];
 	rec_size = flt_data[rec_idx];
-	level = flt_data[(rec_idx + 1) % flt_data_size];
-	rec_ident = flt_data[(rec_idx + 2) % flt_data_size];
+	rec_ident = flt_data[(rec_idx + 1) % flt_data_size];
 
 
 	/*
 	/*
 	 * Not a log record
 	 * Not a log record
 	 */
 	 */
-	if (rec_ident != LOGSYS_RECID_LOG) {
+	if (LOGSYS_DECODE_RECID(rec_ident) != LOGSYS_RECID_LOG) {
 		*log_msg = 0;
 		*log_msg = 0;
         	return ((rec_idx + rec_size) % flt_data_size);
         	return ((rec_idx + rec_size) % flt_data_size);
 	}
 	}
@@ -1081,12 +1081,10 @@ int _logsys_rec_init (unsigned int size)
  */
  */
 
 
 void _logsys_log_rec (
 void _logsys_log_rec (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	...)
 	...)
 {
 {
 	va_list ap;
 	va_list ap;
@@ -1098,13 +1096,16 @@ void _logsys_log_rec (
 	unsigned int record_reclaim_size;
 	unsigned int record_reclaim_size;
 	unsigned int index_start;
 	unsigned int index_start;
 	int words_written;
 	int words_written;
+	int subsysid;
 
 
 	record_reclaim_size = 0;
 	record_reclaim_size = 0;
 
 
+	subsysid = LOGSYS_DECODE_SUBSYSID(rec_ident);
+
 	/*
 	/*
 	 * Decode VA Args
 	 * Decode VA Args
 	 */
 	 */
-	va_start (ap, rec_ident);
+	va_start (ap, file_line);
 	arguments = 3;
 	arguments = 3;
 	for (;;) {
 	for (;;) {
 		buf_args[arguments] = va_arg (ap, void *);
 		buf_args[arguments] = va_arg (ap, void *);
@@ -1139,7 +1140,7 @@ void _logsys_log_rec (
 	/*
 	/*
 	 * Reclaim data needed for record including 4 words for the header
 	 * Reclaim data needed for record including 4 words for the header
 	 */
 	 */
-	records_reclaim (idx, record_reclaim_size + 5);
+	records_reclaim (idx, record_reclaim_size + 4);
 
 
 	/*
 	/*
 	 * Write record size of zero and rest of header information
 	 * Write record size of zero and rest of header information
@@ -1147,9 +1148,6 @@ void _logsys_log_rec (
 	flt_data[idx++] = 0;
 	flt_data[idx++] = 0;
 	idx_word_step(idx);
 	idx_word_step(idx);
 
 
-	flt_data[idx++] = level;
-	idx_word_step(idx);
-
 	flt_data[idx++] = rec_ident;
 	flt_data[idx++] = rec_ident;
 	idx_word_step(idx);
 	idx_word_step(idx);
 
 
@@ -1227,7 +1225,7 @@ void _logsys_log_rec (
 	 * the new head position and commit the new head.
 	 * the new head position and commit the new head.
 	 */
 	 */
 	logsys_lock();
 	logsys_lock();
-	if (rec_ident == LOGSYS_RECID_LOG) {
+	if (LOGSYS_DECODE_RECID(rec_ident) == LOGSYS_RECID_LOG) {
 		log_requests_pending += 1;
 		log_requests_pending += 1;
 	}
 	}
 	if (log_requests_pending == 0) {
 	if (log_requests_pending == 0) {
@@ -1239,21 +1237,20 @@ void _logsys_log_rec (
 }
 }
 
 
 void _logsys_log_vprintf (
 void _logsys_log_vprintf (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	const char *format,
 	const char *format,
 	va_list ap)
 	va_list ap)
 {
 {
 	char logsys_print_buffer[COMBINE_BUFFER_SIZE];
 	char logsys_print_buffer[COMBINE_BUFFER_SIZE];
 	unsigned int len;
 	unsigned int len;
+	unsigned int level;
+	int subsysid;
 
 
-	if (subsysid <= -1) {
-		subsysid = LOGSYS_MAX_SUBSYS_COUNT;
-	}
+	subsysid = LOGSYS_DECODE_SUBSYSID(rec_ident);
+	level = LOGSYS_DECODE_LEVEL(rec_ident);
 
 
 	if ((level > logsys_loggers[subsysid].syslog_priority) &&
 	if ((level > logsys_loggers[subsysid].syslog_priority) &&
 	    (level > logsys_loggers[subsysid].logfile_priority) &&
 	    (level > logsys_loggers[subsysid].logfile_priority) &&
@@ -1270,12 +1267,11 @@ void _logsys_log_vprintf (
 	/*
 	/*
 	 * Create a log record
 	 * Create a log record
 	 */
 	 */
-	_logsys_log_rec (subsysid,
+	_logsys_log_rec (
+		rec_ident,
 		function_name,
 		function_name,
 		file_name,
 		file_name,
 		file_line,
 		file_line,
-		level,
-		rec_ident,
 		logsys_print_buffer, len + 1,
 		logsys_print_buffer, len + 1,
 		LOGSYS_REC_END);
 		LOGSYS_REC_END);
 
 
@@ -1284,9 +1280,9 @@ void _logsys_log_vprintf (
 		 * Output (and block) if the log mode is not threaded otherwise
 		 * Output (and block) if the log mode is not threaded otherwise
 		 * expect the worker thread to output the log data once signaled
 		 * 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, rec_ident,
-			logsys_print_buffer);
+		log_printf_to_logs (rec_ident,
+				    file_name, function_name, file_line,
+				    logsys_print_buffer);
 	} else {
 	} else {
 		/*
 		/*
 		 * Signal worker thread to display logging output
 		 * Signal worker thread to display logging output
@@ -1296,20 +1292,18 @@ void _logsys_log_vprintf (
 }
 }
 
 
 void _logsys_log_printf (
 void _logsys_log_printf (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	const char *format,
 	const char *format,
 	...)
 	...)
 {
 {
 	va_list ap;
 	va_list ap;
 
 
 	va_start (ap, format);
 	va_start (ap, format);
-	_logsys_log_vprintf (subsysid, function_name, file_name, file_line,
-		level, rec_ident, format, ap);
+	_logsys_log_vprintf (rec_ident, function_name, file_name, file_line,
+		format, ap);
 	va_end (ap);
 	va_end (ap);
 }
 }
 
 

+ 12 - 4
exec/main.c

@@ -551,15 +551,23 @@ static void ipc_log_printf (const char *format, ...) {
 
 
 	va_start (ap, format);
 	va_start (ap, format);
 
 
-	_logsys_log_vprintf (ipc_subsys_id, __FUNCTION__,
-		__FILE__, __LINE__, LOGSYS_LEVEL_ERROR, LOGSYS_RECID_LOG, format, ap);
+	_logsys_log_vprintf (
+		LOGSYS_ENCODE_RECID(ipc_subsys_id,
+				    LOGSYS_LEVEL_ERROR,
+				    LOGSYS_RECID_LOG),
+		__FUNCTION__, __FILE__, __LINE__,
+		format, ap);
 
 
 	va_end (ap);
 	va_end (ap);
 }
 }
 
 
 static void ipc_fatal_error(const char *error_msg) {
 static void ipc_fatal_error(const char *error_msg) {
-       _logsys_log_printf (ipc_subsys_id, __FUNCTION__,
-                __FILE__, __LINE__, LOGSYS_LEVEL_ERROR, LOGSYS_RECID_LOG, "%s", error_msg);
+       _logsys_log_printf (
+		LOGSYS_ENCODE_RECID(ipc_subsys_id,
+				    LOGSYS_LEVEL_ERROR,
+				    LOGSYS_RECID_LOG),
+		__FUNCTION__, __FILE__, __LINE__,
+                "%s", error_msg);
 	exit(EXIT_FAILURE);
 	exit(EXIT_FAILURE);
 }
 }
 
 

+ 9 - 6
exec/totemnet.c

@@ -157,13 +157,13 @@ struct totemnet_instance {
 
 
 	int totemnet_subsys_id;
 	int totemnet_subsys_id;
 
 
-	void (*totemnet_log_printf) (int subsys,
+	void (*totemnet_log_printf) (
+		unsigned int rec_ident,
 		const char *function,
 		const char *function,
 		const char *file,
 		const char *file,
-		int line, unsigned int level,
-		unsigned int rec_ident,
+		int line,
 		const char *format,
 		const char *format,
-		...)__attribute__((format(printf, 7, 8)));
+		...)__attribute__((format(printf, 5, 6)));
 
 
 	hdb_handle_t handle;
 	hdb_handle_t handle;
 
 
@@ -246,9 +246,12 @@ static void totemnet_instance_initialize (struct totemnet_instance *instance)
 
 
 #define log_printf(level, format, args...)				\
 #define log_printf(level, format, args...)				\
 do {									\
 do {									\
-        instance->totemnet_log_printf (instance->totemnet_subsys_id,	\
+        instance->totemnet_log_printf (					\
+		LOGSYS_ENCODE_RECID(level,				\
+				    instance->totemnet_subsys_id,	\
+				    LOGSYS_RECID_LOG),			\
                 __FUNCTION__, __FILE__, __LINE__,			\
                 __FUNCTION__, __FILE__, __LINE__,			\
-		level, LOGSYS_RECID_LOG, (const char *)format, ##args);	\
+		(const char *)format, ##args);				\
 } while (0);
 } while (0);
 
 
 
 

+ 11 - 5
exec/totempg.c

@@ -161,9 +161,12 @@ static int totempg_log_level_warning;
 static int totempg_log_level_notice;
 static int totempg_log_level_notice;
 static int totempg_log_level_debug;
 static int totempg_log_level_debug;
 static int totempg_subsys_id;
 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 rec_ident,
-	const char *format, ...) __attribute__((format(printf, 7, 8)));
+static void (*totempg_log_printf) (
+	unsigned int rec_ident,
+	const char *function,
+	const char *file,
+	int line,
+	const char *format, ...) __attribute__((format(printf, 5, 6)));
 
 
 struct totem_config *totempg_totem_config;
 struct totem_config *totempg_totem_config;
 
 
@@ -241,8 +244,11 @@ static pthread_mutex_t mcast_msg_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 
 #define log_printf(level, format, args...)				\
 #define log_printf(level, format, args...)				\
 do {									\
 do {									\
-        totempg_log_printf (totempg_subsys_id, __FUNCTION__,		\
-		__FILE__, __LINE__, level, LOGSYS_RECID_LOG,		\
+        totempg_log_printf (						\
+		LOGSYS_ENCODE_RECID(level,				\
+				    totempg_subsys_id,			\
+				    LOGSYS_RECID_LOG),			\
+		__FUNCTION__, __FILE__, __LINE__,			\
 		format, ##args);					\
 		format, ##args);					\
 } while (0);
 } while (0);
 
 

+ 11 - 6
exec/totemrrp.c

@@ -208,9 +208,12 @@ struct totemrrp_instance {
 
 
 	int totemrrp_subsys_id;
 	int totemrrp_subsys_id;
 
 
-	void (*totemrrp_log_printf) (int subsys, const char *function,
-		const char *file, int line, unsigned int level, unsigned int rec_ident,
-		const char *format, ...)__attribute__((format(printf, 7, 8)));
+	void (*totemrrp_log_printf) (
+		unsigned int rec_ident,
+		const char *function,
+		const char *file,
+		int line,
+		const char *format, ...)__attribute__((format(printf, 5, 6)));
 
 
 	hdb_handle_t handle;
 	hdb_handle_t handle;
 
 
@@ -473,9 +476,11 @@ DECLARE_HDB_DATABASE (totemrrp_instance_database,NULL);
 #define log_printf(level, format, args...)				\
 #define log_printf(level, format, args...)				\
 do {									\
 do {									\
 	rrp_instance->totemrrp_log_printf (				\
 	rrp_instance->totemrrp_log_printf (				\
-		rrp_instance->totemrrp_subsys_id,			\
-		__FUNCTION__, __FILE__, __LINE__, level,		\
-		LOGSYS_RECID_LOG, format, ##args);			\
+		LOGSYS_ENCODE_RECID(level,				\
+				    rrp_instance->totemrrp_subsys_id,	\
+				    LOGSYS_RECID_LOG),			\
+		__FUNCTION__, __FILE__, __LINE__,			\
+		format, ##args);					\
 } while (0);
 } while (0);
 
 
 /*
 /*

+ 12 - 7
exec/totemsrp.c

@@ -437,10 +437,12 @@ struct totemsrp_instance {
 
 
 	int totemsrp_subsys_id;
 	int totemsrp_subsys_id;
 
 
-	void (*totemsrp_log_printf) (int subsys,
-		const char *function, const char *file,
-		int line, unsigned int level, unsigned int rec_ident,
-		const char *format, ...)__attribute__((format(printf, 7, 8)));;
+	void (*totemsrp_log_printf) (
+		unsigned int rec_ident,
+		const char *function,
+		const char *file,
+		int line,
+		const char *format, ...)__attribute__((format(printf, 5, 6)));;
 
 
 	enum memb_state memb_state;
 	enum memb_state memb_state;
 
 
@@ -627,9 +629,12 @@ static const char *rundir = NULL;
 
 
 #define log_printf(level, format, args...)				\
 #define log_printf(level, format, args...)				\
 do {									\
 do {									\
-	instance->totemsrp_log_printf (instance->totemsrp_subsys_id,	\
-		__FUNCTION__, __FILE__, __LINE__, level,		\
-		LOGSYS_RECID_LOG, format, ##args);			\
+	instance->totemsrp_log_printf (					\
+		LOGSYS_ENCODE_RECID(level,				\
+				   instance->totemsrp_subsys_id,	\
+				   LOGSYS_RECID_LOG),			\
+		__FUNCTION__, __FILE__, __LINE__,			\
+		format, ##args);					\
 } while (0);
 } while (0);
 
 
 static void totemsrp_instance_initialize (struct totemsrp_instance *instance)
 static void totemsrp_instance_initialize (struct totemsrp_instance *instance)

+ 40 - 46
include/corosync/engine/logsys.h

@@ -172,37 +172,31 @@ extern unsigned int _logsys_subsys_create (const char *subsys);
 extern int _logsys_rec_init (unsigned int size);
 extern int _logsys_rec_init (unsigned int size);
 
 
 extern void _logsys_log_vprintf (
 extern void _logsys_log_vprintf (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	const char *format,
 	const char *format,
-	va_list ap) __attribute__((format(printf, 7, 0)));
+	va_list ap) __attribute__((format(printf, 5, 0)));
 
 
 extern void _logsys_log_printf (
 extern void _logsys_log_printf (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	const char *format,
 	const char *format,
-	...) __attribute__((format(printf, 7, 8)));
+	...) __attribute__((format(printf, 5, 6)));
 
 
 extern void _logsys_log_rec (
 extern void _logsys_log_rec (
-	int subsysid,
+	unsigned int rec_ident,
 	const char *function_name,
 	const char *function_name,
 	const char *file_name,
 	const char *file_name,
 	int file_line,
 	int file_line,
-	unsigned int level,
-	unsigned int rec_ident,
 	...);
 	...);
 
 
 extern int _logsys_wthread_create (void);
 extern int _logsys_wthread_create (void);
 
 
-static unsigned int logsys_subsys_id __attribute__((unused)) = -1;
+static int logsys_subsys_id __attribute__((unused)) = LOGSYS_MAX_SUBSYS_COUNT;
 
 
 /*
 /*
  * External API - init
  * External API - init
@@ -356,76 +350,76 @@ static void logsys_subsys_init (void)					\
 
 
 #define log_rec(rec_ident, args...)					\
 #define log_rec(rec_ident, args...)					\
 do {									\
 do {									\
-	_logsys_log_rec (logsys_subsys_id,  __FUNCTION__,		\
-		__FILE__,  __LINE__, rec_ident, 0, ##args,		\
+	_logsys_log_rec (rec_ident,  __FUNCTION__,			\
+		__FILE__,  __LINE__, ##args,				\
 		LOGSYS_REC_END);					\
 		LOGSYS_REC_END);					\
 } while(0)
 } while(0)
 
 
 #define log_printf(level, format, args...)				\
 #define log_printf(level, format, args...)				\
  do {									\
  do {									\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__, __LINE__, level, LOGSYS_RECID_LOG,		\
+	_logsys_log_printf (						\
+		LOGSYS_ENCODE_RECID(level,				\
+				    logsys_subsys_id,			\
+				    LOGSYS_RECID_LOG),			\
+		 __FUNCTION__, __FILE__, __LINE__,			\
 		format, ##args);					\
 		format, ##args);					\
 } while(0)
 } while(0)
 
 
 #define ENTER() do {							\
 #define ENTER() do {							\
-	_logsys_log_rec (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG, 		\
-		LOGSYS_RECID_ENTER, LOGSYS_REC_END);			\
+	_logsys_log_rec (						\
+		LOGSYS_ENCODE_RECID(LOGSYS_LEVEL_DEBUG,			\
+				    logsys_subsys_id,			\
+				    LOGSYS_RECID_ENTER),		\
+		__FUNCTION__, __FILE__,  __LINE__, LOGSYS_REC_END);	\
 } while(0)
 } while(0)
 
 
 #define LEAVE() do {							\
 #define LEAVE() do {							\
-	_logsys_log_rec (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_LEAVE, LOGSYS_REC_END);			\
+	_logsys_log_rec (						\
+		LOGSYS_ENCODE_RECID(LOGSYS_LEVEL_DEBUG,			\
+				    logsys_subsys_id,			\
+				    LOGSYS_RECID_LEAVE),		\
+		__FUNCTION__, __FILE__,  __LINE__, LOGSYS_REC_END);	\
+} while(0)
+
+#define TRACE(recid, format, args...) do {				\
+	_logsys_log_printf (						\
+		LOGSYS_ENCODE_RECID(LOGSYS_LEVEL_DEBUG,			\
+				    logsys_subsys_id,			\
+				    recid),				\
+		 __FUNCTION__, __FILE__, __LINE__,			\
+		format, ##args);					\
 } while(0)
 } while(0)
 
 
 #define TRACE1(format, args...) do {					\
 #define TRACE1(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG, 		\
-		LOGSYS_RECID_TRACE1, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE1, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE2(format, args...) do {					\
 #define TRACE2(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE2, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE2, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE3(format, args...) do {					\
 #define TRACE3(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE3, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE3, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE4(format, args...) do {					\
 #define TRACE4(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE4, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE4, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE5(format, args...) do {					\
 #define TRACE5(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE5, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE5, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE6(format, args...) do {					\
 #define TRACE6(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE6, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE6, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE7(format, args...) do {					\
 #define TRACE7(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE7, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE7, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #define TRACE8(format, args...) do {					\
 #define TRACE8(format, args...) do {					\
-	_logsys_log_printf (logsys_subsys_id, __FUNCTION__,		\
-		__FILE__,  __LINE__, LOGSYS_LEVEL_DEBUG,		\
-		LOGSYS_RECID_TRACE8, format, ##args);			\
+	TRACE(LOGSYS_RECID_TRACE8, format, ##args);			\
 } while(0)
 } while(0)
 
 
 #endif /* LOGSYS_UTILS_ONLY */
 #endif /* LOGSYS_UTILS_ONLY */

+ 7 - 9
include/corosync/totem/totem.h

@@ -58,15 +58,13 @@ struct totem_interface {
 };
 };
 
 
 struct totem_logging_configuration {
 struct totem_logging_configuration {
-        void (*log_printf) (
-                int subsys,
-                const char *function_name,
-                const char *file_name,
-                int file_line,
-                unsigned int level,
-		unsigned int tag,
-                const char *format,
-                ...) __attribute__((format(printf, 7, 8)));
+	void (*log_printf) (
+		unsigned int rec_ident,
+		const char *function_name,
+		const char *file_name,
+		int file_line,
+		const char *format,
+		...) __attribute__((format(printf, 5, 6)));
 
 
 	int log_level_security;
 	int log_level_security;
 	int log_level_error;
 	int log_level_error;

+ 6 - 2
test/logsysrec.c

@@ -56,9 +56,13 @@ int main(int argc, char **argv)
 	int i;
 	int i;
 
 
 	for (i = 0; i < 10; i++) {
 	for (i = 0; i < 10; i++) {
-		log_printf (LOGSYS_LEVEL_NOTICE, "This is a test of %s\n", "stringparse");
+		log_printf (LOGSYS_LEVEL_NOTICE,
+			"This is a test of %s(%d)\n", "stringparse", i);
 
 
-		log_rec (LOGREC_ID_CHECKPOINT_CREATE, "record1", 8, "record22", 9, "record333", 10, "record444", 11, LOGSYS_REC_END);
+		log_rec (LOGSYS_ENCODE_RECID(LOGSYS_LEVEL_NOTICE,
+					     logsys_subsys_id,
+					     LOGREC_ID_CHECKPOINT_CREATE),
+			"record1", 8, "record22", 9, "record333", 10, "record444", 11, LOGSYS_REC_END);
 	}
 	}
 	logsys_log_rec_store ("fdata");
 	logsys_log_rec_store ("fdata");
 
 

+ 9 - 8
tools/corosync-fplay.c

@@ -383,14 +383,15 @@ static void logsys_rec_print (const void *record)
 	int arg_count = 0;
 	int arg_count = 0;
 
 
 	rec_size = buf_uint32t[rec_idx];
 	rec_size = buf_uint32t[rec_idx];
-	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];
+	rec_ident = buf_uint32t[rec_idx+1];
+	line = buf_uint32t[rec_idx+2];
+	record_number = buf_uint32t[rec_idx+3];
+
+	level = LOGSYS_DECODE_LEVEL(rec_ident);
 
 
 	printf ("rec=[%d] ", record_number);
 	printf ("rec=[%d] ", record_number);
-	arg_size_idx = rec_idx + 5;
-	words_processed = 5;
+	arg_size_idx = rec_idx + 4;
+	words_processed = 4;
 	for (i = 0; words_processed < rec_size; i++) {
 	for (i = 0; words_processed < rec_size; i++) {
 		arguments[arg_count++] =
 		arguments[arg_count++] =
 		  (const char *)&buf_uint32t[arg_size_idx + 1];
 		  (const char *)&buf_uint32t[arg_size_idx + 1];
@@ -411,7 +412,7 @@ static void logsys_rec_print (const void *record)
 		}
 		}
 	}
 	}
 
 
-	switch(rec_ident) {
+	switch(LOGSYS_DECODE_RECID(rec_ident)) {
 		case LOGSYS_RECID_LOG:
 		case LOGSYS_RECID_LOG:
 			printf ("Log Message=%s\n", arguments[3]);
 			printf ("Log Message=%s\n", arguments[3]);
 			break;
 			break;
@@ -447,7 +448,7 @@ static void logsys_rec_print (const void *record)
 			break;
 			break;
 		default:
 		default:
 			printf ("Unknown record type found subsys=[%s] ident=[%d]\n",
 			printf ("Unknown record type found subsys=[%s] ident=[%d]\n",
-				arguments[0], rec_ident);
+				arguments[0], LOGSYS_DECODE_RECID(rec_ident));
 			break;
 			break;
 	}
 	}
 #ifdef COMPILE_OUT
 #ifdef COMPILE_OUT