[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2117] 2009-04-15 Vladimir Serbinenko <address@hidden>
From: |
Vladimir Serbinenko |
Subject: |
[2117] 2009-04-15 Vladimir Serbinenko <address@hidden> |
Date: |
Wed, 15 Apr 2009 12:45:50 +0000 |
Revision: 2117
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2117
Author: phcoder
Date: 2009-04-15 12:45:50 +0000 (Wed, 15 Apr 2009)
Log Message:
-----------
2009-04-15 Vladimir Serbinenko <address@hidden>
Move loader out of the kernel
* kern/loader.c: moved to ...
* commands/boot.c: ... moved here
* commands/minicmd.c (grub_mini_cmd_boot): moved to ...
* commands/boot.c (grub_cmd_boot): moved here. All users updated
* include/grub/kernel.h (grub_machine_fini): export
* include/grub/loader.h (grub_loader_is_loaded): update declaration
(grub_loader_set): likewise
(grub_loader_unset): likewise
(grub_loader_boot): likewise
* conf/common.rmk: new module boot.mod
(pkglib_MODULES): add boot.mod
* conf/i386-coreboot.rmk (kernel_elf_SOURCES): remove kern/loader.c
(grub_emu_SOURCES): likewise
* conf/i386-efi.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
* conf/i386-ieee1275.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
* conf/i386-pc.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
* conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
* conf/sparcs64-ieee1275.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
* conf/x86_64-efi.rmk (kernel_elf_SOURCES): likewise
(grub_emu_SOURCES): likewise
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/commands/boot.c
trunk/grub2/commands/minicmd.c
trunk/grub2/conf/common.rmk
trunk/grub2/conf/i386-coreboot.rmk
trunk/grub2/conf/i386-efi.rmk
trunk/grub2/conf/i386-ieee1275.rmk
trunk/grub2/conf/i386-pc.rmk
trunk/grub2/conf/powerpc-ieee1275.rmk
trunk/grub2/conf/sparc64-ieee1275.rmk
trunk/grub2/conf/x86_64-efi.rmk
trunk/grub2/include/grub/kernel.h
trunk/grub2/include/grub/loader.h
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/ChangeLog 2009-04-15 12:45:50 UTC (rev 2117)
@@ -1,3 +1,33 @@
+2009-04-15 Vladimir Serbinenko <address@hidden>
+
+ Move loader out of the kernel
+
+ * kern/loader.c: moved to ...
+ * commands/boot.c: ... moved here
+ * commands/minicmd.c (grub_mini_cmd_boot): moved to ...
+ * commands/boot.c (grub_cmd_boot): moved here. All users updated
+ * include/grub/kernel.h (grub_machine_fini): export
+ * include/grub/loader.h (grub_loader_is_loaded): update declaration
+ (grub_loader_set): likewise
+ (grub_loader_unset): likewise
+ (grub_loader_boot): likewise
+ * conf/common.rmk: new module boot.mod
+ (pkglib_MODULES): add boot.mod
+ * conf/i386-coreboot.rmk (kernel_elf_SOURCES): remove kern/loader.c
+ (grub_emu_SOURCES): likewise
+ * conf/i386-efi.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+ * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+ * conf/i386-pc.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+ * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+ * conf/sparcs64-ieee1275.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+ * conf/x86_64-efi.rmk (kernel_elf_SOURCES): likewise
+ (grub_emu_SOURCES): likewise
+
2009-04-15 Vladimir Serbinenko <address@hidden>
use grub_lltoa instead of grub_itoa and grub_ltoa for all purposes
Modified: trunk/grub2/commands/boot.c
===================================================================
--- trunk/grub2/commands/boot.c 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/commands/boot.c 2009-04-15 12:45:50 UTC (rev 2117)
@@ -1,7 +1,7 @@
/* boot.c - command to boot an operating system */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2003,2005,2007 Free Software Foundation, Inc.
+ * Copyright (C) 2002,2003,2004,2005,2007,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
@@ -21,29 +21,82 @@
#include <grub/dl.h>
#include <grub/misc.h>
#include <grub/loader.h>
+#include <grub/kernel.h>
-static grub_err_t
-grub_cmd_boot (struct grub_arg_list *state __attribute__ ((unused)),
- int argc, char **args __attribute__ ((unused)))
+static grub_err_t (*grub_loader_boot_func) (void);
+static grub_err_t (*grub_loader_unload_func) (void);
+static int grub_loader_noreturn;
+
+static int grub_loader_loaded;
+
+int
+grub_loader_is_loaded (void)
{
- if (argc)
- return grub_error (GRUB_ERR_BAD_ARGUMENT, "too many arguments");
+ return grub_loader_loaded;
+}
+
+void
+grub_loader_set (grub_err_t (*boot) (void),
+ grub_err_t (*unload) (void),
+ int noreturn)
+{
+ if (grub_loader_loaded && grub_loader_unload_func)
+ grub_loader_unload_func ();
- grub_loader_boot ();
+ grub_loader_boot_func = boot;
+ grub_loader_unload_func = unload;
+ grub_loader_noreturn = noreturn;
- return 0;
+ grub_loader_loaded = 1;
}
+void
+grub_loader_unset(void)
+{
+ if (grub_loader_loaded && grub_loader_unload_func)
+ grub_loader_unload_func ();
+
+ grub_loader_boot_func = 0;
+ grub_loader_unload_func = 0;
+
+ grub_loader_loaded = 0;
+}
+
+grub_err_t
+grub_loader_boot (void)
+{
+ if (! grub_loader_loaded)
+ return grub_error (GRUB_ERR_NO_KERNEL, "no loaded kernel");
+
+ if (grub_loader_noreturn)
+ grub_machine_fini ();
+
+ return (grub_loader_boot_func) ();
+}
+
+
+/* boot */
+static grub_err_t
+grub_cmd_boot (struct grub_command *cmd __attribute__ ((unused)),
+ int argc __attribute__ ((unused)),
+ char *argv[] __attribute__ ((unused)))
+{
+ return grub_loader_boot ();
+}
+
+static grub_command_t cmd_boot;
+
GRUB_MOD_INIT(boot)
{
(void) mod; /* To stop warning. */
- grub_register_command ("boot", grub_cmd_boot, GRUB_COMMAND_FLAG_BOTH,
- "boot", "Boot an operating system.", 0);
+ cmd_boot =
+ grub_register_command ("boot", grub_cmd_boot,
+ 0, "boot an operating system");
}
GRUB_MOD_FINI(boot)
{
- grub_unregister_command ("boot");
+ grub_unregister_command (cmd_boot);
}
Modified: trunk/grub2/commands/minicmd.c
===================================================================
--- trunk/grub2/commands/minicmd.c 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/commands/minicmd.c 2009-04-15 12:45:50 UTC (rev 2117)
@@ -1,7 +1,7 @@
/* minicmd.c - commands for the rescue mode */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2003,2005,2006,2007 Free Software Foundation, Inc.
+ * Copyright (C) 2003,2005,2006,2007,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
@@ -28,15 +28,6 @@
#include <grub/loader.h>
#include <grub/command.h>
-/* boot */
-static grub_err_t
-grub_mini_cmd_boot (struct grub_command *cmd __attribute__ ((unused)),
- int argc __attribute__ ((unused)),
- char *argv[] __attribute__ ((unused)))
-{
- return grub_loader_boot ();
-}
-
/* cat FILE */
static grub_err_t
grub_mini_cmd_cat (struct grub_command *cmd __attribute__ ((unused)),
@@ -345,16 +336,13 @@
return 0;
}
-static grub_command_t cmd_boot, cmd_cat, cmd_help, cmd_root;
+static grub_command_t cmd_cat, cmd_help, cmd_root;
static grub_command_t cmd_dump, cmd_rmmod, cmd_lsmod, cmd_exit;
GRUB_MOD_INIT(minicmd)
{
(void) mod; /* To stop warning. */
- cmd_boot =
- grub_register_command ("boot", grub_mini_cmd_boot,
- 0, "boot an operating system");
cmd_cat =
grub_register_command ("cat", grub_mini_cmd_cat,
"cat FILE", "show the contents of a file");
@@ -380,7 +368,6 @@
GRUB_MOD_FINI(minicmd)
{
- grub_unregister_command (cmd_boot);
grub_unregister_command (cmd_cat);
grub_unregister_command (cmd_help);
grub_unregister_command (cmd_root);
Modified: trunk/grub2/conf/common.rmk
===================================================================
--- trunk/grub2/conf/common.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/common.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -343,8 +343,13 @@
loopback.mod fs_uuid.mod configfile.mod echo.mod \
terminfo.mod test.mod blocklist.mod hexdump.mod \
read.mod sleep.mod loadenv.mod crc.mod parttool.mod \
- pcpart.mod memrw.mod
+ pcpart.mod memrw.mod boot.mod
+# For boot.mod.
+boot_mod_SOURCES = commands/boot.c
+boot_mod_CFLAGS = $(COMMON_CFLAGS)
+boot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
# For minicmd.mod.
minicmd_mod_SOURCES = commands/minicmd.c
minicmd_mod_CFLAGS = $(COMMON_CFLAGS)
Modified: trunk/grub2/conf/i386-coreboot.rmk
===================================================================
--- trunk/grub2/conf/i386-coreboot.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/i386-coreboot.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -16,7 +16,7 @@
kern/i386/multiboot_mmap.c \
kern/main.c kern/device.c \
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/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
kern/i386/dl.c kern/parser.c kern/partition.c \
kern/i386/tsc.c kern/i386/pit.c \
@@ -73,7 +73,7 @@
kern/err.c kern/list.c kern/handler.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
normal/execute.c kern/file.c kern/fs.c normal/lexer.c \
- kern/loader.c kern/main.c kern/misc.c kern/parser.c \
+ commands/boot.c kern/main.c kern/misc.c kern/parser.c \
grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \
lib/arg.c normal/cmdline.c normal/command.c normal/function.c\
normal/handler.c \
Modified: trunk/grub2/conf/i386-efi.rmk
===================================================================
--- trunk/grub2/conf/i386-efi.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/i386-efi.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -50,7 +50,7 @@
kern/err.c kern/list.c kern/handler.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
normal/execute.c kern/file.c kern/fs.c normal/lexer.c \
- kern/loader.c kern/main.c kern/misc.c kern/parser.c \
+ commands/boot.c kern/main.c kern/misc.c kern/parser.c \
grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \
lib/arg.c normal/cmdline.c normal/command.c normal/datetime.c \
normal/function.c \
@@ -87,7 +87,7 @@
kernel_mod_EXPORTS = no
kernel_mod_SOURCES = kern/i386/efi/startup.S kern/main.c kern/device.c \
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/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/i386/dl.c kern/i386/efi/init.c kern/parser.c kern/partition.c \
kern/env.c symlist.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c \
term/efi/console.c disk/efi/efidisk.c \
Modified: trunk/grub2/conf/i386-ieee1275.rmk
===================================================================
--- trunk/grub2/conf/i386-ieee1275.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/i386-ieee1275.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -17,7 +17,7 @@
kern/ieee1275/cmain.c kern/ieee1275/openfw.c \
kern/main.c kern/device.c \
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/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/i386/dl.c kern/parser.c kern/partition.c \
kern/env.c \
kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
@@ -73,7 +73,7 @@
kern/err.c kern/list.c kern/handler.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
normal/execute.c kern/file.c kern/fs.c normal/lexer.c \
- kern/loader.c kern/main.c kern/misc.c kern/parser.c \
+ commands/boot.c kern/main.c kern/misc.c kern/parser.c \
grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \
lib/arg.c normal/cmdline.c normal/command.c normal/datetime.c \
normal/function.c normal/handler.c \
Modified: trunk/grub2/conf/i386-pc.rmk
===================================================================
--- trunk/grub2/conf/i386-pc.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/i386-pc.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -46,7 +46,7 @@
# For kernel.img.
kernel_img_SOURCES = kern/i386/pc/startup.S kern/main.c kern/device.c \
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/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
kern/i386/dl.c kern/i386/pc/init.c kern/i386/pc/mmap.c \
kern/parser.c kern/partition.c \
@@ -132,7 +132,7 @@
kern/err.c kern/list.c kern/handler.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
normal/execute.c kern/file.c kern/fs.c normal/lexer.c \
- kern/loader.c kern/main.c kern/misc.c kern/parser.c \
+ commands/boot.c kern/main.c kern/misc.c kern/parser.c \
grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \
lib/arg.c normal/cmdline.c normal/command.c normal/datetime.c \
normal/function.c normal/handler.c \
Modified: trunk/grub2/conf/powerpc-ieee1275.rmk
===================================================================
--- trunk/grub2/conf/powerpc-ieee1275.rmk 2009-04-15 12:33:46 UTC (rev
2116)
+++ trunk/grub2/conf/powerpc-ieee1275.rmk 2009-04-15 12:45:50 UTC (rev
2117)
@@ -53,7 +53,7 @@
\
io/gzio.c \
kern/device.c kern/disk.c kern/dl.c kern/elf.c kern/env.c \
- kern/err.c kern/file.c kern/fs.c kern/loader.c kern/main.c \
+ kern/err.c kern/file.c kern/fs.c commands/boot.c kern/main.c \
kern/misc.c kern/parser.c kern/partition.c kern/rescue.c \
kern/term.c kern/list.c kern/handler.c fs/fshelp.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
@@ -81,7 +81,7 @@
kernel_elf_SOURCES = kern/powerpc/ieee1275/startup.S kern/ieee1275/cmain.c \
kern/ieee1275/ieee1275.c kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/err.c kern/file.c kern/fs.c \
- kern/misc.c kern/mm.c kern/loader.c kern/rescue.c kern/term.c \
+ kern/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
kern/ieee1275/init.c \
kern/ieee1275/mmap.c \
Modified: trunk/grub2/conf/sparc64-ieee1275.rmk
===================================================================
--- trunk/grub2/conf/sparc64-ieee1275.rmk 2009-04-15 12:33:46 UTC (rev
2116)
+++ trunk/grub2/conf/sparc64-ieee1275.rmk 2009-04-15 12:45:50 UTC (rev
2117)
@@ -53,7 +53,7 @@
# grub_script.tab.c \
# io/gzio.c \
# kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \
-# kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c \
+# kern/file.c kern/fs.c commands/boot.c kern/main.c kern/misc.c \
# kern/parser.c kern/partition.c kern/rescue.c kern/term.c \
# kern/list.c kern/handler.c \
# normal/arg.c normal/cmdline.c normal/command.c normal/datetime.c \
@@ -73,7 +73,7 @@
kernel_elf_SOURCES = kern/sparc64/ieee1275/init.c kern/ieee1275/ieee1275.c \
kern/main.c kern/device.c 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/fs.c kern/err.c kern/misc.c kern/mm.c \
kern/rescue.c kern/term.c term/ieee1275/ofconsole.c \
kern/sparc64/ieee1275/openfw.c disk/ieee1275/ofdisk.c \
kern/partition.c kern/env.c kern/sparc64/dl.c symlist.c \
Modified: trunk/grub2/conf/x86_64-efi.rmk
===================================================================
--- trunk/grub2/conf/x86_64-efi.rmk 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/conf/x86_64-efi.rmk 2009-04-15 12:45:50 UTC (rev 2117)
@@ -52,7 +52,7 @@
kern/err.c kern/list.c kern/handler.c \
kern/command.c kern/corecmd.c commands/extcmd.c \
normal/execute.c kern/file.c kern/fs.c normal/lexer.c \
- kern/loader.c kern/main.c kern/misc.c kern/parser.c \
+ commands/boot.c kern/main.c kern/misc.c kern/parser.c \
grub_script.tab.c kern/partition.c kern/rescue.c kern/term.c \
lib/arg.c normal/cmdline.c normal/command.c normal/function.c\
normal/completion.c normal/datetime.c normal/context.c \
@@ -90,7 +90,7 @@
kernel_mod_SOURCES = kern/x86_64/efi/startup.S kern/x86_64/efi/callwrap.S \
kern/main.c kern/device.c \
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/misc.c kern/mm.c kern/rescue.c kern/term.c \
kern/x86_64/dl.c kern/i386/efi/init.c kern/parser.c kern/partition.c \
kern/env.c symlist.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c \
kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
Modified: trunk/grub2/include/grub/kernel.h
===================================================================
--- trunk/grub2/include/grub/kernel.h 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/include/grub/kernel.h 2009-04-15 12:45:50 UTC (rev 2117)
@@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002,2005,2006,2007,2008 Free Software Foundation, Inc.
+ * Copyright (C) 2002,2005,2006,2007,2008,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
@@ -64,7 +64,7 @@
void grub_machine_init (void);
/* The machine-specific finalization. */
-void grub_machine_fini (void);
+void EXPORT_FUNC(grub_machine_fini) (void);
/* The machine-specific prefix initialization. */
void grub_machine_set_prefix (void);
Modified: trunk/grub2/include/grub/loader.h
===================================================================
--- trunk/grub2/include/grub/loader.h 2009-04-15 12:33:46 UTC (rev 2116)
+++ trunk/grub2/include/grub/loader.h 2009-04-15 12:45:50 UTC (rev 2117)
@@ -1,7 +1,7 @@
/* loader.h - OS loaders */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002,2003,2004,2006,2007 Free Software Foundation, Inc.
+ * Copyright (C) 2002,2003,2004,2006,2007,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
@@ -26,19 +26,19 @@
#include <grub/types.h>
/* Check if a loader is loaded. */
-int EXPORT_FUNC(grub_loader_is_loaded) (void);
+int grub_loader_is_loaded (void);
/* Set loader functions. NORETURN must be set to true, if BOOT won't return
to the original state. */
-void EXPORT_FUNC(grub_loader_set) (grub_err_t (*boot) (void),
- grub_err_t (*unload) (void),
- int noreturn);
+void grub_loader_set (grub_err_t (*boot) (void),
+ grub_err_t (*unload) (void),
+ int noreturn);
/* Unset current loader, if any. */
-void EXPORT_FUNC(grub_loader_unset) (void);
+void grub_loader_unset (void);
/* Call the boot hook in current loader. This may or may not return,
depending on the setting by grub_loader_set. */
-grub_err_t EXPORT_FUNC(grub_loader_boot) (void);
+grub_err_t grub_loader_boot (void);
#endif /* ! GRUB_LOADER_HEADER */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2117] 2009-04-15 Vladimir Serbinenko <address@hidden>,
Vladimir Serbinenko <=