Commit Graph

25 Commits

Author SHA1 Message Date
Sebastian Wilhelmi
e2b7bedbde g_thread_create renamed to g_thread_create_full.
2001-05-22  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.def: g_thread_create renamed to g_thread_create_full.

	* gthread.c: memcpy is not necessary here. We can simply use
	struct assignment.

	* gmessages.c: Fix compilation error on win32. Added
	GFileDescriptor, wich is gint on Unix and FILE* on win32.
2001-05-22 12:06:59 +00:00
Sebastian Wilhelmi
227d18bc46 Renamed g_thread_create to g_thread_create_full and added macro
2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c, gthread.h: Renamed g_thread_create to
	g_thread_create_full and added macro g_thread_create, which omits
	'stack_size', 'bound' and 'priority' parameters. Also removed
	'bound' from GThread struct.

	* gthreadpool.h, gthreadpool.c: Adapted GThreadPool to the above
	changes. GThreadPool lost the 'priority' and 'bound'
	members. g_thread_pool_new the 'stack_size', 'bound' and
	'priority' parameters.

	* tests/mainloop-test.c, tests/thread-test.c,
	tests/threadpool-test.c: Adapted to the above changes.
2001-05-18 08:44:57 +00:00
Sebastian Wilhelmi
a8c9dadde2 Renamed 'value' and 'arg' to 'data' and 'thread_func' to 'func' to make it
2001-05-09  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c, gthread.h: Renamed 'value' and 'arg' to 'data' and
	'thread_func' to 'func' to make it more consistent with the rest
	of GLib.

	* gthreadpool.c, gthreadpool.h: Moved 'stack_size' from the public
	members of GThreadPool to the private ones. Renamed 'thread_func'
	to 'func' as above. Moved up 'user_data' in g_thead_pool_new
	argument list and in GThreadPool struct.
2001-05-09 12:51:21 +00:00
Sebastian Wilhelmi
cd00d6e2cc Moved func and arg members from GRealThread to GThread, such that they can
2001-05-08  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gmain.c, gthread.c, gthread.h: Moved func and arg members from
	GRealThread to GThread, such that they can be accessed by the
	user.

	* gthread.c, gthread.h: Due to popular demand (Tim being the
	populus here ;-) threads now have a 'return value', which is
	returned by g_thread_join and is either the return of the topmost
	thread function or the value given to g_thread_exit.

	* gthreadpool.c, tests/mainloop-test.c, tests/thread-test.c:
	Adapted to the above change.
2001-05-08 08:23:18 +00:00
Sebastian Wilhelmi
7b06f826c9 Use the new GRealThread member "context" instead of a GStaticPrivate to
2001-04-02  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gmain.c: Use the new GRealThread member "context" instead of a
	GStaticPrivate to store the thread specific main loop context.

	* gthread.c: Added "context" member to GRealThread and updated
	g_thread_create, g_thread_self and g_thread_cleanup accordingly.

	* gthread.c, gthread.h: Removed the functions
	g_static_private_(get|set)_for_thread and adapted
	g_static_private_(get|set) and g_static_private_free accordingly.
