EM-ODP 4.4.0
Event Machine on ODP
Loading...
Searching...
No Matches
event_machine_error.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015-2026, Nokia Solutions and Networks
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * * Neither the name of the copyright holder nor the names of its
15 * contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef EVENT_MACHINE_ERROR_H_
32#define EVENT_MACHINE_ERROR_H_
33
34#pragma GCC visibility push(default)
35
36/**
37 * @file
38 * @defgroup em_error Error management
39 * Error/Exception management
40 *
41 * EM provides two basic mechanisms to manage operational exceptions
42 *
43 * -# Return value
44 * - Most API calls return a status which can be checked by the application
45 *
46 * -# Error handler
47 * - An optional error handler function can be registered. The given
48 * function is called by the EM implementation when an error occurs. This
49 * makes it possible to centralize the error management or even modify
50 * some API behavior as an error handler can modify the original API call
51 * return value as well. For instance, a global error handler could modify
52 * the em_send() behavior in such a way that the application never has to
53 * check the return value by catching all errors, fixing them (like
54 * deallocating event on failed send) and returning EM_OK.
55 * - There can be one global error handler and additionally one per each EO.
56 * @{
57 */
58
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65/**
66 * Fatal error mask
67 */
68#define EM_ERROR_FATAL_MASK 0x80000000
69
70/**
71 * Test if error is fatal
72 */
73#define EM_ERROR_IS_FATAL(error) (!!(EM_ERROR_FATAL_MASK & (error)))
74
75/**
76 * Set the error code as fatal
77 */
78#define EM_ERROR_SET_FATAL(error) (EM_ERROR_FATAL_MASK | (error))
79
80/**
81 * Alias to EM_ERROR_SET_FATAL(), shorter name, backwards compatible
82 */
83#define EM_FATAL(error) EM_ERROR_SET_FATAL((error))
84
85/**
86 * @typedef em_status_t
87 * Error/Status code.
88 *
89 * EM_OK (0) is the general code for success, other values
90 * describe failed operation.
91 * There is a generic error code EM_ERROR, but application should
92 * normally test for not equal to EM_OK.
93 *
94 * @see em_error_handler_t(), em_error()
95 */
96typedef uint32_t em_status_t;
97#define PRI_STAT PRIu32
98#define PRIxSTAT PRIx32
99
100/**
101 * @def EM_OK
102 * Operation successful
103 */
104#define EM_OK 0
105
106/**
107 * @def EM_ERROR
108 * Operation not successful.
109 *
110 * Generic error code, other error codes are system specific.
111 */
112#define EM_ERROR 0xffffffff
113
114/**
115 * Error/Status codes used by em_status_t
116 */
117typedef enum em_status_e {
118 /** Invalid argument */
120 /** Illegal state */
122 /** ID not from a valid range */
124 /** Invalid type */
126 /** Illegal context */
128 /** Pointer from bad memory area (e.g. NULL) */
130
131 /** Resource not created */
133 /** Resource already reserved by someone else */
135 /** Resource not found */
137 /** Not properly initialized (e.g. not using provided initializer) */
139 /** Implementation missing (placeholder) */
141 /** Feature or value combination is not supported */
143
144 /** Resource allocation failed */
146 /** Operation failed */
148 /** Failure in a library function */
150
151 /** Value over the limit */
153 /** Value under the limit */
155
156 /** ESV (reserved): Invalid event state detected, e.g. double-free */
158
159 /** Operation timeout (e.g. waiting on a lock) */
161
162 /** Operation is too near current time or in past */
164 /** Time target too far, e.g. timeout exceeds maximum supported value */
166 /** Timeout was canceled, e.g. periodic timer */
168 /** Resource is busy */
170
171 /** Other error. This is the last error code (for bounds checking) */
172 EM_ERR
174
175/**
176 * @typedef em_escope_t
177 * Error scope.
178 *
179 * Identifies the error scope for interpreting error codes and variable
180 * arguments.
181 *
182 * @see em_error_handler_t(), em_error()
183 */
184typedef uint32_t em_escope_t;
185#define PRI_ESCOPE PRIu32
186#define PRIxESCOPE PRIx32
187
188/**
189 * Error handler prototype
190 *
191 * The error handler is called after EM notices an error or the user has called
192 * em_error().
193 *
194 * The user can register EO specific and/or EM global error handlers. When an
195 * error occurs, EM calls the EO specific error handler, if registered. If
196 * there's no EO specific handler registered or the error occurs outside of an
197 * EO context, EM calls the global error handler.
198 *
199 * The error handler is called with the original error code (that's about to be
200 * returned) from the API call or em_error(). The error scope identifies the
201 * source of the error and how the error code and the variable arguments should
202 * be interpreted (number of arguments and types) in an implementation specific
203 * way.
204 *
205 * @param eo Execution object id
206 * @param error The error code
207 * @param escope Error scope. Identifies the scope for interpreting the
208 * error code and variable arguments.
209 * @param args Variable number and type of arguments
210 *
211 * @return The function may not return depending on implementation, error code
212 * or error scope. If it returns, it can return the original or
213 * modified error code or even EM_OK if it was able to fix the problem.
214 *
215 * @see em_register_error_handler(), em_eo_register_error_handler()
216 */
217typedef em_status_t (*em_error_handler_t)(em_eo_t eo, em_status_t error,
218 em_escope_t escope, va_list args);
219
220/**
221 * Register a global error handler.
222 *
223 * The global error handler is called on EM errors or by em_error() calls,
224 * except when running in an EO context with an EO specific error handler
225 * registered (in which case the EO specific error handler takes precedence).
226 * Note, the provided function will override any previously registered
227 * global error handler.
228 * The EM default global error handler is used when no user provided global
229 * error handler is registered.
230 *
231 * @param handler Error handler.
232 *
233 * @return EM_OK if successful.
234 *
235 * @see em_eo_register_error_handler(), em_unregister_error_handler(),
236 * em_error_handler_t()
237 */
239
240/**
241 * Unregister a global error handler.
242 *
243 * Unregisters any previously registered global error handler and
244 * restores the EM default global error handler into use.
245 *
246 * @return EM_OK if successful.
247 *
248 * @see em_register_error_handler()
249 */
251
252/**
253 * Report an error.
254 *
255 * Reported errors are handled by the appropriate (EO specific or global)
256 * error handler.
257 *
258 * Depending on the error/scope/implementation, the function call may not
259 * return.
260 *
261 * @param error Error code
262 * @param escope Error scope. Identifies the scope for interpreting the
263 * error code and the variable arguments.
264 * @param ... Variable number and type of arguments
265 *
266 * @see em_register_error_handler(), em_error_handler_t()
267 */
268void em_error(em_status_t error, em_escope_t escope, ...);
269
270/**
271 * EM log level
272 */
273typedef enum {
274 EM_LOG_DBG,
275 EM_LOG_PRINT,
276 EM_LOG_ERR
278
279/**
280 * EM log function, variable number of args
281 *
282 * @note: both 'log()' and 'vlog()' need to be implemented if used.
283 */
284typedef int (*em_log_func_t)(em_log_level_t level, const char *fmt, ...)
285 __attribute__((format(printf, 2, 3)));
286
287/**
288 * EM log function, va_list instead of variable number of args
289 *
290 * @note: both 'log()' and 'vlog()' need to be implemented if used.
291 */
292typedef int (*em_vlog_func_t)(em_log_level_t level, const char *fmt,
293 va_list args);
294
295/**
296 * All EM error scopes (API and other internal) should have bit 31 set
297 *
298 * NOTE: High bit is RESERVED for EM escopes and should not be
299 * used by the application.
300 */
301#define EM_ESCOPE_BIT (0x80000000u)
302
303/**
304 * EM API functions error scope
305 */
306#define EM_ESCOPE_API_TYPE (0xFFu)
307/**
308 * EM Add-on API functions error scope
309 */
310#define EM_ESCOPE_ADDON_API_TYPE (0xFEu)
311/**
312 * EM Internal (non-public API) functions error scope
313 */
314#define EM_ESCOPE_INTERNAL_TYPE (0xFCu)
315
316/**
317 * Mask selects the high byte of the 32-bit escope
318 */
319#define EM_ESCOPE_MASK (0xFF000000)
320/**
321 * EM API functions error mask
322 */
323#define EM_ESCOPE_API_MASK (EM_ESCOPE_BIT | (EM_ESCOPE_API_TYPE << 24))
324/**
325 * EM Add-on API functions error mask
326 */
327#define EM_ESCOPE_ADDON_API_MASK (EM_ESCOPE_BIT | (EM_ESCOPE_ADDON_API_TYPE << 24))
328/**
329 * EM Internal (non-API) functions error mask
330 */
331#define EM_ESCOPE_INTERNAL_MASK (EM_ESCOPE_BIT | (EM_ESCOPE_INTERNAL_TYPE << 24))
332
333/**
334 * Test if the error scope identifies an EM function - API, add-on API or other internal!
335 */
336#define EM_ESCOPE(escope) (EM_ESCOPE_BIT & (escope))
337/**
338 * Test if the error scope identifies an EM API function
339 */
340#define EM_ESCOPE_API(escope) (((escope) & EM_ESCOPE_MASK) == EM_ESCOPE_API_MASK)
341/**
342 * Test if the error scope identifies an EM API function
343 */
344#define EM_ESCOPE_ADDON_API(escope) (((escope) & EM_ESCOPE_MASK) == EM_ESCOPE_ADDON_API_MASK)
345/**
346 * Test if the error scope identifies an EM Internal function
347 */
348#define EM_ESCOPE_INTERNAL(escope) (((escope) & EM_ESCOPE_MASK) == EM_ESCOPE_INTERNAL_MASK)
349
350/******************************************************************************
351 * EM API function error scopes:
352 ******************************************************************************/
353#define EM_ESCOPE_API_FIRST (EM_ESCOPE_API_MASK | 0x0000)
354
355/* EM API escopes: Atomic Group */
356#define EM_ESCOPE_ATOMIC_GROUP_CREATE (EM_ESCOPE_API_MASK | 0x0001)
357#define EM_ESCOPE_ATOMIC_GROUP_DELETE (EM_ESCOPE_API_MASK | 0x0002)
358#define EM_ESCOPE_ATOMIC_GROUP_FIND (EM_ESCOPE_API_MASK | 0x0003)
359#define EM_ESCOPE_ATOMIC_GROUP_FIRST (EM_ESCOPE_API_MASK | 0x0004)
360#define EM_ESCOPE_ATOMIC_GROUP_NAME (EM_ESCOPE_API_MASK | 0x0005)
361#define EM_ESCOPE_ATOMIC_GROUP_NEXT (EM_ESCOPE_API_MASK | 0x0006)
362#define EM_ESCOPE_ATOMIC_GROUP_QUEUE_FIRST (EM_ESCOPE_API_MASK | 0x0007)
363#define EM_ESCOPE_ATOMIC_GROUP_QUEUE_NEXT (EM_ESCOPE_API_MASK | 0x0008)
364#define EM_ESCOPE_QUEUE_CREATE_AG (EM_ESCOPE_API_MASK | 0x0009)
365#define EM_ESCOPE_QUEUE_CREATE_STATIC_AG (EM_ESCOPE_API_MASK | 0x000A)
366/* Backwards compatible naming ("get") */
367#define EM_ESCOPE_ATOMIC_GROUP_GET_FIRST EM_ESCOPE_ATOMIC_GROUP_FIRST
368#define EM_ESCOPE_ATOMIC_GROUP_GET_NAME EM_ESCOPE_ATOMIC_GROUP_NAME
369#define EM_ESCOPE_ATOMIC_GROUP_GET_NEXT EM_ESCOPE_ATOMIC_GROUP_NEXT
370#define EM_ESCOPE_ATOMIC_GROUP_QUEUE_GET_FIRST EM_ESCOPE_ATOMIC_GROUP_QUEUE_FIRST
371#define EM_ESCOPE_ATOMIC_GROUP_QUEUE_GET_NEXT EM_ESCOPE_ATOMIC_GROUP_QUEUE_NEXT
372
373/* EM API escopes: Core */
374#define EM_ESCOPE_CORE_COUNT (EM_ESCOPE_API_MASK | 0x000B)
375#define EM_ESCOPE_CORE_ID (EM_ESCOPE_API_MASK | 0x000C)
376
377/* EM API escopes: Dispatcher */
378#define EM_ESCOPE_DISPATCH (EM_ESCOPE_API_MASK | 0x000D)
379#define EM_ESCOPE_DISPATCH_DURATION (EM_ESCOPE_API_MASK | 0x000E)
380#define EM_ESCOPE_DISPATCH_EVENTS (EM_ESCOPE_API_MASK | 0x000F)
381#define EM_ESCOPE_DISPATCH_NS (EM_ESCOPE_API_MASK | 0x0010)
382#define EM_ESCOPE_DISPATCH_OPT_INIT (EM_ESCOPE_API_MASK | 0x0011)
383#define EM_ESCOPE_DISPATCH_REGISTER_ENTER_CB (EM_ESCOPE_API_MASK | 0x0012)
384#define EM_ESCOPE_DISPATCH_REGISTER_EXIT_CB (EM_ESCOPE_API_MASK | 0x0013)
385#define EM_ESCOPE_DISPATCH_ROUNDS (EM_ESCOPE_API_MASK | 0x0014)
386#define EM_ESCOPE_DISPATCH_UNREGISTER_ENTER_CB (EM_ESCOPE_API_MASK | 0x0015)
387#define EM_ESCOPE_DISPATCH_UNREGISTER_EXIT_CB (EM_ESCOPE_API_MASK | 0x0016)
388
389/* EM API escopes: EO */
390#define EM_ESCOPE_EO_ADD_QUEUE (EM_ESCOPE_API_MASK | 0x0017)
391#define EM_ESCOPE_EO_ADD_QUEUE_SYNC (EM_ESCOPE_API_MASK | 0x0018)
392#define EM_ESCOPE_EO_CONTEXT (EM_ESCOPE_API_MASK | 0x0019)
393#define EM_ESCOPE_EO_CREATE (EM_ESCOPE_API_MASK | 0x001A)
394#define EM_ESCOPE_EO_CREATE_MULTIRCV (EM_ESCOPE_API_MASK | 0x001B)
395#define EM_ESCOPE_EO_CREATE_PARAM (EM_ESCOPE_API_MASK | 0x001C)
396#define EM_ESCOPE_EO_CURRENT (EM_ESCOPE_API_MASK | 0x001D)
397#define EM_ESCOPE_EO_DELETE (EM_ESCOPE_API_MASK | 0x001E)
398#define EM_ESCOPE_EO_FIND (EM_ESCOPE_API_MASK | 0x001F)
399#define EM_ESCOPE_EO_FIRST (EM_ESCOPE_API_MASK | 0x0020)
400#define EM_ESCOPE_EO_MULTIRCV_PARAM_INIT (EM_ESCOPE_API_MASK | 0x0021)
401#define EM_ESCOPE_EO_NAME (EM_ESCOPE_API_MASK | 0x0022)
402#define EM_ESCOPE_EO_NEXT (EM_ESCOPE_API_MASK | 0x0023)
403#define EM_ESCOPE_EO_PARAM_INIT (EM_ESCOPE_API_MASK | 0x0024)
404#define EM_ESCOPE_EO_QUEUE_FIRST (EM_ESCOPE_API_MASK | 0x0025)
405#define EM_ESCOPE_EO_QUEUE_NEXT (EM_ESCOPE_API_MASK | 0x0026)
406#define EM_ESCOPE_EO_REGISTER_ERROR_HANDLER (EM_ESCOPE_API_MASK | 0x0027)
407#define EM_ESCOPE_EO_REMOVE_QUEUE (EM_ESCOPE_API_MASK | 0x0028)
408#define EM_ESCOPE_EO_REMOVE_QUEUE_ALL (EM_ESCOPE_API_MASK | 0x0029)
409#define EM_ESCOPE_EO_REMOVE_QUEUE_ALL_SYNC (EM_ESCOPE_API_MASK | 0x002A)
410#define EM_ESCOPE_EO_REMOVE_QUEUE_SYNC (EM_ESCOPE_API_MASK | 0x002B)
411#define EM_ESCOPE_EO_START (EM_ESCOPE_API_MASK | 0x002C)
412#define EM_ESCOPE_EO_START_SYNC (EM_ESCOPE_API_MASK | 0x002D)
413#define EM_ESCOPE_EO_STATE (EM_ESCOPE_API_MASK | 0x002E)
414#define EM_ESCOPE_EO_STOP (EM_ESCOPE_API_MASK | 0x002F)
415#define EM_ESCOPE_EO_STOP_SYNC (EM_ESCOPE_API_MASK | 0x0030)
416#define EM_ESCOPE_EO_UNREGISTER_ERROR_HANDLER (EM_ESCOPE_API_MASK | 0x0031)
417/* Backwards compatible naming ("get") */
418#define EM_ESCOPE_EO_GET_CONTEXT EM_ESCOPE_EO_CONTEXT
419#define EM_ESCOPE_EO_GET_FIRST EM_ESCOPE_EO_FIRST
420#define EM_ESCOPE_EO_GET_NAME EM_ESCOPE_EO_NAME
421#define EM_ESCOPE_EO_GET_NEXT EM_ESCOPE_EO_NEXT
422#define EM_ESCOPE_EO_GET_STATE EM_ESCOPE_EO_STATE
423#define EM_ESCOPE_EO_QUEUE_GET_FIRST EM_ESCOPE_EO_QUEUE_FIRST
424#define EM_ESCOPE_EO_QUEUE_GET_NEXT EM_ESCOPE_EO_QUEUE_NEXT
425
426/* EM API escopes: Error */
427#define EM_ESCOPE_ERROR (EM_ESCOPE_API_MASK | 0x0032)
428#define EM_ESCOPE_REGISTER_ERROR_HANDLER (EM_ESCOPE_API_MASK | 0x0033)
429#define EM_ESCOPE_UNREGISTER_ERROR_HANDLER (EM_ESCOPE_API_MASK | 0x0034)
430
431/* EM API escopes: Event Group */
432#define EM_ESCOPE_EVENT_GROUP_ABORT (EM_ESCOPE_API_MASK | 0x0035)
433#define EM_ESCOPE_EVENT_GROUP_APPLY (EM_ESCOPE_API_MASK | 0x0036)
434#define EM_ESCOPE_EVENT_GROUP_ASSIGN (EM_ESCOPE_API_MASK | 0x0037)
435#define EM_ESCOPE_EVENT_GROUP_CREATE (EM_ESCOPE_API_MASK | 0x0038)
436#define EM_ESCOPE_EVENT_GROUP_CURRENT (EM_ESCOPE_API_MASK | 0x0039)
437#define EM_ESCOPE_EVENT_GROUP_DELETE (EM_ESCOPE_API_MASK | 0x003A)
438#define EM_ESCOPE_EVENT_GROUP_FIRST (EM_ESCOPE_API_MASK | 0x003B)
439#define EM_ESCOPE_EVENT_GROUP_INCREMENT (EM_ESCOPE_API_MASK | 0x003C)
440#define EM_ESCOPE_EVENT_GROUP_IS_READY (EM_ESCOPE_API_MASK | 0x003D)
441#define EM_ESCOPE_EVENT_GROUP_NEXT (EM_ESCOPE_API_MASK | 0x003E)
442#define EM_ESCOPE_EVENT_GROUP_NOTIF (EM_ESCOPE_API_MASK | 0x003F)
443#define EM_ESCOPE_EVENT_GROUP_PROCESSING_END (EM_ESCOPE_API_MASK | 0x0040)
444#define EM_ESCOPE_SEND_GROUP (EM_ESCOPE_API_MASK | 0x0041)
445#define EM_ESCOPE_SEND_GROUP_MULTI (EM_ESCOPE_API_MASK | 0x0042)
446/* Backwards compatible naming ("get") */
447#define EM_ESCOPE_EVENT_GROUP_GET_FIRST EM_ESCOPE_EVENT_GROUP_FIRST
448#define EM_ESCOPE_EVENT_GROUP_GET_NEXT EM_ESCOPE_EVENT_GROUP_NEXT
449#define EM_ESCOPE_EVENT_GROUP_GET_NOTIF EM_ESCOPE_EVENT_GROUP_NOTIF
450
451/* EM API escopes: Event */
452#define EM_ESCOPE_ALLOC (EM_ESCOPE_API_MASK | 0x0043)
453#define EM_ESCOPE_ALLOC_MULTI (EM_ESCOPE_API_MASK | 0x0044)
454#define EM_ESCOPE_EVENT_CLONE (EM_ESCOPE_API_MASK | 0x0045)
455#define EM_ESCOPE_EVENT_CLONE_PART (EM_ESCOPE_API_MASK | 0x0046)
456#define EM_ESCOPE_EVENT_HAS_REF (EM_ESCOPE_API_MASK | 0x0047)
457#define EM_ESCOPE_EVENT_MARK_FREE (EM_ESCOPE_API_MASK | 0x0048)
458#define EM_ESCOPE_EVENT_MARK_FREE_MULTI (EM_ESCOPE_API_MASK | 0x0049)
459#define EM_ESCOPE_EVENT_MARK_SEND (EM_ESCOPE_API_MASK | 0x004A)
460#define EM_ESCOPE_EVENT_POINTER (EM_ESCOPE_API_MASK | 0x004B)
461#define EM_ESCOPE_EVENT_POINTER_AND_SIZE (EM_ESCOPE_API_MASK | 0x004C)
462#define EM_ESCOPE_EVENT_POOL (EM_ESCOPE_API_MASK | 0x004D)
463#define EM_ESCOPE_EVENT_POOL_SUBPOOL (EM_ESCOPE_API_MASK | 0x004E)
464#define EM_ESCOPE_EVENT_REF (EM_ESCOPE_API_MASK | 0x004F)
465#define EM_ESCOPE_EVENT_SAME_TYPE_MULTI (EM_ESCOPE_API_MASK | 0x0050)
466#define EM_ESCOPE_EVENT_SET_TYPE (EM_ESCOPE_API_MASK | 0x0051)
467#define EM_ESCOPE_EVENT_SIZE (EM_ESCOPE_API_MASK | 0x0052)
468#define EM_ESCOPE_EVENT_TYPE (EM_ESCOPE_API_MASK | 0x0053)
469#define EM_ESCOPE_EVENT_TYPE_MULTI (EM_ESCOPE_API_MASK | 0x0054)
470#define EM_ESCOPE_EVENT_UAREA (EM_ESCOPE_API_MASK | 0x0055)
471#define EM_ESCOPE_EVENT_UAREA_ID (EM_ESCOPE_API_MASK | 0x0056)
472#define EM_ESCOPE_EVENT_UAREA_ID_SET (EM_ESCOPE_API_MASK | 0x0057)
473#define EM_ESCOPE_EVENT_UAREA_INFO (EM_ESCOPE_API_MASK | 0x0058)
474#define EM_ESCOPE_EVENT_UNMARK_FREE (EM_ESCOPE_API_MASK | 0x0059)
475#define EM_ESCOPE_EVENT_UNMARK_FREE_MULTI (EM_ESCOPE_API_MASK | 0x005A)
476#define EM_ESCOPE_EVENT_UNMARK_SEND (EM_ESCOPE_API_MASK | 0x005B)
477#define EM_ESCOPE_EVENT_VECTOR_FREE (EM_ESCOPE_API_MASK | 0x005C)
478#define EM_ESCOPE_EVENT_VECTOR_INFO (EM_ESCOPE_API_MASK | 0x005D)
479#define EM_ESCOPE_EVENT_VECTOR_MAX_SIZE (EM_ESCOPE_API_MASK | 0x005E)
480#define EM_ESCOPE_EVENT_VECTOR_SIZE (EM_ESCOPE_API_MASK | 0x005F)
481#define EM_ESCOPE_EVENT_VECTOR_SIZE_SET (EM_ESCOPE_API_MASK | 0x0060)
482#define EM_ESCOPE_EVENT_VECTOR_TBL (EM_ESCOPE_API_MASK | 0x0061)
483#define EM_ESCOPE_EVENT_VECTOR_TYPE (EM_ESCOPE_API_MASK | 0x0062)
484#define EM_ESCOPE_EVENT_VECTOR_TYPE_SET (EM_ESCOPE_API_MASK | 0x0063)
485#define EM_ESCOPE_FREE (EM_ESCOPE_API_MASK | 0x0064)
486#define EM_ESCOPE_FREE_MULTI (EM_ESCOPE_API_MASK | 0x0065)
487#define EM_ESCOPE_SEND (EM_ESCOPE_API_MASK | 0x0066)
488#define EM_ESCOPE_SEND_MULTI (EM_ESCOPE_API_MASK | 0x0067)
489/* Backwards compatible naming ("get") */
490#define EM_ESCOPE_EVENT_GET_POOL EM_ESCOPE_EVENT_POOL
491#define EM_ESCOPE_EVENT_GET_POOL_SUBPOOL EM_ESCOPE_EVENT_POOL_SUBPOOL
492#define EM_ESCOPE_EVENT_GET_SIZE EM_ESCOPE_EVENT_SIZE
493#define EM_ESCOPE_EVENT_GET_TYPE EM_ESCOPE_EVENT_TYPE
494#define EM_ESCOPE_EVENT_GET_TYPE_MULTI EM_ESCOPE_EVENT_TYPE_MULTI
495#define EM_ESCOPE_EVENT_UAREA_GET EM_ESCOPE_EVENT_UAREA
496#define EM_ESCOPE_EVENT_UAREA_ID_GET EM_ESCOPE_EVENT_UAREA_ID
497
498/* EM API escopes: Event Packet */
499#define EM_ESCOPE_PACKET_HEADROOM (EM_ESCOPE_API_MASK | 0x0068)
500#define EM_ESCOPE_PACKET_POINTER (EM_ESCOPE_API_MASK | 0x0069)
501#define EM_ESCOPE_PACKET_POINTER_AND_SIZE (EM_ESCOPE_API_MASK | 0x006A)
502#define EM_ESCOPE_PACKET_PULL_HEAD (EM_ESCOPE_API_MASK | 0x006B)
503#define EM_ESCOPE_PACKET_PULL_TAIL (EM_ESCOPE_API_MASK | 0x006C)
504#define EM_ESCOPE_PACKET_PUSH_HEAD (EM_ESCOPE_API_MASK | 0x006D)
505#define EM_ESCOPE_PACKET_PUSH_TAIL (EM_ESCOPE_API_MASK | 0x006E)
506#define EM_ESCOPE_PACKET_RESET (EM_ESCOPE_API_MASK | 0x006F)
507#define EM_ESCOPE_PACKET_RESIZE (EM_ESCOPE_API_MASK | 0x0070)
508#define EM_ESCOPE_PACKET_SIZE (EM_ESCOPE_API_MASK | 0x0071)
509#define EM_ESCOPE_PACKET_TAILROOM (EM_ESCOPE_API_MASK | 0x0072)
510#define EM_ESCOPE_PACKET_CONCAT (EM_ESCOPE_API_MASK | 0x0073)
511
512/* EM API escopes: Hooks */
513#define EM_ESCOPE_HOOKS_REGISTER_ALLOC (EM_ESCOPE_API_MASK | 0x0074)
514#define EM_ESCOPE_HOOKS_REGISTER_FREE (EM_ESCOPE_API_MASK | 0x0075)
515#define EM_ESCOPE_HOOKS_REGISTER_SEND (EM_ESCOPE_API_MASK | 0x0076)
516#define EM_ESCOPE_HOOKS_REGISTER_TO_ACTIVE (EM_ESCOPE_API_MASK | 0x0077)
517#define EM_ESCOPE_HOOKS_REGISTER_TO_IDLE (EM_ESCOPE_API_MASK | 0x0078)
518#define EM_ESCOPE_HOOKS_REGISTER_WHILE_IDLE (EM_ESCOPE_API_MASK | 0x0079)
519#define EM_ESCOPE_HOOKS_UNREGISTER_ALLOC (EM_ESCOPE_API_MASK | 0x007A)
520#define EM_ESCOPE_HOOKS_UNREGISTER_FREE (EM_ESCOPE_API_MASK | 0x007B)
521#define EM_ESCOPE_HOOKS_UNREGISTER_SEND (EM_ESCOPE_API_MASK | 0x007C)
522#define EM_ESCOPE_HOOKS_UNREGISTER_TO_ACTIVE (EM_ESCOPE_API_MASK | 0x007D)
523#define EM_ESCOPE_HOOKS_UNREGISTER_TO_IDLE (EM_ESCOPE_API_MASK | 0x007E)
524#define EM_ESCOPE_HOOKS_UNREGISTER_WHILE_IDLE (EM_ESCOPE_API_MASK | 0x007F)
525
526/* EM API escopes: Init / Term */
527#define EM_ESCOPE_CONF_INIT (EM_ESCOPE_API_MASK | 0x0080)
528#define EM_ESCOPE_CONF_LOCAL_INIT (EM_ESCOPE_API_MASK | 0x0081)
529#define EM_ESCOPE_CONF_OPTS (EM_ESCOPE_API_MASK | 0x0082)
530#define EM_ESCOPE_CONF_LOCAL_OPTS (EM_ESCOPE_API_MASK | 0x0083)
531#define EM_ESCOPE_INIT (EM_ESCOPE_API_MASK | 0x0084)
532#define EM_ESCOPE_INIT_CORE (EM_ESCOPE_API_MASK | 0x0085)
533#define EM_ESCOPE_INIT_LOCAL (EM_ESCOPE_API_MASK | 0x0086)
534#define EM_ESCOPE_TERM (EM_ESCOPE_API_MASK | 0x0087)
535#define EM_ESCOPE_TERM_CORE (EM_ESCOPE_API_MASK | 0x0088)
536#define EM_ESCOPE_TERM_LOCAL (EM_ESCOPE_API_MASK | 0x0089)
537#define EM_ESCOPE_TERM_LOCAL_INIT (EM_ESCOPE_API_MASK | 0x008A)
538#define EM_ESCOPE_CFGFILE_OPTS (EM_ESCOPE_API_MASK | 0x008B)
539
540/* EM API escopes: Pool */
541#define EM_ESCOPE_POOL_CFG_INIT (EM_ESCOPE_API_MASK | 0x008C)
542#define EM_ESCOPE_POOL_CREATE (EM_ESCOPE_API_MASK | 0x008D)
543#define EM_ESCOPE_POOL_DELETE (EM_ESCOPE_API_MASK | 0x008E)
544#define EM_ESCOPE_POOL_FIND (EM_ESCOPE_API_MASK | 0x008F)
545#define EM_ESCOPE_POOL_FIRST (EM_ESCOPE_API_MASK | 0x0090)
546#define EM_ESCOPE_POOL_INFO (EM_ESCOPE_API_MASK | 0x0091)
547#define EM_ESCOPE_POOL_NAME (EM_ESCOPE_API_MASK | 0x0092)
548#define EM_ESCOPE_POOL_NEXT (EM_ESCOPE_API_MASK | 0x0093)
549#define EM_ESCOPE_POOL_NUM_SUBPOOLS (EM_ESCOPE_API_MASK | 0x0094)
550#define EM_ESCOPE_POOL_STATS (EM_ESCOPE_API_MASK | 0x0095)
551#define EM_ESCOPE_POOL_STATS_RESET (EM_ESCOPE_API_MASK | 0x0096)
552#define EM_ESCOPE_POOL_STATS_SELECTED (EM_ESCOPE_API_MASK | 0x0097)
553#define EM_ESCOPE_POOL_SUBPOOL_STATS (EM_ESCOPE_API_MASK | 0x0098)
554#define EM_ESCOPE_POOL_SUBPOOL_STATS_RESET (EM_ESCOPE_API_MASK | 0x0099)
555#define EM_ESCOPE_POOL_SUBPOOL_STATS_SELECTED (EM_ESCOPE_API_MASK | 0x009A)
556#define EM_ESCOPE_POOL_STATS_OPT (EM_ESCOPE_API_MASK | 0x009B)
557/* Backwards compatible naming ("get") */
558#define EM_ESCOPE_POOL_GET_FIRST EM_ESCOPE_POOL_FIRST
559#define EM_ESCOPE_POOL_GET_NAME EM_ESCOPE_POOL_NAME
560#define EM_ESCOPE_POOL_GET_NEXT EM_ESCOPE_POOL_NEXT
561
562/* EM API escopes: Queue Group */
563#define EM_ESCOPE_QUEUE_GROUP_CREATE (EM_ESCOPE_API_MASK | 0x009C)
564#define EM_ESCOPE_QUEUE_GROUP_CREATE_SYNC (EM_ESCOPE_API_MASK | 0x009D)
565#define EM_ESCOPE_QUEUE_GROUP_DELETE (EM_ESCOPE_API_MASK | 0x009E)
566#define EM_ESCOPE_QUEUE_GROUP_DELETE_SYNC (EM_ESCOPE_API_MASK | 0x009F)
567#define EM_ESCOPE_QUEUE_GROUP_FIND (EM_ESCOPE_API_MASK | 0x00A0)
568#define EM_ESCOPE_QUEUE_GROUP_FIRST (EM_ESCOPE_API_MASK | 0x00A1)
569#define EM_ESCOPE_QUEUE_GROUP_MASK (EM_ESCOPE_API_MASK | 0x00A2)
570#define EM_ESCOPE_QUEUE_GROUP_MODIFY (EM_ESCOPE_API_MASK | 0x00A3)
571#define EM_ESCOPE_QUEUE_GROUP_MODIFY_SYNC (EM_ESCOPE_API_MASK | 0x00A4)
572#define EM_ESCOPE_QUEUE_GROUP_NAME (EM_ESCOPE_API_MASK | 0x00A5)
573#define EM_ESCOPE_QUEUE_GROUP_NEXT (EM_ESCOPE_API_MASK | 0x00A6)
574#define EM_ESCOPE_QUEUE_GROUP_QUEUE_FIRST (EM_ESCOPE_API_MASK | 0x00A7)
575#define EM_ESCOPE_QUEUE_GROUP_QUEUE_NEXT (EM_ESCOPE_API_MASK | 0x00A8)
576/* Backwards compatible naming ("get") */
577#define EM_ESCOPE_QUEUE_GROUP_GET_FIRST EM_ESCOPE_QUEUE_GROUP_FIRST
578#define EM_ESCOPE_QUEUE_GROUP_GET_NAME EM_ESCOPE_QUEUE_GROUP_NAME
579#define EM_ESCOPE_QUEUE_GROUP_GET_NEXT EM_ESCOPE_QUEUE_GROUP_NEXT
580#define EM_ESCOPE_QUEUE_GROUP_QUEUE_GET_FIRST EM_ESCOPE_QUEUE_GROUP_QUEUE_FIRST
581#define EM_ESCOPE_QUEUE_GROUP_QUEUE_GET_NEXT EM_ESCOPE_QUEUE_GROUP_QUEUE_NEXT
582
583/* EM API escopes: Queue */
584#define EM_ESCOPE_QUEUE_AGGR_CONF_INIT (EM_ESCOPE_API_MASK | 0x00A9)
585#define EM_ESCOPE_QUEUE_AGGR (EM_ESCOPE_API_MASK | 0x00AA)
586#define EM_ESCOPE_QUEUE_AGGR_INFO (EM_ESCOPE_API_MASK | 0x00AB)
587#define EM_ESCOPE_QUEUE_AGGR_LIST (EM_ESCOPE_API_MASK | 0x00AC)
588#define EM_ESCOPE_QUEUE_AGGR_NUM (EM_ESCOPE_API_MASK | 0x00AD)
589#define EM_ESCOPE_QUEUE_AGROUP (EM_ESCOPE_API_MASK | 0x00AE)
590#define EM_ESCOPE_QUEUE_CONTEXT (EM_ESCOPE_API_MASK | 0x00AF)
591#define EM_ESCOPE_QUEUE_CREATE (EM_ESCOPE_API_MASK | 0x00B0)
592#define EM_ESCOPE_QUEUE_CREATE_STATIC (EM_ESCOPE_API_MASK | 0x00B1)
593#define EM_ESCOPE_QUEUE_CREATE_PARAM (EM_ESCOPE_API_MASK | 0x00B2)
594#define EM_ESCOPE_QUEUE_CURRENT (EM_ESCOPE_API_MASK | 0x00B3)
595#define EM_ESCOPE_QUEUE_DELETE (EM_ESCOPE_API_MASK | 0x00B4)
596#define EM_ESCOPE_QUEUE_DEQUEUE (EM_ESCOPE_API_MASK | 0x00B5)
597#define EM_ESCOPE_QUEUE_DEQUEUE_MULTI (EM_ESCOPE_API_MASK | 0x00B6)
598#define EM_ESCOPE_QUEUE_FIND (EM_ESCOPE_API_MASK | 0x00B7)
599#define EM_ESCOPE_QUEUE_FIRST (EM_ESCOPE_API_MASK | 0x00B8)
600#define EM_ESCOPE_QUEUE_INDEX (EM_ESCOPE_API_MASK | 0x00B9)
601#define EM_ESCOPE_QUEUE_NAME (EM_ESCOPE_API_MASK | 0x00BA)
602#define EM_ESCOPE_QUEUE_NEXT (EM_ESCOPE_API_MASK | 0x00BB)
603#define EM_ESCOPE_QUEUE_NUM_PRIO (EM_ESCOPE_API_MASK | 0x00BC)
604#define EM_ESCOPE_QUEUE_PARAM_INIT (EM_ESCOPE_API_MASK | 0x00BD)
605#define EM_ESCOPE_QUEUE_PRIORITY (EM_ESCOPE_API_MASK | 0x00BE)
606#define EM_ESCOPE_QUEUE_QGROUP (EM_ESCOPE_API_MASK | 0x00BF)
607#define EM_ESCOPE_QUEUE_SET_CONTEXT (EM_ESCOPE_API_MASK | 0x00C0)
608#define EM_ESCOPE_QUEUE_TYPE (EM_ESCOPE_API_MASK | 0x00C1)
609#define EM_ESCOPE_QUEUE_STATIC_HANDLE (EM_ESCOPE_API_MASK | 0x00C2)
610/* Backwards compatible naming ("get") */
611#define EM_ESCOPE_ATOMIC_GROUP_GET EM_ESCOPE_QUEUE_AGROUP
612#define EM_ESCOPE_QUEUE_GET_CONTEXT EM_ESCOPE_QUEUE_CONTEXT
613#define EM_ESCOPE_QUEUE_GET_FIRST EM_ESCOPE_QUEUE_FIRST
614#define EM_ESCOPE_QUEUE_GET_GROUP EM_ESCOPE_QUEUE_QGROUP
615#define EM_ESCOPE_QUEUE_GET_INDEX EM_ESCOPE_QUEUE_INDEX
616#define EM_ESCOPE_QUEUE_GET_NAME EM_ESCOPE_QUEUE_NAME
617#define EM_ESCOPE_QUEUE_GET_NEXT EM_ESCOPE_QUEUE_NEXT
618#define EM_ESCOPE_QUEUE_GET_NUM_PRIO EM_ESCOPE_QUEUE_NUM_PRIO
619#define EM_ESCOPE_QUEUE_GET_PRIORITY EM_ESCOPE_QUEUE_PRIORITY
620#define EM_ESCOPE_QUEUE_GET_TYPE EM_ESCOPE_QUEUE_TYPE
621
622/* EM API escopes: Scheduler */
623#define EM_ESCOPE_ATOMIC_PROCESSING_END (EM_ESCOPE_API_MASK | 0x00C3)
624#define EM_ESCOPE_ORDERED_PROCESSING_END (EM_ESCOPE_API_MASK | 0x00C4)
625#define EM_ESCOPE_PRESCHEDULE (EM_ESCOPE_API_MASK | 0x00C5)
626#define EM_ESCOPE_SCHED_CONTEXT_TYPE_CURRENT (EM_ESCOPE_API_MASK | 0x00C6)
627
628/* EM API escopes: Timer */
629#define EM_ESCOPE_TIMER_ALL (EM_ESCOPE_API_MASK | 0x00C7)
630#define EM_ESCOPE_TIMER_ATTR (EM_ESCOPE_API_MASK | 0x00C8)
631#define EM_ESCOPE_TIMER_ATTR_INIT (EM_ESCOPE_API_MASK | 0x00C9)
632#define EM_ESCOPE_TIMER_CAPABILITY (EM_ESCOPE_API_MASK | 0x00CA)
633#define EM_ESCOPE_TIMER_CREATE (EM_ESCOPE_API_MASK | 0x00CB)
634#define EM_ESCOPE_TIMER_CUR_TICK (EM_ESCOPE_API_MASK | 0x00CC)
635#define EM_ESCOPE_TIMER_DELETE (EM_ESCOPE_API_MASK | 0x00CD)
636#define EM_ESCOPE_TIMER_FREQ (EM_ESCOPE_API_MASK | 0x00CE)
637#define EM_ESCOPE_TIMER_NS_TO_TICK (EM_ESCOPE_API_MASK | 0x00CF)
638#define EM_ESCOPE_TIMER_RES_CAPABILITY (EM_ESCOPE_API_MASK | 0x00D0)
639#define EM_ESCOPE_TIMER_RING_CREATE (EM_ESCOPE_API_MASK | 0x00D1)
640#define EM_ESCOPE_TIMER_RING_FREQ_CREATE (EM_ESCOPE_API_MASK | 0x00D2)
641#define EM_ESCOPE_TIMER_TICK_TO_NS (EM_ESCOPE_API_MASK | 0x00D3)
642#define EM_ESCOPE_TMO_ACK (EM_ESCOPE_API_MASK | 0x00D4)
643#define EM_ESCOPE_TMO_CANCEL (EM_ESCOPE_API_MASK | 0x00D5)
644#define EM_ESCOPE_TMO_CREATE (EM_ESCOPE_API_MASK | 0x00D6)
645#define EM_ESCOPE_TMO_CREATE_ARG (EM_ESCOPE_API_MASK | 0x00D7)
646#define EM_ESCOPE_TMO_DELETE (EM_ESCOPE_API_MASK | 0x00D8)
647#define EM_ESCOPE_TMO_SET_ABS (EM_ESCOPE_API_MASK | 0x00D9)
648#define EM_ESCOPE_TMO_SET_PERIODIC (EM_ESCOPE_API_MASK | 0x00DA)
649#define EM_ESCOPE_TMO_SET_PERIODIC_RING (EM_ESCOPE_API_MASK | 0x00DB)
650#define EM_ESCOPE_TMO_SET_REL (EM_ESCOPE_API_MASK | 0x00DC)
651#define EM_ESCOPE_TMO_STATE (EM_ESCOPE_API_MASK | 0x00DD)
652#define EM_ESCOPE_TMO_STATS (EM_ESCOPE_API_MASK | 0x00DE)
653#define EM_ESCOPE_TMO_TIMER (EM_ESCOPE_API_MASK | 0x00DF)
654#define EM_ESCOPE_TMO_TYPE (EM_ESCOPE_API_MASK | 0x00E0)
655#define EM_ESCOPE_TMO_USERPTR (EM_ESCOPE_API_MASK | 0x00E1)
656#define EM_ESCOPE_TMO_RING_ACK (EM_ESCOPE_API_MASK | 0x00E2)
657#define EM_ESCOPE_TMO_SET_PERIODIC_RING_FREQ (EM_ESCOPE_API_MASK | 0x00E3)
658/* Backwards compatible naming ("get") */
659#define EM_ESCOPE_TIMER_GET_ALL EM_ESCOPE_TIMER_ALL
660#define EM_ESCOPE_TIMER_GET_ATTR EM_ESCOPE_TIMER_ATTR
661#define EM_ESCOPE_TIMER_GET_FREQ EM_ESCOPE_TIMER_FREQ
662#define EM_ESCOPE_TMO_GET_STATE EM_ESCOPE_TMO_STATE
663#define EM_ESCOPE_TMO_GET_STATS EM_ESCOPE_TMO_STATS
664#define EM_ESCOPE_TMO_GET_TIMER EM_ESCOPE_TMO_TIMER
665#define EM_ESCOPE_TMO_GET_TYPE EM_ESCOPE_TMO_TYPE
666#define EM_ESCOPE_TMO_GET_USERPTR EM_ESCOPE_TMO_USERPTR
667/* Keep last */
668#define EM_ESCOPE_API_LAST (EM_ESCOPE_API_MASK | 0x00FF)
669
670/******************************************************************************
671 * EM Add-on API function error scopes:
672 ******************************************************************************/
673/* Add-on APIs have a separate escope file but define a base here */
674#define EM_ESCOPE_ADD_ON_API_BASE (EM_ESCOPE_ADDON_API_MASK | 0x0000)
675
676/******************************************************************************
677 * EM internal (non-API) error scopes:
678 ******************************************************************************/
679#define EM_ESCOPE_INTERNAL_FIRST (EM_ESCOPE_INTERNAL_MASK | 0x0000)
680
681/* EM internal escopes: Event Chaining */
682#define EM_ESCOPE_EVENT_SEND_DEVICE (EM_ESCOPE_INTERNAL_MASK | 0x0001)
683#define EM_ESCOPE_EVENT_SEND_DEVICE_MULTI (EM_ESCOPE_INTERNAL_MASK | 0x0002)
684
685/* EM internal escopes: Event Group */
686#define EM_ESCOPE_EVENT_GROUP_UPDATE (EM_ESCOPE_INTERNAL_MASK | 0x0003)
687#define EM_ESCOPE_EVENT_GROUP_UPDATE_PRECNT (EM_ESCOPE_INTERNAL_MASK | 0x0004)
688#define EM_ESCOPE_EVENT_GROUP_UPDATE_POSTCNT (EM_ESCOPE_INTERNAL_MASK | 0x0005)
689
690/* EM internal escopes: EO */
691#define EM_ESCOPE_EO_LOCAL_FUNC_CALL_REQ (EM_ESCOPE_INTERNAL_MASK | 0x0006)
692#define EM_ESCOPE_EO_REMOVE_QUEUE_ALL_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x0007)
693#define EM_ESCOPE_EO_REMOVE_QUEUE_ALL_SYNC_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x0008)
694#define EM_ESCOPE_EO_REMOVE_QUEUE_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x0009)
695#define EM_ESCOPE_EO_REMOVE_QUEUE_SYNC_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x000A)
696#define EM_ESCOPE_EO_START_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x000B)
697#define EM_ESCOPE_EO_START_SYNC_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x000C)
698#define EM_ESCOPE_EO_STOP_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x000D)
699#define EM_ESCOPE_EO_STOP_SYNC_DONE_CB (EM_ESCOPE_INTERNAL_MASK | 0x000E)
700
701/* EM internal escopes: Queue */
702#define EM_ESCOPE_QUEUE_DISABLE (EM_ESCOPE_INTERNAL_MASK | 0x000F)
703#define EM_ESCOPE_QUEUE_DISABLE_ALL (EM_ESCOPE_INTERNAL_MASK | 0x0010)
704#define EM_ESCOPE_QUEUE_ENABLE (EM_ESCOPE_INTERNAL_MASK | 0x0011)
705#define EM_ESCOPE_QUEUE_ENABLE_ALL (EM_ESCOPE_INTERNAL_MASK | 0x0012)
706#define EM_ESCOPE_QUEUE_STATE_CHANGE (EM_ESCOPE_INTERNAL_MASK | 0x0013)
707
708/* EM internal escopes: Queue Groups */
709#define EM_ESCOPE_QUEUE_GROUP_ADD_CORE (EM_ESCOPE_INTERNAL_MASK | 0x0014)
710#define EM_ESCOPE_QUEUE_GROUP_REM_CORE (EM_ESCOPE_INTERNAL_MASK | 0x0015)
711
712/* EM internal escopes: Other */
713#define EM_ESCOPE_DELETE_CTRL_QUEUES (EM_ESCOPE_INTERNAL_MASK | 0x0016)
714#define EM_ESCOPE_EVENT_INTERNAL_DONE (EM_ESCOPE_INTERNAL_MASK | 0x0017)
715#define EM_ESCOPE_EVENT_INTERNAL_LFUNC_CALL (EM_ESCOPE_INTERNAL_MASK | 0x0018)
716#define EM_ESCOPE_INTERNAL_DONE_W_NOTIF_REQ (EM_ESCOPE_INTERNAL_MASK | 0x0019)
717#define EM_ESCOPE_INTERNAL_EVENT_RECV_FUNC (EM_ESCOPE_INTERNAL_MASK | 0x001A)
718#define EM_ESCOPE_INTERNAL_NOTIF (EM_ESCOPE_INTERNAL_MASK | 0x001B)
719#define EM_ESCOPE_SEND_CTRL_QUEUE (EM_ESCOPE_INTERNAL_MASK | 0x001C)
720
721/**
722 * EM ODP extensions error scope
723 */
724#define EM_ESCOPE_ODP_EXT (EM_ESCOPE_INTERNAL_MASK | 0x001D)
725
726/* Keep last */
727#define EM_ESCOPE_INTERNAL_LAST (EM_ESCOPE_INTERNAL_MASK | 0x001E)
728
729/**
730 * @}
731 */
732#ifdef __cplusplus
733}
734#endif
735
736#pragma GCC visibility pop
737#endif /* EVENT_MACHINE_ERROR_H_ */
uint32_t em_escope_t
em_status_t(* em_error_handler_t)(em_eo_t eo, em_status_t error, em_escope_t escope, va_list args)
void em_error(em_status_t error, em_escope_t escope,...)
em_status_t em_unregister_error_handler(void)
uint32_t em_status_t
int(* em_log_func_t)(em_log_level_t level, const char *fmt,...) __attribute__((format(printf
int(*) typedef int(* em_vlog_func_t)(em_log_level_t level, const char *fmt, va_list args)
em_status_t em_register_error_handler(em_error_handler_t handler)
@ EM_ERR_TOOFAR
@ EM_ERR_BUSY
@ EM_ERR_NOT_FOUND
@ EM_ERR_OPERATION_FAILED
@ EM_ERR_TOO_LARGE
@ EM_ERR_TIMEOUT
@ EM_ERR_EVENT_STATE
@ EM_ERR_BAD_ID
@ EM_ERR_CANCELED
@ EM_ERR_NOT_CREATED
@ EM_ERR_NOT_FREE
@ EM_ERR_TOO_SMALL
@ EM_ERR_BAD_CONTEXT
@ EM_ERR_ALLOC_FAILED
@ EM_ERR_BAD_ARG
@ EM_ERR_NOT_IMPLEMENTED
@ EM_ERR_NOT_SUPPORTED
@ EM_ERR_BAD_STATE
@ EM_ERR_BAD_TYPE
@ EM_ERR_TOONEAR
@ EM_ERR_LIB_FAILED
@ EM_ERR_NOT_INITIALIZED
@ EM_ERR_BAD_POINTER