On 2020-08-15 07:14, Magnus Fromreide wrote:
> This allows vfork to not block the parent until the child has called _exit
> or exec*, it does not allow the child to block the parent until completion.
> 
> Please note that in our case this is arch-specific code for uClinux where
> the fork() system call doesn't exist so I think we can be assured that vfork
> will block the parent there.

On 
https://www.eetimes.com/how-uclinux-provides-mmu-less-processors-with-an-alternative/#
I found the following, which confirms the above:

  uClinux implements vfork() in order to compensate for the lack of fork().
  When a parent process calls vfork() to create a child, both processes share
  all their memory space including the stack. vfork() then suspends the
  parent's execution until the child process either calls exit() or execve().

> If we had been religous about marking all internal fd's as CLOEXEC then
> pass_perrsistant could be rewritten using posix_spawn which sounds a lot
> better but we are sadly lacking in the CLOEXEC department.
> 
> To be honest the calls to perror and exit if exec fails is more suspicious as
> that is explicitly stated to cause undefined behaviour.
> 
> With all this I should probably repeat that I am in favour of dropping the
> pass_persist support for uClinux.

How about removing the pass_persist for uClinux and restoring it if a
user asks to restore that support? uClinux was created in 1998, when
the price difference between microprocessors with or without MMU was
much larger than today. Today a Raspberry Pi is available for $35. That
product includes not only a CPU with MMU but also a board and connectors.

Bart.


_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to