Неблокирующее чтение i2c из пространства пользователя
Я пытаюсь читать и записывать данные с i2c в подчиненном режиме и нашел несколько примеров, чтобы сделать это в пользовательском пространстве, включая этот наиболее важный из NXP (я использую iMX8MQ): https://source.codeaurora.org/external/imx/imx-test/tree/test/mxc_i2c_slave_test/mxc_i2c_slave_test.c?h=imx_4.14.78_1.0.0_ga
Однако, похоже, что если я захочу прочитать данные, это будет реализация на основе опроса, поскольку похоже, что i2c-dev не обеспечивает способ регистрации обратных вызовов пользовательского пространства, когда доступны данные i2c. Даже не уверен, что драйверы устройств Linux вообще позволяют это делать. Правильно ли я полагаю, что нет неблокирующего и асинхронного способа чтения i2c из пространства пользователя в подчиненном режиме?
Я не очень знаком с написанием драйверов устройств, поэтому даже если бы я хотел реализовать свои собственные, похожие на этот: https://github.com/torvalds/linux/blob/master/drivers/i2c/i2c-slave-eeprom.c это хорошая идея для вызова функции пользовательского пространства, когда данные стали доступны (например, когда драйвер получил I2C_SLAVE_STOP)?