为什么驱动代码首先执行?

问题描述:

我使用ioctl()从应用程序调用驱动程序函数。通过使用日志,我发现我的内核代码正在执行。例如,为什么驱动代码首先执行?

在我的应用程序

printf(“Calling Driver”); ioctl();

在我的驱动程序中

printk(“Driver called”);

当我执行我的代码时,首先打印“驱动程序调用”,然后“调用驱动程序” 我有任何理由吗?

默认情况下,stdout流被缓冲,数据仅在换行符(或执行结束)后显示。在这种情况下,显示在ioctl呼叫之后完成。

您可以在printf调用后使用fflush强制显示。

printf("Calling Driver"); 
fflush(stdout); 
ioctl(); 

欲了解更多详情,你可以阅读these answers