É assim que quase todo mundo faz os drivers.
Quando um programa deseja se comunicar com um driver, ele precisa de um canal de comunicação. Se cada driver introduzisse uma nova chamada de sistema, isso seria praticamente impossível de manter, especialmente quando as interfaces mudam, os bugs são corrigidos, etc.
Assim, os drivers fornecem um pseudo arquivo que pode ser acessado com as chamadas regulares read
/ write
e ioctl
, que são passadas diretamente para o driver.
A biblioteca Python fornece apenas uma abstração em torno dessa interface.