Sukadev Bhattiprolu wrote: > Oren Laadan [orenl@xxxxxxxxxxx] wrote: > | > | > | Sukadev Bhattiprolu wrote: > | > Based on these requirements and constraints, we explored a couple of system > | > call interfaces (in earlier versions of this patchset) and currently define > | > the system call as: > | > > | > struct clone_struct { > | > u64 flags; > | > u64 child_stack; > | > u32 nr_pids; > | > u32 parent_tid; > | > u32 child_tid; > | > | So @parent_tid and @child_tid are pointers to userspace memory and > | require 'u64' (and it won't hurt to make @reserved1 a 'u64' as well). > > No, as Arnd pointed out, we already pass in a pointer to 'struct clone_struct' > and the kernel can use that pointer to copy the parent and child tids. In this form, you place a constraints on where userspace may place the {parent,child}_tid variable, and require that this particular clone_struct remain valid memory in the parent until the child terminates. This may break existing programs that use this (threads libraries ?) Oren. > > | > | > u32 reserved1; > | > u64 reserved2; > | > }; > | > > | > | Also, for forward/backward compatibility, explicitly state in the > | documentation, and enforce in the kernel, that flags which are not > | defined must not be set, and that reserved{1,2} must remain 0. > > Good idea. Will do. > > Thanks, > > Sukadev _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers