[disk] Move MBR structure def. and CHS macros into header
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Tue, 1 Jun 2010 06:28:04 +0000 (02:28 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Tue, 1 Jun 2010 06:28:04 +0000 (02:28 -0400)
src/include/disk.h
src/winvblock/disk/disk.c

index 3755fd0..e798484 100644 (file)
@@ -198,6 +198,41 @@ struct _disk__type
  */
 #  define disk__get_ptr( dev_ptr ) ( ( disk__type_ptr ) dev_ptr->ext )
 
+/* An MBR C/H/S address and ways to access its components */
+typedef winvblock__uint8 chs[3];
+
+#  define     chs_head( chs ) chs[0]
+#  define   chs_sector( chs ) ( chs[1] & 0x3F )
+#  define chs_cyl_high( chs ) ( ( ( winvblock__uint16 ) ( chs[1] & 0xC0 ) ) << 2 )
+#  define  chs_cyl_low( chs ) ( ( winvblock__uint16 ) chs[2] )
+#  define chs_cylinder( chs ) ( chs_cyl_high ( chs ) | chs_cyl_low ( chs ) )
+
+#  ifdef _MSC_VER
+#    pragma pack(1)
+#  endif
+
+/* An MBR */
+winvblock__def_struct ( mbr )
+{
+  winvblock__uint8 code[440];
+  winvblock__uint32 disk_sig;
+  winvblock__uint16 pad;
+  struct
+  {
+    winvblock__uint8 status;
+    chs chs_start;
+    winvblock__uint8 type;
+    chs chs_end;
+    winvblock__uint32 lba_start;
+    winvblock__uint32 lba_count;
+  } partition[4] __attribute__ ( ( packed ) );
+  winvblock__uint16 mbr_sig;
+} __attribute__ ( ( __packed__ ) );
+
+#  ifdef _MSC_VER
+#    pragma pack()
+#  endif
+
 extern disk__io_decl (
   disk__io
  );
index e71febf..85fb5f9 100644 (file)
@@ -215,15 +215,6 @@ device__create_pdo_decl (
   return dev_obj_ptr;
 }
 
-/* An MBR C/H/S address and ways to access its components */
-typedef winvblock__uint8 chs[3];
-
-#define     chs_head( chs ) chs[0]
-#define   chs_sector( chs ) ( chs[1] & 0x3F )
-#define chs_cyl_high( chs ) ( ( ( winvblock__uint16 ) ( chs[1] & 0xC0 ) ) << 2 )
-#define  chs_cyl_low( chs ) ( ( winvblock__uint16 ) chs[2] )
-#define chs_cylinder( chs ) ( chs_cyl_high ( chs ) | chs_cyl_low ( chs ) )
-
 /*
  * fat_extra and fat_super taken from syslinux/memdisk/setup.c by
  * H. Peter Anvin.  Licensed under the terms of the GNU General Public
@@ -281,23 +272,6 @@ winvblock__def_struct ( fat_super )
   } x;
 } __attribute__ ( ( __packed__ ) );
 
-winvblock__def_struct ( mbr )
-{
-  winvblock__uint8 code[440];
-  winvblock__uint32 disk_sig;
-  winvblock__uint16 pad;
-  struct
-  {
-    winvblock__uint8 status;
-    chs chs_start;
-    winvblock__uint8 type;
-    chs chs_end;
-    winvblock__uint32 lba_start;
-    winvblock__uint32 lba_count;
-  } partition[4] __attribute__ ( ( packed ) );
-  winvblock__uint16 mbr_sig;
-} __attribute__ ( ( __packed__ ) );
-
 #ifdef _MSC_VER
 #  pragma pack()
 #endif