capture: add API to request a counter id

This commit is contained in:
Christian Hergert
2020-08-19 15:09:52 -07:00
parent b913de8882
commit 61be0a0455
2 changed files with 56 additions and 36 deletions

View File

@ -95,6 +95,7 @@ typedef struct
bool is_shared;
int tid;
int pid;
int next_counter_id;
} SysprofCollector;
#define COLLECTOR_INVALID ((void *)&invalid)
@ -420,6 +421,7 @@ sysprof_collector_get (void)
#else
self->tid = self->pid;
#endif
self->next_counter_id = 1;
pthread_mutex_lock (&control_fd_lock);
@ -845,3 +847,19 @@ sysprof_collector_set_counters (const unsigned int *counters_ids,
}
} COLLECTOR_END;
}
unsigned int
sysprof_collector_request_counter (unsigned int n_counters)
{
unsigned int ret = 0;
if (n_counters == 0)
return 0;
COLLECTOR_BEGIN {
ret = collector->next_counter_id;
((SysprofCollector *)collector)->next_counter_id += n_counters;
} COLLECTOR_END;
return ret;
}

View File

@ -64,50 +64,52 @@
SYSPROF_BEGIN_DECLS
SYSPROF_AVAILABLE_IN_3_36
void sysprof_collector_init (void);
void sysprof_collector_init (void);
SYSPROF_AVAILABLE_IN_3_36
void sysprof_collector_allocate (SysprofCaptureAddress alloc_addr,
int64_t alloc_size,
SysprofBacktraceFunc backtrace_func,
void *backtrace_data);
void sysprof_collector_allocate (SysprofCaptureAddress alloc_addr,
int64_t alloc_size,
SysprofBacktraceFunc backtrace_func,
void *backtrace_data);
SYSPROF_AVAILABLE_IN_3_36
void sysprof_collector_sample (SysprofBacktraceFunc backtrace_func,
void *backtrace_data);
void sysprof_collector_sample (SysprofBacktraceFunc backtrace_func,
void *backtrace_data);
SYSPROF_AVAILABLE_IN_3_36
void sysprof_collector_mark (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message);
void sysprof_collector_mark (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_mark_printf (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message_format,
...) SYSPROF_PRINTF(5, 6);
void sysprof_collector_mark_printf (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message_format,
...) SYSPROF_PRINTF(5, 6);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_mark_vprintf (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message_format,
va_list args) SYSPROF_PRINTF(5, 0);
void sysprof_collector_mark_vprintf (int64_t time,
int64_t duration,
const char *group,
const char *mark,
const char *message_format,
va_list args) SYSPROF_PRINTF(5, 0);
SYSPROF_AVAILABLE_IN_3_36
void sysprof_collector_log (int severity,
const char *domain,
const char *message);
void sysprof_collector_log (int severity,
const char *domain,
const char *message);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_log_printf (int severity,
const char *domain,
const char *format,
...) SYSPROF_PRINTF (3, 4);
void sysprof_collector_log_printf (int severity,
const char *domain,
const char *format,
...) SYSPROF_PRINTF (3, 4);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_define_counters (const SysprofCaptureCounter *counters,
unsigned int n_counters);
unsigned int sysprof_collector_request_counter (unsigned int n_counters);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_set_counters (const unsigned int *counters_ids,
const SysprofCaptureCounterValue *values,
unsigned int n_counters);
void sysprof_collector_define_counters (const SysprofCaptureCounter *counters,
unsigned int n_counters);
SYSPROF_AVAILABLE_IN_3_38
void sysprof_collector_set_counters (const unsigned int *counters_ids,
const SysprofCaptureCounterValue *values,
unsigned int n_counters);
SYSPROF_END_DECLS