]> Zhao Yanbai Git Server - kernel.git/commitdiff
更改硬盘设备号的表示方法
authoracevest <zhaoyanbai@126.com>
Sun, 15 Oct 2023 02:43:57 +0000 (10:43 +0800)
committeracevest <zhaoyanbai@126.com>
Sun, 15 Oct 2023 02:43:57 +0000 (10:43 +0800)
boot/cmdline.c
drivers/ide.c
drivers/ide.h
include/fs.h
mm/buddy.c
qemu.sh

index 534191d0d46fc80aafe1260232dd62f0e6ac2878..b698e4c0b1e111f8e0753b63e1f12edae0e8407d 100644 (file)
@@ -10,7 +10,6 @@
  *--------------------------------------------------------------------------
  */
 #include <fs.h>
-#include <ide.h>
 #include <printk.h>
 #include <stdlib.h>
 #include <string.h>
index 4a9e332b7c30fc7c7333cf492666fb3b6349b7d0..dfe96f81812adb9eb1a8b61d2588e5aa815580ca 100644 (file)
@@ -178,7 +178,7 @@ ide_drive_t *ide_get_drive(dev_t dev) {
     int major = DEV_MAJOR(dev);
     int minor = DEV_MINOR(dev);
 
-    int drv_no = minor / MAX_DISK_PARTIONS;
+    int drv_no = (minor & 0xFFFF) >> 8;
 
     assert(major == DEV_MAJOR_DISK);
     assert(minor >= 0);
index 743bb0b3f3b32fe5fa3bf3b4ac15c0943939848b..91a7c5d0714c2ec771f3cde0443d99363b2b6854 100644 (file)
 #define PARTITION_TABLE_OFFSET 0x1BE
 #define MAX_DISK_PARTIONS 16
 
-#define MAKE_DISK_DEV(drv_no, part_no) MAKE_DEV(DEV_MAJOR_DISK, (drv_no)*MAX_DISK_PARTIONS + (part_no))
-
 // 分区定义
 typedef struct ide_part_ {
     uint8_t flags;
index 77bb046dbe7703390e66355d2aa2c7a4a984ee0c..b84216f5345414293888004ac2bbdff09478508f 100644 (file)
@@ -24,8 +24,6 @@
 #define DEV_MAJOR_MEM 0x0001
 #define DEV_MAJOR_TTY 0x0002
 #define DEV_MAJOR_DISK 0x0003
-// #define DEV_MAJOR_IDE0 0x0003
-// #define DEV_MAJOR_HDA DEV_MAJOR_IDE0
 #define DEV_MAJOR_IDE1 0x0004
 #define DEV_MAJOR_SCSI0 0x0005
 #define DEV_MAJOR_SCSI2 0x0006
@@ -34,6 +32,7 @@
 #define DEV_MINOR_MASK ((1UL << DEV_MAJOR_BITS) - 1)
 
 #define MAKE_DEV(major, minor) ((major) << DEV_MAJOR_BITS | minor)
+#define MAKE_DISK_DEV(drv_no, part_no) MAKE_DEV(DEV_MAJOR_DISK, (((drv_no)&0x03) << 8) | (((part_no)&0xFF) << 0))
 
 #define DEV_MAJOR(dev) ((unsigned int)((dev) >> DEV_MAJOR_BITS))
 #define DEV_MINOR(dev) ((unsigned int)((dev)&DEV_MINOR_MASK))
index 0184743819cde539c6d28933ef2bb6c49637205f..15dd0ee6c33d4b0bc1e6ffe2cfa5760efc903088 100644 (file)
@@ -158,7 +158,7 @@ void dump_buddy_system() {
     for (i = 0; i < MAX_ORDER; ++i) {
         printk("order %2d free_count %d ", i, buddy_system.free_area[i].free_count);
 
-        if (buddy_system.free_area[i].free_count < 100) {
+        if (buddy_system.free_area[i].free_count < 1000) {
             list_head_t *p;
             page_t *page;
             printk("pfn:");
diff --git a/qemu.sh b/qemu.sh
index 978feb4f92ce06c73ab5abb396a2c0f4531b0ea9..190db49fc73b9b7da5bc219ce6c3c3bda63d04e0 100755 (executable)
--- a/qemu.sh
+++ b/qemu.sh
@@ -17,7 +17,7 @@ set -m
 qemu-system-i386 \
     -boot d \
     -serial tcp::6666,server,nowait \
-    -drive file=HDa.IMG,format=raw,index=0,media=disk \
+    -drive file=HD.IMG,format=raw,index=0,media=disk \
     -drive file=kernel.iso,index=1,media=cdrom \
     -drive file=HDb.IMG,format=raw,index=2,media=disk \
     -name kernel \