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

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

Version: ~ [ linux-5.6-rc7 ] ~ [ linux-5.5.11 ] ~ [ linux-5.4.27 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.112 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.174 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.217 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.217 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.82 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ 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 struct pid_namespace {
 25         struct kref kref;
 26         struct pidmap pidmap[PIDMAP_ENTRIES];
 27         struct rcu_head rcu;
 28         int last_pid;
 29         unsigned int nr_hashed;
 30         struct task_struct *child_reaper;
 31         struct kmem_cache *pid_cachep;
 32         unsigned int level;
 33         struct pid_namespace *parent;
 34 #ifdef CONFIG_PROC_FS
 35         struct vfsmount *proc_mnt;
 36         struct dentry *proc_self;
 37         struct dentry *proc_thread_self;
 38 #endif
 39 #ifdef CONFIG_BSD_PROCESS_ACCT
 40         struct fs_pin *bacct;
 41 #endif
 42         struct user_namespace *user_ns;
 43         struct work_struct proc_work;
 44         kgid_t pid_gid;
 45         int hide_pid;
 46         int reboot;     /* group exit code if this pidns was rebooted */
 47         struct ns_common ns;
 48 };
 49 
 50 extern struct pid_namespace init_pid_ns;
 51 
 52 #define PIDNS_HASH_ADDING (1U << 31)
 53 
 54 #ifdef CONFIG_PID_NS
 55 static inline struct pid_namespace *get_pid_ns(struct pid_namespace *ns)
 56 {
 57         if (ns != &init_pid_ns)
 58                 kref_get(&ns->kref);
 59         return ns;
 60 }
 61 
 62 extern struct pid_namespace *copy_pid_ns(unsigned long flags,
 63         struct user_namespace *user_ns, struct pid_namespace *ns);
 64 extern void zap_pid_ns_processes(struct pid_namespace *pid_ns);
 65 extern int reboot_pid_ns(struct pid_namespace *pid_ns, int cmd);
 66 extern void put_pid_ns(struct pid_namespace *ns);
 67 
 68 #else /* !CONFIG_PID_NS */
 69 #include <linux/err.h>
 70 
 71 static inline struct pid_namespace *get_pid_ns(struct pid_namespace *ns)
 72 {
 73         return ns;
 74 }
 75 
 76 static inline struct pid_namespace *copy_pid_ns(unsigned long flags,
 77         struct user_namespace *user_ns, struct pid_namespace *ns)
 78 {
 79         if (flags & CLONE_NEWPID)
 80                 ns = ERR_PTR(-EINVAL);
 81         return ns;
 82 }
 83 
 84 static inline void put_pid_ns(struct pid_namespace *ns)
 85 {
 86 }
 87 
 88 static inline void zap_pid_ns_processes(struct pid_namespace *ns)
 89 {
 90         BUG();
 91 }
 92 
 93 static inline int reboot_pid_ns(struct pid_namespace *pid_ns, int cmd)
 94 {
 95         return 0;
 96 }
 97 #endif /* CONFIG_PID_NS */
 98 
 99 extern struct pid_namespace *task_active_pid_ns(struct task_struct *tsk);
100 void pidhash_init(void);
101 void pidmap_init(void);
102 
103 #endif /* _LINUX_PID_NS_H */
104 

~ [ 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