Как я могу обмениваться данными между двумя модулями ядра FreeBSD? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть несколько модулей ядра во встроенном устройстве, которые работают с ЖК-дисплеем, сенсорным экраном, последовательными портами и т. Д.

Один модуль ядра может читать версию PCB.

Я бы хотел, чтобы мой ЖК-модуль также мог считывать версию для печатной платы. Самый простой способ сделать это - сначала загрузить модуль версии PCB и попросить модуль LCD запросить его версию.

Оба модуля являются загружаемыми .ko, и оба написаны мной.

Есть ли простой способ:

  1. сделать вызов функции из одного модуля в другой?
  2. читать глобальную переменную в другом модуле?
  3. сделать вызов ioctl из модуля в другой модуль?

Мои предпочтения # 3.

1 Ответ

0 голосов
/ 27 октября 2018

Частичный ответ:

Чтобы вызвать функцию в другом модуле:

  1. поместите макрос MODULE_DEPEND вверху локального модуля, чтобы а) убедиться, что другой модуль загружен первым, и б) что вы можете связать его функции. Не уверен насчет б. E.g.:

    MODULE_DEPEND (lcd_mod, timer_mod, 1, 1, 1);

  2. Поместите объявление для удаленной функции в локальный модуль.

  3. просто вызовите удаленную функцию.

...