dbus源码走读 4——创建BusRegistry
[2022-10-27]
context->registry = bus_registry_new (context);
BusRegistry的创建是通过bus_registry_new()来完成的。bus_registry_new()定义在bus/services.c中(line 75)。
BusRegistry的定义如下:
struct BusRegistry
{
int refcount;
BusContext *context;
DBusHashTable *service_hash;
DBusMemPool *service_pool;
DBusMemPool *owner_pool;
DBusHashTable *service_sid_table;
};
可以看出,它的核心内容就是两个DBusHashTable和两个DBusMemPool。
BusRegistry的创建就是哈希表和内存池的创建。
1)service_hash = _dbus_hash_table_new (DBUS_HASH_STRING, NULL, NULL);
即一个字符串为key的哈希表。它的value_free_function是NULL,预示着值是简单类型,不需要专门的内存释放函数。
2) service_sid_table = NULL;
并没有创建service_sid_table,只是初始化为NULL。
3)service_pool = _dbus_mem_pool_new (sizeof (BusService), TRUE);
service_pool初始化为sizeof(BusService)大小。
4) owner_pool = _dbus_mem_pool_new (sizeof (BusOwner), TRUE);
owner_pool 初始化为sizeof (BusOwner)大小。
BusRegistry就创建完了。So easy.
浙公网安备 33010602011771号