【发布时间】:2013-01-01 17:05:46
【问题描述】:
我想打印所有传递给linux 系统调用的参数值。例如ioctl(),我有以下原型和打印语句。
asmlinkage long our_sys_ioctl(unsigned int fd , unsigned int cmd , unsigned long arg)
{
printk ("fd=%u, cmd=%u and arg=%lu \n ", fd, cmd, arg);
return original_call_ioctl(fd , cmd , arg);
}
我明白了,fd 是驱动文件的文件描述符,cmd 定义了驱动、ioctl 编号、操作类型和参数大小。但我对arg 参数感到困惑,它要么是指向内存的指针,要么只是大多数文档所称的立即值。
通过使用这个arg参数,如果它被传递为unsigned long arg而不是指针,我如何获取内存内容?
【问题讨论】:
标签: c linux linux-kernel system-calls ioctl