Branch data Line data Source code
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_provider.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 : 0 : static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int arg2) {} 29 : 0 : static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char *arg1, int arg2) {} 30 : 0 : static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char *arg1, int arg2) {} 31 : 0 : static inline void PyDTrace_GC_START(int arg0) {} 32 : 0 : 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 : 0 : static inline void PyDTrace_IMPORT_FIND_LOAD_START(const char *arg0) {} 38 : 0 : static inline void PyDTrace_IMPORT_FIND_LOAD_DONE(const char *arg0, int arg1) {} 39 : 0 : static inline void PyDTrace_AUDIT(const char *arg0, void *arg1) {} 40 : : 41 : 5893350 : static inline int PyDTrace_LINE_ENABLED(void) { return 0; } 42 : 752481 : static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; } 43 : 315016509 : static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; } 44 : 235107 : static inline int PyDTrace_GC_START_ENABLED(void) { return 0; } 45 : 235107 : 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 : 299671 : static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return 0; } 51 : 299671 : static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return 0; } 52 : 5600998 : 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 */