cc: lkml

Sukadev Bhattiprolu [suka...@linux.vnet.ibm.com] wrote:
| 
| Subject: [v12][PATCH 7/9] 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[v7]:
|       - Drop 'struct pid_set' object and pass in 'pid_t *target_pids'
|         instead of 'struct pid_set *'.
| 
| Changelog[v6]:
|       - (Nathan Lynch, Arnd Bergmann, H. Peter Anvin, Linus Torvalds)
|         Change 'pid_set.pids' to a 'pid_t pids[]' so size of 'struct pid_set'
|         is constant across architectures.
|       - (Nathan Lynch) Change 'pid_set.num_pids' to 'unsigned int'.
| 
| Changelog[v4]:
|       - Rename 'struct target_pid_set' to 'struct pid_set' since it may
|         be useful in other contexts.
| 
| Changelog[v3]:
|       - Fix "long-line" warning from checkpatch.pl
| 
| Changelog[v2]:
|       - To facilitate moving architecture-inpdendent code to kernel/fork.c
|         pass in 'struct target_pid_set __user *' to do_fork_with_pids()
|         rather than 'pid_t *' (next patch moves the arch-independent
|         code to kernel/fork.c)
| 
| Signed-off-by: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com>
| Acked-by: Serge Hallyn <se...@us.ibm.com>
| Reviewed-by: Oren Laadan <or...@cs.columbia.edu>
| ---
|  include/linux/sched.h |    3 +++
|  kernel/fork.c         |   17 +++++++++++++++--
|  2 files changed, 18 insertions(+), 2 deletions(-)
| 
| diff --git a/include/linux/sched.h b/include/linux/sched.h
| index a4d2c23..85e971a 100644
| --- a/include/linux/sched.h
| +++ b/include/linux/sched.h
| @@ -2153,6 +2153,9 @@ 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 *,
| +                             unsigned int, pid_t __user *);
|  struct task_struct *fork_idle(int);
| 
|  extern void set_task_comm(struct task_struct *tsk, char *from);
| diff --git a/kernel/fork.c b/kernel/fork.c
| index 11f77ed..210e841 100644
| --- a/kernel/fork.c
| +++ b/kernel/fork.c
| @@ -1377,12 +1377,14 @@ 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,
| +           unsigned int num_pids,
| +           pid_t __user *upids)
|  {
|       struct task_struct *p;
|       int trace = 0;
| @@ -1485,6 +1487,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, 0, NULL);
| +}
| +
|  #ifndef ARCH_MIN_MMSTRUCT_ALIGN
|  #define ARCH_MIN_MMSTRUCT_ALIGN 0
|  #endif
| -- 
| 1.6.0.4
| 
| _______________________________________________
| Containers mailing list
| contain...@lists.linux-foundation.org
| https://lists.linux-foundation.org/mailman/listinfo/containers
_______________________________________________
Containers mailing list
contain...@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to