URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [newlib-1.18.0/] [newlib/] [libc/] [time/] [tzlock.c] - Rev 829
Compare with Previous | Blame | View Log
/* FUNCTION <<__tz_lock>>, <<__tz_unlock>>---lock time zone global variables INDEX __tz_lock INDEX __tz_unlock ANSI_SYNOPSIS #include "local.h" void __tz_lock (void); void __tz_unlock (void); TRAD_SYNOPSIS void __tz_lock(); 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 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 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 }