Blame glib/deprecated/gthread.h

Packit ae235b
/* GLIB - Library of useful routines for C programming
Packit ae235b
 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
Packit ae235b
 *
Packit ae235b
 * This library is free software; you can redistribute it and/or
Packit ae235b
 * modify it under the terms of the GNU Lesser General Public
Packit ae235b
 * License as published by the Free Software Foundation; either
Packit ae235b
 * version 2.1 of the License, or (at your option) any later version.
Packit ae235b
 *
Packit ae235b
 * This library is distributed in the hope that it will be useful,
Packit ae235b
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit ae235b
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
Packit ae235b
 * Lesser General Public License for more details.
Packit ae235b
 *
Packit ae235b
 * You should have received a copy of the GNU Lesser General Public
Packit ae235b
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
Packit ae235b
 */
Packit ae235b
Packit ae235b
/*
Packit ae235b
 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
Packit ae235b
 * file for a list of people on the GLib Team.  See the ChangeLog
Packit ae235b
 * files for a list of changes.  These files are distributed with
Packit ae235b
 * GLib at ftp://ftp.gtk.org/pub/gtk/.
Packit ae235b
 */
Packit ae235b
Packit ae235b
#ifndef __G_DEPRECATED_THREAD_H__
Packit ae235b
#define __G_DEPRECATED_THREAD_H__
Packit ae235b
Packit ae235b
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
Packit ae235b
#error "Only <glib.h> can be included directly."
Packit ae235b
#endif
Packit ae235b
Packit ae235b
#include <glib/gthread.h>
Packit ae235b
Packit ae235b
G_BEGIN_DECLS
Packit ae235b
Packit ae235b
#ifndef G_DISABLE_DEPRECATED
Packit ae235b
Packit ae235b
typedef enum
Packit ae235b
{
Packit ae235b
  G_THREAD_PRIORITY_LOW,
Packit ae235b
  G_THREAD_PRIORITY_NORMAL,
Packit ae235b
  G_THREAD_PRIORITY_HIGH,
Packit ae235b
  G_THREAD_PRIORITY_URGENT
Packit ae235b
} GThreadPriority;
Packit ae235b
Packit ae235b
#endif
Packit ae235b
Packit ae235b
struct  _GThread
Packit ae235b
{
Packit ae235b
  /*< private >*/
Packit ae235b
  GThreadFunc func;
Packit ae235b
  gpointer data;
Packit ae235b
  gboolean joinable;
Packit ae235b
  GThreadPriority priority;
Packit ae235b
};
Packit ae235b
Packit ae235b
#ifndef G_DISABLE_DEPRECATED
Packit ae235b
Packit ae235b
typedef struct _GThreadFunctions GThreadFunctions;
Packit ae235b
struct _GThreadFunctions
Packit ae235b
{
Packit ae235b
  GMutex*  (*mutex_new)           (void);
Packit ae235b
  void     (*mutex_lock)          (GMutex               *mutex);
Packit ae235b
  gboolean (*mutex_trylock)       (GMutex               *mutex);
Packit ae235b
  void     (*mutex_unlock)        (GMutex               *mutex);
Packit ae235b
  void     (*mutex_free)          (GMutex               *mutex);
Packit ae235b
  GCond*   (*cond_new)            (void);
Packit ae235b
  void     (*cond_signal)         (GCond                *cond);
Packit ae235b
  void     (*cond_broadcast)      (GCond                *cond);
Packit ae235b
  void     (*cond_wait)           (GCond                *cond,
Packit ae235b
                                   GMutex               *mutex);
Packit ae235b
  gboolean (*cond_timed_wait)     (GCond                *cond,
Packit ae235b
                                   GMutex               *mutex,
Packit ae235b
                                   GTimeVal             *end_time);
Packit ae235b
  void      (*cond_free)          (GCond                *cond);
Packit ae235b
  GPrivate* (*private_new)        (GDestroyNotify        destructor);
Packit ae235b
  gpointer  (*private_get)        (GPrivate             *private_key);
Packit ae235b
  void      (*private_set)        (GPrivate             *private_key,
Packit ae235b
                                   gpointer              data);
Packit ae235b
  void      (*thread_create)      (GThreadFunc           func,
Packit ae235b
                                   gpointer              data,
Packit ae235b
                                   gulong                stack_size,
Packit ae235b
                                   gboolean              joinable,
Packit ae235b
                                   gboolean              bound,
Packit ae235b
                                   GThreadPriority       priority,
Packit ae235b
                                   gpointer              thread,
Packit ae235b
                                   GError              **error);
Packit ae235b
  void      (*thread_yield)       (void);
Packit ae235b
  void      (*thread_join)        (gpointer              thread);
Packit ae235b
  void      (*thread_exit)        (void);
Packit ae235b
  void      (*thread_set_priority)(gpointer              thread,
Packit ae235b
                                   GThreadPriority       priority);
Packit ae235b
  void      (*thread_self)        (gpointer              thread);
Packit ae235b
  gboolean  (*thread_equal)       (gpointer              thread1,
Packit ae235b
                                   gpointer              thread2);
Packit ae235b
};
Packit ae235b
Packit ae235b
GLIB_VAR GThreadFunctions       g_thread_functions_for_glib_use;
Packit ae235b
GLIB_VAR gboolean               g_thread_use_default_impl;
Packit ae235b
Packit ae235b
GLIB_VAR guint64   (*g_thread_gettime) (void);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new)
Packit ae235b
GThread *g_thread_create       (GThreadFunc       func,
Packit ae235b
                                gpointer          data,
Packit ae235b
                                gboolean          joinable,
Packit ae235b
                                GError          **error);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new)
