Dados gerais

Interface: IdeController
Arquivos: idecontroller.h
Última atualização: 20/12/2003
Autor: Luiz Henrique Shigunov
Informações

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

Descrição

Esta página descreve a interface IdeController que fornece serviços de um controlador IDE.

Estruturas

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:

Funções para o sistema

Estas funções são de uso exclusivo dos módulos do sistema.

0x00 - GetDrive

Sintaxe

int IdeController_GetDrive(unsigned int interface, unsigned int drive);

Propriedades

Descrição

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.

Valor de retorno

0x01 - LockInterface

Sintaxe

int IdeController_LockInterface(unsigned int interface);

Propriedades

Descrição

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.

Valor de retorno

0x02 - PutDrive

Sintaxe

int IdeController_PutDrive(unsigned int interface, unsigned int drive);

Propriedades

Descrição

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.

Valor de retorno

0x03 - ReadData

Sintaxe

int IdeController_ReadData(unsigned int interface, void *buf, unsigned int size);

Propriedades

Descrição

Esta função lê size bytes da interface e os coloca em buf.

interface começa em zero.

Valor de retorno

0x04 - SendRequest

Sintaxe

int IdeController_SendRequest(IdeController_Request *rq);

Propriedades

Descrição

Esta função processa o pedido rq.

Valor de retorno

0x05 - SetupDrive

Sintaxe

int IdeController_SetupDrive(const IdeController_Setup *set);

Propriedades

Descrição

Esta função configura o drive de acordo com set.

Valor de retorno

0x06 - UnlockInterface

Sintaxe

int IdeController_UnlockInterface(unsigned int interface);

Propriedades

Descrição

Esta função destrava interface.

interface começa em zero.

Valor de retorno

0x07 - WriteData

Sintaxe

int IdeController_WriteData(unsigned int interface, const void *buf, unsigned int size);

Propriedades

Descrição

Esta função escreve size bytes de buf na interface.

interface começa em zero.

Valor de retorno