На девайсе к процессору подключен 24-портовый свитч, управление свитчом сделано через gpio посредством шины аналогичной MDC/MDIO (написан драйвер, который предоставляет функции чтения/записи ноги через ioctl).
Нужно отслеживать в snmp-агенте статус портов (up/down).
Мне видятся два варианта:
(1) читать из агента, например каждую секунду, портовые регистры свитча и получать оттуда текущий статус линка. Это IMHO будет очень накладно из-за постоянного преключения контекста
(2) Свитч поддерживает специально выделенную ногу для сообщения прерываний процу об определенных событиях (маска задается регистром свитча), в том числе и статус линка. Завести эту ногу на gpio процессора, написать драйвер чтения ноги и какой-нибудь интерфейс в юзер-спейс (например /proc или ioctl) - т.е. линк сменился, получили прерывание, в агенте получили статус через I/O, далее все-равно нужно читать регистр, чтобы узнать какой порт сменил статус.
Получается, что у второго варианта нет большого преимущества или может быть я что-то упускаю?