Набор сервисных функций, доступных драйверу, обычно
представляет собой подмножество стандартной библиотеки того языка высокого
уровня, на котором обычно пишутся драйверы. В большинстве современных
ОС это С. При выборе этого подмножества используется простой критерий:
удаляются или заменяются на более или менее ограниченные все функции,
которые так или иначе содержат в себе системные вызовы. Так, функции
memcpy или sprintf вполне можно оставить,
malloc придется заменить на эквивалент (в ядре
Linux эта функция называется kmaiioc), a fwrite
драйверу вряд ли понадобится, особенно если учесть, что работа многих
драйверов начинается до того, как будет смонтирована хоть одна файловая
система.
Важную роль среди сервисных функций занимают операции, часто исполняемые
одной командой, но такой, которую компиляторы ЯВУ в обычных условиях не
генерируют. Это, прежде всего, операции обращения к регистрам ввода-вывода
в машинах с отдельным адресным пространством ввода-вывода, а также команды
разрешения и запрещения прерываний. На С такие операции реализуются в