X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-dataslot.h;h=1e04fcbc1e2041bc0574d01f56e46c589188f408;hb=7d9239c9c78cb6d0b9c282376fcf3cda1de23209;hp=d4357325202d63f13f491a6d737e64b818d2978d;hpb=c3af5ccdbc22e8990d04ec2f89ad1f2e053655e9;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-dataslot.h b/dbus/dbus-dataslot.h index d435732..1e04fcb 100644 --- a/dbus/dbus-dataslot.h +++ b/dbus/dbus-dataslot.h @@ -1,9 +1,9 @@ -/* -*- mode: C; c-file-style: "gnu" -*- */ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* dbus-dataslot.h storing data on objects * * Copyright (C) 2003 Red Hat, Inc. * - * Licensed under the Academic Free License version 1.2 + * Licensed under the Academic Free License version 2.1 * * 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 @@ -17,7 +17,7 @@ * * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef DBUS_DATASLOT_H @@ -25,7 +25,7 @@ #include -DBUS_BEGIN_DECLS; +DBUS_BEGIN_DECLS typedef struct DBusDataSlotAllocator DBusDataSlotAllocator; typedef struct DBusDataSlotList DBusDataSlotList; @@ -39,25 +39,45 @@ struct DBusDataSlot DBusFreeFunction free_data_func; /**< Free the application data */ }; +typedef struct DBusAllocatedSlot DBusAllocatedSlot; + +/** An allocated slot for storing data + */ +struct DBusAllocatedSlot +{ + dbus_int32_t slot_id; /**< ID of this slot */ + int refcount; /**< Number of uses of the slot */ +}; + +/** + * An allocator that tracks a set of slot IDs. + */ struct DBusDataSlotAllocator { - int *allocated_slots; /**< Allocated slots */ + DBusAllocatedSlot *allocated_slots; /**< Allocated slots */ int n_allocated_slots; /**< number of slots malloc'd */ int n_used_slots; /**< number of slots used */ - DBusMutex *lock; /**< thread lock */ + DBusGlobalLock lock; /**< index of thread lock */ }; +#define _DBUS_DATA_SLOT_ALLOCATOR_INIT(x) { NULL, 0, 0, x } + +/** + * Data structure that stores the actual user data set at a given + * slot. + */ struct DBusDataSlotList { DBusDataSlot *slots; /**< Data slots */ int n_slots; /**< Slots we have storage for in data_slots */ }; -dbus_bool_t _dbus_data_slot_allocator_init (DBusDataSlotAllocator *allocator); -int _dbus_data_slot_allocator_alloc (DBusDataSlotAllocator *allocator, - DBusMutex *mutex); +dbus_bool_t _dbus_data_slot_allocator_init (DBusDataSlotAllocator *allocator, + DBusGlobalLock lock); +dbus_bool_t _dbus_data_slot_allocator_alloc (DBusDataSlotAllocator *allocator, + int *slot_id_p); void _dbus_data_slot_allocator_free (DBusDataSlotAllocator *allocator, - int slot_id); + int *slot_id_p); void _dbus_data_slot_list_init (DBusDataSlotList *list); dbus_bool_t _dbus_data_slot_list_set (DBusDataSlotAllocator *allocator, DBusDataSlotList *list, @@ -69,9 +89,10 @@ dbus_bool_t _dbus_data_slot_list_set (DBusDataSlotAllocator *allocator, void* _dbus_data_slot_list_get (DBusDataSlotAllocator *allocator, DBusDataSlotList *list, int slot); +void _dbus_data_slot_list_clear (DBusDataSlotList *list); void _dbus_data_slot_list_free (DBusDataSlotList *list); -DBUS_END_DECLS; +DBUS_END_DECLS #endif /* DBUS_DATASLOT_H */