| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > [kernel] Отправка skb устройству в обработчике irq |
| Автор: null56 12.1.2011, 19:20 | ||||||
| Всем привет Есть обработчик прерывания от hrtimer, можно ли в нем вызывать метод dev_queue_xmit http://lxr.linux.no/#linux+v2.6.36/net/core/dev.c#L2171 просто один раз получил паник
где boff_hrtimer_fn - мой обработчик таймера boff_send_reliable - фукнция из которой вызывается dev_queue_xmit ищу ответ в исходниках, если кто знает, подскажите, буду благодарен ЗЫ: падение редкое и до сих пор не могу его повторить, но оно было в обработчике с выключенными прерываниями, может быть в этом была ошибка
сейчас сделал, чтобы прерывания выключались лишь в методе skb_dequeue(без подчеркивания - сама блокирует прерывания), то есть
может в этом была ошибка заранее благодарен за помощь |
| Автор: null56 12.1.2011, 19:38 | ||
судя по всему я был прав |
| Автор: null56 12.1.2011, 20:11 | ||
надо выяснить в контексте чего выполняется обработчик таймера, попробую через
а дальше буду отталкиваться от этого Добавлено через 12 минут и 17 секунд скажем так, мы не в софтварном контексте, если верить этим макросам теперь надо понять, чем еще может нарушать условия в контексте прерывания функция dev_queue_xmit |
| Автор: null56 12.1.2011, 20:38 | ||
вопрос: фукнция в своем теле делает это
это разрешено в хардварном прерывании? |
| Автор: null56 13.1.2011, 19:45 |
| возник вопрос, если судить коду по ссылке ниже, то похоже на то, что hrtimer вызывает колбак в контексте softrq, почему тогда макрос in_irq подтверждает обратное? http://lxr.linux.no/#linux+v2.6.36/kernel/softirq.c#L502 |
| Автор: null56 13.1.2011, 20:33 |
| Проблема решена Я поместил код функции с dev_queue_xmit в тасклет и активировал его в колбаке таймера, видимо действительно проблема была в запрещенных прерываниях |