我在哪里可以找到__ioctl?

时间:2013-10-05 03:38:45

标签: android c linux

在android sdk路径中sdk / bionic / libc / bionic /有C API资源代码,例如fork.c,ioctl.c等。当打开ioctl.c时:

#include <stdarg.h>

extern int __ioctl(int, int, void *);

int ioctl(int fd, int request, ...)
{
    va_list ap;
    void * arg;
    enter code here
    va_start(ap, request);
    arg = va_arg(ap, void *);
    va_end(ap);

    return __ioctl(fd, request, arg);
}

extern int __ioctl(int,int,void *);这意味着__ioctl(int,int,void *)已在某处定义。所以我想知道原定义的地方在哪里。非常感谢!

2 个答案:

答案 0 :(得分:1)

如上所述,_ ioctl只是系统调用的包装器,在asm中实现。 在AOSP代码中,它可以在bionic / libc / arch-XXX / syscalls / _ioctl.S中找到,其中arch-XXX是arch-arm,arch-x86或arch-mips,具体取决于您的目标体系结构。 / p>

答案 1 :(得分:0)

它可能在仿生树的其他地方(grep是你的朋友),或者作为构建过程的一部分自动生成,但无论哪种方式,它都完全无趣。它只是一个系统调用包装器。所有有趣的工作都在内核中。