最近遇到在64bit kernel执行32bit的程序时,ioctl无法操作tty driver。问题是kernel中tty设备没有compat_ioctl回调导致的,最后自己修改uart_ops解决的问题。
在debug此问题时,需要在syscall中加入log,加入之后会导致log过多而影响观察,用如下方法,不打印除了uarttest程序的调用。
current表示当前进程的PCB,comm表示当前进程的名字。
除了debug外,我们还需补上兼容型的ioctl函数。
1. 补上结构体中的compat_ioctl.
2.补上调用关系。
3. driver中实现compat_ioctl函数。
4.在serial_core.c中补上回调函数。