其他linux内核代码函数等分析

1,wait_for_completion_timeout   

此函数用于阻塞当前进程,超时或者想要的信号来了,才会继续执行,下面函数又加了锁,意味着其他地方想调用该函数也调用不了

static int battery_chg_write(struct battery_chg_dev *bcdev, void *data,int len)

        mutex_lock(&bcdev->rw_lock);//持锁了    需要等函数运行完,下一个调用该函数的地方才能跑

        reinit_completion(&bcdev->ack);//ack复位

        rc = pmic_glink_write(bcdev->client, data, len);//glink发送

        if (!rc) {

                rc = wait_for_completion_timeout(&bcdev>ack,msecs_to_jiffies(BC_WAIT_TIME_MS));

//挂起该线程   就是这个函数,除非ack来了(发送了指令收到回复后(硬件协议行为)),或者超时了,,,这样下一个

        if (!rc) {

                pr_err("Error, timed out sending message\n");

        if (len == sizeof(*req_msg)) {

                if (BATT_CAPACITY == req_msg->property_id)

                bcdev->read_capacity_timeout = true;

        }

up_read(&bcdev->state_sem);

mutex_unlock(&bcdev->rw_lock);//释放锁

return rc;

}

2,next

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值