2001-04-02 16:34:08 +00:00
Tor Lillqvist
31c5b1899d Cygwin support contributed by Stefan Ondrejicka <ondrej@idata.sk>.
2001-02-21  Tor Lillqvist  <tml@iki.fi>

	Cygwin support contributed by Stefan Ondrejicka
	<ondrej@idata.sk>. Hopefully I got it all in while simultaneously
	adding support for auto*/libtool for mingw.

	* Makefile.am: Changes for auto* support on Cygwin and Win32. Do
	still distribute the hand-written makefiles and *.win32.in files,
	though. Use GIO, GSPAWN and PLATFORMDEP macros set by configure.
	Use -no-undefined. Pass -export-symbols glib.def to libtool.

	* configure.in: Define G_PLATFORM_WIN32 on both pure Win32 (mingw)
	and Cygwin. Add AC_CYGWIN, AC_EXEEXT and AC_LIBTOOL_WIN32_DLL
	calls for Cygwin and mingw support.  Check for %I64u guint64
	format (in MS C library). Set G_MODULE_IMPL on mingw and
	Cygwin. Use ac_object and ac_exeext.  Set GIO, GSPAWN, PLATFORMDEP
	and G_LIBS_EXTRA. Compile timeloop only on Unix. Define OS_WIN32
	automake conditional on Win32.

	* glib.h: Include gwin32.h also on Cygwin.

	* gfileutils.c (get_contents_posix): Use O_BINARY (defined as 0 on
	Unix) for Cygwin's sake.

	* gtimer.c (GETTIME): Reduce #ifdefs, use a macro GETTIME().

	* gconvert.c
	* gthread.c
	* gutf8.c
	* gutils.c: For code needed both on Cygwin and native Win32,
	test for G_PLATFORM_WIN32.

	* gmarkup.h: Use G_BEGIN_DECLS and G_END_DECLS.

	* gtypes.h: Refine GLIB_VAR definition. Also check for DLL_EXPORT
	in case compiling a static library on Win32 or Cygwin.

	* gwin32.c: No <direct.h> on Cygwin. No need for ftruncate() or
	dirent emulation on Cygwin.
	(get_package_directory_from_module) Convert return value from
	GetModuleFileName() to POSIX path on Cygwin.

	* tests/Makefile.am (progs_LDADD): Link with libglib, libgthread
	and libgmodule as appropriate. Use -no-undefined.

	* gbacktrace.c: Move #ifdefs around a bit on Win32.

	* gshell.c (unquote_string_inplace): Make static.
2001-03-09 21:23:33 +00:00
Sebastian Wilhelmi
2395a333cc Change the order to match the order in g_thread_create().
2001-02-23  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.h (struct _GThread): Change the order to match the order
	in g_thread_create().

	* gthread.c (g_static_rec_mutex_lock_full): Also do the right
	thing (behave like 'depth' calls to g_static_rec_mutex_lock) for a
	mutex, that is already locked.

	* glib/tmpl/threads.sgml: Big update. Almost ready.

	* glib/tmpl/async_queues.sgml: Typo.

	* glib/glib-sections.txt: Added g_static_rec_mutex_init,
	g_static_rec_mutex_free, g_static_rw_lock_init,
	g_static_private_init and g_static_private_free.

	* glib/glib-overrides.txt: Added g_thread_yield and g_thread_exit.
2001-02-23 16:42:48 +00:00
Hans Breuer
d1a05f990e updated for win32 msvc build 2001-02-19 21:51:19 +00:00
Havoc Pennington
1c391cc698 include string.h
2001-02-17  Havoc Pennington  <hp@pobox.com>

	* gthread.c: include string.h

        Applied patch from Soeren Sandmann:

	* testglib.c: const fixes

	* gwin32.h: format cleanups

	* gutils.c (g_atexit): constify a variable
	(g_find_program_in_path): constification
	(g_basename): G_CONST_RETURN
	(g_path_skip_root): G_CONST_RETURN
	(g_getenv): G_CONST_RETURN
	(g_get_user_name): G_CONST_RETURN
	(g_get_real_name): G_CONST_RETURN
	(g_get_home_dir): G_CONST_RETURN
	(g_get_tmp_dir): G_CONST_RETURN
	(g_get_prgname): G_CONST_RETURN
	(_glib_gettext): G_CONST_RETURN

	* gunicode.h: formatting cleanups

	* gstrfuncs.c (g_strerror): G_CONST_RETURN
	(g_strsignal): G_CONST_RETURN

	* gspawn.c (g_execute): const on variables

	* gmessages.c (printf_string_upper_bound): fix const on a variable

	* gmem.c (g_mem_chunk_new): make the "name" arg const
	(struct _GRealMemChunk): make the "name" field const

	* gfileutils.c (g_file_open_tmp): store const return in a const
	gchar* variable

	* gdataset.c (g_quark_to_string): G_CONST_RETURN

