__env_lock
, __env_unlock
—lock environ variable#include <envlock.h> void __env_lock (struct _reent *reent); void __env_unlock (struct _reent *reent);
Description
The setenv
family of routines call these functions when they need to
modify the environ variable. The version of these routines supplied in the
library use the lock API defined in sys/lock.h. If multiple threads of
execution can call setenv
, or if setenv
can be called reentrantly,
then you need to define your own versions of these functions in order to
safely lock the memory pool during a call. If you do not, the memory pool
may become corrupted.
A call to setenv
may call __env_lock
recursively; that is,
the sequence of calls may go __env_lock
, __env_lock
,
__env_unlock
, __env_unlock
. Any implementation of these
routines must be careful to avoid causing a thread to wait for a lock
that it already holds.