android properties分析(4) property_service 分析

本文深入剖析了Android的property_service,包括其初始化、启动过程,详细讲解了property_get和property_set的实现,强调了权限管理和内存共享的关键点。通过对property_service的分析,揭示了系统如何管理和控制property的读写操作。
摘要由CSDN通过智能技术生成

property_service分析

通过以上分析,只有property_service对properties有写的权限,其它地方都只有读取的权限,Bionic中虽然也可以Set,但是实际还是通过socket把命令发给property_service实现。

system/core/init/property_service.c

system/core/init/property_service.h


property_service初始化

property_service的初始化动作的发起是在init中

system/core/init/init.c

int main(int argc, char **argv)

{

//完成初始化环境变量等动作

 property_init();

//启动property_service

queue_builtin_action(property_service_init_action, "property_service_init");

    for(;;) {

        if (!property_set_fd_init && get_property_set_fd() > 0) {
            ufds[fd_count].fd = get_property_set_fd();
            ufds[fd_count].events = POLLIN;
            ufds[fd_count].revents = 0;
            fd_count++;
            property_set_fd_init = 1;
        }

        for (i = 0; i < fd_count; i++) {
            if (ufds[i].revents == POLLIN) {
                if (ufds[i].fd == get_property_set_fd())
                    handle_property_set_fd();
                else if (ufds[i].fd == get_keychord_fd())
                    handle_keychord();
                else if (ufds[i].fd == get_signal_fd())
                    handle_signal();
            }
        }

}

void service_start(struct service *svc, const char *dynamic_args)

{

        if (properties_inited()) {

//如果初始化完成了,获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值