Доступ к памяти модуля ядра

Могут ли два разных модуля ядра получить доступ к одной и той же области памяти после вызова ioremap_nocache ()?

У меня есть беспроводной драйвер и отдельный модуль, я хотел бы, чтобы отдельный модуль профилировал значения шума на карте, пока драйвер все еще работает. Отсюда мой вопрос выше.

Одна из возможностей, которую я исследовал, состояла в том, чтобы запустить поток ядра из драйвера, затем я реализовал семафор, чтобы предотвратить любые состояния гонки, возникающие из-за одновременного чтения / записи в одно и то же адресное пространство. Я надеялся, что дочерний поток сможет получить доступ к той же области памяти.

К сожалению, это не сработало, как я ожидал. Буду признателен за любые предложения.

9
задан 2 December 2013 в 17:23

1 ответ

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

В этом решении профилировщик пространства пользователя считывает данные, выполняет некоторые вычисления и затем передает результат.

Если это решение в порядке, реализация выглядит следующим образом.

В модуле ядра это просто регистрация устройства char в '/ proc' и реализация примитивов 'read' и 'write'. В пользовательском пространстве, это просто для реализации профилировщика, чтения и записи на устройство char. Подробности и информация для этой реализации - все здесь .

0
ответ дан 2 December 2013 в 17:23

Другие вопросы по тегам:

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