diff options
| author | Tyge Løvset <[email protected]> | 2023-05-02 14:01:38 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2023-05-02 14:19:20 +0200 |
| commit | 028b113df1e09cb56ac56b4ad60f633b8fabaded (patch) | |
| tree | 766a7cdc82fd87d6db5694be1aa3c3a1a00062b9 | |
| parent | ab7a91c501fb3b7054e836a931754caae578c5f2 (diff) | |
| download | STC-modified-028b113df1e09cb56ac56b4ad60f633b8fabaded.tar.gz STC-modified-028b113df1e09cb56ac56b4ad60f633b8fabaded.zip | |
Add cco_await_void().
| -rw-r--r-- | docs/ccommon_api.md | 7 | ||||
| -rw-r--r-- | include/stc/algo/coroutine.h | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/docs/ccommon_api.md b/docs/ccommon_api.md index 407ddac4..f4a2c349 100644 --- a/docs/ccommon_api.md +++ b/docs/ccommon_api.md @@ -362,14 +362,15 @@ To resume the coroutine from where it was suspended with *cco_yield()*, simply c | | `cco_yield(retval)` | Suspend execution and return retval | | | `cco_yield()` | Suspend execution (return void) | | | `cco_await(promise)` | Suspend and return false until promise is true | +| | `cco_await_void(promise)` | Suspend until promise is true (return void) | | | `cco_await_while(cond, retval)` | Suspend and return retval while cond is true | -| | From caller side: | | -| `void` | `cco_stop(ctx)` | Next call of coroutine returns `cco_end()` | -| `void` | `cco_reset(ctx)` | Reset state to initial (for reuse) | | | Semaphores: | | | | `cco_semaphore` | Semaphore type | | | `cco_await_sem(sem)` | Await for the semaphore count > 0 | | | `cco_signal_sem(sem)` | Signal the semaphore by increasing count| +| | From caller side: | | +| `void` | `cco_stop(ctx)` | Next call of coroutine returns `cco_end()` | +| `void` | `cco_reset(ctx)` | Reset state to initial (for reuse) | --- ## RAII scope macros diff --git a/include/stc/algo/coroutine.h b/include/stc/algo/coroutine.h index f6769162..5cadbc6a 100644 --- a/include/stc/algo/coroutine.h +++ b/include/stc/algo/coroutine.h @@ -89,6 +89,7 @@ enum cco_states { } while (0) #define cco_await(promise) cco_await_while(!(promise), false) +#define cco_await_void(promise) cco_await_while(!(promise), ) #define cco_final \ case cco_state_final: \ @@ -120,7 +121,7 @@ typedef struct { * This macro carries out the "wait" operation on the semaphore. The * wait operation causes the "thread" to block while the counter is * zero. When the counter reaches a value larger than zero, the - * protothread will continue. + * "thread" will continue. */ #define cco_await_sem(sem) \ do { \ @@ -136,6 +137,6 @@ typedef struct { * eventually will cause waiting "threads" to continue executing. */ #define cco_signal_sem(sem) ++(sem)->count -#define cco_reset_sem(sem, value) ((sem)->count = value) +#define cco_reset_sem(sem, value) ((sem)->count = (value)) #endif |
