static void unregister_dumper (void) { struct dumper_entry *dumper; struct dumper_entry *prev_dumper = 0; init_mx_once (); __gthread_mutex_lock (&__gcov_dump_mx); dumper = __gcov_dumper_list; while (dumper) { if (dumper->dumper == &__gcov_dump) { if (prev_dumper) prev_dumper->next_dumper = dumper->next_dumper; else __gcov_dumper_list = dumper->next_dumper; break; } prev_dumper = dumper; dumper = dumper->next_dumper; } __gthread_mutex_unlock (&__gcov_dump_mx); }
static void register_dumper (void) { init_mx_once (); __gthread_mutex_lock (&__gcov_dump_mx); this_dumper.next_dumper = __gcov_dumper_list; __gcov_dumper_list = &this_dumper; __gthread_mutex_unlock (&__gcov_dump_mx); }
void __gcov_flush (void) { init_mx_once (); __gthread_mutex_lock (&__gcov_flush_mx); gcov_exit (); gcov_clear (); __gthread_mutex_unlock (&__gcov_flush_mx); }
void __gcov_flush (void) { init_mx_once (); __gthread_mutex_lock (&__gcov_flush_mx); __gcov_dump_int (); __gcov_reset_int (); __gthread_mutex_unlock (&__gcov_flush_mx); }
void __gcov_dump_all (void) { struct dumper_entry *dumper; init_mx_once (); __gthread_mutex_lock (&__gcov_dump_mx); dumper = __gcov_dumper_list; while (dumper) { dumper->dumper (); dumper = dumper->next_dumper; } __gthread_mutex_unlock (&__gcov_dump_mx); }