/* BATERIA DE PRUEBAS DEL SISTEMA DE BLOQUES FISICOS Uso: prusbfis [-f fichero] [tam_bloque] [num_bloques] */ #include "sbfisico.h" #include "errores.h" #include #include #include #ifdef __MSDOS__ #include #endif /* Parámetros de prueba */ #define MAX_TEST 2000 /* número de accesos aleatorios */ char fichero [256]; int temporal=0; /* 1 si es un fichero creado internamente */ /* Por omisión, un disco de un mega */ WORD tam_bloque = 512; DWORD num_bloques = 2048; struct Superbloque cero; /* Detección de errores */ int error = 0; void verror(const char* mensaje) { if (error==-1) { fprintf(stderr,"Error en el test: %s (Error_SF=%d)\n",mensaje,Error_SF); exit(0); } } void hecho(void) { printf("hecho\n"); } /* Búfer para accesos a bloques */ char *bufer,*bufer2,*trama; void inicia_buferes (void) { int i; bufer=malloc(tam_bloque); bufer2=malloc(tam_bloque); trama=malloc(tam_bloque); if (!bufer || !bufer2 || !trama) { printf("Tamaño de bloque muy grande. No hay memoria\n"); exit (-1); } for (i=0;i=3 && !strcmp(argv[1],"-f") ) { temporal=0; strcpy(fichero,argv[2]); } else { temporal=1; strcpy(fichero,"XXXXXX"); mktemp(fichero); } /* Parámetros del disco */ if (argc==3 && strcmp(argv[1],"-f")!=0 ) { tam_bloque=atoi(argv[1]); num_bloques=atoi(argv[2]); } } main (int argc,char* argv[]) { /* Recoge los parámetros */ toma_parametros(argc,argv); inicia_buferes(); /* Instalación (sólo si temporal) */ if (temporal) { printf("Instalando el disco..."); error=InstalaDisco(fichero,tam_bloque,num_bloques); verror("No se pudo instalar el disco"); hecho(); } /* Montaje */ printf("Montando disco..."); error=MontaDisco(fichero,0); verror("No se pudo montar el fichero indicado"); if (temporal) { LeeSuperbloque(&cero); if ( cero.tam_bloque_fisico!=tam_bloque || cero.num_bloques_fisicos!=num_bloques ) { error=-1; verror("Error en el superbloque"); } } else { LeeSuperbloque(&cero); tam_bloque=cero.tam_bloque_fisico; num_bloques=cero.num_bloques_fisicos; } hecho(); /* Si es temporal, escribe algo en el disco */ if (temporal) { DWORD i; printf("Creando disco..."); for (i=0;i