在用户空间中,ioctl系统调用具有以下原型:
int ioctl(int fd, unsigned long cmd, ...);
由于点的原因,原型在Unix系统调用列表中脱颖而出,这通常将函数标记为具有可变数量的参数。但是,在实际系统中,系统调用实际上不能具有可变数量的参数。系统调用必须具有明确定义的原型,因为用户程序只能通过硬件" gate"来访问它们。
那么这些硬件门是什么?页码分别为135和136。
答案 0 :(得分:2)
硬件“门”是允许切换到内核上下文的特定指令,通常是让程序从内核请求某些东西。这可能是syscall
,sysenter
或int 0x80
等指令,具体取决于您的系统。
我应该注意到这些在实践中通常不被称为“硬件门”,而是类似“系统调用指令”。