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

📄 mb_info.h

📁 i386的bootloader源码grub
💻 H
字号:
/* *  GRUB  --  GRand Unified Bootloader *  Copyright (C) 2000,2003  Free Software Foundation, Inc. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* *  The structure type "mod_list" is used by the "multiboot_info" structure. */struct mod_list{  /* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */  unsigned long mod_start;  unsigned long mod_end;    /* Module command line */  unsigned long cmdline;    /* padding to take it to 16 bytes (must be zero) */  unsigned long pad;};/* *  INT-15, AX=E820 style "AddressRangeDescriptor" *  ...with a "size" parameter on the front which is the structure size - 4, *  pointing to the next one, up until the full buffer length of the memory *  map has been reached. */struct AddrRangeDesc{  unsigned long size;  unsigned long long BaseAddr;  unsigned long long Length;  unsigned long Type;    /* unspecified optional padding... */} __attribute__ ((packed));/* usable memory "Type", all others are reserved.  */#define MB_ARD_MEMORY		1/* Drive Info structure.  */struct drive_info{  /* The size of this structure.  */  unsigned long size;  /* The BIOS drive number.  */  unsigned char drive_number;  /* The access mode (see below).  */  unsigned char drive_mode;  /* The BIOS geometry.  */  unsigned short drive_cylinders;  unsigned char drive_heads;  unsigned char drive_sectors;  /* The array of I/O ports used for the drive.  */  unsigned short drive_ports[0];};/* Drive Mode.  */#define MB_DI_CHS_MODE		0#define MB_DI_LBA_MODE		1/* APM BIOS info.  */struct apm_info{  unsigned short version;  unsigned short cseg;  unsigned long offset;  unsigned short cseg_16;  unsigned short dseg_16;  unsigned short cseg_len;  unsigned short cseg_16_len;  unsigned short dseg_16_len;};/* *  MultiBoot Info description * *  This is the struct passed to the boot image.  This is done by placing *  its address in the EAX register. */struct multiboot_info{  /* MultiBoot info version number */  unsigned long flags;    /* Available memory from BIOS */  unsigned long mem_lower;  unsigned long mem_upper;    /* "root" partition */  unsigned long boot_device;    /* Kernel command line */  unsigned long cmdline;    /* Boot-Module list */  unsigned long mods_count;  unsigned long mods_addr;    union  {    struct    {      /* (a.out) Kernel symbol table info */      unsigned long tabsize;      unsigned long strsize;      unsigned long addr;      unsigned long pad;    }    a;        struct    {      /* (ELF) Kernel section header table */      unsigned long num;      unsigned long size;      unsigned long addr;      unsigned long shndx;    }    e;  }  syms;    /* Memory Mapping buffer */  unsigned long mmap_length;  unsigned long mmap_addr;    /* Drive Info buffer */  unsigned long drives_length;  unsigned long drives_addr;    /* ROM configuration table */  unsigned long config_table;    /* Boot Loader Name */  unsigned long boot_loader_name;  /* APM table */  unsigned long apm_table;  /* Video */  unsigned long vbe_control_info;  unsigned long vbe_mode_info;  unsigned short vbe_mode;  unsigned short vbe_interface_seg;  unsigned short vbe_interface_off;  unsigned short vbe_interface_len;};/* *  Flags to be set in the 'flags' parameter above *//* is there basic lower/upper memory information? */#define MB_INFO_MEMORY			0x00000001/* is there a boot device set? */#define MB_INFO_BOOTDEV			0x00000002/* is the command-line defined? */#define MB_INFO_CMDLINE			0x00000004/* are there modules to do something with? */#define MB_INFO_MODS			0x00000008/* These next two are mutually exclusive *//* is there a symbol table loaded? */#define MB_INFO_AOUT_SYMS		0x00000010/* is there an ELF section header table? */#define MB_INFO_ELF_SHDR		0x00000020/* is there a full memory map? */#define MB_INFO_MEM_MAP			0x00000040/* Is there drive info?  */#define MB_INFO_DRIVE_INFO		0x00000080/* Is there a config table?  */#define MB_INFO_CONFIG_TABLE		0x00000100/* Is there a boot loader name?  */#define MB_INFO_BOOT_LOADER_NAME	0x00000200/* Is there a APM table?  */#define MB_INFO_APM_TABLE		0x00000400/* Is there video information?  */#define MB_INFO_VIDEO_INFO		0x00000800/* *  The following value must be present in the EAX register. */#define MULTIBOOT_VALID			0x2BADB002

⌨️ 快捷键说明

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