Packit ae235b
GThread *g_thread_create_full  (GThreadFunc       func,
Packit ae235b
                                gpointer          data,
Packit ae235b
                                gulong            stack_size,
Packit ae235b
                                gboolean          joinable,
Packit ae235b
                                gboolean          bound,
Packit ae235b
                                GThreadPriority   priority,
Packit ae235b
                                GError          **error);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_thread_set_priority (GThread          *thread,
Packit ae235b
                                GThreadPriority   priority);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_thread_foreach      (GFunc             thread_func,
Packit ae235b
                                gpointer          user_data);
Packit ae235b
Packit ae235b
#ifndef G_OS_WIN32
Packit ae235b
#include <sys/types.h>
Packit ae235b
#include <pthread.h>
Packit ae235b
#endif
Packit ae235b
Packit ae235b
#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl
Packit ae235b
#define G_STATIC_MUTEX_INIT { NULL }
Packit ae235b
typedef struct
Packit ae235b
{
Packit ae235b
  GMutex *mutex;
Packit ae235b
#ifndef G_OS_WIN32
Packit ae235b
  /* only for ABI compatibility reasons */
Packit ae235b
  pthread_mutex_t unused;
Packit ae235b
#endif
Packit ae235b
} GStaticMutex;
Packit ae235b
Packit ae235b
#define g_static_mutex_lock(mutex) \
Packit ae235b
    g_mutex_lock (g_static_mutex_get_mutex (mutex))
Packit ae235b
#define g_static_mutex_trylock(mutex) \
Packit ae235b
    g_mutex_trylock (g_static_mutex_get_mutex (mutex))
