Lines Matching refs:event

7 #include "util/event.h"
51 union perf_event *event,
62 .cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK,
65 return process(tool, event, &synth_sample, machine);
153 static int perf_event__prepare_comm(union perf_event *event, pid_t pid, pid_t tid,
161 memset(&event->comm, 0, sizeof(event->comm));
164 if (perf_event__get_comm_ids(pid, tid, event->comm.comm,
165 sizeof(event->comm.comm),
176 event->comm.pid = *tgid;
177 event->comm.header.type = PERF_RECORD_COMM;
179 size = strlen(event->comm.comm) + 1;
181 memset(event->comm.comm + size, 0, machine->id_hdr_size);
182 event->comm.header.size = (sizeof(event->comm) -
183 (sizeof(event->comm.comm) - size) +
185 event->comm.tid = tid;
191 union perf_event *event, pid_t pid,
198 if (perf_event__prepare_comm(event, 0, pid, machine, &tgid, &ppid,
202 if (perf_tool__process_synth_event(tool, event, machine, process) != 0)
222 union perf_event *event,
233 memset(&event->namespaces, 0, (sizeof(event->namespaces) +
237 event->namespaces.pid = tgid;
238 event->namespaces.tid = pid;
240 event->namespaces.nr_namespaces = NR_NAMESPACES;
242 ns_link_info = event->namespaces.link_info;
244 for (idx = 0; idx < event->namespaces.nr_namespaces; idx++)
248 event->namespaces.header.type = PERF_RECORD_NAMESPACES;
250 event->namespaces.header.size = (sizeof(event->namespaces) +
254 if (perf_tool__process_synth_event(tool, event, machine, process) != 0)
261 union perf_event *event,
266 memset(&event->fork, 0, sizeof(event->fork) + machine->id_hdr_size);
274 event->fork.ppid = ppid;
275 event->fork.ptid = ppid;
277 event->fork.ppid = tgid;
278 event->fork.ptid = tgid;
280 event->fork.pid = tgid;
281 event->fork.tid = pid;
282 event->fork.header.type = PERF_RECORD_FORK;
283 event->fork.header.misc = PERF_RECORD_MISC_FORK_EXEC;
285 event->fork.header.size = (sizeof(event->fork) + machine->id_hdr_size);
287 if (perf_tool__process_synth_event(tool, event, machine, process) != 0)
366 static void perf_record_mmap2__read_build_id(struct perf_record_mmap2 *event,
382 id.maj = event->maj;
383 id.min = event->min;
384 id.ino = event->ino;
385 id.ino_generation = event->ino_generation;
387 dso = dsos__findnew_id(&machine->dsos, event->filename, &id);
394 nsi = nsinfo__new(event->pid);
397 rc = filename__read_build_id(event->filename, &bid) > 0 ? 0 : -1;
404 memcpy(event->build_id, bid.data, sizeof(bid.data));
405 event->build_id_size = (u8) bid.size;
406 event->header.misc |= PERF_RECORD_MISC_MMAP_BUILD_ID;
407 event->__reserved_1 = 0;
408 event->__reserved_2 = 0;
413 if (event->filename[0] == '/') {
415 event->filename);
422 union perf_event *event,
453 event->header.type = PERF_RECORD_MMAP2;
461 event->mmap2.filename[0] = '\0';
465 &event->mmap2.start,
466 &event->mmap2.len,
467 &event->mmap2.prot,
468 &event->mmap2.flags,
469 &event->mmap2.pgoff,
470 &event->mmap2.maj,
471 &event->mmap2.min,
472 &event->mmap2.ino,
473 sizeof(event->mmap2.filename),
474 event->mmap2.filename))
486 event->mmap2.ino_generation = 0;
492 event->header.misc = PERF_RECORD_MISC_USER;
494 event->header.misc = PERF_RECORD_MISC_GUEST_USER;
496 if ((event->mmap2.prot & PROT_EXEC) == 0) {
497 if (!mmap_data || (event->mmap2.prot & PROT_READ) == 0)
500 event->header.misc |= PERF_RECORD_MISC_MMAP_DATA;
505 event->header.misc |= PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT;
507 if (!strcmp(event->mmap2.filename, ""))
508 strcpy(event->mmap2.filename, anonstr);
511 !strncmp(event->mmap2.filename, hugetlbfs_mnt,
513 strcpy(event->mmap2.filename, anonstr);
514 event->mmap2.flags |= MAP_HUGETLB;
517 size = strlen(event->mmap2.filename) + 1;
519 event->mmap2.len -= event->mmap.start;
520 event->mmap2.header.size = (sizeof(event->mmap2) -
521 (sizeof(event->mmap2.filename) - aligned_size));
522 memset(event->mmap2.filename + size, 0, machine->id_hdr_size +
524 event->mmap2.header.size += machine->id_hdr_size;
525 event->mmap2.pid = tgid;
526 event->mmap2.tid = pid;
529 perf_record_mmap2__read_build_id(&event->mmap2, machine, false);
531 if (perf_tool__process_synth_event(tool, event, machine, process) != 0) {
546 union perf_event *event,
551 size_t event_size = sizeof(event->cgroup) - sizeof(event->cgroup.path);
562 memset(&event->cgroup, 0, event_size);
564 event->cgroup.header.type = PERF_RECORD_CGROUP;
565 event->cgroup.header.size = event_size + path_len + machine->id_hdr_size;
573 event->cgroup.id = handle.cgroup_id;
574 strncpy(event->cgroup.path, path + mount_len, path_len);
575 memset(event->cgroup.path + path_len, 0, machine->id_hdr_size);
577 if (perf_tool__process_synth_event(tool, event, machine, process) < 0) {
578 pr_debug("process synth event failed\n");
586 union perf_event *event,
596 if (perf_event__synthesize_cgroup(tool, event, path, mount_len,
621 ret = perf_event__walk_cgroup_tree(tool, event, path,
637 union perf_event event;
653 if (perf_event__walk_cgroup_tree(tool, &event, cgrp_root, mount_len,
674 union perf_event *event;
676 sizeof(event->mmap2) : sizeof(event->mmap);
678 event = zalloc(size + machine->id_hdr_size);
679 if (event == NULL) {
680 pr_debug("Not enough memory synthesizing mmap event "
690 event->header.misc = PERF_RECORD_MISC_KERNEL;
692 event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL;
704 event->mmap2.header.type = PERF_RECORD_MMAP2;
705 event->mmap2.header.size = (sizeof(event->mmap2) -
706 (sizeof(event->mmap2.filename) - size));
707 memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
708 event->mmap2.header.size += machine->id_hdr_size;
709 event->mmap2.start = map__start(map);
710 event->mmap2.len = map__size(map);
711 event->mmap2.pid = machine->pid;
713 memcpy(event->mmap2.filename, dso->long_name, dso->long_name_len + 1);
715 perf_record_mmap2__read_build_id(&event->mmap2, machine, false);
718 event->mmap.header.type = PERF_RECORD_MMAP;
719 event->mmap.header.size = (sizeof(event->mmap) -
720 (sizeof(event->mmap.filename) - size));
721 memset(event->mmap.filename + size, 0, machine->id_hdr_size);
722 event->mmap.header.size += machine->id_hdr_size;
723 event->mmap.start = map__start(map);
724 event->mmap.len = map__size(map);
725 event->mmap.pid = machine->pid;
727 memcpy(event->mmap.filename, dso->long_name, dso->long_name_len + 1);
730 if (perf_tool__process_synth_event(tool, event, machine, process) != 0) {
736 free(event);
759 /* special case: only send one comm event using passed in pid */
817 * Send the prepared comm event
1102 union perf_event *event;
1104 sizeof(event->mmap2) : sizeof(event->mmap);
1121 event = zalloc(size + machine->id_hdr_size);
1122 if (event == NULL) {
1123 pr_debug("Not enough memory synthesizing mmap event "
1133 event->header.misc = PERF_RECORD_MISC_KERNEL;
1135 event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL;
1139 size = snprintf(event->mmap2.filename, sizeof(event->mmap2.filename),
1142 event->mmap2.header.type = PERF_RECORD_MMAP2;
1143 event->mmap2.header.size = (sizeof(event->mmap2) -
1144 (sizeof(event->mmap2.filename) - size) + machine->id_hdr_size);
1145 event->mmap2.pgoff = kmap->ref_reloc_sym->addr;
1146 event->mmap2.start = map__start(map);
1147 event->mmap2.len = map__end(map) - event->mmap.start;
1148 event->mmap2.pid = machine->pid;
1150 perf_record_mmap2__read_build_id(&event->mmap2, machine, true);
1152 size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
1155 event->mmap.header.type = PERF_RECORD_MMAP;
1156 event->mmap.header.size = (sizeof(event->mmap) -
1157 (sizeof(event->mmap.filename) - size) + machine->id_hdr_size);
1158 event->mmap.pgoff = kmap->ref_reloc_sym->addr;
1159 event->mmap.start = map__start(map);
1160 event->mmap.len = map__end(map) - event->mmap.start;
1161 event->mmap.pid = machine->pid;
1164 err = perf_tool__process_synth_event(tool, event, machine, process);
1165 free(event);
1188 union perf_event *event;
1191 size = sizeof(event->thread_map);
1192 size += threads->nr * sizeof(event->thread_map.entries[0]);
1194 event = zalloc(size);
1195 if (!event)
1198 event->header.type = PERF_RECORD_THREAD_MAP;
1199 event->header.size = size;
1200 event->thread_map.nr = threads->nr;
1203 struct perf_record_thread_map_entry *entry = &event->thread_map.entries[i];
1213 err = process(tool, event, NULL, machine);
1215 free(event);
1318 struct perf_record_cpu_map *event;
1321 event = cpu_map_data__alloc(&syn_data, sizeof(struct perf_event_header));
1322 if (!event)
1325 syn_data.data = &event->data;
1326 event->header.type = PERF_RECORD_CPU_MAP;
1327 event->header.size = syn_data.size;
1329 return event;
1338 struct perf_record_cpu_map *event;
1341 event = cpu_map_event__new(map);
1342 if (!event)
1345 err = process(tool, (union perf_event *) event, NULL, machine);
1347 free(event);
1356 struct perf_record_stat_config *event;
1359 size = sizeof(*event);
1360 size += (PERF_STAT_CONFIG_TERM__MAX * sizeof(event->data[0]));
1362 event = zalloc(size);
1363 if (!event)
1366 event->header.type = PERF_RECORD_STAT_CONFIG;
1367 event->header.size = size;
1368 event->nr = PERF_STAT_CONFIG_TERM__MAX;
1371 event->data[i].tag = PERF_STAT_CONFIG_TERM__##__term; \
1372 event->data[i].val = __val; \
1384 err = process(tool, (union perf_event *) event, NULL, machine);
1386 free(event);
1396 struct perf_record_stat event;
1398 event.header.type = PERF_RECORD_STAT;
1399 event.header.size = sizeof(event);
1400 event.header.misc = 0;
1402 event.id = id;
1403 event.cpu = cpu.cpu;
1404 event.thread = thread;
1405 event.val = count->val;
1406 event.ena = count->ena;
1407 event.run = count->run;
1409 return process(tool, (union perf_event *) &event, NULL, machine);
1417 struct perf_record_stat_round event;
1419 event.header.type = PERF_RECORD_STAT_ROUND;
1420 event.header.size = sizeof(event);
1421 event.header.misc = 0;
1423 event.time = evtime;
1424 event.type = type;
1426 return process(tool, (union perf_event *) &event, NULL, machine);
1572 int perf_event__synthesize_sample(union perf_event *event, u64 type, u64 read_format,
1583 array = event->sample.array;
2082 * attr event - unit, scale, name
2117 * perf.data carries event names.