6.2.3 Написание драйвера API ядра |
Предыдущая Содержание Следующая |
Иногда вы столкнётесь с трудностями при принятии решения о переносе задачи в пространство пользователя или пространство ядра, так как она вызывает как функции пользователя, так и функции ядра. Та же проблема возникает с функцией, которая вызывает функции как в пользовательском пространстве, так и в пространстве ядра. Например, рассмотрим функцию func, вызывающую функции func1 и func2. func1 является функцией пользовательского пространства, а func2 - функцией ядра.
void func(){ func1(); <-- Функция пользовательского пространства func2(); <-- Функция ядра }
Куда должна быть перенесена функция func? В пространство пользователя или пространство ядра? Вам необходимо написать драйвер API ядра для поддержки таких случаев. В модели драйверов API ядра функция func переносится в пространство пользователя, предоставляя интерфейс для функции func2 в пространстве пользователя. Драйвер API ядра подробно обсуждается в Разделе 6.5. В этом разделе мы обсудили план по переносу приложения с ОС реального времени на Linux.Оставшаяся часть главы разделена на три части:
▪В первой части мы вкратце обсудим pthread-ы (потоки POSIX). Pthread-ы представляют собой модель многопоточности в Linux.Раздел охватывает все операции с pthread-ами, которые надо понимать, прежде чем начинать процесс переноса. ▪Во второй части мы напишем небольшой OSPL, поддерживающий только интерфейсы создания задачи, уничтожения задачи и мьютекс. ▪В конце мы обсудим драйвер API ядра.
|
Предыдущая Содержание Следующая |