diff options
Diffstat (limited to 'include/linux/pid.h')
-rw-r--r-- | include/linux/pid.h | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/include/linux/pid.h b/include/linux/pid.h index e29a900a8499..f84d532b5d23 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h | |||
@@ -118,18 +118,17 @@ extern struct pid *find_pid(int nr); | |||
118 | */ | 118 | */ |
119 | extern struct pid *find_get_pid(int nr); | 119 | extern struct pid *find_get_pid(int nr); |
120 | extern struct pid *find_ge_pid(int nr, struct pid_namespace *); | 120 | extern struct pid *find_ge_pid(int nr, struct pid_namespace *); |
121 | int next_pidmap(struct pid_namespace *pid_ns, int last); | ||
121 | 122 | ||
122 | extern struct pid *alloc_pid(struct pid_namespace *ns); | 123 | extern struct pid *alloc_pid(struct pid_namespace *ns); |
123 | extern void FASTCALL(free_pid(struct pid *pid)); | 124 | extern void FASTCALL(free_pid(struct pid *pid)); |
124 | extern void zap_pid_ns_processes(struct pid_namespace *pid_ns); | ||
125 | 125 | ||
126 | /* | 126 | /* |
127 | * the helpers to get the pid's id seen from different namespaces | 127 | * the helpers to get the pid's id seen from different namespaces |
128 | * | 128 | * |
129 | * pid_nr() : global id, i.e. the id seen from the init namespace; | 129 | * pid_nr() : global id, i.e. the id seen from the init namespace; |
130 | * pid_vnr() : virtual id, i.e. the id seen from the namespace this pid | 130 | * pid_vnr() : virtual id, i.e. the id seen from the pid namespace of |
131 | * belongs to. this only makes sence when called in the | 131 | * current. |
132 | * context of the task that belongs to the same namespace; | ||
133 | * pid_nr_ns() : id seen from the ns specified. | 132 | * pid_nr_ns() : id seen from the ns specified. |
134 | * | 133 | * |
135 | * see also task_xid_nr() etc in include/linux/sched.h | 134 | * see also task_xid_nr() etc in include/linux/sched.h |
@@ -144,14 +143,7 @@ static inline pid_t pid_nr(struct pid *pid) | |||
144 | } | 143 | } |
145 | 144 | ||
146 | pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns); | 145 | pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns); |
147 | 146 | pid_t pid_vnr(struct pid *pid); | |
148 | static inline pid_t pid_vnr(struct pid *pid) | ||
149 | { | ||
150 | pid_t nr = 0; | ||
151 | if (pid) | ||
152 | nr = pid->numbers[pid->level].nr; | ||
153 | return nr; | ||
154 | } | ||
155 | 147 | ||
156 | #define do_each_pid_task(pid, type, task) \ | 148 | #define do_each_pid_task(pid, type, task) \ |
157 | do { \ | 149 | do { \ |
@@ -160,7 +152,13 @@ static inline pid_t pid_vnr(struct pid *pid) | |||
160 | hlist_for_each_entry_rcu((task), pos___, \ | 152 | hlist_for_each_entry_rcu((task), pos___, \ |
161 | &pid->tasks[type], pids[type].node) { | 153 | &pid->tasks[type], pids[type].node) { |
162 | 154 | ||
155 | /* | ||
156 | * Both old and new leaders may be attached to | ||
157 | * the same pid in the middle of de_thread(). | ||
158 | */ | ||
163 | #define while_each_pid_task(pid, type, task) \ | 159 | #define while_each_pid_task(pid, type, task) \ |
160 | if (type == PIDTYPE_PID) \ | ||
161 | break; \ | ||
164 | } \ | 162 | } \ |
165 | } while (0) | 163 | } while (0) |
166 | 164 | ||