provider glib {
	probe mem__alloc(void*, unsigned int, unsigned int, unsigned int);
	probe mem__realloc(void*, void *, unsigned int, unsigned int);
	probe mem__free(void*);
	probe slice__alloc(void*, unsigned int);
	probe slice__free(void*, unsigned int);
	probe quark__new(char *, unsigned int);
	probe main__after_prepare(void*, void*, unsigned int);
	probe main__after_check(void*, void*, unsigned int);
	probe main__before_dispatch(char*, void*, void*, void*, void*);
	probe main__after_dispatch(char*, void*, void*, unsigned int);
	probe main__source_attach(char*, void*, void*, unsigned int);
	probe main__source_destroy(char*, void*, void*);
	probe main__context_default(void*);
	probe main__context_new(void*);
	probe main__context_acquire(void*, void*);
	probe main__context_release(void*);
	probe main__context_free(void*);
	probe main__context_push_thread_default(void*);
	probe main__context_pop_thread_default(void*);
	probe main__context_before_prepare(void*);
	probe main__context_after_prepare(void*, int, unsigned int);
	probe main__context_before_query(void*, int);
	probe main__context_after_query(void*, unsigned int, void*, unsigned int);
	probe main__context_before_check(void*, int, void*, unsigned int);
	probe main__context_after_check(void*, unsigned int);
	probe main__context_before_dispatch(void*);
	probe main__context_after_dispatch(void*);
	probe main__context_wakeup(void*);
	probe main__context_wakeup_acknowledge(void*);
	probe main__loop_new(void*, void*);
	probe main__loop_quit(void*);
	probe idle__add(void*, void*, unsigned int, int, void*, void*);
	probe idle__dispatch(void*, void*, void*, void*, unsigned int);
	probe timeout__add(void*, void*, unsigned int, int, unsigned int, void*, void*);
	probe timeout__dispatch(void*, void*, void*, void*, unsigned int);
	probe source__new(void*, void*, void*, void*, void*, size_t);
	probe source__set_callback(void*, void*, void*, void*);
	probe source__set_callback_indirect(void*, void*, void*, void*, void*);
	probe source__set_ready_time(void*, unsigned int);
	probe source__set_priority(void*, void*, unsigned int);
	probe source__set_name(void*, const char*);
	probe source__before_free(void*, void*, void*);
	probe thread__spawned(void*, void*, char*);
};
