Date:        Wed, 25 Oct 2017 11:29:34 +0200
    From:        Edgar =?iso-8859-1?B?RnXf?= <[email protected]>
    Message-ID:  <[email protected]>

  | vfork childs aside, the kernel could just zero out what it wouldn't copy; 
  | no new interface needed.

Yes, it could, but it should not need to.

  | However, how do you deal with the case that the strings are scattered
  | around the dying process' address space?

The old way.

  | Or is it intentional to have a new exec interface only to be used when the 
  | caller knows the arguments are contigous?

Yes, intentional - processes using it would have to know what they're
doing, and deliberately plan to set things up correctly.   (Maybe there
could be a library function to help, but it might not.)

There are all kinds of issues, like the arg pointers, which can be just
as much an issue as the args themselves - I would have the calling
process make those be page relative offsets (from the start of the
arg list (or env list) and then have the exec code create a new list
of pointers by (validating and then) adding the base addr of the arg
pages in the new process's addr space (a separate copy, so the
originals remain - which isn't important for the args, but allows the
env to simply be passed along unchanged, and the kernel could detect
that).   Perhaps.

kre

Reply via email to