⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grub.c

📁 一个完整的GUI界面OS,单盘启动 实现了多线程、FAT32文件读写
💻 C
字号:
//-----------------------------------------------------------------------------------------------------------------------
//          GRUB Lib For FireXOS  1.10 
//
//          Version  1.10
//
//          Create by  xiaofan                                   2004.9.20
//
//          Update by xiaofan                                    2004.9.20
//------------------------------------------------------------------------------------------------------------------------

#include "GraphicDriver.h"
#include "Kernel.h"
#include "CType.h"
#include "GRUB.h"
#include "VBE.h"
#include "Console.h"

extern GrubInfo* GrubBootInfo;

//----------------------------------------------------------------------------------------------------------------------------//// 获取GRUB的版本信息////----------------------------------------------------------------------------------------------------------------------------
int GetGrubVersion(GrubInfo* info)
{
	//struct VBEMode          *mode_info = (struct VBEMode*)       GrubBootInfo->vbe_mode_info;
  //struct VBEController    *control=    (struct VBEController*) GrubBootInfo->vbe_control_info;

    if (CHECK_GRUB(info->flags,9))
		{
				ConsoleMsg("  Boot Manager : %s\n",(char*)info->boot_loader_name);
		}
	return SUCCESS;
}


//----------------------------------------------------------------------------------------------------------------------------//// 获取GRUB的启动信息////----------------------------------------------------------------------------------------------------------------------------
int GetGrubBoot(GrubInfo* info, int* DevNo)
{
	  int i, dev = -1;
 
    /*if microkernel here will be zero*/
    if (!CHECK_GRUB(info->flags,MULTIBOOT_BOOT_DEVICE)){
		for(i = 0; i<4; i++)
		ConsoleMsg("  Boot Device is %x\n", info->boot_device[i]);
		return -1;
    }

    /*if boot from floppy*/
    if (info->boot_device[3]<0x80){
	  dev = info->boot_device[3];  //if fp
	  ConsoleMsg("  Boot Kernel From FD%d\n",dev);
	  *DevNo = dev_nr(FD,0);
	  return dev_nr(FD,0);
	  }
    else {/*if boot from harddisk*/
		dev = info->boot_device[3]-0x80;
		// *dev_no = info->boot_device[2]+1;
    *DevNo = dev_nr(HD,dev*4+info->boot_device[2]+1);
	  ConsoleMsg("  Boot Kernel From hd%c (Linux Format)dev_no %d\n",'a'+dev, info->boot_device[2]+1);
	  return dev;
	}

	return dev;
}

//----------------------------------------------------------------------------------------------------------------------------//// 获取GRUB的可用内存信息////----------------------------------------------------------------------------------------------------------------------------
int GetGrubMemInfo(GrubInfo* info, unsigned long* lower, unsigned long* upper)
{
   if (!CHECK_GRUB(info->flags, MULTIBOOT_MEMORY)) return -1;
		   ConsoleMsg("  Mem  lower = %dKB, Mem upper = %dKB\n",(int)info->mem_lower,(int)info->mem_upper);

   *upper = (unsigned long)((info->mem_upper+1024)*1024); 
   *lower = info->mem_lower;
   return SUCCESS;
}


//----------------------------------------------------------------------------------------------------------------------------//// 获取GRUB的高级电源管理列表////----------------------------------------------------------------------------------------------------------------------------
int GetGrubAPM(GrubInfo* info)
{
    ConsoleMsg("  APM  table entry : " );

    if ( CHECK_GRUB( info -> flags, 10 ) ){
	  ConsoleMsg("found!\n");
	  return 0;
	}
     else
	  ConsoleMsg("not found!\n");
	  return -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -