From a0e550bc608e96a574f3ea8ed4cf3635733c4a09 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Sun, 15 Dec 2002 05:39:31 +0000 Subject: 2002-12-15 Havoc Pennington * dbus/dbus-threads.c: add thread stubs that a higher library layer can fill in. e.g. the GLib wrapper might fill them in with GThread stuff. We still need to use this thread API to thread-safe-ize the library. --- dbus/dbus-threads.h | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 dbus/dbus-threads.h (limited to 'dbus/dbus-threads.h') diff --git a/dbus/dbus-threads.h b/dbus/dbus-threads.h new file mode 100644 index 00000000..956fac61 --- /dev/null +++ b/dbus/dbus-threads.h @@ -0,0 +1,82 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-threads.h D-BUS threads handling + * + * Copyright (C) 2002 Red Hat Inc. + * + * Licensed under the Academic Free License version 1.2 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION) +#error "Only can be included directly, this file may disappear or change contents." +#endif + +#ifndef DBUS_THREADS_H +#define DBUS_THREADS_H + +#include +#include + +DBUS_BEGIN_DECLS; + +typedef struct DBusMutex DBusMutex; + +typedef DBusMutex* (* DBusMutexNewFunction) (void); +typedef void (* DBusMutexFreeFunction) (DBusMutex *mutex); +typedef dbus_bool_t (* DBusMutexLockFunction) (DBusMutex *mutex); +typedef dbus_bool_t (* DBusMutexUnlockFunction) (DBusMutex *mutex); + +typedef enum +{ + DBUS_THREAD_FUNCTIONS_NEW_MASK = 1 << 0, + DBUS_THREAD_FUNCTIONS_FREE_MASK = 1 << 1, + DBUS_THREAD_FUNCTIONS_LOCK_MASK = 1 << 2, + DBUS_THREAD_FUNCTIONS_UNLOCK_MASK = 1 << 3, + + DBUS_THREAD_FUNCTIONS_ALL_MASK = 0xf +} DBusThreadFunctionsMask; + +typedef struct +{ + unsigned int mask; + + DBusMutexNewFunction mutex_new; + DBusMutexFreeFunction mutex_free; + DBusMutexLockFunction mutex_lock; + DBusMutexUnlockFunction mutex_unlock; + + void (* padding1) (void); + void (* padding2) (void); + void (* padding3) (void); + void (* padding4) (void); + void (* padding5) (void); + void (* padding6) (void); + void (* padding7) (void); + void (* padding8) (void); + +} DBusThreadFunctions; + + +DBusMutex* dbus_mutex_new (void); +void dbus_mutex_free (DBusMutex *mutex); +dbus_bool_t dbus_mutex_lock (DBusMutex *mutex); +dbus_bool_t dbus_mutex_unlock (DBusMutex *mutex); + +void dbus_threads_init (const DBusThreadFunctions *functions); + +DBUS_END_DECLS; + +#endif /* DBUS_THREADS_H */ -- cgit