All of lore.kernel.org
 help / color / mirror / Atom feed
* suspend command patch
@ 2005-01-03 18:23 Hollis Blanchard
  2005-01-03 21:42 ` Marco Gerards
  0 siblings, 1 reply; 4+ messages in thread
From: Hollis Blanchard @ 2005-01-03 18:23 UTC (permalink / raw)
  To: grub-devel

Now that module support is within reach, this patch implements the Open
Firmware "enter" command, which allows us to get back to the interactive
OF prompt after loading a client program (GRUB).

As discussed previously, the GRUB command name is "suspend", and the
file is in a new commands/ieee1275 directory, as it should work on all
Open Firmware architectures.

I have successfully tested this on my G3. The briQ seems to have an
unfortunate bug: "enter" works, but running "go" to resume GRUB results
in GRUB being re-entered from its entry point. I wonder if this bug
still affects later Codegen releases (i.e the Pegasos)...

-Hollis

2005-01-03  Hollis Blanchard  <hollis@penguinppc.org>

	* boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_enter): New
	function.
	* conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add suspend.mod.
	(suspend_mod_SOURCES): New variable.
	(suspend_mod_CFLAGS): Likewise.
	* include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_enter):
	New prototype.
	* commands/ieee1275/suspend.c: New file.

Index: boot/powerpc/ieee1275/ieee1275.c
===================================================================
RCS file: /cvsroot/grub/grub2/boot/powerpc/ieee1275/ieee1275.c,v
retrieving revision 1.8
diff -u -p -r1.8 ieee1275.c
--- boot/powerpc/ieee1275/ieee1275.c	29 Oct 2004 02:45:14 -0000	1.8
+++ boot/powerpc/ieee1275/ieee1275.c	3 Jan 2005 18:09:19 -0000
@@ -332,6 +332,20 @@ grub_ieee1275_parent (grub_ieee1275_phan
 }
 
 int
+grub_ieee1275_enter (void)
+{
+  struct enter_args {
+    struct grub_ieee1275_common_hdr common;
+  } args;
+
+  INIT_IEEE1275_COMMON (&args.common, "enter", 0, 0);
+
+  if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
+    return -1;
+  return 0;
+}
+
+int
 grub_ieee1275_exit (void)
 {
   struct exit_args {
Index: conf/powerpc-ieee1275.rmk
===================================================================
RCS file: /cvsroot/grub/grub2/conf/powerpc-ieee1275.rmk,v
retrieving revision 1.18
diff -u -p -r1.18 powerpc-ieee1275.rmk
--- conf/powerpc-ieee1275.rmk	28 Dec 2004 22:43:37 -0000	1.18
+++ conf/powerpc-ieee1275.rmk	3 Jan 2005 18:09:21 -0000
@@ -60,7 +60,8 @@ genmoddep_SOURCES = util/genmoddep.c
 # Modules.
 pkgdata_MODULES = _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \
 	hfs.mod jfs.mod normal.mod hello.mod font.mod \
-	boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod pc.mod
+	boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
+	pc.mod suspend.mod
 
 # For fshelp.mod.
 fshelp_mod_SOURCES = fs/fshelp.c
@@ -147,3 +148,7 @@ apple_mod_CFLAGS = $(COMMON_CFLAGS)
 # For pc.mod
 pc_mod_SOURCES = partmap/pc.c
 pc_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For suspend.mod
+suspend_mod_SOURCES = commands/ieee1275/suspend.c
+suspend_mod_CFLAGS = $(COMMON_CFLAGS)
Index: include/grub/powerpc/ieee1275/ieee1275.h
===================================================================
RCS file: /cvsroot/grub/grub2/include/grub/powerpc/ieee1275/ieee1275.h,v
retrieving revision 1.11
diff -u -p -r1.11 ieee1275.h
--- include/grub/powerpc/ieee1275/ieee1275.h	3 Jan 2005 17:44:25 -0000	1.11
+++ include/grub/powerpc/ieee1275/ieee1275.h	3 Jan 2005 18:09:22 -0000
@@ -106,6 +106,7 @@ int EXPORT_FUNC(grub_ieee1275_child) (gr
 				      grub_ieee1275_phandle_t *result);
 int EXPORT_FUNC(grub_ieee1275_parent) (grub_ieee1275_phandle_t node,
 				       grub_ieee1275_phandle_t *result);
+int EXPORT_FUNC(grub_ieee1275_enter) (void);
 int EXPORT_FUNC(grub_ieee1275_exit) (void);
 int EXPORT_FUNC(grub_ieee1275_open) (char *node,
 				     grub_ieee1275_ihandle_t *result);
--- /dev/null	2004-12-18 12:15:49.000000000 -0600
+++ commands/ieee1275/suspend.c	2005-01-03 11:48:59.252239312 -0600
@@ -0,0 +1,64 @@
+/* suspend.c - command to suspend GRUB and return to Open Firmware  */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2005  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 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 GRUB; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/misc.h>
+#include <grub/machine/ieee1275.h>
+
+static grub_err_t
+grub_cmd_suspend (struct grub_arg_list *state, int argc, char **args)
+{
+  (void)state;
+  (void)argc;
+  (void)args;
+
+  grub_printf("Run 'go' to resume GRUB.\n");
+  grub_ieee1275_enter();
+  return 0;
+}
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_suspend_init (void)
+{
+  grub_register_command ("suspend", grub_cmd_suspend, GRUB_COMMAND_FLAG_BOTH,
+			 "suspend", "Return to Open Firmware prompt", 0);
+}
+
+void
+grub_suspend_fini (void)
+{
+  grub_unregister_command ("suspend");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+  (void)mod;			/* To stop warning. */
+  grub_register_command ("suspend", grub_cmd_suspend, GRUB_COMMAND_FLAG_BOTH,
+			 "suspend", "Return to Open Firmware prompt", 0);
+}
+
+GRUB_MOD_FINI
+{
+  grub_unregister_command ("suspend");
+}
+#endif /* ! GRUB_UTIL */



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: suspend command patch
  2005-01-03 18:23 suspend command patch Hollis Blanchard
@ 2005-01-03 21:42 ` Marco Gerards
  2005-01-18  5:19   ` Hollis Blanchard
  0 siblings, 1 reply; 4+ messages in thread
From: Marco Gerards @ 2005-01-03 21:42 UTC (permalink / raw)
  To: The development of GRUB 2

Hollis Blanchard <hollis@penguinppc.org> writes:

> Now that module support is within reach, this patch implements the Open
> Firmware "enter" command, which allows us to get back to the interactive
> OF prompt after loading a client program (GRUB).

Nice!

> As discussed previously, the GRUB command name is "suspend", and the
> file is in a new commands/ieee1275 directory, as it should work on all
> Open Firmware architectures.

Before this can be checked in, I want to wait until Okuji agrees with
this directory layout.

> I have successfully tested this on my G3. The briQ seems to have an
> unfortunate bug: "enter" works, but running "go" to resume GRUB results
> in GRUB being re-entered from its entry point. I wonder if this bug
> still affects later Codegen releases (i.e the Pegasos)...
>
I can test this and I will let you know.

> +static grub_err_t
> +grub_cmd_suspend (struct grub_arg_list *state, int argc, char **args)
> +{
> +  (void)state;
> +  (void)argc;
> +  (void)args;

Better use an attribute for this.

> +  grub_printf("Run 'go' to resume GRUB.\n");
> +  grub_ieee1275_enter();

Can you add a space before the ()?

Thanks,
Marco




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: suspend command patch
  2005-01-03 21:42 ` Marco Gerards
