Использование stdlib.h в драйвере устройства

Я пытаюсь написать драйвер устройства, и мне нужно использовать функцию system() в драйвере. Чтобы использовать system() нам нужно включить , который dosnt, похоже, работает из драйвера.

В нем нет такого файла или каталога.

Есть ли альтернатива stdlib.h для драйверов устройств? Или альтернатива system() ?

stdlib.h – это заголовок пользовательского пространства.

Пользовательское пространство – это набор мест памяти, в которых запускаются пользовательские процессы (т. Е. Все, кроме ядра). Процесс – это исполняемый экземпляр программы. Одна из ролей ядра – управлять отдельными пользовательскими процессами в этом пространстве и мешать им мешать друг другу.

Доступ к ядру может осуществляться пользовательскими процессами только с помощью системных вызовов. Системные вызовы – это запросы в Unix-подобной операционной системе посредством активного процесса для службы, выполняемой kernelм, например ввода / вывода (ввода-вывода) или создания процесса. Активный процесс – это процесс, который в настоящее время развивается в ЦП, в отличие от процесса, который ждет своего следующего поворота в ЦП. I / O – любая программа, операция или устройство, которое передает данные на или из ЦП и на периферийное устройство или из него (например, на дисках, клавиатурах, мыши и принтеры).

Пожалуйста, проверьте папку KERNEL DIRECTORY / include, для каких заголовков можно использовать в пространстве ядра.

Альтернативы системной команде нет.

Как только можно решить, вы можете создать запись sys / proc из пространства ядра, чтобы установить флаг, из пользовательского пространства вы можете проверить флаг и использовать system ().

Тот факт, что вы пытаетесь #include stdlib.h и использовать system () из драйвера, показывает, что вам нужно больше узнать о программировании в режиме ядра. Итак, прежде чем пытаться что-либо из этого, вам действительно нужно понять, почему этот заголовок не существует в среде ядра и почему вы не можете использовать функцию libc system ().

Однако, если говорить, есть аналог режима ядра, который можно использовать, когда имеет смысл это сделать:

 #include  static char *envv[] = { "PATH=/sbin:/bin:/usr/sbin:/usr/bin", "HOME=/", NULL }; static char *argv[] = { "/sbin/your_program", "arg1", ... "argn", NULL }; int status = call_usermodehelper(argv[0], argv, envv, UMH_NO_WAIT); 

Существуют и другие флаги UMH_xxx, которые позволяют подождать завершения процесса, как это сделала система (). Было бы хорошо понять, что это означает в контексте вашего драйвера (или любого драйвера) до этого.