added the ASSERT and VERIFY macros to logging to help detect problems
This commit is contained in:
		
							parent
							
								
									82ca8371e6
								
							
						
					
					
						commit
						0dc56d49e5
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
OBJS=main.o sysinput.o fbinit.o fbprimitive.o log.o gpio.o msg_queue.o time_func.o config.o splash.o
 | 
					OBJS=main.o sysinput.o fbinit.o fbprimitive.o log.o gpio.o msg_queue.o time_func.o config.o splash.o
 | 
				
			||||||
LIBS=-lbcm2835 -lpthread
 | 
					LIBS=-lbcm2835 -lpthread
 | 
				
			||||||
CFLAGS=-g
 | 
					CFLAGS=-g -O -DDEBUG_ASSERT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
upiwin: $(OBJS)
 | 
					upiwin: $(OBJS)
 | 
				
			||||||
	gcc -o upiwin $(OBJS) $(LIBS)
 | 
						gcc -o upiwin $(OBJS) $(LIBS)
 | 
				
			||||||
 | 
				
			|||||||
@ -47,8 +47,10 @@ static void run_exit_funcs(void)
 | 
				
			|||||||
    p = exitfuncs;
 | 
					    p = exitfuncs;
 | 
				
			||||||
    exitfuncs = p->next;
 | 
					    exitfuncs = p->next;
 | 
				
			||||||
    for (i = p->num_funcs - 1; i >= 0; i--)
 | 
					    for (i = p->num_funcs - 1; i >= 0; i--)
 | 
				
			||||||
      if (p->funcs[i])
 | 
					    {
 | 
				
			||||||
 | 
					      ASSERT(p->funcs[i]);
 | 
				
			||||||
      (*(p->funcs[i]))();
 | 
					      (*(p->funcs[i]))();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    free(p);
 | 
					    free(p);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -23,3 +23,8 @@ void Log(int level, const char *format, ...)
 | 
				
			|||||||
  strftime(timestamp, 32, "%F %T", &tm);
 | 
					  strftime(timestamp, 32, "%F %T", &tm);
 | 
				
			||||||
  printf("%s.%06u %s %s\n", timestamp, tv.tv_usec, severities[level], buf);
 | 
					  printf("%s.%06u %s %s\n", timestamp, tv.tv_usec, severities[level], buf);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Log_assert_failed(const char *test, const char *file, int line)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Log(LERROR, "ASSERT FAILED: %s at %s:%d", test, file, line);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								src/log.h
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/log.h
									
									
									
									
									
								
							@ -8,5 +8,17 @@
 | 
				
			|||||||
#define LDEBUG 4
 | 
					#define LDEBUG 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void Log(int level, const char *format, ...);
 | 
					extern void Log(int level, const char *format, ...);
 | 
				
			||||||
 | 
					extern void Log_assert_failed(const char *test, const char *file, int line);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define THIS_FILE __FILE__
 | 
				
			||||||
 | 
					#define DECLARE_THIS_FILE() static const char THIS_FILE[] = __FILE__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef DEBUG_ASSERT
 | 
				
			||||||
 | 
					#define ASSERT(x)  ((x) ? (void)0 : Log_assert_failed(#x, THIS_FILE, __LINE__))
 | 
				
			||||||
 | 
					#define VERIFY(x)  ASSERT(x)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define ASSERT(x)  ((void)0)
 | 
				
			||||||
 | 
					#define VERIFY(x)  ((void)(x))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __LOG_H_INCLUDED */
 | 
					#endif /* __LOG_H_INCLUDED */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user