[Openais] logsys patch

David Teigland teigland at redhat.com
Thu Jul 10 13:16:02 PDT 2008


On Wed, Jul 02, 2008 at 09:32:45AM -0500, David Teigland wrote:
> > It doesn't address the setting of logsys_subsys_id but defines it.  I
> > want to avoid the situation where logsys_subsys_id is defined, but then
> > not set.  What I suggest here is to set logsys_subsys_id to some known
> > value (-1) and assert if that the subsystem id is that value within
> > log_printf to help developers catch this scenario.  At the moment the
> > current API enforces proper behavior (it wont link if the developer does
> > the wrong thing).  With your patch it will link, but may not behave
> > properly sending log messages to the wrong subsystem (0) instead of the
> > subsystem desired by the developer.  This is why the macros are there
> > (to set the subsystem id and define it).  Your patch addresses the
> > removal of the definition to a generic location but doesn't address at
> > all the setting of the subsystem id.
> 
> Good thought, done.

That turned out to break things badly :-)  Each file ends up with its own
static copy of logsys_subsys_id, all of which are initialized to -1, and
the only instance set to 0 is the one in the file that calls
logsys_init().  log_printf's in other files assert.

Attached patch should make it work again.

Dave

-------------- next part --------------
Index: logsys.c
===================================================================
--- logsys.c	(revision 1573)
+++ logsys.c	(working copy)
@@ -84,7 +84,9 @@
 #endif
 struct logsys_logger logsys_loggers[MAX_LOGGERS];
 
+int logsys_single_id = 0;
 
+
 struct log_entry {
 	char *file;
 	int line;
@@ -641,7 +643,8 @@
 {
 	char *errstr;
 
-	logsys_subsys_id = 0;
+	/* logsys_subsys_id will be 0 */
+	logsys_single_id = 1;
 
 	strncpy (logsys_loggers[0].subsys, name,
 		 sizeof (logsys_loggers[0].subsys));
@@ -670,7 +673,6 @@
 
 void logsys_exit (void)
 {
-	logsys_subsys_id = -1;
 	logsys_flush ();
 }
 
Index: logsys.h
===================================================================
--- logsys.h	(revision 1573)
+++ logsys.h	(working copy)
@@ -97,6 +97,8 @@
 
 extern struct logsys_logger logsys_loggers[];
 
+extern int logsys_single_id;
+
 extern inline int logsys_mkpri (int priority, int id);
 
 extern void logsys_config_mode_set (
@@ -191,6 +193,8 @@
 }
 
 #define log_printf(lvl, format, args...) do {				\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if ((lvl) <= logsys_loggers[logsys_subsys_id].priority)	{	\
 		_logsys_log_printf2 (__FILE__, __LINE__, lvl,		\
@@ -199,6 +203,8 @@
 } while(0)
 
 #define dprintf(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_log_printf2 (__FILE__, __LINE__, LOG_DEBUG,	\
@@ -207,6 +213,8 @@
 } while(0)
 
 #define ENTER_VOID() do {						\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_ENTER,	\
@@ -215,6 +223,8 @@
 } while(0)
 
 #define ENTER(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_ENTER,	\
@@ -224,6 +234,8 @@
 } while(0)
 
 #define LEAVE_VOID() do {						\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_LEAVE,	\
@@ -232,6 +244,8 @@
 } while(0)
 
 #define LEAVE(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_LEAVE,	\
@@ -241,6 +255,8 @@
 } while(0)
 
 #define TRACE1(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE1,	\
@@ -249,6 +265,8 @@
 } while(0)
 
 #define TRACE2(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE2,	\
@@ -257,6 +275,8 @@
 } while(0)
 
 #define TRACE3(format, args...) do { \
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE3,	\
@@ -265,6 +285,8 @@
 } while(0)
 
 #define TRACE4(format, args...) do { \
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE4,	\
@@ -273,6 +295,8 @@
 } while(0)
 
 #define TRACE5(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE5,	\
@@ -281,6 +305,8 @@
 } while(0)
 
 #define TRACE6(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE6,	\
@@ -289,6 +315,8 @@
 } while(0)
 
 #define TRACE7(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 		_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE7,	\
@@ -297,6 +325,8 @@
 } while(0)
 
 #define TRACE8(format, args...) do {					\
+	if (logsys_single_id)						\
+		logsys_subsys_id = 0;					\
 	assert (logsys_subsys_id != -1);				\
 	if (LOG_LEVEL_DEBUG <= logsys_loggers[logsys_subsys_id].priority) { \
 	_logsys_trace (__FILE__, __LINE__, LOGSYS_TAG_TRACE8,		\


More information about the Openais mailing list