2001-02-17  Havoc Pennington  <hp@pobox.com>

        Applied patch from Soeren Sandmann:

	* gvaluetypes.c (g_value_get_string): G_CONST_RETURN

	* gtype.c (g_type_name): G_CONST_RETURN

	* gsignal.c (g_signal_name): G_CONST_RETURN

	* gobject-query.c (main): const fix

2001-02-17  Havoc Pennington  <hp@pobox.com>

        Applied patch from Soeren Sandmann:

	* gmodule.c (g_module_error): G_CONST_RETURN
	(g_module_name): G_CONST_RETURN
2001-02-17 23:30:48 +00:00
Sebastian Wilhelmi
efb2e89e07 Reverted the changes necessary to enlarge the system thread for
2001-02-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* acconfig.h, configure.in: Reverted the changes necessary to
	enlarge the system thread for G_THREAD_USE_PID_SURROGATE.

	* gthread.c: Now implement G_THREAD_USE_PID_SURROGATE in gthread.c
	instead of gthread/gthread-posix.c. While the latter has the
	advantage, that it is conceptually cleaner, it makes
	g_thread_self_posix_impl _very_ slow and that hurts
	GStaticRecMutex and other things. So the new version is less
	clean, but faster.

	* gthread-posix.c: Removed the G_THREAD_USE_PID_SURROGATE
	implementation, which is now in gthread.c.
2001-02-15 16:43:02 +00:00
Sebastian Wilhelmi
41e2001d85 Added functions g_static_rec_mutex_init, g_static_rec_mutex_free,
2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
	g_static_rec_mutex_free, g_static_private_init,
	g_static_private_free, g_static_rw_lock_init to allow the usage of
	all those types dynamically. (g_static_rw_lock_free already
	existed). Aditionally freed static_private indeces are reused
	now. Untill now the array would just grow if you would use more
	and more static_private. That required adding a slist of all
	running threads, which could potentially be of good use later. It
	is not exported however. Renamed a LOCK and small indentation
	fixes.

	* tests/thread-test.c: Test the new static_private index freing
	and reusing feature.
2001-02-13 15:57:44 +00:00
Sebastian Wilhelmi
5434105fcb Added g_static_mutex_init to allow initialization of a GStaticMutex, that
2001-02-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c, gthread.h: Added g_static_mutex_init to allow
	initialization of a GStaticMutex, that can not be initialized with
	G_STATIC_MUTEX_INIT, for example in allocated structures.

	* glib/tmpl/threads.sgml, glib/glib-sections.txt: Added
	documentation for g_static_mutex_init().

WCVS: ----------------------------------------------------------------------
2001-02-01 09:37:28 +00:00
Sebastian Wilhelmi
f9dfcb27b7 Call g_thread_impl_init(), as g_thread_init won't call it.
2001-01-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread/gthread-impl.c (g_thread_init_with_errorcheck_mutexes): Call
	g_thread_impl_init(), as g_thread_init won't call it.


	* glib/glib-sections.txt, glib/tmpl/threads.sgml: Added
	g_static_mutex_free

	* gthread.c, gthread.h: Added g_static_mutex_free to allow using
	GStaticMutexes with limited lifetime without leaking.

	* configure.in: GStaticMutex doesn't have to provide extra space
	for debugging information for G_ERRORCHECK_MUTEXES, as then the
	non-default implementation (runtime_mutex) is used anyway.
2001-01-30 14:16:56 +00:00
Sebastian Wilhelmi
c96ad49767 Broadcast the condition, if there are waiting readers, as all might read
2001-01-29  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c: Broadcast the condition, if there are waiting
	readers, as all might read at the same time. Only signal the
	writer thread, if there are no more readers.

	* gthread/gthread-impl.c (g_mutex_free_errorcheck_impl): Add
        new check to errorcheck mutexes to abort, if a locked mutex is freed.
