Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Include/pydtrace.h
12 views
1
/* Static DTrace probes interface */
2
3
#ifndef Py_DTRACE_H
4
#define Py_DTRACE_H
5
#ifdef __cplusplus
6
extern "C" {
7
#endif
8
9
#ifdef WITH_DTRACE
10
11
#include "pydtrace_probes.h"
12
13
/* pydtrace_probes.h, on systems with DTrace, is auto-generated to include
14
`PyDTrace_{PROBE}` and `PyDTrace_{PROBE}_ENABLED()` macros for every probe
15
defined in pydtrace.d.
16
17
Calling these functions must be guarded by a `PyDTrace_{PROBE}_ENABLED()`
18
check to minimize performance impact when probing is off. For example:
19
20
if (PyDTrace_FUNCTION_ENTRY_ENABLED())
21
PyDTrace_FUNCTION_ENTRY(f);
22
*/
23
24
#else
25
26
/* Without DTrace, compile to nothing. */
27
28
static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int arg2) {}
29
static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char *arg1, int arg2) {}
30
static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char *arg1, int arg2) {}
31
static inline void PyDTrace_GC_START(int arg0) {}
32
static inline void PyDTrace_GC_DONE(Py_ssize_t arg0) {}
33
static inline void PyDTrace_INSTANCE_NEW_START(int arg0) {}
34
static inline void PyDTrace_INSTANCE_NEW_DONE(int arg0) {}
35
static inline void PyDTrace_INSTANCE_DELETE_START(int arg0) {}
36
static inline void PyDTrace_INSTANCE_DELETE_DONE(int arg0) {}
37
static inline void PyDTrace_IMPORT_FIND_LOAD_START(const char *arg0) {}
38
static inline void PyDTrace_IMPORT_FIND_LOAD_DONE(const char *arg0, int arg1) {}
39
static inline void PyDTrace_AUDIT(const char *arg0, void *arg1) {}
40
41
static inline int PyDTrace_LINE_ENABLED(void) { return 0; }
42
static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; }
43
static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; }
44
static inline int PyDTrace_GC_START_ENABLED(void) { return 0; }
45
static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; }
46
static inline int PyDTrace_INSTANCE_NEW_START_ENABLED(void) { return 0; }
47
static inline int PyDTrace_INSTANCE_NEW_DONE_ENABLED(void) { return 0; }
48
static inline int PyDTrace_INSTANCE_DELETE_START_ENABLED(void) { return 0; }
49
static inline int PyDTrace_INSTANCE_DELETE_DONE_ENABLED(void) { return 0; }
50
static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return 0; }
51
static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return 0; }
52
static inline int PyDTrace_AUDIT_ENABLED(void) { return 0; }
53
54
#endif /* !WITH_DTRACE */
55
56
#ifdef __cplusplus
57
}
58
#endif
59
#endif /* !Py_DTRACE_H */
60
61