| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | /* GLIB - Library of useful routines for C programming
 | 
					
						
							|  |  |  |  * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * gthread.c: posix thread system implementation | 
					
						
							|  |  |  |  * Copyright 1998 Sebastian Wilhelmi; University of Karlsruhe | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU Library General Public | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  * version 2 of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  * Library General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Library General Public | 
					
						
							|  |  |  |  * License along with this library; if not, write to the | 
					
						
							|  |  |  |  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 
					
						
							|  |  |  |  * Boston, MA 02111-1307, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-02-24 06:14:27 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Modified by the GLib Team and others 1997-1999.  See the AUTHORS | 
					
						
							|  |  |  |  * file for a list of people on the GLib Team.  See the ChangeLog | 
					
						
							|  |  |  |  * files for a list of changes.  These files are distributed with | 
					
						
							|  |  |  |  * GLib at ftp://ftp.gtk.org/pub/gtk/. 
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | /* 
 | 
					
						
							|  |  |  |  * MT safe | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <pthread.h>
 | 
					
						
							|  |  |  | #include <errno.h>
 | 
					
						
							|  |  |  | #include <stdlib.h>
 | 
					
						
							| 
									
										
											  
											
												Merge in current Win32 version. Almost no Unix code touched.
	* README.win32: More text.
	* config.h.win32 glibconfig.h.win32: Update to match the
	corresponding generated files on Unix.
	* makefile.msc: Update with new source files, and gthread
 	library. Use the compiler flag -MD instead of using -D_DLL and
	"/nodefaultlib:libc msvcrt.lib" in the link phase.
	* glib.def: Include new functions, drop removed ones.
	* glib.h: Add comments about main loop and polling on Win32. (In
	general, it's only for the GIMP's use.) Add Win32 IO Channel
	functions. Remove the obsoleted old IO Channel stuff (which was
	in #if 0 already).
	* giowin32.c: New file.
	* gmain.c: Include config.h, conditionalize <sys/time.h>
 	inclusion.  Add g_poll implementation for Win32 (only for the
 	GIMP's needs for now, it's hard or even impossible to be as clean
 	and generic as on Unix). Implement g_get_current_time on Win32. If
 	threads aren't supported, don't try to wake up main thread's
 	loop. On Win32, use a semaphore and not a pipe to wake up the main
 	loop.
	* gmessages.c: On Win32, allocate a console window if the standard
	output handle is invalid before writing to stdout, and reopen stdout
	to that console window.
	* giochannel.c: Conditionalize unistd.h inclusion. Some indentation
	cleanup.
	* gstrfuncs.c: Include <signal.h>.
	* gutils.c: On Win32, also check the HOMEDRIVE and HOMEPATH
	environment variables.
	* gmodule-dl.c gmodule-dld.c: In
 	_g_module_build_path, don't add the "lib" prefix and
 	".so" or ".sl" suffix if already there.
	* gmodule-win32.c: Likewise for the ".dll" suffix.
	* gthread-posix.c: Conditionalize <sys/time.h> inclusion.
											
										 
											1999-01-16 23:46:42 +00:00
										 |  |  | #ifdef HAVE_SYS_TIME_H
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | #include <sys/time.h>
 | 
					
						
							| 
									
										
											  
											
												Merge in current Win32 version. Almost no Unix code touched.
	* README.win32: More text.
	* config.h.win32 glibconfig.h.win32: Update to match the
	corresponding generated files on Unix.
	* makefile.msc: Update with new source files, and gthread
 	library. Use the compiler flag -MD instead of using -D_DLL and
	"/nodefaultlib:libc msvcrt.lib" in the link phase.
	* glib.def: Include new functions, drop removed ones.
	* glib.h: Add comments about main loop and polling on Win32. (In
	general, it's only for the GIMP's use.) Add Win32 IO Channel
	functions. Remove the obsoleted old IO Channel stuff (which was
	in #if 0 already).
	* giowin32.c: New file.
	* gmain.c: Include config.h, conditionalize <sys/time.h>
 	inclusion.  Add g_poll implementation for Win32 (only for the
 	GIMP's needs for now, it's hard or even impossible to be as clean
 	and generic as on Unix). Implement g_get_current_time on Win32. If
 	threads aren't supported, don't try to wake up main thread's
 	loop. On Win32, use a semaphore and not a pipe to wake up the main
 	loop.
	* gmessages.c: On Win32, allocate a console window if the standard
	output handle is invalid before writing to stdout, and reopen stdout
	to that console window.
	* giochannel.c: Conditionalize unistd.h inclusion. Some indentation
	cleanup.
	* gstrfuncs.c: Include <signal.h>.
	* gutils.c: On Win32, also check the HOMEDRIVE and HOMEPATH
	environment variables.
	* gmodule-dl.c gmodule-dld.c: In
 	_g_module_build_path, don't add the "lib" prefix and
 	".so" or ".sl" suffix if already there.
	* gmodule-win32.c: Likewise for the ".dll" suffix.
	* gthread-posix.c: Conditionalize <sys/time.h> inclusion.
											
										 
											1999-01-16 23:46:42 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2000-02-22 13:11:24 +00:00
										 |  |  | #ifdef HAVE_UNISTD_H
 | 
					
						
							|  |  |  | #include <unistd.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define posix_print_error( name, num )                          \
 | 
					
						
							|  |  |  |   g_error( "file %s: line %d (%s): error %s during %s",         \ | 
					
						
							|  |  |  |            __FILE__, __LINE__, G_GNUC_PRETTY_FUNCTION,          \ | 
					
						
							|  |  |  |            g_strerror((num)), #name ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #if defined(G_THREADS_IMPL_POSIX)
 | 
					
						
							|  |  |  | # define posix_check_for_error( what ) G_STMT_START{             \
 | 
					
						
							|  |  |  |     int error = (what);                                           \ | 
					
						
							|  |  |  |     if( error ) { posix_print_error( what, error ); }             \ | 
					
						
							|  |  |  |     }G_STMT_END | 
					
						
							| 
									
										
										
										
											1999-03-31 09:28:59 +00:00
										 |  |  | # define mutexattr_default NULL
 | 
					
						
							|  |  |  | # define condattr_default NULL
 | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #elif defined(G_THREADS_IMPL_DCE)
 | 
					
						
							|  |  |  | # define posix_check_for_error( what ) G_STMT_START{             \
 | 
					
						
							|  |  |  |     if( (what) == -1 ) { posix_print_error( what, errno ); }       \ | 
					
						
							|  |  |  |     }G_STMT_END | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | # define pthread_key_create(a, b) pthread_keycreate (a, b)
 | 
					
						
							|  |  |  | # define pthread_attr_init(a) pthread_attr_create (a)
 | 
					
						
							|  |  |  | # define pthread_attr_destroy(a) pthread_attr_delete (a)
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | # define pthread_create(a, b, c, d) pthread_create(a, *b, c, d) 
 | 
					
						
							|  |  |  | # define mutexattr_default (pthread_mutexattr_default)
 | 
					
						
							|  |  |  | # define condattr_default (pthread_condattr_default)
 | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #else /* neither G_THREADS_IMPL_POSIX nor G_THREADS_IMPL_DCE are defined */
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | # error This should not happen. Contact the GLib team.
 | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-02-22 13:11:24 +00:00
										 |  |  | gulong g_thread_min_stack_size = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | #define HAVE_G_THREAD_IMPL_INIT
 | 
					
						
							|  |  |  | static void  | 
					
						
							|  |  |  | g_thread_impl_init() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   g_thread_min_priority = POSIX_MIN_PRIORITY; | 
					
						
							|  |  |  |   g_thread_max_priority = POSIX_MAX_PRIORITY; | 
					
						
							| 
									
										
										
										
											2000-02-22 13:11:24 +00:00
										 |  |  | #ifdef _SC_THREAD_STACK_MIN
 | 
					
						
							|  |  |  |   g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0); | 
					
						
							|  |  |  | #endif /* _SC_THREAD_STACK_MIN */
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | static GMutex * | 
					
						
							|  |  |  | g_mutex_new_posix_impl (void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GMutex *result = (GMutex *) g_new (pthread_mutex_t, 1); | 
					
						
							| 
									
										
										
										
											1999-03-31 09:28:59 +00:00
										 |  |  |   posix_check_for_error (pthread_mutex_init ((pthread_mutex_t *) result,  | 
					
						
							|  |  |  | 					     mutexattr_default)); | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |   return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void | 
					
						
							|  |  |  | g_mutex_free_posix_impl (GMutex * mutex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   posix_check_for_error (pthread_mutex_destroy ((pthread_mutex_t *) mutex)); | 
					
						
							| 
									
										
										
										
											1998-12-17 04:36:04 +00:00
										 |  |  |   g_free (mutex); | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* NOTE: the functions g_mutex_lock and g_mutex_unlock may not use
 | 
					
						
							|  |  |  |    functions from gmem.c and gmessages.c; */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* pthread_mutex_lock, pthread_mutex_unlock can be taken directly, as
 | 
					
						
							|  |  |  |    signature and semantic are right, but without error check then!!!!, | 
					
						
							|  |  |  |    we might want to change this therefore. */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static gboolean | 
					
						
							|  |  |  | g_mutex_trylock_posix_impl (GMutex * mutex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   int result; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   result = pthread_mutex_trylock ((pthread_mutex_t *) mutex); | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							|  |  |  |   if (result == EBUSY) | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |     return FALSE; | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #else /* G_THREADS_IMPL_DCE */
 | 
					
						
							|  |  |  |   if (result == 0) | 
					
						
							|  |  |  |     return FALSE; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   posix_check_for_error (result); | 
					
						
							|  |  |  |   return TRUE; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static GCond * | 
					
						
							|  |  |  | g_cond_new_posix_impl (void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GCond *result = (GCond *) g_new (pthread_cond_t, 1); | 
					
						
							| 
									
										
										
										
											1999-03-31 09:28:59 +00:00
										 |  |  |   posix_check_for_error (pthread_cond_init ((pthread_cond_t *) result,  | 
					
						
							|  |  |  | 					    condattr_default)); | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |   return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* pthread_cond_signal, pthread_cond_broadcast and pthread_cond_wait
 | 
					
						
							|  |  |  |    can be taken directly, as signature and semantic are right, but | 
					
						
							|  |  |  |    without error check then!!!!, we might want to change this | 
					
						
							|  |  |  |    therfore. */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define G_MICROSEC 1000000
 | 
					
						
							|  |  |  | #define G_NANOSEC 1000000000
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static gboolean | 
					
						
							|  |  |  | g_cond_timed_wait_posix_impl (GCond * cond, | 
					
						
							|  |  |  | 			      GMutex * entered_mutex, | 
					
						
							|  |  |  | 			      GTimeVal * abs_time) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   int result; | 
					
						
							|  |  |  |   struct timespec end_time; | 
					
						
							|  |  |  |   gboolean timed_out; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   g_return_val_if_fail (cond != NULL, FALSE); | 
					
						
							|  |  |  |   g_return_val_if_fail (entered_mutex != NULL, FALSE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if (!abs_time) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       g_cond_wait (cond, entered_mutex); | 
					
						
							|  |  |  |       return TRUE; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   end_time.tv_sec = abs_time->tv_sec; | 
					
						
							|  |  |  |   end_time.tv_nsec = abs_time->tv_usec * (G_NANOSEC / G_MICROSEC); | 
					
						
							|  |  |  |   g_assert (end_time.tv_nsec < G_NANOSEC); | 
					
						
							|  |  |  |   result = pthread_cond_timedwait ((pthread_cond_t *) cond, | 
					
						
							|  |  |  | 				   (pthread_mutex_t *) entered_mutex, | 
					
						
							|  |  |  | 				   &end_time); | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |   timed_out = (result == ETIMEDOUT); | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #else /* G_THREADS_IMPL_DCE */
 | 
					
						
							|  |  |  |   timed_out = (result == -1) && (errno = EAGAIN); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |   if (!timed_out) | 
					
						
							|  |  |  |     posix_check_for_error (result); | 
					
						
							|  |  |  |   return !timed_out; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void | 
					
						
							|  |  |  | g_cond_free_posix_impl (GCond * cond) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   posix_check_for_error (pthread_cond_destroy ((pthread_cond_t *) cond)); | 
					
						
							|  |  |  |   g_free (cond); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static GPrivate * | 
					
						
							|  |  |  | g_private_new_posix_impl (GDestroyNotify destructor) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GPrivate *result = (GPrivate *) g_new (pthread_key_t, 1); | 
					
						
							|  |  |  |   posix_check_for_error (pthread_key_create ((pthread_key_t *) result, | 
					
						
							|  |  |  | 					     destructor)); | 
					
						
							|  |  |  |   return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* NOTE: the functions g_private_get and g_private_set may not use
 | 
					
						
							|  |  |  |    functions from gmem.c and gmessages.c */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  | g_private_set_posix_impl (GPrivate * private_key, gpointer value) | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  |   if (!private_key) | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |     return; | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  |   pthread_setspecific (*(pthread_key_t *) private_key, value); | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static gpointer | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  | g_private_get_posix_impl (GPrivate * private_key) | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  |   if (!private_key) | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  |     return NULL; | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							| 
									
										
										
										
											1998-12-15 17:49:30 +00:00
										 |  |  |   return pthread_getspecific (*(pthread_key_t *) private_key); | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  | #else /* G_THREADS_IMPL_DCE */
 | 
					
						
							| 
									
										
										
										
											1999-02-08 17:14:44 +00:00
										 |  |  |   { | 
					
						
							|  |  |  |     void* data; | 
					
						
							| 
									
										
										
										
											1999-03-11 17:38:51 +00:00
										 |  |  |     posix_check_for_error (pthread_getspecific (*(pthread_key_t *)  | 
					
						
							| 
									
										
										
										
											1999-03-12 15:28:36 +00:00
										 |  |  | 						private_key, &data)); | 
					
						
							| 
									
										
										
										
											1999-02-08 17:14:44 +00:00
										 |  |  |     return data; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | g_thread_create_posix_impl (GThreadFunc thread_func,  | 
					
						
							|  |  |  | 			    gpointer arg,  | 
					
						
							|  |  |  | 			    gulong stack_size, | 
					
						
							|  |  |  | 			    gboolean joinable, | 
					
						
							|  |  |  | 			    gboolean bound, | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | 			    GThreadPriority priority, | 
					
						
							|  |  |  | 			    gpointer thread) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |   pthread_attr_t attr; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   g_return_if_fail (thread_func); | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   posix_check_for_error (pthread_attr_init (&attr)); | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  | #ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE
 | 
					
						
							|  |  |  |   if (stack_size) | 
					
						
							| 
									
										
										
										
											2000-02-22 13:11:24 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |       stack_size = MAX (g_thread_min_stack_size, stack_size); | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |       posix_check_for_error (pthread_attr_setstacksize (&attr, stack_size)); | 
					
						
							| 
									
										
										
										
											2000-02-22 13:11:24 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | #endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | #ifdef PTHREAD_SCOPE_SYSTEM
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |   if (bound) | 
					
						
							|  |  |  |      posix_check_for_error (pthread_attr_setscope (&attr,  | 
					
						
							|  |  |  | 						   PTHREAD_SCOPE_SYSTEM)); | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | #endif /* PTHREAD_SCOPE_SYSTEM */
 | 
					
						
							| 
									
										
										
										
											1999-06-20 22:20:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							|  |  |  |   posix_check_for_error (pthread_attr_setdetachstate (&attr, | 
					
						
							|  |  |  |           joinable ? PTHREAD_CREATE_JOINABLE : PTHREAD_CREATE_DETACHED)); | 
					
						
							|  |  |  | #endif /* G_THREADS_IMPL_POSIX */
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |    | 
					
						
							|  |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   { | 
					
						
							|  |  |  |     struct sched_param sched; | 
					
						
							|  |  |  |     posix_check_for_error (pthread_attr_getschedparam (&attr, &sched)); | 
					
						
							|  |  |  |     sched.sched_priority = g_thread_map_priority (priority); | 
					
						
							|  |  |  |     posix_check_for_error (pthread_attr_setschedparam (&attr, &sched)); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | #else /* G_THREADS_IMPL_DCE */
 | 
					
						
							|  |  |  |   posix_check_for_error  | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |     (pthread_attr_setprio (&attr, g_thread_map_priority (priority))); | 
					
						
							|  |  |  | #endif /* G_THREADS_IMPL_DCE */
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_create (thread, &attr,  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |                                          (void* (*)(void*))thread_func, | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |                                          arg)); | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |    | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_attr_destroy (&attr)); | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | #ifdef G_THREADS_IMPL_DCE
 | 
					
						
							|  |  |  |   if (!joinable) | 
					
						
							|  |  |  |     posix_check_for_error (pthread_detach (thread)); | 
					
						
							|  |  |  | #endif /* G_THREADS_IMPL_DCE */
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | g_thread_yield_posix_impl (void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   POSIX_YIELD_FUNC; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | g_thread_join_posix_impl (gpointer thread) | 
					
						
							|  |  |  | {      | 
					
						
							|  |  |  |   gpointer ignore; | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_join (*(pthread_t*)thread,  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 				       &ignore)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | g_thread_exit_posix_impl (void)  | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   pthread_exit (NULL); | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | g_thread_set_priority_posix_impl (gpointer thread, GThreadPriority priority) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | #ifdef G_THREADS_IMPL_POSIX
 | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |   struct sched_param sched; | 
					
						
							|  |  |  |   int policy; | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_getschedparam (*(pthread_t*)thread,  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 						&policy, &sched)); | 
					
						
							|  |  |  |   sched.sched_priority = g_thread_map_priority (priority); | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_setschedparam (*(pthread_t*)thread,  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 						policy, &sched)); | 
					
						
							|  |  |  | #else /* G_THREADS_IMPL_DCE */
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   posix_check_for_error (pthread_setprio (*(pthread_t*)thread,  | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 					  g_thread_map_priority (priority))); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  | static void | 
					
						
							|  |  |  | g_thread_self_posix_impl (gpointer thread) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   *(pthread_t*)thread = pthread_self(); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | static GThreadFunctions g_thread_functions_for_glib_use_default = | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   g_mutex_new_posix_impl, | 
					
						
							|  |  |  |   (void (*)(GMutex *)) pthread_mutex_lock, | 
					
						
							|  |  |  |   g_mutex_trylock_posix_impl, | 
					
						
							|  |  |  |   (void (*)(GMutex *)) pthread_mutex_unlock, | 
					
						
							|  |  |  |   g_mutex_free_posix_impl, | 
					
						
							|  |  |  |   g_cond_new_posix_impl, | 
					
						
							|  |  |  |   (void (*)(GCond *)) pthread_cond_signal, | 
					
						
							|  |  |  |   (void (*)(GCond *)) pthread_cond_broadcast, | 
					
						
							|  |  |  |   (void (*)(GCond *, GMutex *)) pthread_cond_wait, | 
					
						
							|  |  |  |   g_cond_timed_wait_posix_impl, | 
					
						
							|  |  |  |   g_cond_free_posix_impl, | 
					
						
							|  |  |  |   g_private_new_posix_impl, | 
					
						
							|  |  |  |   g_private_get_posix_impl, | 
					
						
							| 
									
										
											  
											
												Completed the thread support in GLib. Thread creation, prioritizing
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
	* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
	Completed the thread support in GLib. Thread creation,
	prioritizing threads, yielding, joining threads as well as
	reader/writer locks and recursive mutexes are now in place. Please
	test heavily on your platform. It is so far tested on
	Linux/i386/pthreads, Solaris/Sparc/pthreads and
	Solaris/Sparc/solaristhreads.
	* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
	thread safe sleeping. (sleep() is not MT-safe at all!)
	* gutils.c: Avoid compiler warning.
	* tests/Makefile.am, tests/thread-test.c: New program to test some
	aspects of the thread implementation.
	* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
	change of content.
	* configure.in: Purged all appearances of nspr.
	* gthread/gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.
	* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
	would want to build upon.
	* gthread/gthread.c: Renamed to gthread-impl.c to avoid
	confusion with ../gthread.c (Formerly known as the file called
	gmutex.c)
	* gthread/testgthread.c: Removed. The new and much extended
        tests are in ../tests/thread-test.c.
	* gthread/Makefile.am: Changed to reflect the changes above.
											
										 
											1999-06-17 15:39:31 +00:00
										 |  |  |   g_private_set_posix_impl, | 
					
						
							|  |  |  |   g_thread_create_posix_impl, | 
					
						
							|  |  |  |   g_thread_yield_posix_impl, | 
					
						
							|  |  |  |   g_thread_join_posix_impl, | 
					
						
							|  |  |  |   g_thread_exit_posix_impl, | 
					
						
							|  |  |  |   g_thread_set_priority_posix_impl, | 
					
						
							| 
									
										
										
										
											1999-11-16 10:29:27 +00:00
										 |  |  |   g_thread_self_posix_impl | 
					
						
							| 
									
										
										
										
											1998-12-15 05:28:02 +00:00
										 |  |  | }; |