instrument X using gcc's -finstrument-functions

used to debug locking
This commit is contained in:
Cedric Roux
2016-05-01 14:10:59 +02:00
parent 951882adaa
commit 4911b107da
2 changed files with 19 additions and 0 deletions
+3
View File
@@ -10,6 +10,9 @@ gui.a: $(OBJS)
test: test.o gui.a
$(CC) -o test $(OBJS) test.o -lX11 -pthread -lm
x.o:x.c
$(CC) $(CFLAGS) -o $@ -c $< -finstrument-functions
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
+16
View File
@@ -5,15 +5,31 @@
#include <stdlib.h>
#include <pthread.h>
static volatile int locked = 0;
void __cyg_profile_func_enter (void *func, void *caller)
{
if (locked == 0) abort();
printf("E %p %p %lu\n", func, caller, time(NULL));
}
void __cyg_profile_func_exit (void *func, void *caller)
{
if (locked == 0) abort();
printf("X %p %p %lu\n", func, caller, time(NULL));
}
void glock(gui *_gui)
{
struct gui *g = _gui;
if (pthread_mutex_lock(g->lock)) ERR("mutex error\n");
locked = 1;
}
void gunlock(gui *_gui)
{
struct gui *g = _gui;
locked = 0;
if (pthread_mutex_unlock(g->lock)) ERR("mutex error\n");
}