Commit Graph

100 Commits

Author SHA1 Message Date
Ryan Lortie
80730bc75c Rework GMutex and GCond APIs
Do a substantial rework of the GMutex and GCond APIs.

 - remove all of the macro indirection hackery which is no longer needed
   since we dropped support for switchable thread implementations

 - expose the structure types and add G_MUTEX_INIT and G_COND_INIT
   static initialiser macros

 - add g_mutex_init() and g_mutex_clear() for use when embedding GMutex
   into another structure type and do the same for GCond as well

 - avoid infinite recursion hazards by ensuring that neither GCond or
   GMutex ever calls back into any other part of GLib

 - substantially rework the Windows implementation of GCond and GMutex
   to use the SRWLock and CONDITION_VARIABLE APIs present on Windows
   2008/Vista and later, emulating these APIs on XP
2011-09-21 15:55:36 -04:00
Ryan Lortie
3f93141243 GThread: remove errorcheck mutex support
This can only possibly work if we call g_thread_init(), which we are
moving away from.
2011-09-09 12:47:39 -04:00
Ryan Lortie
e48573c402 Deprecated (undocumented) g_thread_gettime
g_thread_gettime() is an undocumented public function pointer that
points to a function that returns the monotonic time in nanoseconds.
g_get_monotonic_time() does the same in microseconds, so it can be used
instead.

GLib had one internal user in GFileMonitor that only cared about
millisecond accuracy; it has been ported to g_get_monotonic_time().
2011-09-09 12:47:39 -04:00
Dan Winship
5bc7729d16 Make threads mandatory
G_THREADS_ENABLED still exists, but is always defined. It is still
possible to use libglib without threads, but gobject (and everything
above it) is now guaranteed to be using threads (as, in fact, it was
before, since it was accidentally impossible to compile with
--disable-threads).

https://bugzilla.gnome.org/show_bug.cgi?id=616754
2011-09-09 12:41:55 -04:00
Murray Cumming
7ba753b002 G_STATIC_REC_MUTEX_INIT: Fix missing initialization.
Add the third struct field, zeroed, to avoid a compiler warning.
2011-07-04 08:58:00 +02:00
Murray Cumming
34b7126a4e G_STATIC_REC_MUTEX_INIT: Add a 0 to the initialization.
This avoids a compiler warning about an incomplete initialization
when using this.
2011-06-15 10:47:13 +02:00
Javier Jardón
81e98c399e Clean Glib header #include issues: gthread 2010-05-06 17:42:09 +02:00
Alexander Larsson
de5c708e0b Make thread calls unconditional if G_THREADS_MANDATORY is set
Since gobject now initialized threads unconditionally if threads are
available it makes no sense to have each thread operation
conditionally check if threads are enables, so allow this to be avoided.

https://bugzilla.gnome.org/show_bug.cgi?id=606775
2010-01-12 21:37:41 +01:00
Matthias Clasen
c8e37b63e7 Fix strict aliasing warnings and viiolations to make GLib and
GLib users buildable with gcc 4.4. Patch by Jakub Jelinek.

        * glib/gatomic.[hc]: Add G_GNUC_MAY_ALIAS to pointer arguments,
        fix macro versions to only operate on objects of the same size.

        * glib/gdataset.c:
        * glib/gthread.[hc]:
        * glib/gdatasetprivate.h: Remove unnecessary casts in
        g_atomic_pointer_get calls.


svn path=/trunk/; revision=7875
2009-02-17 16:14:39 +00:00
Mike Kestner
8bed68813e Bug 560676 - function access for g_threads_supported
2008-12-18  Mike Kestner <mkestner@novell.com>

	Bug 560676 - function access for g_threads_supported

	* glib/gthreads.c (g_thread_get_initialized): new accessor for
	g_threads_supported macro.
	* glib/gthreads.h: add g_thread_get_initialized

svn path=/trunk/; revision=7752
2008-12-18 19:20:42 +00:00
Sebastian Dröge
304c030d02 Bug 316221 - G_LOCK warns about breaking strict-aliasing rules
* configure.in:
* glib/gthread.h: Revert previous patch as it doesn't improve the
situation and results in other warnings.

