kernel: sem: add K_SEM_MAX_LIMIT
Currently there is no way to distinguish between a caller explicitly asking for a semaphore with a limit that happens to be `UINT_MAX` and a semaphore that just has a limit "as large as possible". Add `K_SEM_MAX_LIMIT`, currently defined to `UINT_MAX`, and akin to `K_FOREVER` versus just passing some very large wait time. In addition, the `k_sem_*` APIs were type-confused, where the internal data structure was `uint32_t`, but the APIs took and returned `unsigned int`. This changes the underlying data structure to also use `unsigned int`, as changing the APIs would be a (potentially) breaking change. These changes are backwards-compatible, but it is strongly suggested to take a quick scan for `k_sem_init` and `K_SEM_DEFINE` calls with `UINT_MAX` (or `UINT32_MAX`) and replace them with `K_SEM_MAX_LIMIT` where appropriate. Signed-off-by: James Harris <james.harris@intel.com>
This commit is contained in:
parent
4f0eaad283
commit
b10428163a
86 changed files with 110 additions and 96 deletions
|
@ -142,7 +142,7 @@ int sx12xx_lora_test_cw(const struct device *dev, uint32_t frequency,
|
|||
|
||||
int sx12xx_init(const struct device *dev)
|
||||
{
|
||||
k_sem_init(&dev_data.data_sem, 0, UINT_MAX);
|
||||
k_sem_init(&dev_data.data_sem, 0, K_SEM_MAX_LIMIT);
|
||||
|
||||
dev_data.events.TxDone = sx12xx_ev_tx_done;
|
||||
dev_data.events.RxDone = sx12xx_ev_rx_done;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue