调用了wake_lock()函数的驱动需要移植到msm-4.14中怎么办
时间: 2024-02-27 15:51:55 浏览: 85
多按键ad驱动,方便移植,对其他模块依赖小,移植完之后可直接调用
如果你需要将调用了wake_lock()函数的驱动移植到msm-4.14中,你需要对该驱动代码进行修改。具体来说,你需要使用sysfs接口来实现唤醒锁的功能。
首先,在驱动代码中找到调用wake_lock()函数的地方,并将其替换为使用sysfs接口的代码。例如,可以使用以下代码获取唤醒锁:
```
const char *lock_name = "mylock";
char buf[32];
int fd;
fd = open("/sys/power/wake_lock", O_WRONLY);
if (fd < 0) {
pr_err("failed to open wake_lock\n");
return -EINVAL;
}
snprintf(buf, sizeof(buf), "%s\n", lock_name);
if (write(fd, buf, strlen(buf)) < 0) {
pr_err("failed to acquire wake lock\n");
close(fd);
return -EINVAL;
}
close(fd);
```
同样地,释放唤醒锁可以使用以下代码:
```
const char *lock_name = "mylock";
char buf[32];
int fd;
fd = open("/sys/power/wake_unlock", O_WRONLY);
if (fd < 0) {
pr_err("failed to open wake_unlock\n");
return -EINVAL;
}
snprintf(buf, sizeof(buf), "%s\n", lock_name);
if (write(fd, buf, strlen(buf)) < 0) {
pr_err("failed to release wake lock\n");
close(fd);
return -EINVAL;
}
close(fd);
```
需要注意的是,使用sysfs接口控制唤醒锁需要具有root权限。在Android系统中,也提供了WakeLock类来操作唤醒锁,该类封装了sysfs接口,可以方便地在应用程序中使用,但在内核中需要自己实现。
阅读全文