2012-12-31 25 views
1

我使用ioctl()從應用程序調用驅動程序函數。通過使用日誌,我發現我的內核代碼正在執行。例如,爲什麼驅動代碼首先執行?

在我的應用程序

printf(「Calling Driver」); ioctl();

在我的驅動程序中

printk(「Driver called」);

當我執行我的代碼時,首先打印「驅動程序調用」,然後「調用驅動程序」 我有任何理由嗎?

回答

0

默認情況下,stdout流被緩衝,數據僅在換行符(或執行結束)後顯示。在這種情況下,顯示在ioctl呼叫之後完成。

您可以在printf調用後使用fflush強制顯示。

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

欲瞭解更多詳情,你可以閱讀these answers