WE310F5  39.00.000
m2mb_os_sem.h
Go to the documentation of this file.
1 /* $version: 301934 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
27 #ifndef M2MB_OS_SEM_H
28 #define M2MB_OS_SEM_H
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
43 /*-----------------------------------------------------------------------------------------------*/
44 
49 /*-----------------------------------------------------------------------------------------------*/
50 
51 /* Global declarations ==========================================================================*/
52 #define M2MB_OS_SEM_INVALID 0
53 #define M2MB_OS_SEM_INVALID_ATTR 0
54 
55 /*-----------------------------------------------------------------------------------------------
56 
57  can be called directly without specify CMDS_ARGS
58  osRes = m2mb_os_sem_setAttrItem_( &semAttrHandle,
59  M2MB_OS_SEM_SEL_CMD_CREATE_ATTR, NULL,
60  M2MB_OS_SEM_SEL_CMD_COUNT, initVal,
61  M2MB_OS_SEM_SEL_CMD_TYPE, M2MB_OS_SEM_GEN,
62  M2MB_OS_SEM_SEL_CMD_NAME, "MySem"
63  );
64  -----------------------------------------------------------------------------------------------*/
65 #define m2mb_os_sem_setAttrItem_( h, args,... ) m2mb_os_sem_setAttrItem( h, CMDS_ARGS( args ) )
66 
67 /* Global typedefs --------------------------------------------------------------- */
68 typedef enum
69 {
70  /* not limited counter value: could overflow and restart with 0 */
72  /* counter limited to 1 */
74  /* counter limited to defined value */
76 
80 
81 typedef enum
82 {
85  /* use as Os name, available during creation */
87  /* if set, usr name could be different from Os during creation */
89  /* type of semaphore: see M2MB_OS_SEM_TYPE_E */
91  /* max counter value has effect for M2MB_OS_SEM_COUNTING type only */
93  /* High Priority Task First: every put will move highest priority task on top of FIFO */
95  /* curren semaphore counting value */
97  /* number of task suspended on this resource */
99  /* first task (M2MB_OS_TASK_HANDLE) to be served when resource will be available */
101 
102  /* ---- */
106 
107 typedef struct M2MB_OS_SEM_HANDLE_TAG *M2MB_OS_SEM_HANDLE;
108 typedef struct M2MB_OS_SEM_ATTR_HANDLE_TAG *M2MB_OS_SEM_ATTR_HANDLE;
109 
110 
111 /* Global functions =============================================================================*/
112 
113 
114 /*-----------------------------------------------------------------------------------------------*/
195 /*-----------------------------------------------------------------------------------------------*/
197  M2MB_OS_SEM_HANDLE *pSemHandle,
198  M2MB_OS_SEM_ATTR_HANDLE *pSemAttr
199 );
200 
201 /*-----------------------------------------------------------------------------------------------*/
241 /*-----------------------------------------------------------------------------------------------*/
243 
244 /*-----------------------------------------------------------------------------------------------*/
295 /*-----------------------------------------------------------------------------------------------*/
296  M2MB_OS_RESULT_E m2mb_os_sem_get( M2MB_OS_SEM_HANDLE semHandle, UINT32 timeoutTicks );
297 
298 /*-----------------------------------------------------------------------------------------------*/
340 /*-----------------------------------------------------------------------------------------------*/
342 
343 /*-----------------------------------------------------------------------------------------------*/
390 /*-----------------------------------------------------------------------------------------------*/
392 
393 /*-----------------------------------------------------------------------------------------------*/
488 /*-----------------------------------------------------------------------------------------------*/
490  M2MB_OS_SEM_ATTR_HANDLE *pSemAttrHandle,
491  UINT8 nCmds,
492  ...
493 );
494 
495 /*-----------------------------------------------------------------------------------------------*/
572 /*-----------------------------------------------------------------------------------------------*/
574  M2MB_OS_SEM_SEL_CMD_E selCmd,
575  MEM_W *pOut,
576  void *pIn
577  );
578 
579 /*-----------------------------------------------------------------------------------------------*/
628 /*-----------------------------------------------------------------------------------------------*/
630  M2MB_OS_SEM_HANDLE semHandle,
631  M2MB_OS_SEM_SEL_CMD_E selCmd,
632  void *pIn
633 );
634 
638 /*-----------------------------------------------------------------------------------------------*/
639 
640 #ifdef __cplusplus
641 }
642 #endif
643 #endif /* M2MB_OS_SEM_H */
M2MB_OS_SEM_SEL_CMD_E
Definition: m2mb_os_sem.h:81
#define ENUM_TO_INT(Prefix)
Definition: m2mb_types.h:207
unsigned char UINT8
Definition: m2mb_types.h:86
M2MB_OS_RESULT_E m2mb_os_sem_put(M2MB_OS_SEM_HANDLE semHandle)
Place (put) an instance in semaphore.
struct M2MB_OS_SEM_HANDLE_TAG * M2MB_OS_SEM_HANDLE
Definition: m2mb_os_sem.h:107
M2MB_OS_RESULT_E m2mb_os_sem_setAttrItem(M2MB_OS_SEM_ATTR_HANDLE *pSemAttrHandle, UINT8 nCmds,...)
Set semaphore attribute for creation.
M2MB_OS_RESULT_E m2mb_os_sem_init(M2MB_OS_SEM_HANDLE *pSemHandle, M2MB_OS_SEM_ATTR_HANDLE *pSemAttr)
Semaphore creation.
M2MB_OS_RESULT_E m2mb_os_sem_getItem(M2MB_OS_SEM_HANDLE semHandle, M2MB_OS_SEM_SEL_CMD_E selCmd, MEM_W *pOut, void *pIn)
Get specific semaphore properties.
enum M2MB_OS_RESULT M2MB_OS_RESULT_E
M2MB_OS_RESULT_E m2mb_os_sem_get(M2MB_OS_SEM_HANDLE semHandle, UINT32 timeoutTicks)
Get an instance of semaphore.
M2MB_OS_RESULT_E m2mb_os_sem_deinit(M2MB_OS_SEM_HANDLE semHandle)
Semaphore deinit or deletion.
M2MB_OS_RESULT_E m2mb_os_sem_hptf(M2MB_OS_SEM_HANDLE semHandle)
Prioritize semaphore suspension list HPTF: Highest Priority Task First.
unsigned long int UINT32
Definition: m2mb_types.h:88
UINT32 MEM_W
Definition: m2mb_types.h:94
struct M2MB_OS_SEM_ATTR_HANDLE_TAG * M2MB_OS_SEM_ATTR_HANDLE
Definition: m2mb_os_sem.h:108
M2MB_OS_SEM_TYPE_E
Definition: m2mb_os_sem.h:68
M2MB_OS_RESULT_E m2mb_os_sem_setItem(M2MB_OS_SEM_HANDLE semHandle, M2MB_OS_SEM_SEL_CMD_E selCmd, void *pIn)
Set specific semaphore properties.