OXIESEC PANEL
- Current Dir:
/
/
usr
/
include
/
glib-2.0
/
glib
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/28/2024 06:50:15 AM
rwxr-xr-x
📁
deprecated
-
10/28/2024 06:50:15 AM
rwxr-xr-x
📄
galloca.h
3.82 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
garray.h
9.3 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gasyncqueue.h
5.53 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gatomic.h
14.75 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gbacktrace.h
2.51 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gbase64.h
2.27 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gbitlock.h
2.83 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gbookmarkfile.h
9.37 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gbytes.h
3.26 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gcharset.h
1.3 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gchecksum.h
3.77 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gconvert.h
5.78 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gdataset.h
6.1 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gdate.h
11.47 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gdatetime.h
11.96 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gdir.h
1.6 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
genviron.h
2.31 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gerror.h
3.85 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gfileutils.h
5.51 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
ggettext.h
2.37 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
ghash.h
7.37 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
ghmac.h
3.39 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
ghook.h
6.21 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
ghostutils.h
1.42 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gi18n-lib.h
1.34 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gi18n.h
1.14 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
giochannel.h
13.63 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gkeyfile.h
14.82 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
glib-autocleanups.h
4.04 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
glist.h
5.69 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmacros.h
18.21 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmain.h
23.55 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmappedfile.h
1.94 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmarkup.h
10.62 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmem.h
13.01 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gmessages.h
24.81 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gnode.h
8.91 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
goption.h
15.65 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gpattern.h
1.74 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gpoll.h
4.03 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gprimes.h
1.65 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gprintf.h
1.94 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gqsort.h
1.46 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gquark.h
2.63 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gqueue.h
6.97 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
grand.h
3.11 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gregex.h
27.44 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gscanner.h
8.47 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gsequence.h
8.6 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gshell.h
1.71 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gslice.h
3.8 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gslist.h
5.46 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gspawn.h
10.77 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gstdio.h
4.73 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gstrfuncs.h
12.76 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gstring.h
7.79 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gstringchunk.h
2.08 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtestutils.h
23.64 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gthread.h
11.34 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gthreadpool.h
3.73 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtimer.h
2.31 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtimezone.h
3.41 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtrashstack.h
1.74 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtree.h
4.1 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gtypes.h
18.98 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gunicode.h
38.2 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gurifuncs.h
2.65 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gutils.h
11.01 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
guuid.h
1.26 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gvariant.h
28.83 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gvarianttype.h
12.93 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gversion.h
1.93 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gversionmacros.h
16.33 KB
11/29/2021 04:42:57 PM
rw-r--r--
📄
gwin32.h
4.56 KB
11/29/2021 04:42:57 PM
rw-r--r--
Editing: gatomic.h
Close
/* * Copyright © 2011 Ryan Lortie * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see <http://www.gnu.org/licenses/>. * * Author: Ryan Lortie <desrt@desrt.ca> */ #ifndef __G_ATOMIC_H__ #define __G_ATOMIC_H__ #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) #error "Only <glib.h> can be included directly." #endif #include <glib/gtypes.h> G_BEGIN_DECLS GLIB_AVAILABLE_IN_ALL gint g_atomic_int_get (const volatile gint *atomic); GLIB_AVAILABLE_IN_ALL void g_atomic_int_set (volatile gint *atomic, gint newval); GLIB_AVAILABLE_IN_ALL void g_atomic_int_inc (volatile gint *atomic); GLIB_AVAILABLE_IN_ALL gboolean g_atomic_int_dec_and_test (volatile gint *atomic); GLIB_AVAILABLE_IN_ALL gboolean g_atomic_int_compare_and_exchange (volatile gint *atomic, gint oldval, gint newval); GLIB_AVAILABLE_IN_ALL gint g_atomic_int_add (volatile gint *atomic, gint val); GLIB_AVAILABLE_IN_2_30 guint g_atomic_int_and (volatile guint *atomic, guint val); GLIB_AVAILABLE_IN_2_30 guint g_atomic_int_or (volatile guint *atomic, guint val); GLIB_AVAILABLE_IN_ALL guint g_atomic_int_xor (volatile guint *atomic, guint val); GLIB_AVAILABLE_IN_ALL gpointer g_atomic_pointer_get (const volatile void *atomic); GLIB_AVAILABLE_IN_ALL void g_atomic_pointer_set (volatile void *atomic, gpointer newval); GLIB_AVAILABLE_IN_ALL gboolean g_atomic_pointer_compare_and_exchange (volatile void *atomic, gpointer oldval, gpointer newval); GLIB_AVAILABLE_IN_ALL gssize g_atomic_pointer_add (volatile void *atomic, gssize val); GLIB_AVAILABLE_IN_2_30 gsize g_atomic_pointer_and (volatile void *atomic, gsize val); GLIB_AVAILABLE_IN_2_30 gsize g_atomic_pointer_or (volatile void *atomic, gsize val); GLIB_AVAILABLE_IN_ALL gsize g_atomic_pointer_xor (volatile void *atomic, gsize val); GLIB_DEPRECATED_IN_2_30_FOR(g_atomic_int_add) gint g_atomic_int_exchange_and_add (volatile gint *atomic, gint val); G_END_DECLS #if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) /* We prefer the new C11-style atomic extension of GCC if available */ #if defined(__ATOMIC_SEQ_CST) && !defined(__clang__) /* This assumes sizeof(int) is 4: gatomic.c statically * asserts that (using G_STATIC_ASSERT at top-level in a header was * problematic, see #730932) */ #define g_atomic_int_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ (gint) __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST); \ })) #define g_atomic_int_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (newval) : 1); \ __atomic_store_4 ((atomic), (newval), __ATOMIC_SEQ_CST); \ })) #if GLIB_SIZEOF_VOID_P == 8 #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (gpointer) __atomic_load_8 ((atomic), __ATOMIC_SEQ_CST); \ })) #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ __atomic_store_8 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST); \ })) #else /* GLIB_SIZEOF_VOID_P == 8 */ /* This assumes that if sizeof(void *) is not 8, then it is 4: * gatomic.c statically asserts that (using G_STATIC_ASSERT * at top-level in a header was problematic, see #730932) */ #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (gpointer) __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST); \ })) #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ __atomic_store_4 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST); \ })) #endif /* GLIB_SIZEOF_VOID_P == 8 */ #else /* defined(__ATOMIC_SEQ_CST) */ #define g_atomic_int_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ __sync_synchronize (); \ (gint) *(atomic); \ })) #define g_atomic_int_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (newval) : 1); \ *(atomic) = (newval); \ __sync_synchronize (); \ })) #define g_atomic_pointer_get(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ __sync_synchronize (); \ (gpointer) *(atomic); \ })) #define g_atomic_pointer_set(atomic, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ *(atomic) = (__typeof__ (*(atomic))) (gsize) (newval); \ __sync_synchronize (); \ })) #endif /* !defined(__ATOMIC_SEQ_CST) */ #define g_atomic_int_inc(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ (void) __sync_fetch_and_add ((atomic), 1); \ })) #define g_atomic_int_dec_and_test(atomic) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ *(atomic) : 1); \ __sync_fetch_and_sub ((atomic), 1) == 1; \ })) #define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1); \ (gboolean) __sync_bool_compare_and_swap ((atomic), (oldval), (newval)); \ })) #define g_atomic_int_add(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (val) : 1); \ (gint) __sync_fetch_and_add ((atomic), (val)); \ })) #define g_atomic_int_and(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (val) : 1); \ (guint) __sync_fetch_and_and ((atomic), (val)); \ })) #define g_atomic_int_or(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (val) : 1); \ (guint) __sync_fetch_and_or ((atomic), (val)); \ })) #define g_atomic_int_xor(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint)); \ (void) (0 ? *(atomic) ^ (val) : 1); \ (guint) __sync_fetch_and_xor ((atomic), (val)); \ })) #define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ (gboolean) __sync_bool_compare_and_swap ((atomic), (oldval), (newval)); \ })) #define g_atomic_pointer_add(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ (void) (0 ? (val) ^ (val) : 1); \ (gssize) __sync_fetch_and_add ((atomic), (val)); \ })) #define g_atomic_pointer_and(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ (void) (0 ? (val) ^ (val) : 1); \ (gsize) __sync_fetch_and_and ((atomic), (val)); \ })) #define g_atomic_pointer_or(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ (void) (0 ? (val) ^ (val) : 1); \ (gsize) __sync_fetch_and_or ((atomic), (val)); \ })) #define g_atomic_pointer_xor(atomic, val) \ (G_GNUC_EXTENSION ({ \ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ (void) (0 ? (gpointer) *(atomic) : NULL); \ (void) (0 ? (val) ^ (val) : 1); \ (gsize) __sync_fetch_and_xor ((atomic), (val)); \ })) #else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */ #define g_atomic_int_get(atomic) \ (g_atomic_int_get ((gint *) (atomic))) #define g_atomic_int_set(atomic, newval) \ (g_atomic_int_set ((gint *) (atomic), (gint) (newval))) #define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \ (g_atomic_int_compare_and_exchange ((gint *) (atomic), (oldval), (newval))) #define g_atomic_int_add(atomic, val) \ (g_atomic_int_add ((gint *) (atomic), (val))) #define g_atomic_int_and(atomic, val) \ (g_atomic_int_and ((guint *) (atomic), (val))) #define g_atomic_int_or(atomic, val) \ (g_atomic_int_or ((guint *) (atomic), (val))) #define g_atomic_int_xor(atomic, val) \ (g_atomic_int_xor ((guint *) (atomic), (val))) #define g_atomic_int_inc(atomic) \ (g_atomic_int_inc ((gint *) (atomic))) #define g_atomic_int_dec_and_test(atomic) \ (g_atomic_int_dec_and_test ((gint *) (atomic))) #define g_atomic_pointer_get(atomic) \ (g_atomic_pointer_get (atomic)) #define g_atomic_pointer_set(atomic, newval) \ (g_atomic_pointer_set ((atomic), (gpointer) (newval))) #define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \ (g_atomic_pointer_compare_and_exchange ((atomic), (gpointer) (oldval), (gpointer) (newval))) #define g_atomic_pointer_add(atomic, val) \ (g_atomic_pointer_add ((atomic), (gssize) (val))) #define g_atomic_pointer_and(atomic, val) \ (g_atomic_pointer_and ((atomic), (gsize) (val))) #define g_atomic_pointer_or(atomic, val) \ (g_atomic_pointer_or ((atomic), (gsize) (val))) #define g_atomic_pointer_xor(atomic, val) \ (g_atomic_pointer_xor ((atomic), (gsize) (val))) #endif /* defined(__GNUC__) && defined(G_ATOMIC_OP_USE_GCC_BUILTINS) */ #endif /* __G_ATOMIC_H__ */