aboutsummaryrefslogtreecommitdiff
path: root/boot/boot_script.h
diff options
context:
space:
mode:
Diffstat (limited to 'boot/boot_script.h')
-rw-r--r--boot/boot_script.h40
1 files changed, 33 insertions, 7 deletions
diff --git a/boot/boot_script.h b/boot/boot_script.h
index d2db1a14..62458693 100644
--- a/boot/boot_script.h
+++ b/boot/boot_script.h
@@ -1,5 +1,8 @@
/* Definitions for boot script parser for Mach. */
+#ifndef _boot_script_h
+#define _boot_script_h
+
/* Written by Shantanu Goel (goel@cs.columbia.edu). */
/* Error codes returned by boot_script_parse_line()
@@ -18,15 +21,19 @@
#define VAL_NONE 0 /* none -- function runs at exec time */
#define VAL_STR 1 /* string */
#define VAL_PORT 2 /* port */
+#define VAL_TASK 3 /* task port */
/* This structure describes a command. */
struct cmd
{
+ /* Cookie passed in to boot_script_parse_line. */
+ void *hook;
+
/* Path of executable. */
char *path;
/* Task port. */
- mach_port_t task;
+ task_t task;
/* Argument list. */
struct arg **args;
@@ -48,19 +55,37 @@ struct cmd
};
+/* The user must define these functions, we work like malloc and free. */
+void *boot_script_malloc (unsigned int);
+void boot_script_free (void *, unsigned int);
+
/* The user must define this function. Load the image of the
executable specified by PATH in TASK. Create a thread
in TASK and point it at the executable's entry point. Initialize
TASK's stack with argument vector ARGV of length ARGC whose
strings are STRINGS. STRINGS has length STRINGLEN.
Return 0 for success, non-zero otherwise. */
-int boot_script_exec_cmd (mach_port_t task, char *path, int argc,
+int boot_script_exec_cmd (void *hook,
+ task_t task, char *path, int argc,
char **argv, char *strings, int stringlen);
/* The user must define this function. Load the contents of FILE
into a fresh anonymous memory object and return the memory object port. */
mach_port_t boot_script_read_file (const char *file);
+/* The user must define this functions to perform the corresponding
+ Mach task manipulations. */
+int boot_script_task_create (struct cmd *); /* task_create + task_suspend */
+int boot_script_task_resume (struct cmd *);
+int boot_script_prompt_task_resume (struct cmd *);
+int boot_script_insert_right (struct cmd *, mach_port_t, mach_port_t *namep);
+int boot_script_insert_task_port (struct cmd *, task_t, mach_port_t *namep);
+
+/* The user must define this function to clean up the `task_t'
+ returned by boot_script_task_create. */
+void boot_script_free_task (task_t task, int aborting);
+
+
/* Parse the command line LINE. This causes the command line to be
converted into an internal format. Returns 0 for success, non-zero
otherwise.
@@ -68,7 +93,7 @@ mach_port_t boot_script_read_file (const char *file);
NOTE: The parser writes into the line so it must not be a string constant.
It is also the responsibility of the caller not to deallocate the line
across calls to the parser. */
-int boot_script_parse_line (char *cmdline);
+int boot_script_parse_line (void *hook, char *cmdline);
/* Execute the command lines prevously parsed.
Returns 0 for success, non-zero otherwise. */
@@ -77,14 +102,15 @@ int boot_script_exec (void);
/* Create an entry in the symbol table for variable NAME,
whose type is TYPE and value is VAL. Returns 0 on success,
non-zero otherwise. */
-int boot_script_set_variable (const char *name, int type, int val);
+int boot_script_set_variable (const char *name, int type, integer_t val);
/* Define the function NAME, which will return type RET_TYPE. */
int boot_script_define_function (const char *name, int ret_type,
- int (*func) (const struct cmd *cmd, int *val));
+ int (*func) (const struct cmd *cmd,
+ integer_t *val));
/* Returns a string describing the error ERR. */
char *boot_script_error_string (int err);
-
-void safe_gets (char *, int);
+
+#endif /* _boot_script_h */