Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dima3351
Зарегистрирован: 03.03.2006 Сообщения: 6
|
Добавлено: Пт Мар 03 2006 19:41 Заголовок сообщения: Передача пакетов |
|
|
Есть драйвер сетевого устройства, у которого зарегестрирована функция передачи пакетов (dev->hard_start_xmit = snull_tx;). Вопрос: как из пользовательского приложения, работающего с этим драйвером, начать передачу пакетов, т.е. вызвать мою функцию snull_tx? Кто знает, подскажите, плз! |
|
Вернуться к началу |
|
|
Aragaer
Зарегистрирован: 28.03.2005 Сообщения: 164
|
Добавлено: Пт Мар 03 2006 23:52 Заголовок сообщения: |
|
|
Никак. Совсем никак.
Написать загружаемый модуль, в котором склепать символьное устройство и в обработчике записи в него вызывать dev->had_start_xmit (кстати лучше так и оставить, потому что snull_tx это уже частная подпрограмма определенная только для данной сетевухи, аппаратно зависимая). Затем прикрутить в пользовательской программе запись в это символьное устройство.
Как это будет работать:
- программа пишет в устройство.
- модуль, видя, что в него что-то пишут, дергает hard_start_xmit
Это самый простой способ связать user-space и kernel-space. _________________ Open your eyes.
And Awaken. |
|
Вернуться к началу |
|
|
dima3351
Зарегистрирован: 03.03.2006 Сообщения: 6
|
Добавлено: Сб Мар 04 2006 14:26 Заголовок сообщения: |
|
|
ага... спасибо. Правда, не очень оно логично, почему пользовательские программы не могут запускать функции модуля... |
|
Вернуться к началу |
|
|
dima3351
Зарегистрирован: 03.03.2006 Сообщения: 6
|
Добавлено: Вс Мар 05 2006 13:02 Заголовок сообщения: |
|
|
Ваш ответ я понял - через блочное устройство, которое имеет право вызывать функции ядра. Но мне кажется немного странным, что для того, чтобы передавать пакеты через сетевое устройство, требуется еще один модуль... Получается, проще и удобнее через ioctl? |
|
Вернуться к началу |
|
|
Aragaer
Зарегистрирован: 28.03.2005 Сообщения: 164
|
Добавлено: Пн Мар 06 2006 12:02 Заголовок сообщения: |
|
|
Да нет, другой модуль не нужен. Нужен всего один модуль - который будет драйвером устройства, которое будет посылать в сеть передаваемые в него сформированные пакеты. _________________ Open your eyes.
And Awaken. |
|
Вернуться к началу |
|
|
|