Semaphore
RTOS semaphore functions. More...
Functions |
|
gos_result_t | gos_rtos_semaphore_init (gos_semaphore_t *semaphore) |
Initializes a semaphore.
More...
|
|
gos_result_t | gos_rtos_semaphore_deinit (gos_semaphore_t *semaphore) |
De-initialise a semaphore.
More...
|
|
gos_result_t | gos_rtos_semaphore_set (gos_semaphore_t *semaphore) |
Set (post/put/increment) a semaphore.
More...
|
|
gos_result_t | gos_rtos_semaphore_get (gos_semaphore_t *semaphore, uint32_t timeout_ms) |
Get (wait/decrement) a semaphore.
More...
|
|
void | gos_rtos_semaphore_reset (gos_semaphore_t *semaphore) |
Set counting semaphore to zero.
More...
|
|
gos_result_t | gos_rtos_semaphore_get_count (const gos_semaphore_t *semaphore, int32_t *count_ptr) |
Get the current count of a semaphore.
More...
|
|
Detailed Description
RTOS semaphore functions.
Function Documentation
◆ gos_rtos_semaphore_deinit()
gos_result_t gos_rtos_semaphore_deinit | ( | gos_semaphore_t * |
semaphore
|
) |
De-initialise a semaphore.
Deletes a semaphore created with gos_rtos_semaphore_init()
- Parameters
-
semaphore
: Pointer to the semaphore handle
- Returns
- GOS_SUCCESS : on success.
- GOS_ERROR : if an error occurred
◆ gos_rtos_semaphore_get()
gos_result_t gos_rtos_semaphore_get | ( | gos_semaphore_t * |
semaphore,
|
uint32_t |
timeout_ms
|
||
) |
Get (wait/decrement) a semaphore.
Attempts to get (wait/decrement) a semaphore. If semaphore is at zero already, then the calling thread will be suspended until another thread sets the semaphore with gos_rtos_semaphore_set()
- Note
- The provided semaphore should have been previously initialized with gos_rtos_semaphore_init() .
- Parameters
-
[in] semaphore
: Pointer to the semaphore handle [in] timeout_ms
: Number of milliseconds to wait before returning
- Returns
- Result of API call, gos_result_t
- Examples:
- demo/uart_blaster/uart_blaster.c .
◆ gos_rtos_semaphore_get_count()
gos_result_t gos_rtos_semaphore_get_count | ( | const gos_semaphore_t * |
semaphore,
|
int32_t * |
count_ptr
|
||
) |
Get the current count of a semaphore.
This returns the current 'count' of the given semaphore. The count has the following meanings:
- Greater than zero => A call to gos_rtos_semaphore_get() will NOT block
- Equal to zero => Nothing is waiting on the semaphore, a call to gos_rtos_semaphore_get() WILL block
- Less than zero => Objects are waiting on the semaphore, a call to gos_rtos_semaphore_get() WILL block
- Note
- The provided semaphore should have been previously initialized with gos_rtos_semaphore_init() .
- Parameters
-
[in] semaphore
: Pointer to the semaphore handle [out] count_ptr
: Pointer to hold the semaphore's current count
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_semaphore_init()
gos_result_t gos_rtos_semaphore_init | ( | gos_semaphore_t * |
semaphore
|
) |
Initializes a semaphore.
Initializes a counting semaphore
When this semaphore is no longer needed, gos_rtos_semaphore_deinit() should be called to clean it up.
- Parameters
-
[in] semaphore
: Pointer to the semaphore handle to be initialised
- Returns
- Result of API call, gos_result_t
- Examples:
- demo/uart_blaster/uart_blaster.c .
◆ gos_rtos_semaphore_reset()
void gos_rtos_semaphore_reset | ( | gos_semaphore_t * |
semaphore
|
) |
Set counting semaphore to zero.
Reset the semaphore's counter to zero. Any tasks blocking on the semaphore will automatically be unblocked.
- Note
- The provided semaphore should have been previously initialized with gos_rtos_semaphore_init() .
- Parameters
-
[in] semaphore
: Pointer to the semaphore handle
- Returns
- Result of API call, gos_result_t
- Examples:
- demo/uart_blaster/uart_blaster.c .
◆ gos_rtos_semaphore_set()
gos_result_t gos_rtos_semaphore_set | ( | gos_semaphore_t * |
semaphore
|
) |
Set (post/put/increment) a semaphore.
Set (post/put/increment) a semaphore
- Note
- The provided semaphore should have been previously initialized with gos_rtos_semaphore_init() .
- Parameters
-
[in] semaphore
: Pointer to the semaphore handle to be set
- Returns
- Result of API call, gos_result_t
- Examples:
- demo/uart_blaster/uart_blaster.c .