Стандартный способ для процесса, чтобы дождаться, пока ядро разбудит его, - это использовать системный вызов poll () и обработчик прерываний драйвера вашего устройства, чтобы разбудить все ожидающие его потоки.
Наибольшая задержкаОперация, указанная в ваших 4 пунктах, пробуждает поток приложения, поэтому, если вам нужна еще более короткая задержка, вам нужно, чтобы поток пробуждался, но ожидал события.
Самый низкий механизм задержки, который я использовал, - это прерываниенаписать слово в процессе приложения и создать поток, читающий это слово и продолжающий работу при изменении значения.По сути, спин-блокировка между пользовательским пространством и пространством ядра.Используйте этот механизм, когда вы можете выделить ядро ЦП для спин-блокировки или когда вы ожидаете, что время ожидания будет очень коротким.
Вы можете использовать ioctl () для передачи указателя пространства пользователя на драйвер так,оно знает, какое слово обновлять.