summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeco Man <[email protected]>2021-05-30 11:43:44 +0800
committerMeco Man <[email protected]>2021-05-30 11:47:33 +0800
commit8b82b834826249dff299353da44188429d18dde2 (patch)
tree6f7f606156a90e1504c40205d1b81c3d6001af3a /src
parent06927af8f1955778b8f3d5f6afc09e01de4e17c1 (diff)
[kernel] 增加rt_mutex_trytake
Diffstat (limited to 'src')
-rwxr-xr-xsrc/ipc.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/ipc.c b/src/ipc.c
index 22e0f06bc6..6cd38b74ab 100755
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -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.
*