2004-09-16 Antony King <antony.king@st.com>
* libc/time/tzlock.c: Add default stubs that use generic
        locking code.
			
			
This commit is contained in:
		| @@ -1,3 +1,8 @@ | ||||
| 2004-09-16  Antony King  <antony.king@st.com> | ||||
|  | ||||
| 	* libc/time/tzlock.c: Add default stubs that use generic | ||||
| 	locking code. | ||||
|  | ||||
| 2004-09-16  Antony King  <antony.king@st.com> | ||||
|  | ||||
| 	* libc/ctype/ctype.tex: Added missing documentation. | ||||
|   | ||||
| @@ -17,13 +17,14 @@ TRAD_SYNOPSIS | ||||
| 	void __tz_unlock(); | ||||
|  | ||||
| DESCRIPTION | ||||
| The <<tzset>> facility functions call these functions when they need | ||||
| to ensure the values of global variables.  The version of these routines supplied | ||||
| in the library do not do anything.  If multiple threads of execution | ||||
| can call the time functions and give up scheduling in the middle, then you | ||||
| you need to define your own versions of these functions in order to | ||||
| safely lock the time zone variables during a call.  If you do not, the results | ||||
| of <<localtime>>, <<mktime>>, <<ctime>>, and <<strftime>> are undefined. | ||||
| The <<tzset>> facility functions call these functions when they need to | ||||
| ensure the values of global variables.  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 the time functions and give up scheduling in | ||||
| the middle, then you you need to define your own versions of these functions | ||||
| in order to safely lock the time zone variables during a call.  If you do | ||||
| not, the results of <<localtime>>, <<mktime>>, <<ctime>>, and <<strftime>> | ||||
| are undefined. | ||||
|  | ||||
| The lock <<__tz_lock>> may not be called recursively; that is, | ||||
| a call <<__tz_lock>> will always lock all subsequent <<__tz_lock>> calls | ||||
| @@ -32,13 +33,24 @@ until the corresponding <<__tz_unlock>> call on the same thread is made. | ||||
|  | ||||
| #include <_ansi.h> | ||||
| #include "local.h" | ||||
| #include <sys/lock.h> | ||||
|  | ||||
| #ifndef __SINGLE_THREAD__ | ||||
| __LOCK_INIT(static, __tz_lock_object); | ||||
| #endif | ||||
|  | ||||
| _VOID | ||||
| _DEFUN_VOID (__tz_lock) | ||||
| { | ||||
| #ifndef __SINGLE_THREAD__ | ||||
|   __lock_acquire(__tz_lock_object); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| _VOID | ||||
| _DEFUN_VOID (__tz_unlock) | ||||
| { | ||||
| #ifndef __SINGLE_THREAD__ | ||||
|   __lock_release(__tz_lock_object); | ||||
| #endif | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user