3 <<__env_lock>>, <<__env_unlock>>---lock environ variable
12 void __env_lock (struct _reent *<[reent]>);
13 void __env_unlock (struct _reent *<[reent]>);
16 The <<setenv>> family of routines call these functions when they need to
17 modify the environ variable. The version of these routines supplied in the
18 library use the lock API defined in sys/lock.h. If multiple threads of
19 execution can call <<setenv>>, or if <<setenv>> can be called reentrantly,
20 then you need to define your own versions of these functions in order to
21 safely lock the memory pool during a call. If you do not, the memory pool
24 A call to <<setenv>> may call <<__env_lock>> recursively; that is,
25 the sequence of calls may go <<__env_lock>>, <<__env_lock>>,
26 <<__env_unlock>>, <<__env_unlock>>. Any implementation of these
27 routines must be careful to avoid causing a thread to wait for a lock
28 that it already holds.
34 #ifndef __SINGLE_THREAD__
35 __LOCK_INIT_RECURSIVE(static, __env_recursive_mutex
);
42 #ifndef __SINGLE_THREAD__
43 __lock_acquire_recursive (__env_recursive_mutex
);
51 #ifndef __SINGLE_THREAD__
52 __lock_release_recursive (__env_recursive_mutex
);