From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Iiy8V-0005Jp-8C for mharc-grub-devel@gnu.org; Fri, 19 Oct 2007 16:07:59 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Iiy8U-0005Jj-AP for grub-devel@gnu.org; Fri, 19 Oct 2007 16:07:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Iiy8T-0005JX-N5 for grub-devel@gnu.org; Fri, 19 Oct 2007 16:07:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iiy8T-0005JU-KA for grub-devel@gnu.org; Fri, 19 Oct 2007 16:07:57 -0400 Received: from aybabtu.com ([69.60.117.155]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Iiy8T-0007Z7-0d for grub-devel@gnu.org; Fri, 19 Oct 2007 16:07:57 -0400 Received: from [192.168.10.6] (helo=thorin) by aybabtu.com with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1Iiy8R-0006Kx-2R for grub-devel@gnu.org; Fri, 19 Oct 2007 22:07:56 +0200 Received: from rmh by thorin with local (Exim 4.63) (envelope-from ) id 1Iiy7y-0003A7-Eh for grub-devel@gnu.org; Fri, 19 Oct 2007 22:07:26 +0200 Date: Fri, 19 Oct 2007 22:07:26 +0200 From: Robert Millan To: grub-devel@gnu.org Message-ID: <20071019200726.GA12105@thorin> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="IS0zKkzwUGydFO0o" Content-Disposition: inline Organization: free as in freedom X-Message-Flag: Microsoft discourages use of Outlook. X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.13 (2006-08-11) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Subject: [PATCH] convert biosdisk into a module X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Oct 2007 20:07:58 -0000 --IS0zKkzwUGydFO0o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline This patch converts biosdisk into a module. In the future, maybe we can also move some of the grub_biosdisk_* functions in kern/i386/pc/startup.S into this module, but it seems the build system reacts very adversely to modules containing standalone assembly files, so I fixed one bug (see followup) and gave up. -- Robert Millan I know my rights; I want my phone call! What use is a phone call, if you are unable to speak? (as seen on /.) --IS0zKkzwUGydFO0o Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="biosdisk.diff" 2007-10-19 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Remove `disk/i386/pc/biosdisk.c'. (pkgdata_MODULES): Add `biosdisk.mod'. (biosdisk_mod_SOURCES, biosdisk_mod_CFLAGS, biosdisk_mod_LDFLAGS): New variables. * disk/i386/pc/biosdisk.c: Include `'. (grub_biosdisk_init): Replace with ... (GRUB_MOD_INIT(biosdisk)): ... this. (grub_biosdisk_fini): Replace with ... (GRUB_MOD_FINI(biosdisk)): ... this. * kern/i386/pc/init.c: Remove `'. (grub_machine_init): Remove call to grub_biosdisk_init(). (grub_machine_fini): Remove call to grub_machine_fini(). * util/i386/pc/grub-install.in (modules): Add `biosdisk'. diff -urp grub2/conf/i386-pc.rmk grub2.biosdisk/conf/i386-pc.rmk --- grub2/conf/i386-pc.rmk 2007-10-01 17:50:34.000000000 +0200 +++ grub2.biosdisk/conf/i386-pc.rmk 2007-10-19 22:00:34.000000000 +0200 @@ -27,7 +27,7 @@ kernel_img_SOURCES = kern/i386/pc/startu kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \ kern/misc.c kern/mm.c kern/loader.c kern/rescue.c kern/term.c \ kern/i386/dl.c kern/i386/pc/init.c kern/parser.c kern/partition.c \ - kern/env.c disk/i386/pc/biosdisk.c \ + kern/env.c \ term/i386/pc/console.c \ symlist.c kernel_img_HEADERS = arg.h boot.h cache.h device.h disk.h dl.h elf.h elfload.h \ @@ -127,11 +127,16 @@ grub_install_SOURCES = util/i386/pc/grub grub_mkrescue_SOURCES = util/i386/pc/grub-mkrescue.in # Modules. -pkgdata_MODULES = _chain.mod _linux.mod linux.mod normal.mod \ +pkgdata_MODULES = biosdisk.mod _chain.mod _linux.mod linux.mod normal.mod \ _multiboot.mod chain.mod multiboot.mod reboot.mod halt.mod \ vbe.mod vbetest.mod vbeinfo.mod video.mod gfxterm.mod \ videotest.mod play.mod bitmap.mod tga.mod cpuid.mod serial.mod +# For biosdisk.mod. +biosdisk_mod_SOURCES = disk/i386/pc/biosdisk.c +biosdisk_mod_CFLAGS = $(COMMON_CFLAGS) +biosdisk_mod_LDFLAGS = $(COMMON_LDFLAGS) + # For _chain.mod. _chain_mod_SOURCES = loader/i386/pc/chainloader.c _chain_mod_CFLAGS = $(COMMON_CFLAGS) diff -urp grub2/disk/i386/pc/biosdisk.c grub2.biosdisk/disk/i386/pc/biosdisk.c --- grub2/disk/i386/pc/biosdisk.c 2007-07-22 01:32:20.000000000 +0200 +++ grub2.biosdisk/disk/i386/pc/biosdisk.c 2007-10-19 22:00:34.000000000 +0200 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -311,14 +312,12 @@ static struct grub_disk_dev grub_biosdis .next = 0 }; -void -grub_biosdisk_init (void) +GRUB_MOD_INIT(biosdisk) { grub_disk_dev_register (&grub_biosdisk_dev); } -void -grub_biosdisk_fini (void) +GRUB_MOD_FINI(biosdisk) { grub_disk_dev_unregister (&grub_biosdisk_dev); } diff -urp grub2/kern/i386/pc/init.c grub2.biosdisk/kern/i386/pc/init.c --- grub2/kern/i386/pc/init.c 2007-09-07 23:55:26.000000000 +0200 +++ grub2.biosdisk/kern/i386/pc/init.c 2007-10-19 22:00:34.000000000 +0200 @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -226,9 +225,6 @@ grub_machine_init (void) if (! grub_os_area_addr) grub_fatal ("no upper memory"); - - /* The memory system was initialized, thus register built-in devices. */ - grub_biosdisk_init (); } void @@ -241,7 +237,6 @@ grub_machine_set_prefix (void) void grub_machine_fini (void) { - grub_biosdisk_fini (); grub_console_fini (); } diff -urp grub2/util/i386/pc/grub-install.in grub2.biosdisk/util/i386/pc/grub-install.in --- grub2/util/i386/pc/grub-install.in 2007-07-22 01:32:32.000000000 +0200 +++ grub2.biosdisk/util/i386/pc/grub-install.in 2007-10-19 22:00:34.000000000 +0200 @@ -224,7 +224,7 @@ fi partmap_module=`$grub_probe --target=partmap --device-map=${device_map} ${grubdir} 2> /dev/null` # _chain is often useful -modules="$modules $fs_module $partmap_module _chain" +modules="$modules $fs_module $partmap_module biosdisk _chain" $grub_mkimage --output=${grubdir}/core.img --prefix=`make_system_path_relative_to_its_root ${grubdir}` $modules || exit 1 --IS0zKkzwUGydFO0o--