/** @file * * Module to dynamically load libdbus and load all symbols * which are needed by VirtualBox. */ /* * Copyright (C) 2008 Sun Microsystems, Inc. * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; * you can redistribute it and/or modify it under the terms of the GNU * General Public License (GPL) as published by the Free Software * Foundation, in version 2 as it comes in the "COPYING" file of the * VirtualBox OSE distribution. VirtualBox OSE is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 USA or visit http://www.sun.com if you need * additional information or have any questions. */ #ifndef ____H_VBOX_DBUS #define ____H_VBOX_DBUS #include #define VBOX_DBUS_1_3_LIB "libdbus-1.so.3" /** Types and defines from the dbus header files which we need. These are * taken more or less verbatim from the DBus public interface header files. */ struct DBusError { const char *name; const char *message; unsigned int dummy1 : 1; unsigned int dummy2 : 1; unsigned int dummy3 : 1; unsigned int dummy4 : 1; unsigned int dummy5 : 1; void *padding1; }; struct DBusConnection; typedef struct DBusConnection DBusConnection; typedef uint32_t dbus_bool_t; typedef uint32_t dbus_uint32_t; typedef enum { DBUS_BUS_SESSON, DBUS_BUS_SYSTEM, DBUS_BUS_STARTER } DBusBusType; struct DBusMessage; typedef struct DBusMessage DBusMessage; struct DBusMessageIter { void *dummy1; void *dummy2; dbus_uint32_t dummy3; int dummy4; int dummy5; int dummy6; int dummy7; int dummy8; int dummy9; int dummy10; int dummy11; int pad1; int pad2; void *pad3; }; typedef struct DBusMessageIter DBusMessageIter; #define DBUS_ERROR_NO_MEMORY "org.freedesktop.DBus.Error.NoMemory" #define DBUS_TYPE_INVALID ((int) '\0') #define DBUS_TYPE_STRING ((int) 's') #define DBUS_TYPE_ARRAY ((int) 'a') #define DBUS_TYPE_DICT_ENTRY ((int) 'e') typedef enum { DBUS_HANDLER_RESULT_HANDLED, DBUS_HANDLER_RESULT_NOT_YET_HANDLED, DBUS_HANDLER_RESULT_NEED_MEMORY } DBusHandlerResult; typedef DBusHandlerResult (*DBusHandleMessageFunction) (DBusConnection *, DBusMessage *, void *); typedef void (*DBusFreeFunction) (void *); /* Declarations of the functions that we need from libdbus-1 */ #define VBOX_PROXY_STUB(function, rettype, signature, shortsig) \ extern rettype ( function ) signature ; #include "vbox-dbus-internal.h" #undef VBOX_PROXY_STUB /** * Try to dynamically load the DBus library. This function should be called * before attempting to use any of the DBus functions. It is safe to call this * function multiple times. * * @returns iprt status code */ extern int VBoxLoadDBusLib(void); #endif /* ____H_VBOX_DBUS not defined */ /* vi: set tabstop=4 shiftwidth=4 expandtab: */