~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/pid_namespace.h

Version: ~ [ linux-5.16-rc3 ] ~ [ linux-5.15.5 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.82 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.162 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.218 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.256 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.291 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.293 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _LINUX_PID_NS_H
  2 #define _LINUX_PID_NS_H
  3 
  4 #include <linux/sched.h>
  5 #include <linux/bug.h>
  6 #include <linux/mm.h>
  7 #include <linux/workqueue.h>
  8 #include <linux/threads.h>
  9 #include <linux/nsproxy.h>
 10 #include <linux/kref.h>
 11 #include <linux/ns_common.h>
 12 
 13 struct pidmap {
 14        atomic_t nr_free;
 15        void *page;
 16 };
 17 
 18 #define BITS_PER_PAGE           (PAGE_SIZE * 8)
 19 #define BITS_PER_PAGE_MASK      (BITS_PER_PAGE-1)
 20 #define PIDMAP_ENTRIES          ((PID_MAX_LIMIT+BITS_PER_PAGE-1)/BITS_PER_PAGE)
 21 
 22 struct fs_pin;
 23 
 24 enum { /* definitions for pid_namespace's hide_pid field */
 25         HIDEPID_OFF       = 0,
 26         HIDEPID_NO_ACCESS = 1,
 27         HIDEPID_INVISIBLE = 2,
 28 };
 29 
 30 struct pid_namespace {
 31         struct kref kref;
 32         struct pidmap pidmap[PIDMAP_ENTRIES];
 33         struct rcu_head rcu;
 34         int last_pid;
 35         unsigned int nr_hashed;
 36         struct task_struct *child_reaper;
 37         struct kmem_cache *pid_cachep;
 38         unsigned int level;
 39         struct pid_namespace *parent;
 40 #ifdef CONFIG_PROC_FS
 41         struct vfsmount *proc_mnt;
 42         struct dentry *proc_self;
 43         struct dentry *proc_thread_self;
 44 #endif
 45 #ifdef CONFIG_BSD_PROCESS_ACCT
 46         struct fs_pin *bacct;
 47 #endif
 48         struct user_namespace *user_ns;
 49         struct ucounts *ucounts;
 50         struct work_struct proc_work;
 51         kgid_t pid_gid;
 52         int hide_pid;
 53         int reboot;     /* group exit code if this pidns was rebooted */
 54         struct ns_common ns;
 55 };
 56 
 57 extern struct pid_namespace init_pid_ns;
 58 
 59 #define PIDNS_HASH_ADDING (1U << 31)
 60 
 61 #ifdef CONFIG_PID_NS
 62 static inline struct pid_namespace *get_pid_ns(struct pid_namespace *ns)
 63 {
 64         if (ns != &init_pid_ns)
 65                 kref_get(&ns->kref);
 66         return ns;
 67 }
 68 
 69 extern struct pid_namespace *copy_pid_ns(unsigned long flags,
 70         struct user_namespace *user_ns, struct pid_namespace *ns);
 71 extern void zap_pid_ns_processes(struct pid_namespace *pid_ns);
 72 extern int reboot_pid_ns(struct pid_namespace *pid_ns, int cmd);
 73 extern void put_pid_ns(struct pid_namespace *ns);
 74 
 75 #else /* !CONFIG_PID_NS */
 76 #include <linux/err.h>
 77 
 78 static inline struct pid_namespace *get_pid_ns(struct pid_namespace *ns)
 79 {
 80         return ns;
 81 }
 82 
 83 static inline struct pid_namespace *copy_pid_ns(unsigned long flags,
 84         struct user_namespace *user_ns, struct pid_namespace *ns)
 85 {
 86         if (flags & CLONE_NEWPID)
 87                 ns = ERR_PTR(-EINVAL);
 88         return ns;
 89 }
 90 
 91 static inline void put_pid_ns(struct pid_namespace *ns)
 92 {
 93 }
 94 
 95 static inline void zap_pid_ns_processes(struct pid_namespace *ns)
 96 {
 97         BUG();
 98 }
 99 
100 static inline int reboot_pid_ns(struct pid_namespace *pid_ns, int cmd)
101 {
102         return 0;
103 }
104 #endif /* CONFIG_PID_NS */
105 
106 extern struct pid_namespace *task_active_pid_ns(struct task_struct *tsk);
107 void pidhash_init(void);
108 void pidmap_init(void);
109 
110 #endif /* _LINUX_PID_NS_H */
111 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp