|
1 | 1 | .. highlight:: c
|
2 | 2 |
|
3 |
| -.. _monitoring: |
| 3 | +.. _c-api-monitoring: |
4 | 4 |
|
5 | 5 | Monitoring C API
|
6 | 6 | ================
|
@@ -133,32 +133,60 @@ Managing the Monitoring State
|
133 | 133 | Monitoring states can be managed with the help of monitoring scopes. A scope
|
134 | 134 | would typically correspond to a python function.
|
135 | 135 |
|
136 |
| -.. :c:function:: int PyMonitoring_EnterScope(PyMonitoringState *state_array, uint64_t *version, const uint8_t *event_types, Py_ssize_t length) |
| 136 | +.. c:function:: int PyMonitoring_EnterScope(PyMonitoringState *state_array, uint64_t *version, const uint8_t *event_types, Py_ssize_t length) |
137 | 137 |
|
138 | 138 | Enter a monitored scope. ``event_types`` is an array of the event IDs for
|
139 | 139 | events that may be fired from the scope. For example, the ID of a ``PY_START``
|
140 | 140 | event is the value ``PY_MONITORING_EVENT_PY_START``, which is numerically equal
|
141 | 141 | to the base-2 logarithm of ``sys.monitoring.events.PY_START``.
|
142 | 142 | ``state_array`` is an array with a monitoring state entry for each event in
|
143 | 143 | ``event_types``, it is allocated by the user but populated by
|
144 |
| - ``PyMonitoring_EnterScope`` with information about the activation state of |
| 144 | + :c:func:`!PyMonitoring_EnterScope` with information about the activation state of |
145 | 145 | the event. The size of ``event_types`` (and hence also of ``state_array``)
|
146 | 146 | is given in ``length``.
|
147 | 147 |
|
148 | 148 | The ``version`` argument is a pointer to a value which should be allocated
|
149 | 149 | by the user together with ``state_array`` and initialized to 0,
|
150 |
| - and then set only by ``PyMonitoring_EnterScope`` itelf. It allows this |
| 150 | + and then set only by :c:func:`!PyMonitoring_EnterScope` itelf. It allows this |
151 | 151 | function to determine whether event states have changed since the previous call,
|
152 | 152 | and to return quickly if they have not.
|
153 | 153 |
|
154 | 154 | The scopes referred to here are lexical scopes: a function, class or method.
|
155 |
| - ``PyMonitoring_EnterScope`` should be called whenever the lexical scope is |
| 155 | + :c:func:`!PyMonitoring_EnterScope` should be called whenever the lexical scope is |
156 | 156 | entered. Scopes can be reentered, reusing the same *state_array* and *version*,
|
157 | 157 | in situations like when emulating a recursive Python function. When a code-like's
|
158 | 158 | execution is paused, such as when emulating a generator, the scope needs to
|
159 | 159 | be exited and re-entered.
|
160 | 160 |
|
161 |
| -
|
162 |
| -.. :c:function:: int PyMonitoring_ExitScope(void) |
163 |
| -
|
164 |
| - Exit the last scope that was entered with ``PyMonitoring_EnterScope``. |
| 161 | + The macros for *event_types* are: |
| 162 | +
|
| 163 | + .. c:namespace:: NULL |
| 164 | +
|
| 165 | + .. The table is here to make the docs searchable, and to allow automatic |
| 166 | + links to the identifiers. |
| 167 | +
|
| 168 | + ================================================== ===================================== |
| 169 | + Macro Event |
| 170 | + ================================================== ===================================== |
| 171 | + .. c:macro:: PY_MONITORING_EVENT_BRANCH :monitoring-event:`BRANCH` |
| 172 | + .. c:macro:: PY_MONITORING_EVENT_CALL :monitoring-event:`CALL` |
| 173 | + .. c:macro:: PY_MONITORING_EVENT_C_RAISE :monitoring-event:`C_RAISE` |
| 174 | + .. c:macro:: PY_MONITORING_EVENT_C_RETURN :monitoring-event:`C_RETURN` |
| 175 | + .. c:macro:: PY_MONITORING_EVENT_EXCEPTION_HANDLED :monitoring-event:`EXCEPTION_HANDLED` |
| 176 | + .. c:macro:: PY_MONITORING_EVENT_INSTRUCTION :monitoring-event:`INSTRUCTION` |
| 177 | + .. c:macro:: PY_MONITORING_EVENT_JUMP :monitoring-event:`JUMP` |
| 178 | + .. c:macro:: PY_MONITORING_EVENT_LINE :monitoring-event:`LINE` |
| 179 | + .. c:macro:: PY_MONITORING_EVENT_PY_RESUME :monitoring-event:`PY_RESUME` |
| 180 | + .. c:macro:: PY_MONITORING_EVENT_PY_RETURN :monitoring-event:`PY_RETURN` |
| 181 | + .. c:macro:: PY_MONITORING_EVENT_PY_START :monitoring-event:`PY_START` |
| 182 | + .. c:macro:: PY_MONITORING_EVENT_PY_THROW :monitoring-event:`PY_THROW` |
| 183 | + .. c:macro:: PY_MONITORING_EVENT_PY_UNWIND :monitoring-event:`PY_UNWIND` |
| 184 | + .. c:macro:: PY_MONITORING_EVENT_PY_YIELD :monitoring-event:`PY_YIELD` |
| 185 | + .. c:macro:: PY_MONITORING_EVENT_RAISE :monitoring-event:`RAISE` |
| 186 | + .. c:macro:: PY_MONITORING_EVENT_RERAISE :monitoring-event:`RERAISE` |
| 187 | + .. c:macro:: PY_MONITORING_EVENT_STOP_ITERATION :monitoring-event:`STOP_ITERATION` |
| 188 | + ================================================== ===================================== |
| 189 | +
|
| 190 | +.. c:function:: int PyMonitoring_ExitScope(void) |
| 191 | +
|
| 192 | + Exit the last scope that was entered with :c:func:`!PyMonitoring_EnterScope`. |
0 commit comments