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.

posted @ 2022-10-27 10:32  耕读编码  阅读(125)  评论(0)    收藏  举报