Есть по-разному устроенные libc, некоторые из них можно приспособить для работы в ядре. Для начала нужно понимать, что в libc есть часть, которая совсем не зависит от ОС (например все функции
mem*()
или большинство функций
str*()
), есть часть, зависимость которой от ОС реализована в терминах других функций libc (например
printf()
может выделять память и может записывать в файл, но обе эти функции уже реализованы в других местах libc), а есть часть напрямую взаимодействующая с ОС.
Некоторые libc написаны так, что эта последняя часть чётко отделена (например
newlib) и для адаптации к другой ОС или к окружению внутри ядра нужно реализовать небольшое количество интерфейсов (для newlib это будет вариант
libgloss).