@ 2005-01-18  5:19   ` Hollis Blanchard
  2005-01-18 10:52     ` Yoshinori K. Okuji
  0 siblings, 1 reply; 4+ messages in thread
From: Hollis Blanchard @ 2005-01-18  5:19 UTC (permalink / raw)
  To: The development of GRUB 2

On Jan 3, 2005, at 3:42 PM, Marco Gerards wrote:

> Hollis Blanchard <hollis@penguinppc.org> writes:
>
>> As discussed previously, the GRUB command name is "suspend", and the
>> file is in a new commands/ieee1275 directory, as it should work on all
>> Open Firmware architectures.
>
> Before this can be checked in, I want to wait until Okuji agrees with
> this directory layout.

(I forwarded the original mail and this reply to Okuji, as the mail had 
been lost.)

Okuji, do you have any objections to this?

-Hollis




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: suspend command patch
  2005-01-18  5:19   ` Hollis Blanchard
@ 2005-01-18 10:52     ` Yoshinori K. Okuji
  0 siblings, 0 replies; 4+ messages in thread
From: Yoshinori K. Okuji @ 2005-01-18 10:52 UTC (permalink / raw)
  To: The development of GRUB 2

On Tuesday 18 January 2005 06:19, Hollis Blanchard wrote:
> Okuji, do you have any objections to this?

Sorry, I forgot to send a reply. I have no objection at the moment, but 
I feel that it will be necessary to restructure the source tree some 
day.

Okuji



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-01-18 11:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-03 18:23 suspend command patch Hollis Blanchard
2005-01-03 21:42 ` Marco Gerards
2005-01-18  5:19   ` Hollis Blanchard
2005-01-18 10:52     ` Yoshinori K. Okuji

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.