]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
cambio los tipos de EMUFS_FSC y agrego doxycomentarios en tipo3.h
authorNicolás Dimov <ndimov@gmail.com>
Mon, 19 Apr 2004 00:18:04 +0000 (00:18 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Mon, 19 Apr 2004 00:18:04 +0000 (00:18 +0000)
doc/informe.lyx
emufs/fsc.h
emufs/tipo3.c
emufs/tipo3.h
emufs/tipo3_main.c

index e82c549784b53fcb45c7acdc723fa6dc37cce066..b568fdc4341a13942f27bcf403022e9fe33ead83 100644 (file)
@@ -168,9 +168,22 @@ Comportamiento (funciones generales)
 \layout Section
 
 Archivo de control de espacio libre (.fsc)
 \layout Section
 
 Archivo de control de espacio libre (.fsc)
+\layout Subsection
+
+Estructura Física
 \layout Standard
 
 \layout Standard
 
-idem anterior
+La estuctura que define este archivo es la siguiente:
+\layout Standard
+
+EMUFS_FSC que contiene
+\layout Itemize
+
+EMUFS_BLOCK_ID indica el número de bloque
+\layout Itemize
+
+EMUFS_FREE freespace indica la cantidad de espacio libre que queda en el
+ bloque.
 \layout Section
 
 Archivo de índices recuperables (.did)
 \layout Section
 
 Archivo de índices recuperables (.did)
index 1843926dc67421605630bfa0db9c0e2ca987a5dd..08cf1e6bc70ae1b112756ac4aae5174d37266a13 100644 (file)
@@ -43,8 +43,8 @@
 #define EMUFS_FSC_EXT ".fsc"
 
 typedef struct emufs_fsc_t {
 #define EMUFS_FSC_EXT ".fsc"
 
 typedef struct emufs_fsc_t {
-       unsigned long int marker;
-       unsigned long int freespace;
+       EMUFS_BLOCK_ID marker;
+       EMUFS_FREE freespace;
 } EMUFS_FSC;
 
 /** Crea un archivo de Gaps o Espacio Libre en Bloque */
 } EMUFS_FSC;
 
 /** Crea un archivo de Gaps o Espacio Libre en Bloque */
index 51a5f525e85b09273aaa6933ddb2eae8857cc5ac..02c6495cbc9779383c81e3e37e62a8d025b28b87 100644 (file)
@@ -502,9 +502,7 @@ void emufs_tipo3_compactar(EMUFS *emu)
                ID_aux = emufs_tipo3_grabar_registro(emu, reg, emu->tam_reg, &err);
                free(reg);
        }
                ID_aux = emufs_tipo3_grabar_registro(emu, reg, emu->tam_reg, &err);
                free(reg);
        }
-       /*tengo que truncar el archivo*/
-       /*bloques_vacios = emufs_fsc_get_cant_bloques_vacios(emu)-1;
-       */
+       /*trunco el archivo sacando los bloques vacios*/
        block_id = emufs_fsc_buscar_lugar(emu, emu->tam_bloque, &fs);
        size = sizeof(EMUFS_Tipo)+sizeof(EMUFS_REG_SIZE)+sizeof(EMUFS_BLOCK_SIZE)+block_id*emu->tam_bloque;
        if (truncate(name, size)!=0)
        block_id = emufs_fsc_buscar_lugar(emu, emu->tam_bloque, &fs);
        size = sizeof(EMUFS_Tipo)+sizeof(EMUFS_REG_SIZE)+sizeof(EMUFS_BLOCK_SIZE)+block_id*emu->tam_bloque;
        if (truncate(name, size)!=0)
index 508f3963fbea9aa31b96b5d8365671717b8bf5e6..42920651604c0628b7dfd1e1faa69515ac218a1f 100644 (file)
 #include "idx.h"
 #include "fsc.h"
 
 #include "idx.h"
 #include "fsc.h"
 
-/** Lee el registro \param id_reg y lo almacena en \param ptr */
-void* emufs_tipo3_leer_registro(EMUFS*, EMUFS_REG_ID, EMUFS_REG_SIZE*, int*);
+/** Devuelve un puntero con la memoria reservada que contiene al registro solicitado
+  * por el segundo parámetro \param ID, y almacena en \param reg_size el tamaño del
+  * registro leido, que en este caso no es necesario pues es constante y es conocicdo de antemano.
+  * Para realizar esta acción, busca en el archivo .idx el bloque al cual pertenece el registro.
+  */
+void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE* reg_size, int* err);
 
 
-/** Lee el bloque \param num_bloque y lo almacena en \param ptr */
+/** Devuelve un puntero con la memoria reservada que contiene el bloque solicitado por
+  * el segundo parámetro \param num_bloque. Como la numeración de los bloques es virtual,
+  * el acceso al archivo para levantar un bloque es directo, es decir, se posiciona directamente
+  * en en número de bloque multiplicado por el tamaño del mismo, salteando antes el encabezado del archivo.
+  */
 void* emufs_tipo3_leer_bloque(EMUFS*, EMUFS_BLOCK_ID, int*);
 
 void* emufs_tipo3_leer_bloque(EMUFS*, EMUFS_BLOCK_ID, int*);
 
