Linux设备驱动开发:schar设备深入解析
1. 用户权限检查
在Linux系统中, ioctls 可供任何有权限打开设备的用户使用。但根据要执行的操作,并非所有用户都应被允许使用。例如, SCHAR_EX_TIMER_DELAY 会检查打开设备的用户是否为超级用户,因为设置过低的超时时间会使定时器过快过期,从而导致机器无法进行有效工作。
Linux定义了许多不同的能力(capability),在这种情况下,最重要的是 CAP_SYS_ADMIN 。各种 CAP_ 定义位于 linux/capability.h 中,并带有关于允许操作的注释。权限检查通过 capable 函数完成:
int capable(int cap);
该函数在用户具有特定能力时返回1,否则返回0。能力的使用不仅限于 ioctls ,但在 ioctls 中最为常用。
2. poll 机制
poll 为进程提供了一种在设备上休眠,等待特定事件发生的方式。这与重复检查状态不同。使用 poll 系统调用是一种高效等待事件发生的方法,无需进行忙循环。
schar 对 poll
超级会员免费看
订阅专栏 解锁全文
1905

被折叠的 条评论
为什么被折叠?



