Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Разработка драйверов и драйверные библиотеки > Драйверные библиотеки > Библиотеки разработки сетевых драйверов (devnp-*) > API MDI > MDI_Register_Extended()



MDI_Register_Extended()

Регистрация в библиотеке управления MII

Прототип:

#include <netdrvr/mdi.h>
int MDI_Register_Extended( void *handle,
MDIWriteFunc write,
MDIReadFunc read,
MDICallback callback,
mdi_t **mdi,
struct sigevent *event,
int priority,
int callback_interval );

Аргументы:

handle
Идентификатор, который библиотека передаёт в каждый из обратных вызовов драйвера.
write
Указатель на функцию, которая записывает данные в регистр PHY через MAC-устройство.
Объявление:
typedef void (*MDIWriteFunc)(void *handle, uint8_t phy_id, uint8_t location, uint16_t val);
Аргументы:
read
Указатель на функцию, которая считывает данные из регистра PHY через MAC-устройство.
Объявление:
typedef uint16_t (*MDIReadFunc)(void *handle, uint8_t phy_id, uint8_t location);
Аргументы:
callback
Указатель на функцию обратного вызова, вызываемую при изменении состояния связи.
Объявление:
typedef void (*MDICallback)(void *handle, uint8_t phy_id, uint8_t state);
Аргументы:

Note: Если состояние связи — MDI_LINK_UP, драйвер должен вызвать MDI_GetActiveMedia() для получения дополнительной информации о состоянии связи.

mdi
Указатель на структуру mdi_t, которую библиотека инициализирует. Драйвер передаёт указатель в mdi_t при всех последующих вызовах функций библиотеки, связанных с данной регистрацией.
event
Указатель на структуру struct sigevent для получения импульсов мониторинга связи. Если драйвер не хочет получать такие импульсы, необходимо передать NULL.
priority
Приоритет импульсов мониторинга связи. Рекомендуемое значение — 10.
callback_interval
Частота (в секундах) импульсов мониторинга связи. Рекомендуемое значение — 3.


Note: Некоторые драйверы могут получать прерывания при изменении состояния связи. Если это возможно, использование прерываний предпочтительнее, так как это более эффективно, чем использование импульсов мониторинга связи.

Библиотека:

libnetdrvr

Описание:

Функция MDI_Register_Extended() выполняет регистрацию в библиотеке управления MII. Она должна быть вызвана перед использованием любых других функций этой библиотеки.

Возвращаемое значение:

MDI_SUCCESS
Регистрация выполнена успешно.
MDI_TIMER_FAILURE
Регистрация не удалась. Возвращённый указатель на mdi_t недействителен и не может быть использован для вызова других функций библиотеки.
MDI_NOMEM
Невозможно аллоцировать память для структуры mdi_t. Возвращённый указатель на mdi_t недействителен и не может быть использован для вызова других функций библиотеки.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да




Предыдущий раздел: Библиотека разработки сетевых драйверов