Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/sdt.h
Show First 20 Lines • Show All 159 Lines • ▼ Show 20 Lines | struct sdt_probe sdt_##prov##_##mod##_##func##_##name[1] = { \ | ||||
{ NULL, NULL }, { NULL, NULL }, #mod, #func, #name, 0, 0, \ | { NULL, NULL }, { NULL, NULL }, #mod, #func, #name, 0, 0, \ | ||||
NULL } \ | NULL } \ | ||||
}; \ | }; \ | ||||
DATA_SET(sdt_probes_set, sdt_##prov##_##mod##_##func##_##name); | DATA_SET(sdt_probes_set, sdt_##prov##_##mod##_##func##_##name); | ||||
#define SDT_PROBE_DECLARE(prov, mod, func, name) \ | #define SDT_PROBE_DECLARE(prov, mod, func, name) \ | ||||
extern struct sdt_probe sdt_##prov##_##mod##_##func##_##name[1] | extern struct sdt_probe sdt_##prov##_##mod##_##func##_##name[1] | ||||
#define SDT_PROBES_ENABLED() __predict_false(sdt_probes_enabled) | #define SDT_PROBES_ENABLED() __predict_false_noprobe(sdt_probes_enabled) | ||||
#define SDT_PROBE(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4) do { \ | #define SDT_PROBE(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4) do { \ | ||||
if (SDT_PROBES_ENABLED()) { \ | if (SDT_PROBES_ENABLED()) { \ | ||||
if (__predict_false(sdt_##prov##_##mod##_##func##_##name->id)) \ | if (__predict_false_noprobe(sdt_##prov##_##mod##_##func##_##name->id)) \ | ||||
(*sdt_probe_func)(sdt_##prov##_##mod##_##func##_##name->id, \ | (*sdt_probe_func)(sdt_##prov##_##mod##_##func##_##name->id, \ | ||||
(uintptr_t) arg0, (uintptr_t) arg1, (uintptr_t) arg2, \ | (uintptr_t) arg0, (uintptr_t) arg1, (uintptr_t) arg2, \ | ||||
(uintptr_t) arg3, (uintptr_t) arg4); \ | (uintptr_t) arg3, (uintptr_t) arg4); \ | ||||
} \ | } \ | ||||
} while (0) | } while (0) | ||||
#define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type, xtype) \ | #define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type, xtype) \ | ||||
static struct sdt_argtype sdta_##prov##_##mod##_##func##_##name##num[1] \ | static struct sdt_argtype sdta_##prov##_##mod##_##func##_##name##num[1] \ | ||||
▲ Show 20 Lines • Show All 240 Lines • ▼ Show 20 Lines | struct sdt_provider { | ||||
TAILQ_ENTRY(sdt_provider) | TAILQ_ENTRY(sdt_provider) | ||||
prov_entry; /* SDT provider list entry. */ | prov_entry; /* SDT provider list entry. */ | ||||
uintptr_t id; /* DTrace provider ID. */ | uintptr_t id; /* DTrace provider ID. */ | ||||
int sdt_refs; /* Number of module references. */ | int sdt_refs; /* Number of module references. */ | ||||
}; | }; | ||||
void sdt_probe_stub(uint32_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, | void sdt_probe_stub(uint32_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, | ||||
uintptr_t); | uintptr_t); | ||||
int sdt_predict_trace(int exp_res, int predict, const char *file, int line); | |||||
SDT_PROVIDER_DECLARE(sdt); | SDT_PROVIDER_DECLARE(sdt); | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
#endif /* _SYS_SDT_H */ | #endif /* _SYS_SDT_H */ |