From 06131deba6c35a249132a39c96fb2dc1cc889dc7 Mon Sep 17 00:00:00 2001
From: Bah Thierno-Souleymane <thiernosouleymane.bah.etu@univ-lille.fr>
Date: Thu, 18 Mar 2021 11:08:35 +0100
Subject: [PATCH] feat(load_mdr function implemented)
---
tpfs/vol.c | 32 ++++++++++++++++++++++++++++++++
tpfs/vol.h | 2 ++
2 files changed, 34 insertions(+)
create mode 100644 tpfs/vol.c
diff --git a/tpfs/vol.c b/tpfs/vol.c
new file mode 100644
index 0000000..9bd36c2
--- /dev/null
+++ b/tpfs/vol.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <ctype.h>
+#include <assert.h>
+
+#include "hardware.h"
+#include "drive.h"
+#include "vol.h"
+
+void load_mbr()
+{
+ int i;
+ unsigned char buffer[sizeof(mbr_t)];
+
+ read_sector(buffer, 0, 0);
+ mbr.magic = buffer[0] + (buffer[1] << 8);
+
+ if (mbr.magic == MBR_MAGIC)
+ {
+ mbr.nb_vols = buffer[2];
+ for (i = 0; i < mbr.nb_vols; i++)
+ {
+ mbr.vols[i].sector = buffer[3 + (i * 4)];
+ mbr.vols[i].cylinder = buffer[4 + (i * 4)];
+ mbr.vols[i].nb_sectors = buffer[5 + (i * 4)];
+ mbr.vols[i].type = buffer[6 + (i * 4)];
+ }
+ return;
+ }
+
+ mbr.magic = MBR_MAGIC;
+ mbr.nb_vols = 0;
+}
\ No newline at end of file
diff --git a/tpfs/vol.h b/tpfs/vol.h
index dcd1d52..af09f09 100644
--- a/tpfs/vol.h
+++ b/tpfs/vol.h
@@ -2,6 +2,7 @@
#define VOL_H
#define NB_VOLS_MAX 8
+#define MBR_MAGIC 0xCAFE // Savoir si le mbr a déjà été initialisé ou non
static mbr_t mbr;
@@ -22,6 +23,7 @@ typedef struct vol_s
typedef struct mbr_s
{
+ unsigned int magic;
unsigned int nb_vols; // nombre de volumes actuels
vol_t vols[NB_VOLS_MAX];
} mbr_t;
--
GitLab