Реализовать поддержку сокетов
Модуль netd по аналогии с модулем сигналов будет разделен на две части: сам модуль и процесс, производящий чтение и наполнение буфера для каждого соединения. В связи с этим необходимо:
- реализовать внутри
netd разделяемый (shared) кольцевой буфер для каждого соединения
- с помощью
fork создать процесс, обрабатывающий в бесконечном цикле открытые соединения и записывающий пришедшие по сети данные в буфер
- добавить в
netd функции чтения и записи;
net_read будет забирать данные из буфера
net_write же будет отправлять пакет в сеть
Таким образом операции чтения и записи в сокет будут всегда неблокирующими
- переписать утилиту
netcat с использованием этих функций
- добавить возможность создания произвольного соединения
- реализовать
devsocket по аналогии с devpipe и devfile, который будет обращаться к сервису netd
- реализовать функции создания (
socket) и установки соединения (bind, accept)
Реализовать поддержку сокетов
Модуль
netdпо аналогии с модулем сигналов будет разделен на две части: сам модуль и процесс, производящий чтение и наполнение буфера для каждого соединения. В связи с этим необходимо:netdразделяемый (shared) кольцевой буфер для каждого соединенияforkсоздать процесс, обрабатывающий в бесконечном цикле открытые соединения и записывающий пришедшие по сети данные в буферnetdфункции чтения и записи;net_readбудет забирать данные из буфераnet_writeже будет отправлять пакет в сетьТаким образом операции чтения и записи в сокет будут всегда неблокирующими
netcatс использованием этих функцийdevsocketпо аналогии сdevpipeиdevfile, который будет обращаться к сервисуnetdsocket) и установки соединения (bind,accept)