summaryrefslogtreecommitdiff
path: root/kern/rtmutex.h
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2017-08-27 17:00:40 +0200
committerRichard Braun <rbraun@sceen.net>2017-08-27 17:03:38 +0200
commite395627038e10c6e966a141743b95d7c286b25bd (patch)
tree746c543e9b04b90ead5bfa8f3d13b74c92df6ab9 /kern/rtmutex.h
parentb155465ec7984d8a3f8c07a5f548e457f31b6af3 (diff)
kern/rtmutex: implement timed waits
Diffstat (limited to 'kern/rtmutex.h')
-rw-r--r--kern/rtmutex.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/kern/rtmutex.h b/kern/rtmutex.h
index ec79afa9..87cd15ad 100644
--- a/kern/rtmutex.h
+++ b/kern/rtmutex.h
@@ -87,6 +87,20 @@ rtmutex_lock(struct rtmutex *rtmutex)
}
}
+static inline int
+rtmutex_timedlock(struct rtmutex *rtmutex, uint64_t ticks)
+{
+ uintptr_t prev_owner;
+
+ prev_owner = rtmutex_lock_fast(rtmutex);
+
+ if (unlikely(prev_owner != 0)) {
+ return rtmutex_timedlock_slow(rtmutex, ticks);
+ }
+
+ return 0;
+}
+
/*
* Unlock a real-time mutex.
*