~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to include/net/cls_cgroup.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * cls_cgroup.h                 Control Group Classifier
 
3
 *
 
4
 * Authors:     Thomas Graf <tgraf@suug.ch>
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify it
 
7
 * under the terms of the GNU General Public License as published by the Free
 
8
 * Software Foundation; either version 2 of the License, or (at your option)
 
9
 * any later version.
 
10
 *
 
11
 */
 
12
 
 
13
#ifndef _NET_CLS_CGROUP_H
 
14
#define _NET_CLS_CGROUP_H
 
15
 
 
16
#include <linux/cgroup.h>
 
17
#include <linux/hardirq.h>
 
18
#include <linux/rcupdate.h>
 
19
 
 
20
#ifdef CONFIG_CGROUPS
 
21
struct cgroup_cls_state
 
22
{
 
23
        struct cgroup_subsys_state css;
 
24
        u32 classid;
 
25
};
 
26
 
 
27
#ifdef CONFIG_NET_CLS_CGROUP
 
28
static inline u32 task_cls_classid(struct task_struct *p)
 
29
{
 
30
        int classid;
 
31
 
 
32
        if (in_interrupt())
 
33
                return 0;
 
34
 
 
35
        rcu_read_lock();
 
36
        classid = container_of(task_subsys_state(p, net_cls_subsys_id),
 
37
                               struct cgroup_cls_state, css)->classid;
 
38
        rcu_read_unlock();
 
39
 
 
40
        return classid;
 
41
}
 
42
#else
 
43
extern int net_cls_subsys_id;
 
44
 
 
45
static inline u32 task_cls_classid(struct task_struct *p)
 
46
{
 
47
        int id;
 
48
        u32 classid = 0;
 
49
 
 
50
        if (in_interrupt())
 
51
                return 0;
 
52
 
 
53
        rcu_read_lock();
 
54
        id = rcu_dereference_index_check(net_cls_subsys_id,
 
55
                                         rcu_read_lock_held());
 
56
        if (id >= 0)
 
57
                classid = container_of(task_subsys_state(p, id),
 
58
                                       struct cgroup_cls_state, css)->classid;
 
59
        rcu_read_unlock();
 
60
 
 
61
        return classid;
 
62
}
 
63
#endif
 
64
#else
 
65
static inline u32 task_cls_classid(struct task_struct *p)
 
66
{
 
67
        return 0;
 
68
}
 
69
#endif
 
70
#endif  /* _NET_CLS_CGROUP_H */