Commit Graph

11 Commits

Author SHA1 Message Date
agc
eb7c1594f1 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22280, verified by myself.
2003-08-07 16:42:00 +00:00
nathanw
f60f35f3ab Don't acquire __environ_lock around exec*() calls; nothing requires
that these calls be thread-safe with respect to the environment, and it
causes serious problems for threaded applications which call vfork() and
exec*() (including indirectly, via popen() or system()).

Acquire and release __environ_lock in the parent in popen() and system() to
play safe and provide the child with a stable environment.

__environ_lock should also have an atfork() handler; still under development.
2003-03-04 19:44:09 +00:00
thorpej
3fdac2b8c5 Merge the nathanw_sa branch. 2003-01-18 10:52:16 +00:00
wiz
077b67effa __STDC__ is always defined on NetBSD. 2002-05-26 14:03:19 +00:00
mycroft
605490369c Delint.
Remove trailing ; from uses of __weak_alias().  The macro inserts this if
needed.
2000-01-22 22:19:07 +00:00
kleink
4bbb5fd353 Add a multiple-reader/single-writer lock to protect environ. 1998-09-11 21:03:18 +00:00
mjacob
eb498a6ab2 argv alloca'd is too short. Alloc an extra member. 1997-11-20 01:26:45 +00:00
jtc
43fa6fe319 If port provides __weak_alias(), provide an Standard C and POSIX pure
identifier namespace by renaming non standard functions and variables
such that they have a leading underscore.  The library will use those
names internally.  Weak aliases are used to provide the original names
to the API.

This is only the first part of this change.  It is most of the functions
which are implemented in C for all NetBSD ports.  Subsequent changes are
to add the same support to the remaining C files, to assembly files, and
to the automagically generated assembly source used for system calls.
When all of the above is done, ports with weak alias support should add
a definition for __weak_alias to <sys/cdefs.h>.
1997-07-21 14:06:24 +00:00
christos
26cc2d4f50 Fix RCSID's 1997-07-13 19:45:36 +00:00
jtc
a0d2fe2548 Thanks to the calling conventions used by some cpus, the argument lists
passed to the execl(), execle(), and execlp() functions are in the form
of the argument vector to be passed to execve().  On these architectures,
it is unnecessary to count the number of arguments, allocate space on
the stack, copy the arguments, etc.  The vector already on the stack
can be used instead.

When some arguments are passed in registers (like most RISC CPU's), it
should be possible to allocate stack space adjacent such that the
registers can be copied to that memory.  After that, the same
approach described above can be used.

This change takes advantage of this on the i386, m68k, and ns32k.  It
is probably true on the vax, but I am unable to check.  RISC CPU's
probably need assembly language implementations to ensure everything
is placed exactly as needed when registers are copied to the stack...
1996-07-04 07:18:56 +00:00
jtc
614420255a Split all exec*() functions out of exec.c into their own files. 1996-07-03 21:41:46 +00:00