#ifndef __SO_FS_H #define __SO_FS_H #include /****************************************** * Operaciones sobre archivos *******************************************/ /** * Abre o crea un archivo según el modo de apertura. *---- * Parámetros: * path (IN-OUT): Nombre del archivo a abrir o crear. Es de entrada cuando es abrir y de salida cuando se crea. * flag (IN): Modo de apertura. * pid (IN): Número de pid del proceso que abre el archivo. * * Códigos de retorno: * Número de descriptor para hacer referencia posteriormente. * ERROR: Hubo un error. *---- **/ int SO_fs_open(char * path, enum so_fs_mode flag, int pid); /** * Leer datos de un archivo. *---- * Parámetros: * fd (IN): Número de descriptor del archivo. * buff (OUT): Donde se copia lo leído. * size (IN): Bytes a leer del archivo. * * Códigos de retorno: * Retorna la cantidad de bytes que pudo leer (máximo size). * ERROR: Hubo un error. *---- **/ int SO_fs_read(u16 fd, void * buff, u16 size); /** * Escribir datos a un archivo. *---- * Parámetros: * fd (IN): Número de descriptor del archivo. * buff (IN): Datos a escribir. * size (IN): Bytes a grabar. * * Códigos de retorno: * Retorna la cantidad de bytes que pudo grabar (máximo size). * ERROR: Hubo un error. *---- **/ int SO_fs_write(u16 fd, const void * buff, u16 size); /** * Cierra el archivo. *---- * Parámetros: * fd (IN): Número de descriptor del archivo. * * Códigos de retorno: * OK: Cerro el archivo correctamente. * ERROR: Hubo un error. *---- **/ int SO_fs_close(u16 fd); /****************************************** * Operaciones sobre archivos y directorios *******************************************/ /** * Borra un archivo. *---- * Parámetros: * path (IN): Nombre absoluto del archivo a borrar. * * Códigos de retorno: * OK: Pudo borrar el archivo. * ERROR: Hubo un error. *---- **/ int SO_fs_rm(char * path); /** * Crea un directorio vacío. *---- * Parámetros: * path (IN): Nombre absoluto del directorio a crear. * * Códigos de retorno: * OK: Pudo crear el directorio. * ERROR: Hubo un error. *---- **/ int SO_fs_mkdir(char * path); /** * Borra un directorio vacío. *---- * Parámetros: * path (IN): Nombre absoluto del directorio a borrar. * * Códigos de retorno: * OK: Pudo borrar el directorio. * ERROR: Hubo un error. *---- **/ int SO_fs_rmdir(char * path); /********************************************** */ /************************************************ * Operaciones sobre enlaces simbólicos y fuertes *************************************************/ /** * Crea un enlace fuerte. *---- * Parámetros: * pathSource (IN): Nombre absoluto del archivo origen. * pathDest (IN): Nombre absoluto del nuevo enlace fuerte. * * Códigos de retorno: * OK: Pudo crear el enlace. * ERROR: Hubo un error. *---- **/ int SO_fs_mkhardlink(char * pathSource, char * pathDest); /** * Crea un enlace simbólico. *---- * Parámetros: * pathSource (IN): Nombre absoluto del archivo origen. * pathDest (IN): Nombre absoluto del nuevo enlace simbólico. * * Códigos de retorno: * OK: Pudo crear el enlace. * ERROR: Hubo un error. *---- **/ int SO_fs_mksoftlink(char * pathSource, char * pathDest); /****************************************** * Operaciones sobre el sistema de archivos *******************************************/ /** * Monta el volumen. Invoca a SO_afs_mount. *---- * Parámetros: * path (IN): ruta UNIX al volumen * * Códigos de retorno: * OK: Logró montar. * ERROR: Hubo un error. *---- **/ int SO_fs_mount(char * path); /** * Desmonta el volumen. Invoca la operación SO_blk_umount. *---- * Parámetros: * * Códigos de retorno: * OK: Desmontó correctamente. * ERROR: Hubo un error. *---- **/ int SO_fs_umount(void); #endif