blob: 27eafd002556ef8681e63bd5a09fd83bca9f0d70 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#ifndef LITMUS_LOCKING_H
#define LITMUS_LOCKING_H
#include <linux/list.h>
struct litmus_lock_ops;
/* Generic base struct for LITMUS^RT userspace semaphores.
* This structure should be embedded in protocol-specific semaphores.
*/
struct litmus_lock {
struct litmus_lock_ops *ops;
int type;
#ifdef CONFIG_LITMUS_NESTED_LOCKING
struct list_head lock_chain;
#endif
};
struct litmus_lock_ops {
/* Current task tries to obtain / drop a reference to a lock.
* Optional methods, allowed by default. */
int (*open)(struct litmus_lock*, void* __user);
int (*close)(struct litmus_lock*);
/* Current tries to lock/unlock this lock (mandatory methods). */
int (*lock)(struct litmus_lock*);
int (*unlock)(struct litmus_lock*);
/* The lock is no longer being referenced (mandatory method). */
void (*deallocate)(struct litmus_lock*);
};
#endif
|