为什么驱动代码首先执行?
问题描述:
我使用ioctl()从应用程序调用驱动程序函数。通过使用日志,我发现我的内核代码正在执行。例如,为什么驱动代码首先执行?
在我的应用程序
printf(“Calling Driver”); ioctl();
在我的驱动程序中
printk(“Driver called”);
当我执行我的代码时,首先打印“驱动程序调用”,然后“调用驱动程序” 我有任何理由吗?
答
默认情况下,stdout
流被缓冲,数据仅在换行符(或执行结束)后显示。在这种情况下,显示在ioctl
呼叫之后完成。
您可以在printf
调用后使用fflush
强制显示。
printf("Calling Driver");
fflush(stdout);
ioctl();
欲了解更多详情,你可以阅读these answers。