]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/cgroup.h
relicense to LGPLv2.1 (with exceptions)
[thirdparty/systemd.git] / src / core / cgroup.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
8e274523
LP
2
3#ifndef foocgrouphfoo
4#define foocgrouphfoo
5
6/***
7 This file is part of systemd.
8
9 Copyright 2010 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
8e274523
LP
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 19 Lesser General Public License for more details.
8e274523 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
8e274523
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
8e274523
LP
25typedef struct CGroupBonding CGroupBonding;
26
27#include "unit.h"
28
29/* Binds a cgroup to a name */
30struct CGroupBonding {
31 char *controller;
32 char *path;
33
34 Unit *unit;
35
9d58f1db
LP
36 /* For the Unit::cgroup_bondings list */
37 LIST_FIELDS(CGroupBonding, by_unit);
38
39 /* For the Manager::cgroup_bondings hashmap */
40 LIST_FIELDS(CGroupBonding, by_path);
41
d686d8a9
LP
42 /* When shutting down, remove cgroup? Are our own tasks the
43 * only ones in this group?*/
44 bool ours:1;
8e274523 45
d686d8a9
LP
46 /* If we cannot create this group, or add a process to it, is this fatal? */
47 bool essential:1;
8c6db833
LP
48
49 /* This cgroup is realized */
50 bool realized:1;
8e274523
LP
51};
52
53int cgroup_bonding_realize(CGroupBonding *b);
54int cgroup_bonding_realize_list(CGroupBonding *first);
55
8d53b453
LP
56void cgroup_bonding_free(CGroupBonding *b, bool trim);
57void cgroup_bonding_free_list(CGroupBonding *first, bool trim);
8e274523
LP
58
59int cgroup_bonding_install(CGroupBonding *b, pid_t pid);
60int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid);
61
64747e2d
LP
62int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid);
63int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid);
64
8d53b453
LP
65int cgroup_bonding_set_task_access(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid, int sticky);
66int cgroup_bonding_set_task_access_list(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid, int sticky);
64747e2d 67
430c18ed
LP
68int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s);
69int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s);
8e274523 70
fb385181
LP
71void cgroup_bonding_trim(CGroupBonding *first, bool delete_root);
72void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root);
73
8e274523
LP
74int cgroup_bonding_is_empty(CGroupBonding *b);
75int cgroup_bonding_is_empty_list(CGroupBonding *first);
76
77CGroupBonding *cgroup_bonding_find_list(CGroupBonding *first, const char *controller);
78
6dde1f33
LP
79char *cgroup_bonding_to_string(CGroupBonding *b);
80
4fbf50b3
LP
81pid_t cgroup_bonding_search_main_pid(CGroupBonding *b);
82pid_t cgroup_bonding_search_main_pid_list(CGroupBonding *b);
83
8e274523
LP
84#include "manager.h"
85
86int manager_setup_cgroup(Manager *m);
c6c18be3 87void manager_shutdown_cgroup(Manager *m, bool delete);
8e274523 88
acb14d31 89int cgroup_bonding_get(Manager *m, const char *cgroup, CGroupBonding **bonding);
8e274523
LP
90int cgroup_notify_empty(Manager *m, const char *group);
91
8c47c732
LP
92Unit* cgroup_unit_by_pid(Manager *m, pid_t pid);
93
8e274523 94#endif