Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hwpmc/hwpmc_logging.c
Show First 20 Lines • Show All 192 Lines • ▼ Show 20 Lines | CTASSERT(offsetof(struct pmclog_map_in,pl_pathname) == | ||||
5*4 + TSDELTA + sizeof(uintfptr_t)); | 5*4 + TSDELTA + sizeof(uintfptr_t)); | ||||
CTASSERT(sizeof(struct pmclog_map_out) == 5*4 + 2*sizeof(uintfptr_t) + TSDELTA); | CTASSERT(sizeof(struct pmclog_map_out) == 5*4 + 2*sizeof(uintfptr_t) + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_pmcallocate) == 9*4 + TSDELTA); | CTASSERT(sizeof(struct pmclog_pmcallocate) == 9*4 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_pmcattach) == 5*4 + PATH_MAX + TSDELTA); | CTASSERT(sizeof(struct pmclog_pmcattach) == 5*4 + PATH_MAX + TSDELTA); | ||||
CTASSERT(offsetof(struct pmclog_pmcattach,pl_pathname) == 5*4 + TSDELTA); | CTASSERT(offsetof(struct pmclog_pmcattach,pl_pathname) == 5*4 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_pmcdetach) == 5*4 + TSDELTA); | CTASSERT(sizeof(struct pmclog_pmcdetach) == 5*4 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_proccsw) == 7*4 + 8 + TSDELTA); | CTASSERT(sizeof(struct pmclog_proccsw) == 7*4 + 8 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_procexec) == 5*4 + PATH_MAX + | CTASSERT(sizeof(struct pmclog_procexec) == 5*4 + PATH_MAX + | ||||
sizeof(uintfptr_t) + TSDELTA); | 2*sizeof(uintptr_t) + TSDELTA); | ||||
CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 5*4 + TSDELTA + | CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 5*4 + TSDELTA + | ||||
sizeof(uintfptr_t)); | 2*sizeof(uintptr_t)); | ||||
CTASSERT(sizeof(struct pmclog_procexit) == 5*4 + 8 + TSDELTA); | CTASSERT(sizeof(struct pmclog_procexit) == 5*4 + 8 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_procfork) == 5*4 + TSDELTA); | CTASSERT(sizeof(struct pmclog_procfork) == 5*4 + TSDELTA); | ||||
CTASSERT(sizeof(struct pmclog_sysexit) == 6*4); | CTASSERT(sizeof(struct pmclog_sysexit) == 6*4); | ||||
CTASSERT(sizeof(struct pmclog_userdata) == 6*4); | CTASSERT(sizeof(struct pmclog_userdata) == 6*4); | ||||
/* | /* | ||||
* Log buffer structure | * Log buffer structure | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 879 Lines • ▼ Show 20 Lines | pmclog_process_proccsw(struct pmc *pm, struct pmc_process *pp, pmc_value_t v, struct thread *td) | ||||
PMCLOG_EMIT32(pp->pp_proc->p_pid); | PMCLOG_EMIT32(pp->pp_proc->p_pid); | ||||
PMCLOG_EMIT32(td->td_tid); | PMCLOG_EMIT32(td->td_tid); | ||||
PMCLOG_EMIT32(0); | PMCLOG_EMIT32(0); | ||||
PMCLOG_DESPATCH_SCHED_LOCK(po); | PMCLOG_DESPATCH_SCHED_LOCK(po); | ||||
} | } | ||||
void | void | ||||
pmclog_process_procexec(struct pmc_owner *po, pmc_id_t pmid, pid_t pid, | pmclog_process_procexec(struct pmc_owner *po, pmc_id_t pmid, pid_t pid, | ||||
uintfptr_t startaddr, char *path) | uintptr_t baseaddr, uintptr_t dynaddr, char *path) | ||||
{ | { | ||||
int pathlen, recordlen; | int pathlen, recordlen; | ||||
PMCDBG3(LOG,EXC,1,"po=%p pid=%d path=\"%s\"", po, pid, path); | PMCDBG3(LOG,EXC,1,"po=%p pid=%d path=\"%s\"", po, pid, path); | ||||
pathlen = strlen(path) + 1; /* #bytes for the path */ | pathlen = strlen(path) + 1; /* #bytes for the path */ | ||||
recordlen = offsetof(struct pmclog_procexec, pl_pathname) + pathlen; | recordlen = offsetof(struct pmclog_procexec, pl_pathname) + pathlen; | ||||
PMCLOG_RESERVE(po, PMCLOG_TYPE_PROCEXEC, recordlen); | PMCLOG_RESERVE(po, PMCLOG_TYPE_PROCEXEC, recordlen); | ||||
PMCLOG_EMIT32(pid); | PMCLOG_EMIT32(pid); | ||||
PMCLOG_EMIT32(pmid); | PMCLOG_EMIT32(pmid); | ||||
PMCLOG_EMITADDR(startaddr); | PMCLOG_EMITADDR(baseaddr); | ||||
PMCLOG_EMITADDR(dynaddr); | |||||
PMCLOG_EMITSTRING(path,pathlen); | PMCLOG_EMITSTRING(path,pathlen); | ||||
PMCLOG_DESPATCH_SYNC(po); | PMCLOG_DESPATCH_SYNC(po); | ||||
} | } | ||||
/* | /* | ||||
* Log a process exit event (and accumulated pmc value) to the log file. | * Log a process exit event (and accumulated pmc value) to the log file. | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 176 Lines • Show Last 20 Lines |