Dados gerais

Interface: FileSystem
Arquivos: filesystem.h
Última atualização: 30/03/2003
Autor: Luiz Henrique Shigunov
Informações

Descrição
Funções

0x00 - Close - Fecha um descritor de arquivo
0x0e - Lookup - Procura uma entrada de diretório
0x02 - Mount - Monta um sistema de arquivos
0x03 - Open - Abre um arquivo
0x05 - Read - Lê de um arquivo
0x0f - ReadLink - Lê dados de uma ligação simbólica
0x07 - Remove - Remove um arquivo

0x09 - RewindDir - Volta a ler do início do diretório
0x0a - Seek - Posiciona o ponto de leitura/escrita de um arquivo
0x0b - Status - Obtém informações sobre um arquivo
0x01 - StatusFD - Obtém informações sobre um descritor de arquivo
0x0c - Unmount - Desmonta um sistema de arquivos
0x0d - Write - Escreve num arquivo

Descrição

Esta página descreve a interface FileSystem que trata do acesso aos diferentes sistemas de arquivos.

Cada sistema de arquivos é responsável por fazer a sincronização do acesso aos arquivos, verificar os priviléligos de acesso do usuário, etc.

Todo dispositivo para ser montado tem que implementar a interface BlockDev.

0x00 - Close

Sintaxe

void FileSystem_Close(FileSystem_Handle *fd);

Propriedades

Descrição

Esta função fecha o descritor de arquivo fd.

fd é um ponteiro para a estrutura criada pela função Open.

Valor de retorno

Nada.

0x0e - Lookup

Sintaxe

int FileSystem_Lookup(FSManager_Dentry *parent, FSManager_Dentry *newDentry);

Propriedades

Descrição

Esta função procura no diretório parent pela entrada newDentry.

Quem chama esta função deve garantir que somente uma linha de execução chama esta função com o mesmo parâmetro parent.

O campo name de newDentry contém o nome a ser encontrado.

Se newDentry for encontrado os campos mode e fsData de newDentry devem ser preenchidos.

O campo mode tem o mesmo formato que o campo mode de EntryStatus. Já fsdata são dados específicos do sistema de arquivos.

Valor de retorno

0x02 - Mount

Sintaxe

int FileSystem_Mount(const char *devImp, unsigned int unit, int prop, const char *data, FSManager_Dentry *dentry);

Propriedades

Descrição

Esta função monta a unidade unit do dispositivo devImp com as propriedades prop.

data são dados específicos para o sistema de arquivos.

Esta função só pode ser chamada uma única vez para cada par devImp, unit.

Quem chama esta função deve garantir que somente uma linha de execução esteja executando esta função concorrentemente.

Em caso de sucesso, o campo fsData de dentry deve ser preenchido. fsdata são dados específicos do sistema de arquivos.

prop deve ser 0 ou o somatório de:

Valor de retorno

0x03 - Open

Sintaxe

int FileSystem_Open(FSManager_Dentry *dentry, int prop, FileSystem_Handle **fd);

Propriedades

Descrição

Esta função abre o arquivo/diretório dentry com as propriedades prop.

fd é o local onde o ponteiro para as informações do arquivo/diretório devem ser guardadas.

prop deve ser o somatório de:

FSManager_READ e/ou FSManager_WRITE são obrigatórios, os demais podem ser adicionados. (FSManager_WRITE + FSManager_CREATE, por exemplo).

No caso de prop ter FSManager_CREATE, prop pode ter também os seguintes valores em octal:

Esses valores só são utilizados se o sistema de arquivos suportar.

O ponteiro de leitura/escrita será posicionado no início.

Valor de retorno

0x05 - Read

Sintaxe

int FileSystem_Read(FSManager_FDIO *request);

Propriedades

Descrição

Esta função processa o pedido de leitura request.

Em caso de sucesso, o campo size de request indicará quantos bytes foram lidos e o ponteiro de leitura/escrita será avançado desse valor.

Valor de retorno

0x0f - ReadLink

Sintaxe

int FileSystem_ReadLink(FSManager_Dentry *dentry, char *buf, unsigned int size, int prop);

Propriedades

Descrição

Esta função lê o conteúdo da ligação simbólica dentry e a coloca em buf que tem tamanho size bytes.

prop pode ser:

Valor de retorno

0x07 - Remove

Sintaxe

int FileSystem_Remove(FSManager_Dentry *dentry);

Propriedades

Descrição

Esta função remove dentry.

dentry pode estar sendo usado. Quem está usando continua podendo usar, mas não é possível abrir, listar, etc.

Um diretório com arquivos não pode ser removido.

Valor de retorno

0x09 - RewindDir

Sintaxe

int FileSystem_RewindDir(FileSystem_Handle *fd);

Propriedades

Descrição

Esta função posiciona a leitura de entradas do diretório fd no início.

Valor de retorno

0x0a - Seek

Sintaxe

int FileSystem_Seek(FileSystem_Handle *fd, int count, int prop, int *newPos);

Propriedades

Descrição

Esta função posiciona o ponto de leitura/escrita do arquivo fd na posição count, de acordo com as propriedades prop.

prop deve ser:

newPos, se for diferente de nulo, vai conter a nova posição no retorno.

Valor de retorno

0x0b - Status

Sintaxe

int FileSystem_Status(FSManager_Dentry *dentry, FSManager_EntryStatus *buf, int prop);

Propriedades

Descrição

Esta função obtém informações sobre dentry e as coloca em buf.

prop pode ser:

Valor de retorno

0x01 - StatusFD

Sintaxe

int FileSystem_StatusFD(FileSystem_Handle *fd, FSManager_EntryStatus *buf, int prop);

Propriedades

Descrição

Esta função obtém informações sobre fd e as coloca em buf.

prop pode ser:

Valor de retorno

0x0c - Unmount

Sintaxe

int FileSystem_Unmount(FSManager_Dentry *dentry, int prop);

Propriedades

Descrição

Esta função desmonta o sistema de arquivos montado em dentry.

prop pode ser 0 ou o somatório de:

Valor de retorno

0x0d - Write

Sintaxe

int FileSystem_Write(FSManager_FDIO *request);

Propriedades

Descrição

Esta função processa o pedido de escrita request.

Em caso de sucesso, o campo size de request indicará quantos bytes foram escritos e o ponteiro de leitura/escrita será avançado desse valor.

Valor de retorno