.. | .. |
---|
24 | 24 | #include <linux/user_namespace.h> |
---|
25 | 25 | #include <linux/refcount.h> |
---|
26 | 26 | #include <linux/kernel_stat.h> |
---|
| 27 | +#include <linux/android_kabi.h> |
---|
27 | 28 | |
---|
28 | 29 | #include <linux/cgroup-defs.h> |
---|
| 30 | + |
---|
| 31 | +struct kernel_clone_args; |
---|
29 | 32 | |
---|
30 | 33 | #ifdef CONFIG_CGROUPS |
---|
31 | 34 | |
---|
.. | .. |
---|
58 | 61 | struct list_head *tcset_head; |
---|
59 | 62 | |
---|
60 | 63 | struct list_head *task_pos; |
---|
61 | | - struct list_head *tasks_head; |
---|
62 | | - struct list_head *mg_tasks_head; |
---|
63 | | - struct list_head *dying_tasks_head; |
---|
64 | 64 | |
---|
65 | 65 | struct list_head *cur_tasks_head; |
---|
66 | 66 | struct css_set *cur_cset; |
---|
67 | 67 | struct css_set *cur_dcset; |
---|
68 | 68 | struct task_struct *cur_task; |
---|
69 | 69 | struct list_head iters_node; /* css_set->task_iters */ |
---|
| 70 | + |
---|
| 71 | + ANDROID_KABI_RESERVE(1); |
---|
70 | 72 | }; |
---|
71 | 73 | |
---|
| 74 | +extern struct file_system_type cgroup_fs_type; |
---|
72 | 75 | extern struct cgroup_root cgrp_dfl_root; |
---|
73 | | -extern struct css_set init_css_set; |
---|
| 76 | +extern struct ext_css_set init_ext_css_set; |
---|
| 77 | +#define init_css_set init_ext_css_set.cset |
---|
74 | 78 | |
---|
75 | 79 | #define SUBSYS(_x) extern struct cgroup_subsys _x ## _cgrp_subsys; |
---|
76 | 80 | #include <linux/cgroup_subsys.h> |
---|
.. | .. |
---|
98 | 102 | |
---|
99 | 103 | bool css_has_online_children(struct cgroup_subsys_state *css); |
---|
100 | 104 | struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss); |
---|
| 105 | +struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup, |
---|
| 106 | + struct cgroup_subsys *ss); |
---|
101 | 107 | struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup, |
---|
102 | 108 | struct cgroup_subsys *ss); |
---|
103 | 109 | struct cgroup_subsys_state *css_tryget_online_from_dir(struct dentry *dentry, |
---|
.. | .. |
---|
120 | 126 | struct pid *pid, struct task_struct *tsk); |
---|
121 | 127 | |
---|
122 | 128 | void cgroup_fork(struct task_struct *p); |
---|
123 | | -extern int cgroup_can_fork(struct task_struct *p); |
---|
124 | | -extern void cgroup_cancel_fork(struct task_struct *p); |
---|
125 | | -extern void cgroup_post_fork(struct task_struct *p); |
---|
| 129 | +extern int cgroup_can_fork(struct task_struct *p, |
---|
| 130 | + struct kernel_clone_args *kargs); |
---|
| 131 | +extern void cgroup_cancel_fork(struct task_struct *p, |
---|
| 132 | + struct kernel_clone_args *kargs); |
---|
| 133 | +extern void cgroup_post_fork(struct task_struct *p, |
---|
| 134 | + struct kernel_clone_args *kargs); |
---|
126 | 135 | void cgroup_exit(struct task_struct *p); |
---|
127 | 136 | void cgroup_release(struct task_struct *p); |
---|
128 | 137 | void cgroup_free(struct task_struct *p); |
---|
.. | .. |
---|
302 | 311 | /* |
---|
303 | 312 | * Inline functions. |
---|
304 | 313 | */ |
---|
| 314 | + |
---|
| 315 | +static inline u64 cgroup_id(struct cgroup *cgrp) |
---|
| 316 | +{ |
---|
| 317 | + return cgrp->kn->id; |
---|
| 318 | +} |
---|
305 | 319 | |
---|
306 | 320 | /** |
---|
307 | 321 | * css_get - obtain a reference on the specified css |
---|
.. | .. |
---|
564 | 578 | { |
---|
565 | 579 | if (cgrp->root != ancestor->root || cgrp->level < ancestor->level) |
---|
566 | 580 | return false; |
---|
567 | | - return cgrp->ancestor_ids[ancestor->level] == ancestor->id; |
---|
| 581 | + return cgrp->ancestor_ids[ancestor->level] == cgroup_id(ancestor); |
---|
568 | 582 | } |
---|
569 | 583 | |
---|
570 | 584 | /** |
---|
.. | .. |
---|
615 | 629 | /* returns ino associated with a cgroup */ |
---|
616 | 630 | static inline ino_t cgroup_ino(struct cgroup *cgrp) |
---|
617 | 631 | { |
---|
618 | | - return cgrp->kn->id.ino; |
---|
| 632 | + return kernfs_ino(cgrp->kn); |
---|
619 | 633 | } |
---|
620 | 634 | |
---|
621 | 635 | /* cft/css accessors for cftype->write() operation */ |
---|
.. | .. |
---|
688 | 702 | current->no_cgroup_migration = 0; |
---|
689 | 703 | } |
---|
690 | 704 | |
---|
691 | | -static inline union kernfs_node_id *cgroup_get_kernfs_id(struct cgroup *cgrp) |
---|
692 | | -{ |
---|
693 | | - return &cgrp->kn->id; |
---|
694 | | -} |
---|
695 | | - |
---|
696 | | -void cgroup_path_from_kernfs_id(const union kernfs_node_id *id, |
---|
697 | | - char *buf, size_t buflen); |
---|
| 705 | +void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen); |
---|
698 | 706 | #else /* !CONFIG_CGROUPS */ |
---|
699 | 707 | |
---|
700 | 708 | struct cgroup_subsys_state; |
---|
701 | 709 | struct cgroup; |
---|
702 | 710 | |
---|
| 711 | +static inline u64 cgroup_id(struct cgroup *cgrp) { return 1; } |
---|
| 712 | +static inline void css_get(struct cgroup_subsys_state *css) {} |
---|
703 | 713 | static inline void css_put(struct cgroup_subsys_state *css) {} |
---|
704 | 714 | static inline int cgroup_attach_task_all(struct task_struct *from, |
---|
705 | 715 | struct task_struct *t) { return 0; } |
---|
.. | .. |
---|
707 | 717 | struct dentry *dentry) { return -EINVAL; } |
---|
708 | 718 | |
---|
709 | 719 | static inline void cgroup_fork(struct task_struct *p) {} |
---|
710 | | -static inline int cgroup_can_fork(struct task_struct *p) { return 0; } |
---|
711 | | -static inline void cgroup_cancel_fork(struct task_struct *p) {} |
---|
712 | | -static inline void cgroup_post_fork(struct task_struct *p) {} |
---|
| 720 | +static inline int cgroup_can_fork(struct task_struct *p, |
---|
| 721 | + struct kernel_clone_args *kargs) { return 0; } |
---|
| 722 | +static inline void cgroup_cancel_fork(struct task_struct *p, |
---|
| 723 | + struct kernel_clone_args *kargs) {} |
---|
| 724 | +static inline void cgroup_post_fork(struct task_struct *p, |
---|
| 725 | + struct kernel_clone_args *kargs) {} |
---|
713 | 726 | static inline void cgroup_exit(struct task_struct *p) {} |
---|
714 | 727 | static inline void cgroup_release(struct task_struct *p) {} |
---|
715 | 728 | static inline void cgroup_free(struct task_struct *p) {} |
---|
.. | .. |
---|
718 | 731 | static inline int cgroup_init(void) { return 0; } |
---|
719 | 732 | static inline void cgroup_init_kthreadd(void) {} |
---|
720 | 733 | static inline void cgroup_kthread_ready(void) {} |
---|
721 | | -static inline union kernfs_node_id *cgroup_get_kernfs_id(struct cgroup *cgrp) |
---|
722 | | -{ |
---|
723 | | - return NULL; |
---|
724 | | -} |
---|
725 | 734 | |
---|
726 | 735 | static inline struct cgroup *cgroup_parent(struct cgroup *cgrp) |
---|
727 | 736 | { |
---|
.. | .. |
---|
744 | 753 | return true; |
---|
745 | 754 | } |
---|
746 | 755 | |
---|
747 | | -static inline void cgroup_path_from_kernfs_id(const union kernfs_node_id *id, |
---|
748 | | - char *buf, size_t buflen) {} |
---|
| 756 | +static inline void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen) |
---|
| 757 | +{} |
---|
749 | 758 | #endif /* !CONFIG_CGROUPS */ |
---|
750 | 759 | |
---|
751 | 760 | #ifdef CONFIG_CGROUPS |
---|
.. | .. |
---|
909 | 918 | void cgroup_freeze(struct cgroup *cgrp, bool freeze); |
---|
910 | 919 | void cgroup_freezer_migrate_task(struct task_struct *task, struct cgroup *src, |
---|
911 | 920 | struct cgroup *dst); |
---|
912 | | -void cgroup_freezer_frozen_exit(struct task_struct *task); |
---|
| 921 | + |
---|
913 | 922 | static inline bool cgroup_task_freeze(struct task_struct *task) |
---|
914 | 923 | { |
---|
915 | 924 | bool ret; |
---|
.. | .. |
---|
944 | 953 | |
---|
945 | 954 | #endif /* !CONFIG_CGROUPS */ |
---|
946 | 955 | |
---|
| 956 | +#ifdef CONFIG_CGROUP_BPF |
---|
| 957 | +static inline void cgroup_bpf_get(struct cgroup *cgrp) |
---|
| 958 | +{ |
---|
| 959 | + percpu_ref_get(&cgrp->bpf.refcnt); |
---|
| 960 | +} |
---|
| 961 | + |
---|
| 962 | +static inline void cgroup_bpf_put(struct cgroup *cgrp) |
---|
| 963 | +{ |
---|
| 964 | + percpu_ref_put(&cgrp->bpf.refcnt); |
---|
| 965 | +} |
---|
| 966 | + |
---|
| 967 | +#else /* CONFIG_CGROUP_BPF */ |
---|
| 968 | + |
---|
| 969 | +static inline void cgroup_bpf_get(struct cgroup *cgrp) {} |
---|
| 970 | +static inline void cgroup_bpf_put(struct cgroup *cgrp) {} |
---|
| 971 | + |
---|
| 972 | +#endif /* CONFIG_CGROUP_BPF */ |
---|
| 973 | + |
---|
947 | 974 | #endif /* _LINUX_CGROUP_H */ |
---|