2001-01-29 16:32:26 +00:00
Sebastian Wilhelmi
fe0f325777 Revamped errorcheck mutexes and added errorcheck cond_wait() and
2000-11-28  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c: Revamped errorcheck mutexes and added errorcheck
	cond_wait() and cond_timed_wait() funtions. This makes he whole
	thing work. Now we only show the location of the locking/unlocking
	for -DG_ERRORCHECK_MUTEXES and not the name of the mutex.

	* gthread.c: Set the thread data before locking the mutex, because
	the locking call might use g_thread_self ().

	* gthread.h: Do only show the location of the locking/unlocking
	for -DG_ERRORCHECK_MUTEXES and not the name of the mutex. Add the
	errorcheck capability for g_cond_wait and g_cond_timed_wait as
	well.
2000-11-28 12:56:57 +00:00
Sebastian Wilhelmi
a3036a5bd2 Add a surrogate for thread priorities using PID niceness for systems with
2000-11-21  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* configure.in: Add a surrogate for thread priorities using PID
	niceness for systems with no thread priorities and different PIDs
	for threads of the same process (most notably: Linux). Define
	G_THREAD_USE_PID_SURROGATE in that case, as used by
	gthread-posix.c. Also make the system thread bigger by
	sizeof (long) to contain the thread's PID.

	* gfileutils.c: Include stdlib.h for mkstemp prototype.

	* gthread.c: Add priority range checks to the affected functions.

	* gthreadpool.c: Remove unused variable.

	* gthread-impl.c, gthread-posix.c, gthread-solaris.c: Removed
	g_thread_map_priority function in favour of the
	g_thread_priority_map array.  Initialize the array with
	PRIORITY_{...}_VALUE, if available and interpolate beetween the
	bounds if .._NORMAL_.. and .._HIGH_.. are not available.

	* gthread-posix.c: If we should use the PID niceness as a
	surrogate for thread priorities (G_THREAD_USE_PID_SURROGATE is
	defined), then disable normal priority handling and use PIDs and
	setpriority() instead. Depends on the thread to write its PID into
	the place after the thread id right after thread creation.
2000-11-21 15:27:44 +00:00
Sebastian Wilhelmi
82ab77c8f7 Made recursive mutexes also work when the thread system is not (yet)
2000-11-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c (g_static_rec_mutex_*): Made recursive mutexes also
	work when the thread system is not (yet) initialized.
2000-11-13 12:50:16 +00:00
Sebastian Wilhelmi
3ca18629b0 Don't use a G_LOCK, as it isn't necessary.
2000-09-05  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c (g_thread_error_quark): Don't use a G_LOCK, as it
	isn't necessary.
2000-09-05 08:58:20 +00:00
Sebastian Wilhelmi
64bbfbb6da Include gerror.h before it is used for some g_thread_* functions.
2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.h: Include gerror.h before it is used for some g_thread_*
	functions.

	* gthread.c, gthreadpool.c, glib.h: Enable error reporting for
	thread creation, namly for g_thread_create, g_thread_pool_new,
	g_thread_pool_push and g_thread_pool_set_max_threads.

	* tests/thread-test.c, tests/threadpool-test.c: Adapted
	accordingly.

	* gthread-posix.c (g_thread_create_posix_impl): Use GError to
	report errors.
2000-09-01 13:03:23 +00:00
Tim Janik
c9bd7542e1 applied patch from Andreas Persenius <ndap@swipnet.se> that updates the
Wed Jul 26 12:59:31 2000  Tim Janik  <timj@gtk.org>

        * *.[hc]: applied patch from Andreas Persenius <ndap@swipnet.se> that
        updates the license headers to the GNU Lesser General Public License,
        as well as updating the copyright year to 2000.