-/** Graba el registro apuntado por \param ptr en el archivo */
+/** Graba un registro en un bloque donde haya espacio suficiente, y si no 
+  * crea un nuevo bloque y lo agrega al final del archivo. 
+  * El registro a grabar es apuntado por el segundo parámetro \param ptr 
+  * y el tamaño viene indicado en \param tam.
+  * Luego de realizar la grabación, actualiza los archivos índice con los
+  * valores correspondientes.
+  */
 EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE, int*);
 
 /** Graba el bloque apuntado por \param ptr en el archivo */
 int emufs_tipo3_grabar_bloque(EMUFS *emu, void *ptr, EMUFS_BLOCK_ID num_bloque);
 
 EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE, int*);
 
 /** Graba el bloque apuntado por \param ptr en el archivo */
 int emufs_tipo3_grabar_bloque(EMUFS *emu, void *ptr, EMUFS_BLOCK_ID num_bloque);
 
-/** Borra el registro \param id_reg del archivo de datos */
+/** Borra el registro \param id_reg del archivo de datos, y actualiza los archivos
+  *    de índice para mantener la coherencia en las próximas modificaciones.
+  */
 int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
 
 /** Método para modificar un registro */
 EMUFS_REG_ID emufs_tipo3_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*);
 
 int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID id_reg);
 
 /** Método para modificar un registro */
 EMUFS_REG_ID emufs_tipo3_modificar_registro(EMUFS *emu, EMUFS_REG_ID, void*, EMUFS_REG_SIZE, int*);
 
-/** Carga una estructura del tipo EMUFS_Estadisticas con las estadisticas del archivo */
+/** Completa una estructura del tipo EMUFS_Estadisticas con las estadísticas del
+  * archivo de datos, espacio libre total, cantidad de registros, cantidad de bloques,
+  * tamaño del archivo en bytes, relaciones entre tamaños y espacios libres, etc.
+  */
 EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *);
 
 /** Lee un registro con su informacion de control */
 EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *);
 
 /** Lee un registro con su informacion de control */
index cdc26b25ec031d1d195e80eceea634b58e917ecb..6651fb141087a1d22073e048f7a4e03cace99461 100644 (file)
@@ -150,63 +150,15 @@ int main(int argc, char *argv[])
        fp->compactar(fp);
 ver_archivo_FS(fp);
 
        fp->compactar(fp);
 ver_archivo_FS(fp);
 
-       
-       /*
-       printf("COMPACTANDO........\n");
-       fp->compactar(fp);
-
-ver_archivo_FS(fp);
-       
-       for (j=1; j<40; j+=2){  
-               b_ptr = fp->leer_registro(fp, v[j], &reg_size, &err);
-               printf("Recuperado %d: %s\n",v[j], b_ptr);
-               free(b_ptr);
-       }
-
-/*
-       for (j=1; j<8; j+=2){   
-               b_ptr = fp->leer_registro(fp, v[j], &reg_size, &err);
-               printf("Recuperado : %s\n", b_ptr);
-               free(b_ptr);
-       }
-
-       printf("GRABANDO REGISTROS....\n");
-       v[0] = fp->grabar_registro(fp, a, 100, &err);
-       v[1] = fp->grabar_registro(fp, c, 100, &err);
-       v[2] = fp->grabar_registro(fp, d, 100, &err);
-       v[3] = fp->grabar_registro(fp, e, 100, &err);
-       v[4] = fp->grabar_registro(fp, f, 100, &err);
-       v[5] = fp->grabar_registro(fp, g, 100, &err);
-       v[6] = fp->grabar_registro(fp, h, 100, &err);
-       v[7] = fp->grabar_registro(fp, i, 100, &err);
-       v[4] = fp->grabar_registro(fp, f, 100, &err);
-       v[5] = fp->grabar_registro(fp, g, 100, &err);
-       v[6] = fp->grabar_registro(fp, h, 100, &err);
-       v[7] = fp->grabar_registro(fp, i, 100, &err);
-
-
        printf("BORRANDO REGISTROS....\n");
        printf("BORRANDO REGISTROS....\n");
-       for (j=0; j<8; j+=3){
-               fp->borrar_registro(fp, v[j]);
-               printf("borrado : %lu\n", v[j]);
+       for (j=0; j<20; j++){   
+               fp->borrar_registro(fp, j);
+               printf("borrado : %lu\n", j);
        }
        }
-       
-
        printf("COMPACTANDO........\n");
        fp->compactar(fp);
        printf("COMPACTANDO........\n");
        fp->compactar(fp);
-       
-       
-       stats = fp->leer_estadisticas(fp);
-       printf("Size del Archivo de datos: %lu\n",stats.tam_archivo_bytes);
-       printf("Cantidad de Registros en el Archivo de datos: %lu\n",stats.tam_archivo);        
-       printf("Total de espacio libre en el .dat: %lu\n",stats.total_fs);
-       printf("Minimo espacio libre en bloque o gap: %lu\n",stats.min_fs);
-       printf("Maximo espacio libre en bloque o gap: %lu\n",stats.max_fs);     
-       printf("Media de espacio libre en bloque o gap: %lu\n",stats.media_fs); 
-       printf("Cantidad en bytes de informacion de control: %lu\n",stats.info_control);
+ver_archivo_FS(fp);
 
 
-       ver_archivo_FS(fp);
-*/
        emufs_destruir(fp);
        return 0;
 }
        emufs_destruir(fp);
        return 0;
 }