1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 #ifndef __CINNAMON_PERF_LOG_H__ 3 #define __CINNAMON_PERF_LOG_H__ 4 5 #include <glib-object.h> 6 #include <gio/gio.h> 7 8 G_BEGIN_DECLS 9 10 typedef struct _CinnamonPerfLog CinnamonPerfLog; 11 typedef struct _CinnamonPerfLogClass CinnamonPerfLogClass; 12 13 #define CINNAMON_TYPE_PERF_LOG (cinnamon_perf_log_get_type ()) 14 #define CINNAMON_PERF_LOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), CINNAMON_TYPE_PERF_LOG, CinnamonPerfLog)) 15 #define CINNAMON_PERF_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CINNAMON_TYPE_PERF_LOG, CinnamonPerfLogClass)) 16 #define CINNAMON_IS_PERF_LOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), CINNAMON_TYPE_PERF_LOG)) 17 #define CINNAMON_IS_PERF_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CINNAMON_TYPE_PERF_LOG)) 18 #define CINNAMON_PERF_LOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CINNAMON_TYPE_PERF_LOG, CinnamonPerfLogClass)) 19 20 GType cinnamon_perf_log_get_type (void) G_GNUC_CONST; 21 22 CinnamonPerfLog *cinnamon_perf_log_get_default (void); 23 24 void cinnamon_perf_log_set_enabled (CinnamonPerfLog *perf_log, 25 gboolean enabled); 26 27 void cinnamon_perf_log_define_event (CinnamonPerfLog *perf_log, 28 const char *name, 29 const char *description, 30 const char *signature); 31 void cinnamon_perf_log_event (CinnamonPerfLog *perf_log, 32 const char *name); 33 void cinnamon_perf_log_event_i (CinnamonPerfLog *perf_log, 34 const char *name, 35 gint32 arg); 36 void cinnamon_perf_log_event_x (CinnamonPerfLog *perf_log, 37 const char *name, 38 gint64 arg); 39 void cinnamon_perf_log_event_s (CinnamonPerfLog *perf_log, 40 const char *name, 41 const char *arg); 42 43 void cinnamon_perf_log_define_statistic (CinnamonPerfLog *perf_log, 44 const char *name, 45 const char *description, 46 const char *signature); 47 48 void cinnamon_perf_log_update_statistic_i (CinnamonPerfLog *perf_log, 49 const char *name, 50 int value); 51 void cinnamon_perf_log_update_statistic_x (CinnamonPerfLog *perf_log, 52 const char *name, 53 gint64 value); 54 55 typedef void (*CinnamonPerfStatisticsCallback) (CinnamonPerfLog *perf_log, 56 gpointer data); 57 58 void cinnamon_perf_log_add_statistics_callback (CinnamonPerfLog *perf_log, 59 CinnamonPerfStatisticsCallback callback, 60 gpointer user_data, 61 GDestroyNotify notify); 62 63 void cinnamon_perf_log_collect_statistics (CinnamonPerfLog *perf_log); 64 65 typedef void (*CinnamonPerfReplayFunction) (gint64 time, 66 const char *name, 67 const char *signature, 68 GValue *arg, 69 gpointer user_data); 70 71 void cinnamon_perf_log_replay (CinnamonPerfLog *perf_log, 72 CinnamonPerfReplayFunction replay_function, 73 gpointer user_data); 74 75 gboolean cinnamon_perf_log_dump_events (CinnamonPerfLog *perf_log, 76 GOutputStream *out, 77 GError **error); 78 gboolean cinnamon_perf_log_dump_log (CinnamonPerfLog *perf_log, 79 GOutputStream *out, 80 GError **error); 81 82 G_END_DECLS 83 84 #endif /* __CINNAMON_PERF_LOG_H__ */ 85