svn path=/trunk/; revision=7064
2008-06-20 11:29:25 +00:00
Michael Natterer
e0aa9d8a61 #define __GLIB_H_INSIDE__ around including everything.
2008-05-05  Michael Natterer  <mitch@imendio.com>

	* glib/glib.h: #define __GLIB_H_INSIDE__ around including
	everything.

	* glib/*.h: check for that define instead of __G_LIB_H__ if
	G_DISABLE_SINGLE_INCLUDES is defined.

	* glib/gdatasetprivate.h: #include <glib.h> instead of
	<glib/gdataset.h>


svn path=/trunk/; revision=6875
2008-05-05 15:02:15 +00:00
Matthias Clasen
b9cc70aaa8 Replace occurrances of G_GNUC_PRETTY_FUNCTION by G_STRFUNC. (#524344,
2008-03-30  Matthias Clasen  <mclasen@redhat.com>

        * glib/gthread.h: Replace occurrances of G_GNUC_PRETTY_FUNCTION
        by G_STRFUNC.  (#524344, Peter, Kjellerstedt)



svn path=/trunk/; revision=6775
2008-03-31 03:39:00 +00:00
Michael Natterer
f4bb21aa1d make it possible to disable single-file includes by defining
2008-03-14  Michael Natterer  <mitch@imendio.com>

	* glib/*.h: make it possible to disable single-file includes by
	defining G_DISABLE_SINGLE_INCLUDES when building against GLib.
	Approved by Tim Janik.

	* glib/glib.h: include <glib/gslice.h>.

	* glib/gi18n.h
	* glib/gi18n-lib.h
	* glib/gprintf.h: include <glib.h> so the above works when these
	files are included without including <glib.h> first.


svn path=/trunk/; revision=6713
2008-03-14 19:30:38 +00:00
Sebastian Dröge
0dc34bf29a Bug 316221 - G_LOCK warns about breaking strict-aliasing rules
* configure.in:
* glib/gthread.h: Prevent the compiler from warning about breaking
strict-aliasing rules when using gcc 4.3 and G_LOCK on C sources.

svn path=/trunk/; revision=6691
2008-03-12 15:36:38 +00:00
Behdad Esfahbod
9df1f4fcc7 Fix warnings from sparse. (#487491, Kjartan Maraas)
2007-10-21  Behdad Esfahbod  <behdad@gnome.org>

        * glib/gdate.c (g_date_strftime):
        * glib/gmain.c (g_main_context_check):
        * glib/gregex.c (g_match_info_fetch_all), (g_regex_split_full):
        * glib/gthread.c (g_once_init_enter_impl), (g_once_init_leave):
        * glib/gthread.h:
        * glib/gutf8.c (g_utf16_to_utf8), (g_utf16_to_ucs4):
        * tests/errorcheck-mutex-test.c (lock_locked_mutex),
        (trylock_locked_mutex), (unlock_unlocked_mutex),
        (free_locked_mutex), (wait_on_unlocked_mutex),
        (wait_on_otherwise_locked_mutex), (timed_wait_on_unlocked_mutex),
        (timed_wait_on_otherwise_locked_mutex):
        Fix warnings from sparse. (#487491, Kjartan Maraas)


svn path=/trunk/; revision=5792
2007-10-21 17:01:29 +00:00
Tim Janik
37dbc09080 fixed compiler warning about loosing volatile qualifier, bug #457641.
Wed Aug 29 12:08:40 2007  Tim Janik  <timj@imendio.com>

        * glib/gthread.h (g_once_init_enter): fixed compiler warning about
        loosing volatile qualifier, bug #457641.



svn path=/trunk/; revision=5725
2007-08-29 10:09:30 +00:00
Tim Janik
d5c4370813 prevent race covered by g_once_init_enter(), by checking for previous
Tue Aug 14 02:06:10 2007  Tim Janik  <timj@imendio.com>

        * glib/gthread.c (g_once_init_enter_impl): prevent race covered
        by g_once_init_enter(), by checking for previous initializations
        before entering initialisation branch.

        * tests/onceinit.c: added multi-thread/multi-initializer stress test
        using unoptimized g_once_init_enter_impl().



svn path=/trunk/; revision=5701
2007-08-14 00:05:52 +00:00
Tim Janik
95e5ffb695 more atomic ops pointer cast fixes. this time it'll work with atomic op
Fri Jul 13 01:01:46 2007  Tim Janik  <timj@imendio.com>

        * glib/gthread.[hc]: more atomic ops pointer cast fixes. this time it'll
        work with atomic op macros *and* atomic op functions.



svn path=/trunk/; revision=5638
2007-07-12 23:03:06 +00:00
Tim Janik
b1e888b60e fixed missing pointer casts when using atomic ops.
Fri Jul 13 00:50:40 2007  Tim Janik  <timj@imendio.com>

        * glib/gthread.[hc]: fixed missing pointer casts when using atomic ops.



svn path=/trunk/; revision=5637
2007-07-12 22:51:56 +00:00
Tim Janik
c9ccc828f1 implemented g_once_init_enter(), g_once_init_enter_impl() and
Tue Jul 10 12:24:35 2007  Tim Janik  <timj@imendio.com>

        * glib/gthread.[hc]: implemented g_once_init_enter(),
        g_once_init_enter_impl() and g_once_init_leave(), based on a patch by
        Antoine Tremblay, fixes #65041.
        adapted exported inline function mechanism from gutils.[hc] for inlining
        g_once_init_enter_impl() in gthread.[hc].



svn path=/trunk/; revision=5616
2007-07-10 10:30:36 +00:00
Matthias Clasen
4bbde50716 Revert an accidental ABI break by moving gettime out of the
2007-01-16  Matthias Clasen  <mclasen@redhat.com>

        * glib/gthread.h:
        * glib/gthread.c:
        * glib/glib.symbols: Revert an accidental ABI break by
        moving gettime out of the GThreadFunctions struct and making
        it a separate variable.  (#397139, Joe Marcus Clarke)

        * gthread/*.c: Adapt.



svn path=/trunk/; revision=5279
2007-01-16 21:25:03 +00:00
Matthias Clasen
541462ab1e Don't link glib against libpthread. (#393812)
2007-01-07  Matthias Clasen  <mclasen@redhat.com>

	Don't link glib against libpthread.  (#393812)
	
	* configure.in: Link gthread against librt, not glib itself.

	* glib/gthread.h:
	* glib/gthread.c: Add a new thread function, gettime.

	* glib/gtimer.c: Use gettime instead of directly working with
	the various system interfaces.

	* gthread/gthread-impl.c:
	* gthread/gthread-posix.c:
	* gthread/gthread-win32.c: Implement gettime.
	

svn path=/trunk/; revision=5227
2007-01-08 05:13:15 +00:00
Sebastian Wilhelmi
268084caf9 Make the magic and location arguments to the error-checking-mutex
2006-05-10  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthread.h, gthread/gthread-impl.c: Make the magic and
	location arguments to the error-checking-mutex functions const and
	do not write to them, as we might not own them. Clean up the
	error-checking-mutex code quite a bit. (#335198, Chris Wilson)
2006-05-11 00:18:46 +00:00
Matthias Clasen
488cee4977 Rework the strict aliasing fix to not break C++, pointed out by Murray
2006-01-16  Matthias Clasen  <mclasen@redhat.com>

	* glib/gthread.h (g_static_mutex_get_mutex_impl_shortcut):
	Rework the strict aliasing fix to not break C++, pointed
	out by Murray Cumming.
2006-01-16 23:03:10 +00:00
Matthias Clasen
1e4efb6554 Fix #316221, Michal Benes, Stanislav Brabec;
2005-12-27  Matthias Clasen  <mclasen@redhat.com>

        Fix #316221, Michal Benes, Stanislav Brabec;

        * configure.in: Fix a strict aliasing problem in
        g_static_mutex_get_mutex().
        * glib/gthread.h: ...and in
        g_static_mutex_get_mutex_impl_shortcut().
2005-12-27 19:50:02 +00:00
Tim Janik
733b1789c1 new slice allocator implementation.
Thu Dec  1 17:32:46 2005  Tim Janik  <timj@imendio.com>

        * glib/gslice.[hc]: new slice allocator implementation.

        * tests/slice-test.c: added random slice allocation test.

        * glib/gthread.[hc]: removed newly added private thread mem API.

        * glib/gthreadinit.h:
        * glib/gmessages.c:
        * glib/gthread.c:
        * glib/gmem.c: divided glib threading initialisation into three phases,
        initialisation where private keys and messaging are not available (only
        needed by gmem.c), initialisation without messaging but private keys
        available (gslice.c, gmessage.c), and full fledged initialisers that
        server the rest of glib. initialisation functions got renamed to reflect
        the limitations of their corresponding phases.

        * glib/gmem.c: removed memchunk code, defer allocations to
        g_slice_* instead.

        * glib/gmem.[hc]: removed g_slice_* skeletons.

        * glib/glib.symbols: added g_slice_* symbols.

        * configure.in: check for availability of posix_memalign(3), memalign(3)
        and valloc(3).

        * glib/Makefile.am: added gslice.[hc].
2005-12-01 16:34:33 +00:00
Tim Janik
0cba1b531d prepared deprecation of GMemChunk and GAllocator. added g_slice_*() API to
Tue Nov  1 16:24:20 2005  Tim Janik  <timj@imendio.com>

        * glib/gmem.[hc]: prepared deprecation of GMemChunk and GAllocator.
        added g_slice_*() API to allocate and cache small bits of memory.
        an actuall allocator implementation for g_slice_*() is still pending.

        * glib/gthread.[hc]: changes from a patch by Matthias Clasen.
        changed GRealThread list to use in-structure *next; fields instead
        of GSList, in order for thread iteration to not depenend on g_slice_*()
        indirectly.
        _g_thread_mem_private_get():
        _g_thread_mem_private_set(): added accessors for private memory,
        needed because the ordinary GPrivate implementation relies on GArray
        and GSList and therefore indirectly on working g_slice_*() allocations.

        * glib/gthread.[hc]:
        g_thread_foreach(): new public API function to loop over all existing threads.

        * glib/gdataset.c:
        * glib/gstring.c:
        * glib/gcache.c:
        * glib/garray.c:
        * glib/gqueue.c:
        * glib/gslist.c:
        * glib/glist.c:
        * glib/ghash.c:
        * glib/gtree.c:
        * glib/ghook.c:
        * glib/gmain.c:
        * glib/gnode.c:
        removed GAllocator and free list usages and accompanying locks.
        use g_slice_*() API to allocate and cache small bits of memory.

        * glib/ghook.h: removed GMemChunk field from public API.

        * glib/gslist.h:
        * glib/glist.h: deprecate allocator API, provide _free1() for consistency.

        * glib/gnode.h: deprecate allocator API.

        * glib/gmain.c: reordered GPollRec fields so g_slice_free_chain() can
        be used for poll rec lists.

        * glib/grel.c: removed mem chunk usage, and allocated tuples via g_slice_*().
        g_relation_destroy(): free all tuples from the all_tuples hash table,
        this effectively maintains the life time track keeping of tuples.
        g_relation_delete_tuple(): free tuples which are removed from the
        all_tuples hash table. this fixes a temporary leak that was present
        in the memchunk code until the destruction of the relation.
2005-11-01 18:10:31 +00:00
Sebastian Wilhelmi
769f36db47 Moved the assembler functions from gatomic.h to gatomic.c, which makes for
2004-02-29  Sebastian Wilhelmi  <seppi@seppi.de>

	* configure.in, glib/gatomic.c, glib/gatomic.h: Moved the
	assembler functions from gatomic.h to gatomic.c, which makes for
	better maintainability. Also use gint instead of gint32 to be able
	to use reference counting for ABI-fixed structures with
	gint/guint.

	* glib/gthread.h: Adapted accordingly.

	* tests/atomic-test.c: Updated to test for G_MAXINT and G_MININT.
2004-02-29 16:48:37 +00:00
Sebastian Wilhelmi
ea9d13892e empty G_ATOMIC_MEMORY_BARRIER() definition for !G_THREADS_ENABLED
2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.h: empty G_ATOMIC_MEMORY_BARRIER() definition for
	!G_THREADS_ENABLED

	* glib/gthread.h: Define g_once and
	g_static_mutex_get_mutex_impl_shortcut in terms of
	G_MEMORY_BARRIER, if defined and if we can inline.

	* configure.in: Remove double checked locking feature check.
2004-02-26 16:53:55 +00:00
Matthias Clasen
876f907863 Support for one-time initialization functions. (#69668, Sebastian
2003-07-09  Matthias Clasen  <maclas@gmx.de>

	Support for one-time initialization functions.  (#69668, Sebastian Wilhelmi)

	* configure.in: Check whether double checked locking is safe, define g_once() in
	glibconfig.h accordingly.
	* glib/gthread.h: Add GOnce, GOnceStatus, G_ONCE_INIT and g_once_impl.
	* glib/gthread.c (g_once_impl): Fallback implementation using a mutex if double checked
	locking is unsafe.
	* tests/thread-test.c: Add tests for g_once().
2003-07-08 23:43:48 +00:00
Owen Taylor
424b7e92fc Mark the contents of the strucures in this file /*< private >*/
Sat Dec 14 21:10:57 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/gthread.h: Mark the contents of the strucures
        in this file /*< private >*/

        * glib/gthread.[ch]: Rename the 'write' field of the
        structure to 'have_writer' to avoid any possible
        conflict with system headers. (#90549, Morten Welinder)
2002-12-15 02:19:06 +00:00
Sebastian Wilhelmi
cb17f230b5 Delay allocation until after all g_return_val_if_fail ().
2002-02-04  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib/gthread.c (g_thread_create_full): Delay allocation until
	after all g_return_val_if_fail ().

	* glib/gthread.h: Make depth member guint for cosmetic reasons.

	* glib/gthread.c: (g_static_rec_mutex_unlock_full): depth should
	be unsigned. All that spotted by Jrgen Viksell
	<jorgen.viksell@telia.com>
2002-02-04 13:49:36 +00:00
Sebastian Wilhelmi
f8f4c3778a Add thread_equal function to allow for platform defined function to
2001-09-19  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib/gthread.h (GThreadFunctions): Add thread_equal function to
	allow for platform defined function to compare two threads.

	* glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
	when non-NULL instead of ==.

	* gthread/gthread-posix.c: Add g_thread_equal_posix_impl and
	add to the function vector g_thread_functions_for_glib_use_default.

	* gthread/gthread-solaris.c, gthread/gthread-win32.c: Add NULL
	as equal function, as on those two platforms you don't need an
	equal function.
2001-09-19 12:46:39 +00:00
Sebastian Wilhelmi
bd2329ae66 Add 'want_to_read' to GStaticRWLock to avoid calling g_cond_broadcast,
2001-08-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib/gthread.h, glib/gthread.c: Add 'want_to_read' to
	GStaticRWLock to avoid calling g_cond_broadcast, when no one is
	waiting.
2001-08-30 14:19:20 +00:00
Owen Taylor
2fd6b001fb Move glib library into a subdirectory, make all GLib include files include
Tue Jun 26 11:43:46 2001  Owen Taylor  <otaylor@redhat.com>

	* configure.in Makefile.am *.[ch] glib/*.[ch] glib/Makefile.am:
	Move glib library into a subdirectory, make all GLib include
	files include as <glib/glist.h>

	* tests/testglib.c tests/testgdate.c tests/testgdateparser.c
	  tests/timeloop.c tests/timeloop-basic.c: Move all tests into
	the tests/ subdirectory.
2001-06-26 16:01:21 +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
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
Tor Lillqvist
cd89e4cca6 Match also UNC paths on Win32.
2001-02-21  Tor Lillqvist  <tml@iki.fi>

	* gutils.c (g_path_is_absolute): Match also UNC paths on Win32.

	* gthread.h: Include gtypes.h to be sure to get GLIB_VAR
	definition, remove definition from here.

	* gunicode.h: Remove duplicate GLIB_VAR definition from here, too.

	* gutils.c: (Win32) Use USERPROFILE as home dir if present. On
	Win2k, HOMEDRIVE and HOMEPATH aren't reliable.

	* Makefile.am (INCLUDES): Add -DGLIB_COMPILATION.

	* makefile.mingw.in: Remove install target, Windows isn't Unix.

	* testgdate.c
	* testgdateparser.c
	* testglib.c: Undefine GLIB_COMPILATION.

	* glib.def: Updates.

	* .cvsignore
	* */.cvsignore: Ignore also .obj, .dll, .lib and .exe files.
2001-02-21 12:41:28 +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
1f46d9f68f Added debug information for g_mutex_free calls, if G_ERRORCHECK_MUTEXES is
2001-01-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.h (g_cond_wait): Added debug information for
	g_mutex_free calls, if G_ERRORCHECK_MUTEXES is defined.

	* gthread/gthread-impl.c (g_mutex_free_errorcheck_impl): Fixed it for
	real. Sorry for this mess. It looked like a real obvious fix, so I
	didn't check. Bad boy. Added some casts to quiet the compiler.
2001-01-30 09:03:22 +00:00
Owen Taylor
e2fd4e2bd0 Major change in API for creating sources to handle multiple main loops
Tue Dec  5 12:23:04 2000  Owen Taylor  <otaylor@redhat.com>

        * gmain.[hc]: Major change in API for creating sources
	to handle multiple main loops (GMainContext *).

	GSources are now exposed as GSource * and implemented
	with structure derivation.

	* giochannel.[ch]: Changed vtable for GIOChannel to correspond
	to the new mainloop API, add g_io_channel_create_watch().

	* gtypes.h: Move GTimeVal here.

	* gthread.h: Remove gmain.h include to avoid circularity.

        * giounix.c: Update for new GMain API.

	* giowin32.c: Update for new GMain API. (No check for
	proper compilation or working.)

	* timeloop.c timeloop-basic.c: A benchmarking program for
	the main loop comparing the main loop against a
	hand-written (timeloop-basic.c) variant.

	* tests/mainloop-test.c: New torture test of mainloop.

	* docs/Changes-2.0.txt: Started. Added text about
	changes to GMain.

	* gmain.c (g_main_add_poll_unlocked): Initial fd->revents
	to zero. (#8482, Benjamin Kahn)
2000-12-05 20:45:33 +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
Havoc Pennington
dd58473e07 Add void in empty function arg list
2000-11-27  Havoc Pennington  <hp@redhat.com>

        * gthread.h: Add void in empty function arg list
2000-11-28 01:03:45 +00:00
Sebastian Wilhelmi
b1d1558747 Split glib.h into many header files mostly according to the resp.
2000-10-12  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.h, galloca.h, garray.h, gasyncqueue.h, gbacktrace.h,
	gcache.h, gcompletion.h, gconvert.h, gdataset.h, gdate.h, ghash.h,
	ghook.h, giochannel.h, glist.h , gmacros.h, gmain.h, gmem.h,
	gmessages.h, gnode.h, gprimes.h, gquark.h, gqueue.h, grand.h,
	grel.h, gscanner.h, gslist.h, gstrfuncs.h, gstring.h, gthread.h,
	gthreadpool.h, gtimer.h, gtree.h, gtypes.h, gutils.h: Split glib.h
	into many header files mostly according to the resp. *.c-files.

	* gmacros.h: Added G_BEGIN_DECLS and G_END_DECLS to mean: 'in case
	of C++: extern "C" { ... }' analogous to glibc __BEGIN_DECLS and
	__END_DECLS.

	* configure.in, gerror.h, gfileutils.h, gshell.h, gspawn.h,
	gunicode.h, : Changed guard-macro names to something more
	consistent.

	* configure.in, *.h: Use G_BEGIN_DECLS and G_END_DECLS.
2000-10-12 11:52:07 +00:00