* path.cc (path_conv::check): Use 'strchr' rather than 'strrchr' to find end of
string, for efficiency. * include/cygwin/_types.h: New file. * include/sys/lock.h: Ditto. * include/sys/stdio.h: Ditto. * thread.cc: Include sys/lock.h (__cygwin_lock_init): New function. (__cygwin_lock_init_recursive): Ditto. (__cygwin_lock_fini): Ditto. (__cygwin_lock_lock): Ditto. (__cygwin_lock_trylock): Ditto. (__cygwin_lock_unlock): Ditto. (pthread::atforkprepare): Lock file pointer before fork. (pthread::atforkparent): Unlock file pointer after fork. (pthread::atforkchild): Ditto.
This commit is contained in:
		
							parent
							
								
									6b0d86c56d
								
							
						
					
					
						commit
						11a9a1cfbd
					
				|  | @ -1,3 +1,24 @@ | |||
| 2004-03-26  Christopher Faylor  <cgf@redhat.com> | ||||
| 
 | ||||
| 	* path.cc (path_conv::check): Use 'strchr' rather than 'strrchr' to | ||||
| 	find end of string, for efficiency. | ||||
| 
 | ||||
| 2004-03-26 Thomas Pfaff <tpfaff@gmx.net> | ||||
| 
 | ||||
| 	* include/cygwin/_types.h: New file. | ||||
| 	* include/sys/lock.h: Ditto. | ||||
| 	* include/sys/stdio.h: Ditto. | ||||
| 	* thread.cc: Include sys/lock.h | ||||
| 	(__cygwin_lock_init): New function. | ||||
| 	(__cygwin_lock_init_recursive): Ditto. | ||||
| 	(__cygwin_lock_fini): Ditto. | ||||
| 	(__cygwin_lock_lock): Ditto. | ||||
| 	(__cygwin_lock_trylock): Ditto. | ||||
| 	(__cygwin_lock_unlock): Ditto. | ||||
| 	(pthread::atforkprepare): Lock file pointer before fork. | ||||
| 	(pthread::atforkparent): Unlock file pointer after fork. | ||||
| 	(pthread::atforkchild): Ditto. | ||||
| 
 | ||||
| 2004-03-26  Corinna Vinschen  <corinna@vinschen.de> | ||||
| 
 | ||||
| 	* sem.cc (semget): Fix debug string. | ||||
|  |  | |||
|  | @ -495,7 +495,7 @@ path_conv::check (const char *src, unsigned opt, | |||
|       MALLOC_CHECK; | ||||
|       assert (src); | ||||
| 
 | ||||
|       char *p = strrchr (src, '\0'); | ||||
|       char *p = strchr (src, '\0'); | ||||
|       /* Detect if the user was looking for a directory.  We have to strip the
 | ||||
| 	 trailing slash initially and add it back on at the end due to Windows | ||||
| 	 brain damage. */ | ||||
|  |  | |||
|  | @ -44,6 +44,10 @@ details. */ | |||
| #include <sys/timeb.h> | ||||
| #include <exceptions.h> | ||||
| #include <sys/fcntl.h> | ||||
| #include <sys/lock.h> | ||||
| 
 | ||||
| extern "C" void __fp_lock_all (); | ||||
| extern "C" void __fp_unlock_all (); | ||||
| 
 | ||||
| extern int threadsafe; | ||||
| 
 | ||||
|  | @ -54,6 +58,43 @@ __getreent () | |||
|   return &_my_tls.local_clib; | ||||
| } | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_init (_LOCK_T *lock) | ||||
| { | ||||
|   *lock = _LOCK_T_INITIALIZER; | ||||
| } | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_init_recursive (_LOCK_T *lock) | ||||
| { | ||||
|   *lock = _LOCK_T_RECURSIVE_INITIALIZER; | ||||
| } | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_fini (_LOCK_T *lock) | ||||
| { | ||||
|   pthread_mutex_destroy ((pthread_mutex_t*) lock); | ||||
| } | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_lock (_LOCK_T *lock) | ||||
| { | ||||
|   pthread_mutex_lock ((pthread_mutex_t*) lock); | ||||
| } | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_trylock (_LOCK_T *lock) | ||||
| { | ||||
|   pthread_mutex_trylock ((pthread_mutex_t*) lock); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| extern "C" void | ||||
| __cygwin_lock_unlock (_LOCK_T *lock) | ||||
| { | ||||
|   pthread_mutex_unlock ((pthread_mutex_t*) lock); | ||||
| } | ||||
| 
 | ||||
| inline LPCRITICAL_SECTION | ||||
| ResourceLocks::Lock (int _resid) | ||||
| { | ||||
|  | @ -1908,11 +1949,15 @@ pthread::atforkprepare (void) | |||
|       cb->cb (); | ||||
|       cb = cb->next; | ||||
|     } | ||||
| 
 | ||||
|   __fp_lock_all (); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| pthread::atforkparent (void) | ||||
| { | ||||
|   __fp_unlock_all (); | ||||
| 
 | ||||
|   callback *cb = MT_INTERFACE->pthread_parent; | ||||
|   while (cb) | ||||
|     { | ||||
|  | @ -1926,6 +1971,8 @@ pthread::atforkchild (void) | |||
| { | ||||
|   MT_INTERFACE->fixup_after_fork (); | ||||
| 
 | ||||
|   __fp_unlock_all (); | ||||
| 
 | ||||
|   callback *cb = MT_INTERFACE->pthread_child; | ||||
|   while (cb) | ||||
|     { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue