volatile
помогает, что любой указатель может быть передан в функцию без ошибок или предупреждений, даже если он квалифицирован volatile
.
Но это обман, драйвер, который вы видите, кажется, не записаночень профессионально.
Во-первых, чтобы быть полным, такой указатель также должен быть const
квалифицированным, только тогда он будет охватывать действительно все указатели.
Тогда нет никакого варианта использования для такогофункционировать на всех.В контексте _Bool
(здесь !ptr
) указатели естественным образом приводят к правильному ответу, это определяется стандартом.Делать это иначе, как вы видите здесь, вероятно, неодобрительно в сообществе ядра, и я думаю, что этот драйвер не был рассмотрен должным образом.