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(const char *, unsigned int);
	probe main__after_prepare(void*, void*, unsigned int);
	probe main__after_check(void*, void*, unsigned int);
	probe main__before_dispatch(const char*, void*, void*, void*, void*);
	probe main__after_dispatch(const char*, void*, void*, unsigned int);
	probe main__source_attach(const char*, void*, void*, unsigned int);
	probe main__source_destroy(const char*, void*, void*);
	probe main__context_default(void*);
	probe main__context_new(void*);
	probe main__context_acquire(void*, int);
	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__add_child_source(void*, void*);
	probe source__set_name(void*, const char*);
	probe source__before_free(void*, void*, void*);
	probe thread__spawned(void*, void*, char*);
        probe rcbox__alloc(void*, unsigned int, unsigned int, unsigned int);
        probe rcbox__acquire(void*, unsigned int);
        probe rcbox__release(void*, unsigned int);
        probe rcbox__free(void*);
};
