From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
Cc: Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
"David C. Hansen"
<haveblue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Subject: [RFC][PATCH 6/7][v2] Define do_fork_with_pids()
Date: Wed, 27 May 2009 21:39:29 -0700 [thread overview]
Message-ID: <20090528043929.GF16522@us.ibm.com> (raw)
In-Reply-To: <20090528043748.GA16522-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Date: Mon, 4 May 2009 01:17:44 -0700
Subject: [RFC][PATCH 6/7][v2] Define do_fork_with_pids()
do_fork_with_pids() is same as do_fork(), except that it takes an
additional, 'pid_set', parameter. This parameter, currently unused,
specifies the set of target pids of the process in each of its pid
namespaces.
Changelog[v2]:
- [v1] of this patch had some architecture-indpendent code in
arch/x86/kernel/process_32.c. To facilitate moving this code
to kernel/fork.c, in the next patch, [v2] of the patch passes
'struct target_pid_set __user *' to do_fork_with_pids() instead
of 'pid_t *'.
Signed-off-by: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
---
include/linux/sched.h | 1 +
include/linux/types.h | 5 +++++
kernel/fork.c | 16 ++++++++++++++--
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index b4c38bc..8468e54 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1995,6 +1995,7 @@ extern int disallow_signal(int);
extern int do_execve(char *, char __user * __user *, char __user * __user *, struct pt_regs *);
extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int __user *, int __user *);
+extern long do_fork_with_pids(unsigned long, unsigned long, struct pt_regs *, unsigned long, int __user *, int __user *, struct target_pid_set __user *pid_set);
struct task_struct *fork_idle(int);
extern void set_task_comm(struct task_struct *tsk, char *from);
diff --git a/include/linux/types.h b/include/linux/types.h
index 5abe354..17ec186 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -204,6 +204,11 @@ struct ustat {
char f_fpack[6];
};
+struct target_pid_set {
+ int num_pids;
+ pid_t *target_pids;
+};
+
#endif /* __KERNEL__ */
#endif /* __ASSEMBLY__ */
#endif /* _LINUX_TYPES_H */
diff --git a/kernel/fork.c b/kernel/fork.c
index 373411e..a16ef7b 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1340,12 +1340,13 @@ struct task_struct * __cpuinit fork_idle(int cpu)
* It copies the process, and if successful kick-starts
* it and waits for it to finish using the VM if required.
*/
-long do_fork(unsigned long clone_flags,
+long do_fork_with_pids(unsigned long clone_flags,
unsigned long stack_start,
struct pt_regs *regs,
unsigned long stack_size,
int __user *parent_tidptr,
- int __user *child_tidptr)
+ int __user *child_tidptr,
+ struct target_pid_set __user *pid_setp)
{
struct task_struct *p;
int trace = 0;
@@ -1448,6 +1449,17 @@ long do_fork(unsigned long clone_flags,
return nr;
}
+long do_fork(unsigned long clone_flags,
+ unsigned long stack_start,
+ struct pt_regs *regs,
+ unsigned long stack_size,
+ int __user *parent_tidptr,
+ int __user *child_tidptr)
+{
+ return do_fork_with_pids(clone_flags, stack_start, regs, stack_size,
+ parent_tidptr, child_tidptr, NULL);
+}
+
#ifndef ARCH_MIN_MMSTRUCT_ALIGN
#define ARCH_MIN_MMSTRUCT_ALIGN 0
#endif
--
1.5.2.5
next prev parent reply other threads:[~2009-05-28 4:39 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-28 4:37 [RFC][PATCH 1/7][v2] Factor out code to allocate pidmap page Sukadev Bhattiprolu
[not found] ` <20090528043748.GA16522-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 4:38 ` [RFC][PATCH 2/7][v2] Have alloc_pidmap() return actual error code Sukadev Bhattiprolu
2009-05-28 4:38 ` [RFC][PATCH 3/7][v2] Add target_pid parameter to alloc_pidmap() Sukadev Bhattiprolu
[not found] ` <20090528043834.GC16522-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 12:52 ` Serge E. Hallyn
2009-05-28 14:47 ` Oren Laadan
2009-05-28 4:38 ` [RFC][PATCH 4/7][v2] Add target_pids parameter to alloc_pid() Sukadev Bhattiprolu
2009-05-28 4:39 ` [RFC][PATCH 5/7][v2] Add target_pids parameter to copy_process() Sukadev Bhattiprolu
2009-05-28 4:39 ` Sukadev Bhattiprolu [this message]
[not found] ` <20090528043929.GF16522-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 12:54 ` [RFC][PATCH 6/7][v2] Define do_fork_with_pids() Serge E. Hallyn
2009-05-28 15:03 ` Oren Laadan
2009-05-28 4:39 ` [RFC][PATCH 7/7][v2] Define clone_with_pids syscall Sukadev Bhattiprolu
[not found] ` <20090528043945.GG16522-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 12:02 ` Matt Helsley
2009-05-28 15:01 ` Oren Laadan
[not found] ` <4A1EA73F.1080802-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-28 15:14 ` Serge E. Hallyn
[not found] ` <20090528151444.GA17772-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 17:01 ` Sukadev Bhattiprolu
[not found] ` <20090528170103.GA26183-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 17:47 ` Serge E. Hallyn
[not found] ` <20090528174708.GA2236-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2009-05-28 18:00 ` Sukadev Bhattiprolu
[not found] ` <20090528180057.GA27191-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 23:45 ` Oren Laadan
2009-05-28 17:30 ` Sukadev Bhattiprolu
[not found] ` <20090528173019.GB26183-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-28 23:47 ` Oren Laadan
[not found] ` <4A1F228C.2020201-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-29 1:16 ` Sukadev Bhattiprolu
2009-05-29 3:05 ` Sukadev Bhattiprolu
[not found] ` <20090529030558.GA2548-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-29 5:29 ` Oren Laadan
[not found] ` <20090529054645.GA3344@us.ibm.com>
[not found] ` <20090529054645.GA3344-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-29 5:54 ` Oren Laadan
[not found] ` <4A1F78AF.6030404-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-29 17:06 ` Sukadev Bhattiprolu
[not found] ` <20090529170616.GA12597-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-29 19:34 ` Sukadev Bhattiprolu
[not found] ` <20090529193416.GB12597-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-29 20:01 ` Oren Laadan
[not found] ` <4A203F2E.1060807-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-29 21:19 ` Sukadev Bhattiprolu
[not found] ` <20090529211922.GC12597-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-29 21:32 ` Oren Laadan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090528043929.GF16522@us.ibm.com \
--to=sukadev-23vcf4htsmix0ybbhkvfkdbpr1lh4cv8@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=haveblue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.