Связь действий в пользовательском пространстве с кодом ядра

Этот вопрос, вероятно, лучше подходит для StackOverflow, но он слишком стар для переноса. Также userdict— это специальный словарь, определяемый языком постскриптума; другие словари просто называются словарями или dicts .

Похоже, вы пытаетесь создать файлы EPS (Encapsulated PostScript ). Файлы EPS должны быть автономными -. Поэтому они не должны зависеть от данных из другого файла.

Чтобы сделать их обычными PostScript, измените первую строку на

%!

или

%!PS

. Затем вы можете использовать оператор runдля запуска файла со словарем.

  • (имя файла )  запустить  -

Кроме того, вы не создали «глобальный» словарь, если не используете true setglobalдля изменения режима выделения на глобальный. Но также имейте в виду, что вы не можете просто использовать defс объектом, выделенным в глобальной памяти. Объекты в глобальной памяти не могут храниться в словарях или массивах, которые находятся в локальной памяти (, например userdict). Поэтому, если вам действительно нужен глобальный массив, вы должны поместить его в globaldict.

currentglobal
  true setglobal
  globaldict /ObjDict 30 dict put
setglobal

Но вам, вероятно, не нужно использовать глобальную память.

0
04.05.2019, 19:37
1 ответ

Очень кратко:

Записи в /sysна самом деле не являются файлами. Это монтирование имеет тип sysfs, и в ядре это соответствует API, где другие части ядра могут регистрироваться. Затем, когда «файлы» этой файловой системы читаются или записываются, sysfs перенаправляет эти действия зарегистрированным модулям.

Уровеньgpio(ввода-вывода общего назначения )ядра снова является абстракцией, в которой могут регистрироваться другие драйверы. Обычно это драйверы микросхем или наборов микросхем, которые имеют регистры GPIO в самих микросхемах. То, как подключены контакты GPIO этих чипов, зависит от аппаратного обеспечения.

Немного больше информации можно найти в Documentation/gpio/gpio.txtи т. д. в исходном коде ядра.

Что касается способов идентификации драйвера, один из способов ll gpio432состоит в том, чтобы после создания узла gpio и просмотра символической ссылки; он укажет на устройство с чипом/чипсетом с регистрами GPIO. Затем найдите драйвер для этого устройства.

Другой способ — просмотреть dmesgи посмотреть, выдает ли драйвер сообщения при регистрации GPIO.

Возможно, эта информация также может быть доступна через udevadm.

1
28.01.2020, 02:40

Теги

Похожие вопросы