/* Fichero de cabecera de prototipos de funciones */ /* Subsistema de Disco */ /* Version 2.0, marzo 1997 */ /* */ /* Conjunto minimo de funciones que deben contemplarse en la implementacion */ /* (I) Funcion de interface con el subsistema Cache */ /* (O) Funcion interna del Subsistema de Disco */ #include "Tipos_DISCO.h" /* Funcion para crear un fichero de simulacion de disco (O) */ int Inicializa_Disco( char *nombre, bloq_param parametros ); /* nombre: apunta a cadena de caracteres que coniene el nombre */ /* parametros: caracteristicas del disco a simular */ /* retorna: 0 ejecucion sin error, -1 error */ /* Funcion para activar una unidad de disco (O) */ int Monta_Disco( char *nombre ); /* nombre: apunta a cadena de caracteres que contiene el nombre */ /* retorna: numero de unidad (>=0) ejecucion sin error, -1 error */ /* Funcion para desactivar una unidad de disco (O) */ int Desmonta_Disco( unidad fd ); /* fd: numero de unidad obtenido mediante Monta_Disco */ /* retorna: 0 ejecucion correcta, -1 error */ /* Funciona para posicionar el brazo en un cilindro (O) */ int Posiciona_Cabeza( unidad fd, unsigned short int cil); /* fd: numero de unidad valido */ /* cil: numero de cilindro valido */ /* retorna: 0 ejecucion correcta, -1 error */ /* Funcion para leer la posicion actual (cilindro) del brazo del disco (O) */ int Lee_Posicion( unidad fd); /* fd: numero de unidad valido */ /* retorna: cilindro ejecucion correcta, -1 error */ /* Funcion para llevar a cabo un recalibrado de una unidad de disco (O) */ int Recalibra_Disco( unidad fd ); /* ud: numero de unidad valida */ /* retorna: 0 ejecucion correcta, -1 error */ /* Funcion que calcula la direccion fisica de un sector logico (O) */ int Direccion_Fisica( unidad fd, sector_logico sect, dir_fis *dir); /* fd: unidad de disco valida */ /* sect: numero de sector logico */ /* dir: apunta a estructura que contendra la direccion calculada */ /* retorna: 0 ejecucion sin error, -1 error */ /* Funcion para trasnferir un sector fisico (O) */ int Transferencia_Fisica( unidad fd, dir_fis dir, void *buff, int modo); /* fd: unidad de disco valida */ /* dir: direccion fisica del sector a transferir */ /* buff: direccion al buffer en memoria de la transferencia */ /* modo: tipo de transferencia (LECTURA o ESCRITURA */ /* retorno: 0 transferencia ejecutada con exito, -1 error */ /* Funcion para transferir un sector logico (I) */ int Transfiere_Sector( unidad fd, int num_sectores, sector_logico *sect, void *buff, int modo); /* fd: unidad de disco valida */ /* num_sectores numero de sectores a transferir */ /* sect: direccion de un vector de sectores logicos a transferir */ /* buff: direccion al buffer en memoria de la transferencia */ /* modo: tipo de transferencia (LECTURA o ESCRITURA) */ /* retorno: 0 transferencia realizada con exito, -1 error */ /* Funcion de visualizacion del estado del sistema de disco (I)*/ int Informe_Disco( void );