剛學嵌入式的時候,ioctl還是ioctl。后來,變成了ioctl、unlocked_ioctl和compat_ioctl。再后來,ioctl就沒有見過ioctl了。源于筆者的冷漠,一直都不以為然。今天,筆者略有愧疚,查了一下前因后果。 在大內核鎖時代,ioctl是包裹于大內核鎖中的,多個ioctl之間不會有并發問題。自然,大內核鎖淡化了之后,unlocked_ioctl應運而生。注意到,unlocked代表沒有被鎖。所以并發需要在unlocked_ioctl內部實現鎖來處理。 在64位處理器時代,出現了32位應用,需要調用64位內核ioctl的需求。于是,便有了compat_ioctl。32位ioctl系統調用的參數會和64位的參數有所不同,需要內核自己實現。
新聞熱點
疑難解答