Re: [PATCH -mm 0/7] execns syscall and user namespace

Cedric Le Goater
2006-07-11T21:51:01Z

Ulrich Drepper wrote:
> On 7/11/06, H. Peter Anvin <hpa@zytor.com> wrote:
>> How about execveu()? -n looked a bit weird to me, mostly because the
>> "le" form would be execlen() which looks like something completely
>> different...
>
> I would prefer a more general parameter. With this extension it is
> expected to have six new interfaces. I really don't want to repeat
> this if somebody comes up with yet another nice extension.
>
> So, how about generalizing the parameter. Make is a 'flags'
> parameter, assign a number of bits to the unshare functionality and
> leave the rest available. Use a 'f' suffix, perhaps. Then in future
> more bits can be defined and, if necessary, additional parameters can
> be added depending on set flags. The userspace prototypes can then if
> absolutely necessary be extended with an ellipsis. Not nice but not
> as bad as adding more and more intefaces.

How's that ?

int execvef(int flags, const char *filename, char *const argv [], char
*const envp[]);

initially, flags would be :

#define EXECVEF_NEWNS 0x00000100
#define EXECVEF_NEWIPC 0x00000200
#define EXECVEF_NEWUTS 0x00000400
#define EXECVEF_NEWUSER 0x00000800

execvef() would behave like execve() if flags == 0 and would return EINVAL
if flags is invalid. unshare of a namespace can fail and usually returns
ENOMEM.

C.