static pthread_key_t perf_counter_key;
static
-size_t perf_counter_get_size(size_t offset)
+size_t perf_counter_get_size(struct lttng_ctx_field *field, size_t offset)
{
size_t size = 0;
struct perf_event_mmap_page *setup_perf(struct perf_event_attr *attr)
{
void *perf_addr;
- int fd;
+ int fd, ret;
fd = sys_perf_event_open(attr, 0, -1, -1, 0);
if (fd < 0)
PROT_READ, MAP_SHARED, fd, 0);
if (perf_addr == MAP_FAILED)
return NULL;
- close(fd);
+ ret = close(fd);
+ if (ret) {
+ perror("Error closing LTTng-UST perf memory mapping FD");
+ }
return perf_addr;
}
static
void perf_counter_get_value(struct lttng_ctx_field *field,
- union lttng_ctx_value *value)
+ struct lttng_ctx_value *value)
{
uint64_t v;
v = wrapper_perf_counter_read(field);
- value->s64 = v;
+ value->u.s64 = v;
}
/* Called with UST lock held */
* the field here.
*/
+ lttng_context_update(*ctx);
return 0;
setup_error: