On 10/14/2009 03:36 PM, Sukadev Bhattiprolu wrote:
H. Peter Anvin [hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org] wrote:
|
| Overall it seems sane to:
|
| a) make it an actual 3-argument call;
| b) make the existing flags a u32 forever, and make it a separate
| argument;
| c) any new expansion can be via the struct, which may want to have
| an "c3_flags" field first in the structure.
Ok, So will this work ?
struct clone_args {
u32 flags_high; /* new clone flags (higher bits) */
u32 reserved1;
u32 nr_pids;
u32 reserved2;
u64 child_stack_base;
u64 child_stack_size;
u64 parent_tid_ptr;
u64 child_tid_ptr;
u64 reserved3;
};
sys_clone3(u32 flags_low, struct clone_args *args, pid_t *pid_list)
Even on 64bit architectures the applications have to use sys_clone3() for
the extended features.
Yes, although I'd just make flags_high a u64. The other thing that
might be worthwhile is to have a length field on the structure; that way
we could add new fields at the end if ever necessary in the future.
-hpa