2000-07-26 11:02:02 +00:00
Sebastian Wilhelmi
5e7134375e Added the missing POSIX_NO_YIELD and POSIX_NO_PRIORITIES warning messages.
2000-03-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* configure.in: Added the missing POSIX_NO_YIELD and
	POSIX_NO_PRIORITIES warning messages.

	* configure.in: Use AC_TRY_RUN instead of AC_TRY_LINK, to test for
	real thread support. On solaris pthread_create can be linked to
	even in -lc, but it doesn't work then.

	* configure.in: Don't use priorities for threads, when the
	minimal/maximal priorities couldn't be determined at configure
	time.

	* configure.in, gthread.c: Always define GSystemThread in
	glibconfig.h to represent a system thread.

	* configure.in: Do not use native recursive threads, when
	possibe. We use some features, that they do not expose (namely the
	depth counter).

	* glib.h, gthread.c: Redefined GStaticRecMutex. The functions are
	now implemented in a different way, which should be way
	faster. Alsothere are now functions g_static_rec_mutex_unlock_full
	and g_static_rec_mutex_lock_full to leave/enter a recursive mutex
	completly.

	* gthread.c (g_thread_self): Do not test the system_thread to be
	non-zero to speed things up.

	* gthread.c (g_mutex_init): Therefore set the system_thread of the
	main thread here.

	* tests/thread-test.c: Rerun all tests once again, but this time
	we fool the system into thinking, that the available thread system
	is not native, but userprovided.

	* gthread/gthread-posix.c: Don't use priorities for threads,
	when the minimal/maximal priorities couldn't be determined at
	configure time.

	* gthread/gthread-posix.c: Don't check for errors, when
	setting the scope of a tread to system, as some posix
	implementations can't do that and we don't want the thing to
	fail because of that.
2000-03-17 14:49:59 +00:00
Sebastian Wilhelmi
760a7ceef2 Renamed GLIB_SIZEOF_PTHREAD_T to GLIB_SIZEOF_SYSTEM_THREAD to reflect
1999-11-16  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

        * acconfig.h, config.h.win32.in, configure.in: Renamed
        GLIB_SIZEOF_PTHREAD_T to GLIB_SIZEOF_SYSTEM_THREAD to reflect
        changed meaning.

        * configure.in: Cope with systems, that have a pthread_t type,
        that is not a pointer. Hint from Karl Nelson
        <kenelson@ece.ucdavis.edu>. Define GLIB_SIZEOF_SYSTEM_THREAD to 4
        for Solaris. Cope with systems, that have no default mutex
        initialize, like obviously most DCE systems.

        * glib.h, gthread.c: Changed the prototype of thread_create and
        thread_self to return the system thread into provided memory
        instead of a return value. This is necessary, as HPUX has a
        pthread_t, that is bigger than the biggest integral type there.

        * gthread.c: system_thread is no longer a pointer, but an memory
        area of size GLIB_SIZEOF_SYSTEM_THREAD. Changed the
        zeroinitialization and the tests for zeroness accordingly.
1999-11-16 10:30:25 +00:00
Manish Singh
7ea73a0199 G_OS_FOO #defines. I *think* I got the cygwin and beos stuff right, but
I haven't tested it. The respective porters should fix any screwups

-Yosh
1999-10-04 02:32:50 +00:00
Tor Lillqvist
be80f9a106 Update the pthreads snapshot version we want. Advice how to hand-expand
* README.win32: Update the pthreads snapshot version we want.
	Advice how to hand-expand the makefile.*.in files.

	* config.h.win32.in: Define values needed by Sebastian Wilhelmi's
	new thread stuff.

	* glib.def: Add new functions.

	* glibconfig.h.win32.in: Update the pthreads snapshot version.
	Fix typo.

	* gthread.c: Include config.h, guard inclusion of unistd.h.  When
 	using gcc on Win32, g_thread_functions_for_glib_use must be marked
 	for export here, too.

	* gtimer.c: Implement g_usleep on native Win32 using Sleep (which
	only has millisecond granularity, though).

	* makefile.cygwin.in
	* makefile.msc.in: Update pthreads snapshot version. File
	name changes. Remove testgthread.

	* tests/makefile.cygwin.in
	* tests/makefile.msc.in: Add thread-test. Link with gthread lib.

	* gthread-posix.c: Guard pthread_attr_setscope call with test
	for _POSIX_THREAD_PRIORITY_SCHEDULING, which should be defined
	in a <pthread.h> that supports that feature.
1999-06-20 22:20:43 +00:00
Sebastian Wilhelmi
90f6cc9bf2 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