hc
2023-11-20 520ec20d74dfd87f62fd58b921b7209d6daed94a
kernel/include/linux/rtmutex.h
....@@ -14,10 +14,14 @@
1414 #define __LINUX_RT_MUTEX_H
1515
1616 #include <linux/linkage.h>
17
+#include <linux/spinlock_types_raw.h>
1718 #include <linux/rbtree.h>
18
-#include <linux/spinlock_types.h>
1919
2020 extern int max_lock_depth; /* for sysctl */
21
+
22
+#ifdef CONFIG_DEBUG_MUTEXES
23
+#include <linux/debug_locks.h>
24
+#endif
2125
2226 /**
2327 * The rt_mutex structure
....@@ -31,8 +35,8 @@
3135 raw_spinlock_t wait_lock;
3236 struct rb_root_cached waiters;
3337 struct task_struct *owner;
34
-#ifdef CONFIG_DEBUG_RT_MUTEXES
3538 int save_state;
39
+#ifdef CONFIG_DEBUG_RT_MUTEXES
3640 const char *name, *file;
3741 int line;
3842 void *magic;
....@@ -82,15 +86,22 @@
8286 #define __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname)
8387 #endif
8488
85
-#define __RT_MUTEX_INITIALIZER(mutexname) \
86
- { .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(mutexname.wait_lock) \
89
+#define __RT_MUTEX_INITIALIZER_PLAIN(mutexname) \
90
+ .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(mutexname.wait_lock) \
8791 , .waiters = RB_ROOT_CACHED \
8892 , .owner = NULL \
8993 __DEBUG_RT_MUTEX_INITIALIZER(mutexname) \
90
- __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname)}
94
+ __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname)
95
+
96
+#define __RT_MUTEX_INITIALIZER(mutexname) \
97
+ { __RT_MUTEX_INITIALIZER_PLAIN(mutexname) }
9198
9299 #define DEFINE_RT_MUTEX(mutexname) \
93100 struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname)
101
+
102
+#define __RT_MUTEX_INITIALIZER_SAVE_STATE(mutexname) \
103
+ { __RT_MUTEX_INITIALIZER_PLAIN(mutexname) \
104
+ , .save_state = 1 }
94105
95106 /**
96107 * rt_mutex_is_locked - is the mutex locked
....@@ -115,6 +126,7 @@
115126 #endif
116127
117128 extern int rt_mutex_lock_interruptible(struct rt_mutex *lock);
129
+extern int rt_mutex_lock_killable(struct rt_mutex *lock);
118130 extern int rt_mutex_timed_lock(struct rt_mutex *lock,
119131 struct hrtimer_sleeper *timeout);
120132