2009-06-11 Vladimir Serbinenko <phcoder@gmail.com>
Drivemap fixes * commands/i386/pc/drivemap.c (grub_get_root_biosnumber_drivemap): new function (grub_get_root_biosnumber_saved): new variable (GRUB_MOD_INIT): register grub_get_root_biosnumber_drivemap (GRUB_MOD_FINI): unregister grub_get_root_biosnumber_drivemap * commands/i386/pc/drivemap_int13h.S (grub_drivemap_handler): restore %dx after the call if necessary * conf/common.rmk (pkglib_MODULES): remove boot.mod (boot_mod_SOURCES): remove (boot_mod_CFLAGS): remove (boot_mod_LDFLAGS): remove * conf/i386-coreboot.rmk (pkglib_MODULES): add boot.mod (boot_mod_SOURCES): new variable (boot_mod_CFLAGS): likewise (boot_mod_LDFLAGS): likewise * conf/i386-efi.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise * conf/x86_64-efi.rmk: likewise * include/grub/i386/pc/biosnum.h: new file * lib/i386/pc/biosnum.c: likewise * loader/i386/bsd.c (grub_bsd_get_device): use grub_get_root_biosnumber * loader/i386/multiboot.c (grub_multiboot_get_bootdev): likewise * loader/i386/pc/chainloader.c (grub_chainloader_cmd): likewise
This commit is contained in:
		
							parent
							
								
									5ac35b35b0
								
							
						
					
					
						commit
						63963d17d0
					
				
					 16 changed files with 269 additions and 67 deletions
				
			
		
							
								
								
									
										46
									
								
								lib/i386/pc/biosnum.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								lib/i386/pc/biosnum.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| /*
 | ||||
|  *  GRUB  --  GRand Unified Bootloader | ||||
|  *  Copyright (C) 2009  Free Software Foundation, Inc. | ||||
|  * | ||||
|  *  GRUB 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 3 of the License, or | ||||
|  *  (at your option) any later version. | ||||
|  * | ||||
|  *  GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| 
 | ||||
| #include <grub/env.h> | ||||
| #include <grub/misc.h> | ||||
| #include <grub/disk.h> | ||||
| 
 | ||||
| static int | ||||
| grub_get_root_biosnumber_default (void) | ||||
| { | ||||
|   char *biosnum; | ||||
|   int ret = -1; | ||||
|   grub_device_t dev; | ||||
| 
 | ||||
|   biosnum = grub_env_get ("biosnum"); | ||||
| 
 | ||||
|   if (biosnum) | ||||
|     return grub_strtoul (biosnum, 0, 0); | ||||
| 
 | ||||
|   dev = grub_device_open (0); | ||||
|   if (dev && dev->disk && dev->disk->dev  | ||||
|       && dev->disk->dev->id == GRUB_DISK_DEVICE_BIOSDISK_ID) | ||||
|     ret = (int) dev->disk->id; | ||||
| 
 | ||||
|   if (dev) | ||||
|     grub_device_close (dev); | ||||
| 
 | ||||
|   return ret; | ||||
| } | ||||
| 
 | ||||
| int (*grub_get_root_biosnumber) (void) = grub_get_root_biosnumber_default; | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue