Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /** |
---|---|
2 | * css_get - obtain a reference on the specified css |
3 | * @css: target css |
4 | * |
5 | * The caller must already have a reference. |
6 | */ |
7 | CGROUP_REF_FN_ATTRS |
8 | void css_get(struct cgroup_subsys_state *css) |
9 | { |
10 | if (!(css->flags & CSS_NO_REF)) |
11 | percpu_ref_get(&css->refcnt); |
12 | } |
13 | CGROUP_REF_EXPORT(css_get) |
14 | |
15 | /** |
16 | * css_get_many - obtain references on the specified css |
17 | * @css: target css |
18 | * @n: number of references to get |
19 | * |
20 | * The caller must already have a reference. |
21 | */ |
22 | CGROUP_REF_FN_ATTRS |
23 | void css_get_many(struct cgroup_subsys_state *css, unsigned int n) |
24 | { |
25 | if (!(css->flags & CSS_NO_REF)) |
26 | percpu_ref_get_many(&css->refcnt, n); |
27 | } |
28 | CGROUP_REF_EXPORT(css_get_many) |
29 | |
30 | /** |
31 | * css_tryget - try to obtain a reference on the specified css |
32 | * @css: target css |
33 | * |
34 | * Obtain a reference on @css unless it already has reached zero and is |
35 | * being released. This function doesn't care whether @css is on or |
36 | * offline. The caller naturally needs to ensure that @css is accessible |
37 | * but doesn't have to be holding a reference on it - IOW, RCU protected |
38 | * access is good enough for this function. Returns %true if a reference |
39 | * count was successfully obtained; %false otherwise. |
40 | */ |
41 | CGROUP_REF_FN_ATTRS |
42 | bool css_tryget(struct cgroup_subsys_state *css) |
43 | { |
44 | if (!(css->flags & CSS_NO_REF)) |
45 | return percpu_ref_tryget(&css->refcnt); |
46 | return true; |
47 | } |
48 | CGROUP_REF_EXPORT(css_tryget) |
49 | |
50 | /** |
51 | * css_tryget_online - try to obtain a reference on the specified css if online |
52 | * @css: target css |
53 | * |
54 | * Obtain a reference on @css if it's online. The caller naturally needs |
55 | * to ensure that @css is accessible but doesn't have to be holding a |
56 | * reference on it - IOW, RCU protected access is good enough for this |
57 | * function. Returns %true if a reference count was successfully obtained; |
58 | * %false otherwise. |
59 | */ |
60 | CGROUP_REF_FN_ATTRS |
61 | bool css_tryget_online(struct cgroup_subsys_state *css) |
62 | { |
63 | if (!(css->flags & CSS_NO_REF)) |
64 | return percpu_ref_tryget_live(&css->refcnt); |
65 | return true; |
66 | } |
67 | CGROUP_REF_EXPORT(css_tryget_online) |
68 | |
69 | /** |
70 | * css_put - put a css reference |
71 | * @css: target css |
72 | * |
73 | * Put a reference obtained via css_get() and css_tryget_online(). |
74 | */ |
75 | CGROUP_REF_FN_ATTRS |
76 | void css_put(struct cgroup_subsys_state *css) |
77 | { |
78 | if (!(css->flags & CSS_NO_REF)) |
79 | percpu_ref_put(&css->refcnt); |
80 | } |
81 | CGROUP_REF_EXPORT(css_put) |
82 | |
83 | /** |
84 | * css_put_many - put css references |
85 | * @css: target css |
86 | * @n: number of references to put |
87 | * |
88 | * Put references obtained via css_get() and css_tryget_online(). |
89 | */ |
90 | CGROUP_REF_FN_ATTRS |
91 | void css_put_many(struct cgroup_subsys_state *css, unsigned int n) |
92 | { |
93 | if (!(css->flags & CSS_NO_REF)) |
94 | percpu_ref_put_many(&css->refcnt, n); |
95 | } |
96 | CGROUP_REF_EXPORT(css_put_many) |
97 |
Warning: This file is not a C or C++ file. It does not have highlighting.