diff options
| author | Bernard Xiong <[email protected]> | 2021-06-01 11:04:45 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-06-01 11:04:45 +0800 |
| commit | ffde6dd2d5749263f51c2776b796e94cfa992509 (patch) | |
| tree | 6f7f606156a90e1504c40205d1b81c3d6001af3a | |
| parent | 06927af8f1955778b8f3d5f6afc09e01de4e17c1 (diff) | |
| parent | 8b82b834826249dff299353da44188429d18dde2 (diff) | |
Merge pull request #4747 from mysterywolf/trytake
[kernel] 增加rt_mutex_trytake
| -rw-r--r-- | include/rtthread.h | 1 | ||||
| -rwxr-xr-x | src/ipc.c | 18 |
2 files changed, 17 insertions, 2 deletions
diff --git a/include/rtthread.h b/include/rtthread.h index 784b208a76..ccd2d147a8 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -322,6 +322,7 @@ rt_mutex_t rt_mutex_create(const char *name, rt_uint8_t flag); rt_err_t rt_mutex_delete(rt_mutex_t mutex); rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time); +rt_err_t rt_mutex_trytake(rt_mutex_t mutex); rt_err_t rt_mutex_release(rt_mutex_t mutex); rt_err_t rt_mutex_control(rt_mutex_t mutex, int cmd, void *arg); #endif @@ -37,7 +37,8 @@ * 2020-07-29 Meco Man fix thread->event_set/event_info when received an * event without pending * 2020-10-11 Meco Man add value overflow-check code - * 2021-01-03 Meco Man add rt_mb_urgent() + * 2021-01-03 Meco Man implement rt_mb_urgent() + * 2021-05-30 Meco Man implement rt_mutex_trytake() * 2021-01-20 hupu fix priority inversion bug of mutex */ @@ -452,7 +453,7 @@ RTM_EXPORT(rt_sem_take); */ rt_err_t rt_sem_trytake(rt_sem_t sem) { - return rt_sem_take(sem, 0); + return rt_sem_take(sem, RT_WAITING_NO); } RTM_EXPORT(rt_sem_trytake); @@ -844,6 +845,19 @@ __again: RTM_EXPORT(rt_mutex_take); /** + * This function will try to take a mutex and immediately return + * + * @param mutex the mutex object + * + * @return the error code + */ +rt_err_t rt_mutex_trytake(rt_mutex_t mutex) +{ + return rt_mutex_take(mutex, RT_WAITING_NO); +} +RTM_EXPORT(rt_mutex_trytake); + +/** * This function will release a mutex, if there are threads suspended on mutex, * it will be waked up. * |
