Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
semaphore.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2008 Intel Corporation
3
* Author: Matthew Wilcox <
[email protected]
>
4
*
5
* Distributed under the terms of the GNU GPL, version 2
6
*
7
* Please see kernel/semaphore.c for documentation of these functions
8
*/
9
#ifndef __LINUX_SEMAPHORE_H
10
#define __LINUX_SEMAPHORE_H
11
12
#include <linux/list.h>
13
#include <
linux/spinlock.h
>
14
15
/* Please don't access any members of this structure directly */
16
struct
semaphore
{
17
raw_spinlock_t
lock
;
18
unsigned
int
count
;
19
struct
list_head
wait_list
;
20
};
21
22
#define __SEMAPHORE_INITIALIZER(name, n) \
23
{ \
24
.lock = __RAW_SPIN_LOCK_UNLOCKED((name).lock), \
25
.count = n, \
26
.wait_list = LIST_HEAD_INIT((name).wait_list), \
27
}
28
29
#define DEFINE_SEMAPHORE(name) \
30
struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1)
31
32
static
inline
void
sema_init(
struct
semaphore
*
sem
,
int
val
)
33
{
34
static
struct
lock_class_key
__key;
35
*sem = (
struct
semaphore
) __SEMAPHORE_INITIALIZER(*sem,
val
);
36
lockdep_init_map
(&sem->
lock
.dep_map,
"semaphore->lock"
, &__key, 0);
37
}
38
39
extern
void
down
(
struct
semaphore
*
sem
);
40
extern
int
__must_check
down_interruptible
(
struct
semaphore
*
sem
);
41
extern
int
__must_check
down_killable
(
struct
semaphore
*
sem
);
42
extern
int
__must_check
down_trylock
(
struct
semaphore
*
sem
);
43
extern
int
__must_check
down_timeout
(
struct
semaphore
*
sem
,
long
jiffies);
44
extern
void
up
(
struct
semaphore
*
sem
);
45
46
#endif
/* __LINUX_SEMAPHORE_H */
Generated on Thu Jan 10 2013 14:52:33 for Linux Kernel by
1.8.2