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
kernel
sched
auto_group.h
Go to the documentation of this file.
1
#ifdef CONFIG_SCHED_AUTOGROUP
2
3
#include <
linux/kref.h
>
4
#include <
linux/rwsem.h
>
5
6
struct
autogroup {
7
struct
kref
kref
;
8
struct
task_group *tg;
9
struct
rw_semaphore
lock
;
10
unsigned
long
id
;
11
int
nice;
12
};
13
14
extern
void
autogroup_init(
struct
task_struct
*
init_task
);
15
extern
void
autogroup_free(
struct
task_group *tg);
16
17
static
inline
bool
task_group_is_autogroup(
struct
task_group *tg)
18
{
19
return
!!tg->autogroup;
20
}
21
22
extern
bool
task_wants_autogroup(
struct
task_struct
*
p
,
struct
task_group *tg);
23
24
static
inline
struct
task_group *
25
autogroup_task_group(
struct
task_struct
*
p
,
struct
task_group *tg)
26
{
27
int
enabled
=
ACCESS_ONCE
(sysctl_sched_autogroup_enabled);
28
29
if
(enabled && task_wants_autogroup(p, tg))
30
return
p->
signal
->autogroup->tg;
31
32
return
tg;
33
}
34
35
extern
int
autogroup_path(
struct
task_group *tg,
char
*
buf
,
int
buflen
);
36
37
#else
/* !CONFIG_SCHED_AUTOGROUP */
38
39
static
inline
void
autogroup_init(
struct
task_struct
*
init_task
) { }
40
static
inline
void
autogroup_free(
struct
task_group *tg) { }
41
static
inline
bool
task_group_is_autogroup(
struct
task_group *tg)
42
{
43
return
0;
44
}
45
46
static
inline
struct
task_group *
47
autogroup_task_group(
struct
task_struct
*p,
struct
task_group *tg)
48
{
49
return
tg;
50
}
51
52
#ifdef CONFIG_SCHED_DEBUG
53
static
inline
int
autogroup_path(
struct
task_group *tg,
char
*
buf
,
int
buflen
)
54
{
55
return
0;
56
}
57
#endif
58
59
#endif
/* CONFIG_SCHED_AUTOGROUP */
Generated on Thu Jan 10 2013 14:54:55 for Linux Kernel by
1.8.2