Interface: IdeController Arquivos: idecontroller.h Última atualização: 20/12/2003 Autor: Luiz Henrique Shigunov |
Descrição Estruturas |
Funções para o sistema | |
0x00 - GetDrive - Obtém um drive para uso 0x01 - LockInterface - Trava uma interface para uso exclusivo 0x02 - PutDrive - Libera um drive 0x03 - ReadData - Lê dados do drive |
0x04 - SendRequest - Envia um pedido para um drive 0x05 - SetupDrive - Configura um drive 0x06 - UnlockInterface - Destrava uma interface para uso exclusivo 0x07 - WriteData - Escreve dados no drive |
Esta página descreve a interface IdeController que fornece serviços de um controlador IDE.
typedef struct { unsigned char port; unsigned char data; } IdeController_RequestPort; typedef struct { unsigned int version; unsigned int interface; unsigned int drive; unsigned int timeout; int flags; unsigned int numIOs; unsigned char status; unsigned char error; IdeController_RequestPort IOs[1]; } IdeController_Request;
Onde version é a versão da estrutura (versão 1), interface é a interface, drive o drive, timeout a quantidade de segundos antes de desistir do pedido, flags controlam o pedido e pode ser 0 ou a soma de:
status e error conterão o byte de status e error respectivamente no retorno.
numIOs é o tamanho do array IO que contém as portas de IO e os dados a serem escritos nessas portas.
As portas de IO presentes em IO serão escritas de IO[0] até IO[numIOs-1] nessa ordem.
port tem que conter um dos seguintes valores:
typedef struct { unsigned int version; unsigned int interface; unsigned int drive; int flags; } IdeController_Setup;
Onde version é a versão da estrutura (versão 1), interface é a interface, drive o drive e flags tem que ser 0 ou a soma de:
Estas funções são de uso exclusivo dos módulos do sistema.
int IdeController_GetDrive(unsigned int interface, unsigned int drive);
Esta função obtém drive da interface para uso exclusivo do módulo chamador.
drive e interface começam em zero.
Para liberar drive use PutDrive.
int IdeController_LockInterface(unsigned int interface);
Esta função trava interface para uso exclusivo pelo módulo.
A linha de execução chamadora fica bloqueada até obter o uso exclusivo.
interface começa em zero.
Antes de uma interface IDE ser usada em qualquer função da IdeController ela tem que ser travada para uso exclusivo via LockInterface.
Para destravar use UnlockInterface.
int IdeController_PutDrive(unsigned int interface, unsigned int drive);
Esta função libera drive da interface.
drive e interface começam em zero.
Se drive não tiver sido obtido nada acontece e a função retorna sucesso.
int IdeController_ReadData(unsigned int interface, void *buf, unsigned int size);
Esta função lê size bytes da interface e os coloca em buf.
interface começa em zero.
int IdeController_SendRequest(IdeController_Request *rq);
Esta função processa o pedido rq.
int IdeController_SetupDrive(const IdeController_Setup *set);
Esta função configura o drive de acordo com set.
int IdeController_UnlockInterface(unsigned int interface);
Esta função destrava interface.
interface começa em zero.
int IdeController_WriteData(unsigned int interface, const void *buf, unsigned int size);
Esta função escreve size bytes de buf na interface.
interface começa em zero.