Как изменить часть клиента recv () на подпрограмму обработки прерываний? - PullRequest
0 голосов
/ 11 мая 2011

В настоящее время у меня есть клиент, прослушивающий пакеты в своем собственном потоке.Мне сказали попытаться реализовать ISR, чтобы пакет, полученный от вызова recv (), мог быть обработан немедленно, вместо того, чтобы ожидать, что этот поток будет запланирован.

РЕДАКТИРОВАТЬ: это сейчас в windows, но позже будет перенесено на DSP.

1 Ответ

1 голос
/ 11 мая 2011

ISR по определению выполняются в пространстве ядра. Если вы не находитесь во встроенной системе без защиты памяти, вам нужно будет добавить код ядра в ваш проект. Кроме того, чтобы переопределить recv, ему потребуется обрабатывать IP и TCP или UDP по мере необходимости для извлечения данных из пакетов Ethernet.

Затраты на перепланирование и переключение на поток минимальны и должны произойти в любом случае, если пакет полностью не обработан в ядре. Большинство операционных систем имеют настройку потока с наивысшим приоритетом, иногда называемую «в реальном времени», которая заставляет код пользовательского пространства запускаться с минимальной задержкой после получения драйвером данных. Это часто используется для ввода / вывода аудио / видео, а также для работы в сети.

...