#ifndef __DESCRIPTOR_SFB_H
#define __DESCRIPTOR_SFB_H


#include "tipos.h"

/* struct DescriptorSFB			      				*/
/*									*/
/*	Estructura de descripción del sistema de ficheros básico	*/
/*  									*/


struct DescriptorSFB
{

  /* Tamaños. Datos tomados del superbloque del disco */

  WORD tam_bloque_fisico;		/* tamaño de bloque físico */
  DWORD num_bloques_fisicos;		/* número de bloques físicos */

  /* Orígenes de las áreas en disco (medidos en bloques físicos) */
  /* Datos tomados del superbloque del disco */

  WORD tam_bloque_datos;	/* tamaño de bloque de datos
				   (medido en bloques físicos) */
  WORD num_BFB;		/* numero de BFBs */

  DWORD org_BFB;	/* origen de los bloques de ficheros básicos */
  DWORD org_datos;	/* origen de los bloques de datos */

  DWORD primer_bloque_libre;
  DWORD ultimo_bloque_datos;

  /* Tamaños y cantidades calculados al montar un SFB */

  WORD BFBs_por_BF;	/* bloques de fichero en un bloque físico */
  DWORD nbloques_BFB;	/* número de bloques físicos ocupados por BFBs */
  DWORD nbloques_datos;	/* número de bloques de datos */

  /* Control de montaje */

  int montado;		/* 0 si no hay sistema montado */

};


/* Variable global con la descripción del sistema de ficheros */

extern struct DescriptorSFB DESC;


/* Rutinas para transferir el superbloque al disco */

int LeeSuperbloque (struct DescriptorSFB*);
int EscribeSuperbloque (const struct DescriptorSFB*);


#endif