blob: 4d7b870cb4437361cd2f8afc8109674e1e6d4528 (
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
|
#ifndef LITMUS_LOCKING_H
#define LITMUS_LOCKING_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;
};
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
|