Packit ae235b
#define g_static_mutex_unlock(mutex) \
Packit ae235b
    g_mutex_unlock (g_static_mutex_get_mutex (mutex))
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_init)
Packit ae235b
void    g_static_mutex_init           (GStaticMutex *mutex);
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_clear)
Packit ae235b
void    g_static_mutex_free           (GStaticMutex *mutex);
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(GMutex)
Packit ae235b
GMutex *g_static_mutex_get_mutex_impl (GStaticMutex *mutex);
Packit ae235b
Packit ae235b
typedef struct _GStaticRecMutex GStaticRecMutex;
Packit ae235b
struct _GStaticRecMutex
Packit ae235b
{
Packit ae235b
  /*< private >*/
Packit ae235b
  GStaticMutex mutex;
Packit ae235b
  guint depth;
Packit ae235b
Packit ae235b
  /* ABI compat only */
Packit ae235b
  union {
Packit ae235b
#ifdef G_OS_WIN32
Packit ae235b
    void *owner;
Packit ae235b
#else
Packit ae235b
    pthread_t owner;
Packit ae235b
#endif
Packit ae235b
    gdouble dummy;
Packit ae235b
  } unused;
Packit ae235b
};
Packit ae235b
Packit ae235b
#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_init)
Packit ae235b
void     g_static_rec_mutex_init        (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_lock)
Packit ae235b
void     g_static_rec_mutex_lock        (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_try_lock)
Packit ae235b
gboolean g_static_rec_mutex_trylock     (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_unlock)
Packit ae235b
void     g_static_rec_mutex_unlock      (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_static_rec_mutex_lock_full   (GStaticRecMutex *mutex,
Packit ae235b
                                         guint            depth);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
guint    g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_free)
Packit ae235b
void     g_static_rec_mutex_free        (GStaticRecMutex *mutex);
Packit ae235b
Packit ae235b
typedef struct _GStaticRWLock GStaticRWLock;
Packit ae235b
struct _GStaticRWLock
Packit ae235b
{
Packit ae235b
  /*< private >*/
Packit ae235b
  GStaticMutex mutex;
Packit ae235b
  GCond *read_cond;
Packit ae235b
  GCond *write_cond;
Packit ae235b
  guint read_counter;
Packit ae235b
  gboolean have_writer;
Packit ae235b
  guint want_to_read;
Packit ae235b
  guint want_to_write;
Packit ae235b
};
Packit ae235b
Packit ae235b
#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 }
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_init)
Packit ae235b
void      g_static_rw_lock_init           (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_lock)
Packit ae235b
void      g_static_rw_lock_reader_lock    (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_trylock)
Packit ae235b
gboolean  g_static_rw_lock_reader_trylock (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_unlock)
Packit ae235b
void      g_static_rw_lock_reader_unlock  (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_lock)
Packit ae235b
void      g_static_rw_lock_writer_lock    (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_trylock)
Packit ae235b
gboolean  g_static_rw_lock_writer_trylock (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_unlock)
Packit ae235b
void      g_static_rw_lock_writer_unlock  (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_free)
Packit ae235b
void      g_static_rw_lock_free           (GStaticRWLock *lock);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
GPrivate *      g_private_new             (GDestroyNotify notify);
Packit ae235b
Packit ae235b
typedef struct _GStaticPrivate  GStaticPrivate;
Packit ae235b
struct _GStaticPrivate
Packit ae235b
{
Packit ae235b
  /*< private >*/
Packit ae235b
  guint index;
Packit ae235b
};
Packit ae235b
Packit ae235b
#define G_STATIC_PRIVATE_INIT { 0 }
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_static_private_init           (GStaticPrivate *private_key);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_private_get)
Packit ae235b
gpointer g_static_private_get            (GStaticPrivate *private_key);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32_FOR(g_private_set)
Packit ae235b
void     g_static_private_set            (GStaticPrivate *private_key,
Packit ae235b
                                          gpointer        data,
Packit ae235b
                                          GDestroyNotify  notify);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_static_private_free           (GStaticPrivate *private_key);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
gboolean g_once_init_enter_impl          (volatile gsize *location);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void     g_thread_init                   (gpointer vtable);
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void    g_thread_init_with_errorcheck_mutexes (gpointer vtable);
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
gboolean g_thread_get_initialized        (void);
Packit ae235b
Packit ae235b
GLIB_VAR gboolean g_threads_got_initialized;
Packit ae235b
Packit ae235b
#define g_thread_supported()     (1)
Packit ae235b
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
GMutex *        g_mutex_new             (void);
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void            g_mutex_free            (GMutex *mutex);
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
GCond *         g_cond_new              (void);
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
void            g_cond_free             (GCond  *cond);
Packit ae235b
GLIB_DEPRECATED_IN_2_32
Packit ae235b
gboolean        g_cond_timed_wait       (GCond          *cond,
Packit ae235b
                                         GMutex         *mutex,
Packit ae235b
                                         GTimeVal       *timeval);
Packit ae235b
Packit ae235b
#endif
Packit ae235b
Packit ae235b
G_END_DECLS
Packit ae235b
Packit ae235b
#endif /* __G_DEPRECATED_THREAD_H__ */