30 Commits

Author SHA1 Message Date
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
Matthias Clasen
154fe24134 Add an implementation for the CRIS and CRISv32 architectures, by Peter
* configure.in:
        * glib/gatomic.c: Add an implementation for the CRIS and CRISv32
        architectures, by Peter Kjellerstedt


svn path=/trunk/; revision=7732
2008-12-08 04:27:37 +00:00
Michael Natterer
198b4b9770 #include "config.h" before using G_ATOMIC_ARM.
2008-05-14  Michael Natterer  <mitch@imendio.com>

	* glib/gatomic.c: #include "config.h" before using G_ATOMIC_ARM.


svn path=/trunk/; revision=6889
2008-05-14 12:05:24 +00:00
Matthias Clasen
79668cdf02 Check whether assembler supports numerical local labels.
2007-11-18  Matthias Clasen  <mclasen@redhat.com>

        * configure.in: Check whether assembler supports numerical local
        labels.

        * glib/gatomic.c: Fix powerpc implementation of atomic ops for
        platforms where the assembler doesn't support numerical local
        labels.  (#445362)


svn path=/trunk/; revision=5861
2007-11-18 17:42:59 +00:00
Matthias Clasen
f4a8a220b5 Add arm atomic operations
svn path=/trunk/; revision=5748
2007-09-11 04:16:59 +00:00
Matthias Clasen
dc6f720c59 Don't use local numeric labels in inline assembler on AIX. (#316434, Hans
2006-12-11  Matthias Clasen  <mclasen@redhat.com>

        * glib/gatomic.c: Don't use local numeric labels in
        inline assembler on AIX.  (#316434, Hans Rosenfeld)
2006-12-11 14:25:07 +00:00
Sebastian Wilhelmi
e4f8f3b95c Renamed to glib/gthreadprivate.h and moved system thread identifier
2006-05-09  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthreadinit.h: Renamed to glib/gthreadprivate.h and moved
	system thread identifier comparision and assignment macros from
	glib/gthread.c to glib/gthreadprivate.h.

	* glib/Makefile.am, glib/gatomic.c, glib/gconvert.c, glib/gmain.c,
	glib/gmem.c, glib/gmessages.c, glib/grand.c, glib/gslice.c,
	glib/gthread.c, glib/gutils.c, gthread/gthread-impl.c: Use
	glib/gthreadprivate.h instead of glib/gthreadinit.h.

	* gthread/gthread-impl.c: Use GSystemThread instead of GThread for
	owner determination. This fixes #311043 and is mostly modeled
	after the patch from jylefort@FreeBSD.org.
2006-05-10 00:44:50 +00:00
Tor Lillqvist
6f22c44259 Adapt to the changed prototype of InterlockedCompareExchange() in newer
2006-04-19  Tor Lillqvist  <tml@novell.com>

	* glib/gatomic.c: Adapt to the changed prototype of
	InterlockedCompareExchange() in newer SDKs. Use
	InterlockedCompareExchangePointer() when applicable. (#155884,
	John Ehresman)
2006-04-19 12:32:43 +00:00
Sebastian Wilhelmi
78568970db Fix memory barrier position in g_atomic_int_get and g_atomic_pointer_get.
2005-12-17  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c: Fix memory barrier position in g_atomic_int_get
	and g_atomic_pointer_get. Add g_atomic_int_set and
	g_atomic_pointer_set implementations for the !DEFINE_WITH_MUTEXES &&
	G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case, as well as defining them
	as functions (additionally to the macros in the header) for the
	!G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case.
2005-12-17 12:20:50 +00:00
Tim Janik
7c24467a1c added g_atomic_pointer_set() and g_atomic_int_set() for systems where the
Tue Dec 13 10:13:32 2005  Tim Janik  <timj@imendio.com>

        * glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set()
        for systems where the initialization of atomic variables requires a
        write memory barrier.
2005-12-13 09:15:52 +00:00
Matthias Clasen
5c32d5236f Fix compiler warnings.
2005-12-05  Matthias Clasen  <mclasen@redhat.com>

	* tests/libmoduletestplugin_a.c: Fix compiler warnings.

	* glib/gatomic.c: In the ia64 implementation, use
	__sync builtin without _si or _di suffix.  (#321229,
	Stanislav Brabec, patch by Andreas Schwab)
2005-12-05 13:37:55 +00:00
Matthias Clasen
8f843302f8 Add a missing volatile for the IA64 implementation.
2005-12-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gatomic.c (g_atomic_int_add): Add a missing volatile for
	the IA64 implementation.
2005-12-02 16:57:24 +00:00
Tim Janik
3e847a090c g_hash_table_new_full(): create hash tables with a ref count of 1.
Tue Nov 22 14:04:26 2005  Tim Janik  <timj@imendio.com>

        * glib/ghash.h:
        * glib/ghash.c:
        g_hash_table_new_full(): create hash tables with a ref count of 1.
        g_hash_table_ref(): atomically ref_count+=1
        g_hash_table_unref(): atomically ref_count-=1, destroys hash table
        when refcount reaches 0.
        g_hash_table_destroy(): just destroy keys and values, unref by 1.
        g_hash_table_insert():
        g_hash_table_replace(): assert ref_count>0.

        * glib/gatomic.h:
        * glib/gatomic.c: added 'volatile' qualifier to all atomic pointer and
        integer pointers.
2005-11-22 13:16:58 +00:00
Matthias Clasen
8e7a50ab42 Always export g_atomic_int_get and g_atomic_pointer_get as functions, even
2005-08-04  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gatomic.[hc]: Always export g_atomic_int_get and
	g_atomic_pointer_get as functions, even if we have macros,
	to avoid changing the ABI depending on configuration.

	* glib/gatomic.c: Fix the s390 implementations of
	g_atomic_pointer_compare_and_exchange.
2005-08-04 17:21:03 +00:00
Matthias Clasen
4f016b4824 Add native atomic operations for s390.
2005-08-03  Matthias Clasen  <mclasen@redhat.com>

        * glib/gatomic.c: Add native atomic operations
        for s390.

        * configure.in: ... and use them on s390.
2005-08-03 20:18:15 +00:00
Matthias Clasen
cf17bb79d2 Fix g_atomic_pointer_compare_and_exchange on sparc64. (#167572, Gert
2005-07-19  Matthias Clasen  <mclasen@redhat.com>

        * glib/gatomic.c (g_atomic_pointer_compare_and_exchange):
        Fix g_atomic_pointer_compare_and_exchange on sparc64.
        (#167572, Gert Doering)
2005-07-19 15:30:23 +00:00
Matthias Clasen
f1c70360e5 Some fixes 2005-03-14 05:06:17 +00:00
Matthias Clasen
608a31b98e Make PLT-reduction work with gcc4, and don't include everything in
2005-03-13  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in galias.h:

	* glib/glib.symbols: Group symbols by header and source file.
	* glib/makegalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegalias.pl -def
	* glib/Makefile.am (galiasdef.c): Add a rule to generate this
	file.
	* glib/*.c: Include galias.h after the other GLib headers,
	include galiasdef.c at the bottom.
2005-03-14 04:26:57 +00:00
Manish Singh
181d7721b2 Don't use matching constraints for asm mem parameters. This makes the code
Sun Feb  6 12:09:55 2005  Manish Singh  <yosh@gimp.org>

        * glib/gatomic.c: Don't use matching constraints for asm mem
        parameters. This makes the code match with current glibc, and
        quiets some warnings with gcc 3.4.
2005-02-06 20:25:42 +00:00
Matthias Clasen
2e7514d052 Apply a patch to fix sparse warnings. (#154696, Kjartan Maraas)
2004-10-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/gasyncqueue.c, glib/gatomic.c, glib/gdate.c,
	glib/giochannel.c, glib/gmain.c, glib/gspawn.c,
	glib/libcharset/localcharset.c: Apply a patch to fix
	sparse warnings. (#154696, Kjartan Maraas)
2004-10-24 01:37:42 +00:00
Matthias Clasen
dafdffd751 Implement the same PLT reduction technique used in GTK+:
Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>

	Implement the same PLT reduction technique used in GTK+:
2004-09-16 06:05:53 +00:00
Matthias Clasen
76ce9fcb1b Include gthreadinit.h here to see the declaration for
2004-08-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gatomic.c: Include gthreadinit.h here to see the declaration
	for _g_atomic_thread_init().
2004-08-02 15:12:19 +00:00
Sebastian Wilhelmi
906a83b7f6 Rename __asm to __asm__ and __volatile to __volatile__ to make the file
2004-07-02  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c: Rename __asm to __asm__ and __volatile to
	__volatile__ to make the file consistent. Spotted by Benoit
	Carpentier <gtkool_2kx@yahoo.fr>.
2004-07-02 19:03:33 +00:00
Manish Singh
89242d758b Non-optimizing compile fails for two asm statements on PowerPC. Use
Fri Mar 12 15:21:22 2004  Manish Singh  <yosh@gimp.org>

        * glib/gatomic.c: Non-optimizing compile fails for two asm
        statements on PowerPC. Use generic implementaton for those
        cases. Spotted by Christof Petig <christof@petig-baender.de>,
        fix by Sebastian Wilhelmi. Bug #137006 has a possible alternate
	solution, but we'll be conservative for now.
2004-03-12 23:22:46 +00:00
Matthias Clasen
ab0031bf00 Patch by Sebastian Wilhemi to fix infinite recursion in g_atomic. 2004-03-05 21:10:45 +00:00
Sebastian Wilhelmi
72ac1282b8 Fixed missing definition for ppc code. Fix by Mark McLoughlin
2004-03-02  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c: Fixed missing definition for ppc code. Fix by
	Mark McLoughlin <mark@skynet.ie>.
2004-03-02 09:47:37 +00:00
Sebastian Wilhelmi
2af063c00e Define g_atomic_(int|pointer)_get only for
2004-03-01  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c: Define g_atomic_(int|pointer)_get only for
	G_ATOMIC_OP_MEMORY_BARRIER_NEEDED. Spotted by Hans Breuer.
2004-03-01 10:21:26 +00:00
Hans Breuer
3761f849cc added win32 api based implementation for G_PLATFORM_WIN32, !__GNUC__
2003-02-29  Hans Breuer  <hans@breuer.org>

	* glib/gatomic.c : added win32 api based implementation
	for G_PLATFORM_WIN32, !__GNUC__

	* glb/glib.def : change to g_atomi_* no _fallback
2004-02-29 21:32:27 +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
dbbb29f608 New files to implement atomic operations for different platforms. Fixes
2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c, glib/gatomic.h: New files to implement atomic
	operations for different platforms. Fixes bug #63621.

	* glib/glib.h: Include gatomic.h.

	* configure.in: Add test for assembler routines for atomic operations.

	* glib/Makefile.am: Add gatomic.c, gatomic.h.

	* tests/Makefile.am, tests/atomic-test.c: Unit test for atomic
	operations.

	* glib/glib-overrides.txt, glib/glib-sections.txt,
	glib/glib-docs.sgml, glib/tmpl/atomic_operations.sgml: Add docs
	for atomic operations.
2004-02-26 14:30:35 +00:00