2015-07-30 2 views
1

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

  1. ввести системный вызов
    • Плюсы: Простой, для различных методов ядра, различные аргументы могут быть переданы.
    • Против: Любой побочный эффект?
  2. Ввести новое семейство сокета и использовать IOCTL команд
    • Плюсы: Нет необходимости API объяснений. Все знают, как использовать розетки
    • Против: требуется много времени для реализации.

Есть ли другие преимущество/недостатки этих двух подходов, которые могут быть взвешены, чтобы решить одну из них?

ответ

0

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

Я предпочитаю вызовы IOCTL драйверу устройства. Очень гибкая, очень небольшая накладная. Но это не удобно.

Смежные вопросы