Em ${kernel_root}/fs/ioctl.c
(em 4.13), há:
SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
Esse SYSCALL_DEFINE3
é uma macro que pega esses parâmetros e os expande para a assinatura apropriada para a chamada do sistema. Essa função é o ponto de entrada lógico para a chamada do sistema ioctl
do espaço do usuário. Essa função, por sua vez, procura o struct fd
correspondente ao descritor de arquivo fornecido e chama do_vfs_ioctl
passando o struct file
associado ao struct fd
. A chamada passará pela camada VFS antes de chegar ao driver, mas isso deve dar a você um lugar para começar a procurar.