Регистрация в библиотеке управления 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 );
Аргументы:typedef void (*MDIWriteFunc)(void *handle, uint8_t phy_id, uint8_t location, uint16_t val);
handle - идентификатор, переданный в MDI_Register_Extended(). phy_id - адрес PHY на шине управления MII. location - индекс регистра PHY для записи. val - значение для записи в регистр. Аргументы:typedef uint16_t (*MDIReadFunc)(void *handle, uint8_t phy_id, uint8_t location);
handle - идентификатор, переданный в MDI_Register_Extended(). phy_id - адрес PHY на шине управления MII. location - индекс регистра PHY для чтения. Аргументы:typedef void (*MDICallback)(void *handle, uint8_t phy_id, uint8_t state);
handle: идентификатор, переданный в MDI_Register_Extended(). phy_id: адрес PHY на шине управления MII. state: состояние связи. Возможные значения: MDI_LINK_UP MDI_LINK_DOWN MDI_LINK_UNKNOWN Если состояние связи — MDI_LINK_UP, драйвер должен вызвать MDI_GetActiveMedia() для получения дополнительной информации о состоянии связи. |
mdi_t, которую библиотека инициализирует. Драйвер передаёт указатель в mdi_t при всех последующих вызовах функций библиотеки, связанных с данной регистрацией.NULL.
| Некоторые драйверы могут получать прерывания при изменении состояния связи. Если это возможно, использование прерываний предпочтительнее, так как это более эффективно, чем использование импульсов мониторинга связи. |
libnetdrvr
Функция MDI_Register_Extended() выполняет регистрацию в библиотеке управления MII. Она должна быть вызвана перед использованием любых других функций этой библиотеки.
mdi_t недействителен и не может быть использован для вызова других функций библиотеки. mdi_t. Возвращённый указатель на mdi_t недействителен и не может быть использован для вызова других функций библиотеки.ЗОСРВ «Нейтрино»
Предыдущий раздел: Библиотека разработки сетевых драйверов