OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [tags/] [linux-2.6/] [linux-2.6.24_orig/] [kernel/] [cgroup_debug.c] - Blame information for rev 8

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * kernel/ccontainer_debug.c - Example cgroup subsystem that
3
 * exposes debug info
4
 *
5
 * Copyright (C) Google Inc, 2007
6
 *
7
 * Developed by Paul Menage (menage@google.com)
8
 *
9
 */
10
 
11
#include <linux/cgroup.h>
12
#include <linux/fs.h>
13
#include <linux/slab.h>
14
#include <linux/rcupdate.h>
15
 
16
#include <asm/atomic.h>
17
 
18
static struct cgroup_subsys_state *debug_create(struct cgroup_subsys *ss,
19
                                                   struct cgroup *cont)
20
{
21
        struct cgroup_subsys_state *css = kzalloc(sizeof(*css), GFP_KERNEL);
22
 
23
        if (!css)
24
                return ERR_PTR(-ENOMEM);
25
 
26
        return css;
27
}
28
 
29
static void debug_destroy(struct cgroup_subsys *ss, struct cgroup *cont)
30
{
31
        kfree(cont->subsys[debug_subsys_id]);
32
}
33
 
34
static u64 cgroup_refcount_read(struct cgroup *cont, struct cftype *cft)
35
{
36
        return atomic_read(&cont->count);
37
}
38
 
39
static u64 taskcount_read(struct cgroup *cont, struct cftype *cft)
40
{
41
        u64 count;
42
 
43
        cgroup_lock();
44
        count = cgroup_task_count(cont);
45
        cgroup_unlock();
46
        return count;
47
}
48
 
49
static u64 current_css_set_read(struct cgroup *cont, struct cftype *cft)
50
{
51
        return (u64)(long)current->cgroups;
52
}
53
 
54
static u64 current_css_set_refcount_read(struct cgroup *cont,
55
                                           struct cftype *cft)
56
{
57
        u64 count;
58
 
59
        rcu_read_lock();
60
        count = atomic_read(&current->cgroups->ref.refcount);
61
        rcu_read_unlock();
62
        return count;
63
}
64
 
65
static struct cftype files[] =  {
66
        {
67
                .name = "cgroup_refcount",
68
                .read_uint = cgroup_refcount_read,
69
        },
70
        {
71
                .name = "taskcount",
72
                .read_uint = taskcount_read,
73
        },
74
 
75
        {
76
                .name = "current_css_set",
77
                .read_uint = current_css_set_read,
78
        },
79
 
80
        {
81
                .name = "current_css_set_refcount",
82
                .read_uint = current_css_set_refcount_read,
83
        },
84
};
85
 
86
static int debug_populate(struct cgroup_subsys *ss, struct cgroup *cont)
87
{
88
        return cgroup_add_files(cont, ss, files, ARRAY_SIZE(files));
89
}
90
 
91
struct cgroup_subsys debug_subsys = {
92
        .name = "debug",
93
        .create = debug_create,
94
        .destroy = debug_destroy,
95
        .populate = debug_populate,
96
        .subsys_id = debug_subsys_id,
97
};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.