X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-internals.h;h=e9ffb9e22d7669cf962b7b8433611f1a7a0b1e14;hb=7d9239c9c78cb6d0b9c282376fcf3cda1de23209;hp=2b9b562cac479879d1880fac3f90a0dae6aa82c8;hpb=dbecdeabb20e0ce11121819c63373f0afba57c58;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h index 2b9b562..e9ffb9e 100644 --- a/dbus/dbus-internals.h +++ b/dbus/dbus-internals.h @@ -35,8 +35,6 @@ DBUS_BEGIN_DECLS -#define DBUS_SESSION_BUS_DEFAULT_ADDRESS "autolaunch:" - void _dbus_warn (const char *format, ...) _DBUS_GNUC_PRINTF (1, 2); @@ -53,21 +51,6 @@ void _dbus_warn_check_failed (const char *format, #endif /* - * This is necessary to access global variables outside the DLL with MSVC, - * just exporting them in the .def file still leads to linker errors - * note: dbus_1_EXPORTS is set automatically by CMake when the DLL is built - */ -#if defined(_MSC_VER) -# if defined(dbus_1_EXPORTS) -# define DBUS_EXTERN __declspec(dllexport) -# else -# define DBUS_EXTERN __declspec(dllimport) -# endif -#else -#define DBUS_EXTERN extern -#endif - -/* * (code from GLib) * * The _DBUS_LIKELY and _DBUS_UNLIKELY macros let the programmer give hints to @@ -121,20 +104,28 @@ dbus_bool_t _dbus_is_verbose_real (void); # define _dbus_is_verbose _dbus_is_verbose_real #else # ifdef HAVE_ISO_VARARGS -# define _dbus_verbose(...) +# define _dbus_verbose(...) do { } while (0) # elif defined (HAVE_GNUC_VARARGS) -# define _dbus_verbose(format...) +# define _dbus_verbose(format...) do { } while (0) # else static void _dbus_verbose(const char * x,...) {;} # endif -# define _dbus_verbose_reset() +# define _dbus_verbose_reset() do { } while (0) # define _dbus_is_verbose() FALSE #endif /* !DBUS_ENABLE_VERBOSE_MODE */ +void _dbus_trace_ref (const char *obj_name, + void *obj, + int old_refcount, + int new_refcount, + const char *why, + const char *env_var, + int *enabled); + const char* _dbus_strerror (int error_number); #ifdef DBUS_DISABLE_ASSERT -#define _dbus_assert(condition) +#define _dbus_assert(condition) do { } while (0) #else void _dbus_real_assert (dbus_bool_t condition, const char *condition_text, @@ -146,7 +137,7 @@ void _dbus_real_assert (dbus_bool_t condition, #endif /* !DBUS_DISABLE_ASSERT */ #ifdef DBUS_DISABLE_ASSERT -#define _dbus_assert_not_reached(explanation) +#define _dbus_assert_not_reached(explanation) do { } while (0) #else void _dbus_real_assert_not_reached (const char *explanation, const char *file, @@ -160,7 +151,7 @@ void _dbus_real_assert_not_reached (const char *explanation, #define _dbus_return_val_if_fail(condition, val) #else -DBUS_EXTERN const char *_dbus_return_if_fail_warning_format; +extern const char *_dbus_return_if_fail_warning_format; #define _dbus_return_if_fail(condition) do { \ _dbus_assert ((*(const char*)_DBUS_FUNCTION_NAME) != '_'); \ @@ -182,20 +173,20 @@ DBUS_EXTERN const char *_dbus_return_if_fail_warning_format; #define _DBUS_N_ELEMENTS(array) ((int) (sizeof ((array)) / sizeof ((array)[0]))) -#define _DBUS_POINTER_TO_INT(pointer) ((long)(pointer)) -#define _DBUS_INT_TO_POINTER(integer) ((void*)((long)(integer))) +#define _DBUS_POINTER_TO_INT(pointer) ((intptr_t)(pointer)) +#define _DBUS_INT_TO_POINTER(integer) ((void*)((intptr_t)(integer))) #define _DBUS_ZERO(object) (memset (&(object), '\0', sizeof ((object)))) #define _DBUS_STRUCT_OFFSET(struct_type, member) \ - ((long) ((unsigned char*) &((struct_type*) 0)->member)) + ((intptr_t) ((unsigned char*) &((struct_type*) 0)->member)) #ifdef DBUS_DISABLE_CHECKS /* this is an assert and not an error, but in the typical --disable-checks case (you're trying * to really minimize code size), disabling these assertions makes sense. */ -#define _DBUS_ASSERT_ERROR_IS_SET(error) -#define _DBUS_ASSERT_ERROR_IS_CLEAR(error) +#define _DBUS_ASSERT_ERROR_IS_SET(error) do { } while (0) +#define _DBUS_ASSERT_ERROR_IS_CLEAR(error) do { } while (0) #else #define _DBUS_ASSERT_ERROR_IS_SET(error) _dbus_assert ((error) == NULL || dbus_error_is_set ((error))) #define _DBUS_ASSERT_ERROR_IS_CLEAR(error) _dbus_assert ((error) == NULL || !dbus_error_is_set ((error))) @@ -216,7 +207,7 @@ DBUS_EXTERN const char *_dbus_return_if_fail_warning_format; */ #define _DBUS_ALIGN_VALUE(this, boundary) \ - (( ((unsigned long)(this)) + (((unsigned long)(boundary)) -1)) & (~(((unsigned long)(boundary))-1))) + (( ((uintptr_t)(this)) + (((uintptr_t)(boundary)) -1)) & (~(((uintptr_t)(boundary))-1))) #define _DBUS_ALIGN_ADDRESS(this, boundary) \ ((void*)_DBUS_ALIGN_VALUE(this, boundary)) @@ -272,12 +263,10 @@ void _dbus_verbose_bytes_of_string (const DBusString *str, int start, int len); -const char* _dbus_header_field_to_string (int header_field); - -DBUS_EXTERN const char *_dbus_no_memory_message; +extern const char *_dbus_no_memory_message; #define _DBUS_SET_OOM(error) dbus_set_error_const ((error), DBUS_ERROR_NO_MEMORY, _dbus_no_memory_message) -#ifdef DBUS_BUILD_TESTS +#ifdef DBUS_ENABLE_EMBEDDED_TESTS /* Memory debugging */ void _dbus_set_fail_alloc_counter (int until_next_fail); int _dbus_get_fail_alloc_counter (void); @@ -301,45 +290,46 @@ dbus_bool_t _dbus_test_oom_handling (const char *description, #define _dbus_decrement_fail_alloc_counter() (FALSE) #define _dbus_disable_mem_pools() (FALSE) #define _dbus_get_malloc_blocks_outstanding (0) -#endif /* !DBUS_BUILD_TESTS */ +#endif /* !DBUS_ENABLE_EMBEDDED_TESTS */ typedef void (* DBusShutdownFunction) (void *data); -dbus_bool_t _dbus_register_shutdown_func (DBusShutdownFunction function, - void *data); +dbus_bool_t _dbus_register_shutdown_func (DBusShutdownFunction function, + void *data); +dbus_bool_t _dbus_register_shutdown_func_unlocked (DBusShutdownFunction function, + void *data); extern int _dbus_current_generation; -/* Thread initializers */ -#define _DBUS_LOCK_NAME(name) _dbus_lock_##name -#define _DBUS_DECLARE_GLOBAL_LOCK(name) extern DBusMutex *_dbus_lock_##name -#define _DBUS_DEFINE_GLOBAL_LOCK(name) DBusMutex *_dbus_lock_##name -#define _DBUS_LOCK(name) _dbus_mutex_lock (_dbus_lock_##name) -#define _DBUS_UNLOCK(name) _dbus_mutex_unlock (_dbus_lock_##name) - -/* 1-5 */ -_DBUS_DECLARE_GLOBAL_LOCK (list); -_DBUS_DECLARE_GLOBAL_LOCK (connection_slots); -_DBUS_DECLARE_GLOBAL_LOCK (pending_call_slots); -_DBUS_DECLARE_GLOBAL_LOCK (server_slots); -_DBUS_DECLARE_GLOBAL_LOCK (message_slots); -/* 5-10 */ -_DBUS_DECLARE_GLOBAL_LOCK (bus); -_DBUS_DECLARE_GLOBAL_LOCK (bus_datas); -_DBUS_DECLARE_GLOBAL_LOCK (shutdown_funcs); -_DBUS_DECLARE_GLOBAL_LOCK (system_users); -_DBUS_DECLARE_GLOBAL_LOCK (message_cache); -/* 10-14 */ -_DBUS_DECLARE_GLOBAL_LOCK (shared_connections); -_DBUS_DECLARE_GLOBAL_LOCK (win_fds); -_DBUS_DECLARE_GLOBAL_LOCK (sid_atom_cache); -_DBUS_DECLARE_GLOBAL_LOCK (machine_uuid); - -#if !DBUS_USE_SYNC -_DBUS_DECLARE_GLOBAL_LOCK (atomic); -#define _DBUS_N_GLOBAL_LOCKS (15) -#else -#define _DBUS_N_GLOBAL_LOCKS (14) -#endif +/* The weird case convention is to avoid having to change all the callers, + * which would be quite a mega-patch. */ +typedef enum +{ + /* index 0-4 */ + _DBUS_LOCK_list, + _DBUS_LOCK_connection_slots, + _DBUS_LOCK_pending_call_slots, + _DBUS_LOCK_server_slots, + _DBUS_LOCK_message_slots, + /* index 5-9 */ + _DBUS_LOCK_bus, + _DBUS_LOCK_bus_datas, + _DBUS_LOCK_shutdown_funcs, + _DBUS_LOCK_system_users, + _DBUS_LOCK_message_cache, + /* index 10-12 */ + _DBUS_LOCK_shared_connections, + _DBUS_LOCK_machine_uuid, + _DBUS_LOCK_sysdeps, + + _DBUS_N_GLOBAL_LOCKS +} DBusGlobalLock; + +dbus_bool_t _dbus_lock (DBusGlobalLock lock) _DBUS_GNUC_WARN_UNUSED_RESULT; +void _dbus_unlock (DBusGlobalLock lock); + +#define _DBUS_LOCK_NAME(name) _DBUS_LOCK_##name +#define _DBUS_LOCK(name) _dbus_lock (_DBUS_LOCK_##name) +#define _DBUS_UNLOCK(name) _dbus_unlock (_DBUS_LOCK_##name) dbus_bool_t _dbus_threads_init_debug (void); @@ -375,6 +365,12 @@ dbus_bool_t _dbus_read_uuid_file (const DBusString *filename, dbus_bool_t _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str); +#define _DBUS_PASTE2(a, b) a ## b +#define _DBUS_PASTE(a, b) _DBUS_PASTE2 (a, b) +#define _DBUS_STATIC_ASSERT(expr) \ + typedef struct { char _assertion[(expr) ? 1 : -1]; } \ + _DBUS_PASTE (_DBUS_STATIC_ASSERT_, __LINE__) + DBUS_END_DECLS #endif /* DBUS_INTERNALS_H */