6.2.3 Написание драйвера API ядра

Предыдущая  Содержание  Следующая V*D*V

Иногда вы столкнётесь с трудностями при принятии решения о переносе задачи в пространство пользователя или пространство ядра, так как она вызывает как функции пользователя, так и функции ядра. Та же проблема возникает с функцией, которая вызывает функции как в пользовательском пространстве, так и в пространстве ядра. Например, рассмотрим функцию 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 ядра.

 

Предыдущая  Содержание  Следующая