convert biosdisk into a module
PATCH 1/1 convert biosdisk into a module
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.
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.)
2007-10-19 Robert Millan <[email protected]>
* 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/dl.h>'. (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/biosdisk.h>'. (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'.
conf/i386-pc.rmk +7 -2
@@ -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)
disk/i386/pc/biosdisk.c +3 -4
@@ -19,6 +19,7 @@#include <grub/machine/biosdisk.h> #include <grub/machine/memory.h> #include <grub/disk.h> +#include <grub/dl.h> #include <grub/mm.h> #include <grub/types.h> #include <grub/misc.h>
@@ -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); }
kern/i386/pc/init.c +0 -5
@@ -21,7 +21,6 @@#include <grub/machine/init.h> #include <grub/machine/memory.h> #include <grub/machine/console.h> -#include <grub/machine/biosdisk.h> #include <grub/machine/kernel.h> #include <grub/types.h> #include <grub/err.h>
@@ -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 (); }
util/i386/pc/grub-install.in +1 -1
@@ -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
Committed.
Quoted 138 lines · Robert Millan
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.Sinto 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.Signature · 26 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.) 2007-10-19 Robert Millan <[email protected]> * 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/dl.h>'. (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/biosdisk.h>'. (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.rmkconf/i386-pc.rmk +7
-2@@ -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.cgrub2.biosdisk/disk/i386/pc/biosdisk.cdisk/i386/pc/biosdisk.c +3
-4@@ -19,6 +19,7 @@#include <grub/machine/biosdisk.h> #include <grub/machine/memory.h> #include <grub/disk.h> +#include <grub/dl.h> #include <grub/mm.h> #include <grub/types.h> #include <grub/misc.h> @@ -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.cgrub2.biosdisk/kern/i386/pc/init.ckern/i386/pc/init.c +0
-5@@ -21,7 +21,6 @@#include <grub/machine/init.h> #include <grub/machine/memory.h> #include <grub/machine/console.h> -#include <grub/machine/biosdisk.h> #include <grub/machine/kernel.h> #include <grub/types.h> #include <grub/err.h> @@ -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
util/i386/pc/grub-install.in +1
-1@@ -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_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.)