2015-01-06 4 views
1

Итак, я читал в Linux API (syscalls и libc), а также ioctls устройства, вызывая ioctls через create(dev_name) и ioctl(device_file_handle) и файловую систему sysfs. Так вот мои вопросы:Linux Drivers and Sysfs

  1. ли sysfs «должен» быть только для чтения, где различные параметры ядра подвергаются читаться? Или они «предположительно» могут быть доступны для записи?

  2. Должны ли все драйверы в будущем выявлять интерфейсы в sysfs?

  3. Если ответ на все вышеизложенное верно, то действительно ли мы будем требовать больше вызовов IOCTL? потому что все, что нам нужно будет сделать, чтобы водитель что-то сделать, чтобы изменить значение в некоторых из файлов в sysfs, например, чтобы вызвать IOCTL под названием do_something на водитель D1, мы будем делать:

    echo 1> /sysfs/D1/IOCTLS/DO_SOMETHING (or something like that ... :)) 
    
  4. существуют ли какие-либо планы обнажая ядро ​​API (то есть системные вызовы и Libc) как sysfs файлы, например,

    echo 1> /sysfs/libc/get_system_time 
    cat /sysfs/libc/results/system_time  
    

    было бы хорошая идея, чтобы сделать это?

  5. Есть ли какие-либо системы, такие как система в Windows? Или какие-то текущие проекты?

  6. Как насчет разоблачения основных системных вызовов, libc и любых новых библиотек через http? (Просто хотел откровенное обсуждение этой идеи)

ответ

1
  1. а) Нет. Б) зависит от многого.
  2. Я не слышал о таком требовании.
  3. Вы должны предоставить протокол обмена между вызывающим и ядром. Вы можете проверить, как это делается в Plan9. Мы будем требовать IOCTL, узнать больше об этом на SO answer
  4. Вы задумались о безопасности? Это будет большая дыра в ОС, которую я предполагаю.
  5. Насколько мне известно.
  6. Не обсуждать.
0

Пожалуйста, найти свой встроенный ответ на вопросы:

1) Мы можем выполнить как чтение и работу через sysfs писать; опять же это зависит от ваших требований.

2) Я так не думаю; как sysfs, так и ioctl имеют свои преимущества, поэтому вы не можете сравнивать их одинаково.

3) Его неправда.

4) API-интерфейсы Sysfs (показать и сохранить API) уже открыты для пользовательского пространства. вы можете вызывать эти API из пользовательского пространства.

5) Это может быть; но я не уверен.

0

1 -> Никакие sysfs не могут быть реализованы и для записи. Пользователь может использовать его что-то вроде этого.эхо "Hello">/SYS/устройства/***/sysfs_entry

2 -> Нет, я думаю, что большая часть платформы, связанные драйверы с открытым sysfs интерфейсы

3 -> Ответ на поставленный выше вопрос в Нет. Нам все еще нужны ioctls.

4 -> Я считаю, что только полезные API с некоторыми включенными функциями отображаются как записи sysfs. Например, устройство за драйвером имеет 100 регистров. Каждый регистр не отображается как записи sysfs. Но если в этих регистрах есть 3-4 функции, эти функции отображаются как записи sysfs. Эти записи не должны вызывать ошибок и паники при неправильных данных. Эта ответственность лежит на разработчике.

5 -> Не знаю.

6 -> Идея не существует.