Подтвердить что ты не робот

Альтернатива stdlib.h в ядре Linux?

При разработке модуля ядра в Linux использование стандартной библиотеки C не допускается.
Однако, если мне нужно использовать некоторые общие функции, такие как strcat(), куда мне нужно перейти?

4b9b3361

Ответ 1

Независимо от того, что не реализовано в ядре Linux, вы должны реализовать себя или заимствовать из другого модуля ядра с открытым исходным кодом. Однако вы обнаружите, что strcat реализован в ядре.

См. документацию API ядра. В частности, раздел Basic C Library Functions для вашего общего вопроса и String Manipulation для вашего конкретного вопроса о strcat.

Вы хотите включить linux/string.h.

Я не знаю, почему в документации API ядра фактически не отображается файл заголовка, который вы должны включить, чтобы получить функцию. Но если вы ищете что-то, вы можете ограничить свой поиск /include/linux, потому что это то, где заголовочные файлы идут, если у них есть функции, которые разделяются между разными частями ядра.

Заголовочные файлы вне /include/linux содержат определения только для исходных файлов, находящихся в том же каталоге, что и заголовок. Исключением является /arch/.../include, который будет содержать заголовки, специфичные для архитектуры, а не независимые от платформы.

Ответ 2

Извините @eq - думает о другой функции.

Почему бы не

void (char *d, const char *s);
{
   if (*d)
   { 
       for (; *d; ++d) {} ;
      --d;
   }
   strcpy(d, s);
}

Я мог бы сделать strcpy, если вы пожелаете