m2mb API docs  25.30.004.0
m2mb API sets documentation
m2mb_os_mtx.h
Go to the documentation of this file.
1 /* $version: 252203 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
27 #ifndef M2MB_OS_MTX_H
28 #define M2MB_OS_MTX_H
29 
30 
31 /* GLOBAL DECLARATIONS ----------------------------------------------------------- */
32 #define M2MB_OS_MTX_INVALID 0
33 #define M2MB_OS_MTX_INVALID_ATTR 0
34 
35 /* Global declarations ==========================================================================*/
36 
37 /*-----------------------------------------------------------------------------------------------
38 
39  can be called directly without specify CMDS_ARGS
40  osRes = m2mb_os_mtx_setAttrItem_( &mtxAttrHandle,
41  M2MB_OS_MTX_SEL_CMD_CREATE_ATTR, NULL,
42  M2MB_OS_MTX_SEL_CMD_NAME, "myMtx1",
43  M2MB_OS_MTX_SEL_CMD_USRNAME, "myUserMtx1",
44  M2MB_OS_MTX_SEL_CMD_INHERIT, inheritVal
45  );
46  -----------------------------------------------------------------------------------------------*/
47 
48 #ifdef _WIN32
49 #define m2mb_os_mtx_setAttrItem_( h, ... ) m2mb_os_mtx_setAttrItem( h, CMDS_ARGS( __VA_ARGS__ ) )
50 #else
51 #define m2mb_os_mtx_setAttrItem_( h, args... ) m2mb_os_mtx_setAttrItem( h, CMDS_ARGS( args ) )
52 #endif
53 
54 
55 /* Global typedefs --------------------------------------------------------------- */
56 
57 typedef enum
58 {
59  M2MB_OS_MTX_SEL_CMD_CREATE_ATTR,
60  M2MB_OS_MTX_SEL_CMD_DEL_ATTR,
61  /* use as Os name during creation */
62  M2MB_OS_MTX_SEL_CMD_NAME,
63  /* if set, usr name could be different from Os during creation */
64  M2MB_OS_MTX_SEL_CMD_USRNAME,
65  /* select if priority inheritance will be active for it. To avoid priority inversion, priority of the task
66  owning the mutex will be temporarily raised to the task of the highest priority waiting for the mutex */
67  M2MB_OS_MTX_SEL_CMD_INHERIT,
68  /* high priority task first option cmd not supported: here only for backward compatibility
69  see function tx_hptf_com(...) for the desired functionality */
70  M2MB_OS_MTX_SEL_CMD_HPTF_NO_SUPPORT,
71  M2MB_OS_MTX_SEL_CMD_COUNT,
72  /* number of task suspended on this resource */
73  M2MB_OS_MTX_SEL_CMD_SUSPENDED_COUNT,
74  /* first task (M2MB_OS_TASK_HANDLE) to be served when resource will be available */
75  M2MB_OS_MTX_SEL_CMD_1ST_SUSP,
76  /* owner (M2MB_OS_TASK_HANDLE) of the resource mtxHandle */
77  M2MB_OS_MTX_SEL_CMD_OWNER,
78 
79  /* ---- */
80  M2MB_OS_MTX_SEL_CMD_END,
81  ENUM_TO_INT( M2MB_OS_MTX_SEL_CMD_E )
82 } M2MB_OS_MTX_SEL_CMD_E;
83 
84 typedef struct M2MB_OS_MTX_HANDLE_TAG *M2MB_OS_MTX_HANDLE;
85 typedef struct M2MB_OS_MTX_ATTR_HANDLE_TAG *M2MB_OS_MTX_ATTR_HANDLE;
86 
87 
88 
89 /* Global functions =============================================================================*/
90 
91 /*-----------------------------------------------------------------------------------------------*/
148 /*-----------------------------------------------------------------------------------------------*/
149 M2MB_OS_RESULT_E m2mb_os_mtx_init(
150  M2MB_OS_MTX_HANDLE *pMtxHandle,
151  M2MB_OS_MTX_ATTR_HANDLE *pMtxAttr
152 );
153 
154 /*-----------------------------------------------------------------------------------------------*/
193 /*-----------------------------------------------------------------------------------------------*/
194 M2MB_OS_RESULT_E m2mb_os_mtx_deinit( M2MB_OS_MTX_HANDLE mtxHandle );
195 
196 /*-----------------------------------------------------------------------------------------------*/
250 /*-----------------------------------------------------------------------------------------------*/
251 M2MB_OS_RESULT_E m2mb_os_mtx_get( M2MB_OS_MTX_HANDLE mtxHandle, UINT32 timeoutTicks );
252 
253 /*-----------------------------------------------------------------------------------------------*/
294 /*-----------------------------------------------------------------------------------------------*/
295 M2MB_OS_RESULT_E m2mb_os_mtx_put( M2MB_OS_MTX_HANDLE mtxHandle );
296 
297 /*-----------------------------------------------------------------------------------------------*/
341 /*-----------------------------------------------------------------------------------------------*/
342 M2MB_OS_RESULT_E m2mb_os_mtx_hptf( M2MB_OS_MTX_HANDLE mtxHandle );
343 
344 /*-----------------------------------------------------------------------------------------------*/
407 /*-----------------------------------------------------------------------------------------------*/
408 M2MB_OS_RESULT_E m2mb_os_mtx_setAttrItem(
409  M2MB_OS_MTX_ATTR_HANDLE *pMtxAttrHandle,
410  UINT8 nCmds,
411  ...
412 );
413 
414 /*-----------------------------------------------------------------------------------------------*/
482 /*-----------------------------------------------------------------------------------------------*/
483 M2MB_OS_RESULT_E m2mb_os_mtx_getItem(
484  M2MB_OS_MTX_HANDLE mtxHandle,
485  M2MB_OS_MTX_SEL_CMD_E selCmd,
486  MEM_W *pOut,
487  void *pIn
488 );
489 
490 /*-----------------------------------------------------------------------------------------------*/
530 /*-----------------------------------------------------------------------------------------------*/
531 M2MB_OS_RESULT_E m2mb_os_mtx_setItem( M2MB_OS_MTX_HANDLE mtxHandle,
532  M2MB_OS_MTX_SEL_CMD_E selCmd,
533  void *pIn
534  );
535 
536 
537 
538 #endif /* M2MB_OS_MTX_H */
m2mb_os_mtx_setAttrItem
M2MB_OS_RESULT_E m2mb_os_mtx_setAttrItem(M2MB_OS_MTX_ATTR_HANDLE *pMtxAttrHandle, UINT8 nCmds,...)
Set specific attribute for mutex creation.
m2mb_os_mtx_put
M2MB_OS_RESULT_E m2mb_os_mtx_put(M2MB_OS_MTX_HANDLE mtxHandle)
Release ownership of the mutex (if counter = 0: exit critical section)
m2mb_os_mtx_deinit
M2MB_OS_RESULT_E m2mb_os_mtx_deinit(M2MB_OS_MTX_HANDLE mtxHandle)
Mutex deinit or deletion.
m2mb_os_mtx_setItem
M2MB_OS_RESULT_E m2mb_os_mtx_setItem(M2MB_OS_MTX_HANDLE mtxHandle, M2MB_OS_MTX_SEL_CMD_E selCmd, void *pIn)
Set specific properties of the mutex.
m2mb_os_mtx_hptf
M2MB_OS_RESULT_E m2mb_os_mtx_hptf(M2MB_OS_MTX_HANDLE mtxHandle)
Prioritize mutex suspension list HPTF: Highest Priority Task First.
m2mb_os_mtx_get
M2MB_OS_RESULT_E m2mb_os_mtx_get(M2MB_OS_MTX_HANDLE mtxHandle, UINT32 timeoutTicks)
Get the ownership of the mutex (critical session enter)
m2mb_os_mtx_init
M2MB_OS_RESULT_E m2mb_os_mtx_init(M2MB_OS_MTX_HANDLE *pMtxHandle, M2MB_OS_MTX_ATTR_HANDLE *pMtxAttr)
Mutex Creation.
m2mb_os_mtx_getItem
M2MB_OS_RESULT_E m2mb_os_mtx_getItem(M2MB_OS_MTX_HANDLE mtxHandle, M2MB_OS_MTX_SEL_CMD_E selCmd, MEM_W *pOut, void *pIn)
Get specific properties of the mutex.