Annotation of OSKit-Mach/kern/boot_script.h, revision 1.1

1.1     ! root        1: /* Definitions for boot script parser for Mach.  */
        !             2: 
        !             3: #ifndef _boot_script_h
        !             4: #define _boot_script_h
        !             5: 
        !             6: /* Written by Shantanu Goel ([email protected]).  */
        !             7: 
        !             8: /* Error codes returned by boot_script_parse_line()
        !             9:    and boot_script_exec_cmd().  */
        !            10: #define BOOT_SCRIPT_NOMEM              1
        !            11: #define BOOT_SCRIPT_SYNTAX_ERROR       2
        !            12: #define BOOT_SCRIPT_INVALID_ASG                3
        !            13: #define BOOT_SCRIPT_MACH_ERROR         4
        !            14: #define BOOT_SCRIPT_UNDEF_SYM          5
        !            15: #define BOOT_SCRIPT_EXEC_ERROR         6
        !            16: #define BOOT_SCRIPT_INVALID_SYM                7
        !            17: #define BOOT_SCRIPT_BAD_TYPE           8
        !            18: 
        !            19: /* Legal values for argument `type' to function
        !            20:    boot_script_set_variable and boot_script_define_function.  */
        !            21: #define VAL_NONE       0       /* none -- function runs at exec time */
        !            22: #define VAL_STR                1       /* string */
        !            23: #define VAL_PORT       2       /* port */
        !            24: #define VAL_TASK       3       /* task port */
        !            25: 
        !            26: /* This structure describes a command.  */
        !            27: struct cmd
        !            28: {
        !            29:   /* Cookie passed in to boot_script_parse_line.  */
        !            30:   void *hook;
        !            31: 
        !            32:   /* Path of executable.  */
        !            33:   char *path;
        !            34: 
        !            35:   /* Task port.  */
        !            36:   task_t task;
        !            37: 
        !            38:   /* Argument list.  */
        !            39:   struct arg **args;
        !            40: 
        !            41:   /* Amount allocated for `args'.  */
        !            42:   int args_alloc;
        !            43: 
        !            44:   /* Next available slot in `args'.  */
        !            45:   int args_index;
        !            46: 
        !            47:   /* List of functions that want to be run on command execution.  */
        !            48:   struct sym **exec_funcs;
        !            49: 
        !            50:   /* Amount allocated for `exec_funcs'.  */
        !            51:   int exec_funcs_alloc;
        !            52: 
        !            53:   /* Next available slot in `exec_funcs'.  */
        !            54:   int exec_funcs_index;
        !            55: };
        !            56: 
        !            57: 
        !            58: /* The user must define these functions, we work like malloc and free.  */
        !            59: void *boot_script_malloc (unsigned int);
        !            60: void boot_script_free (void *, unsigned int);
        !            61: 
        !            62: /* The user must define this function.  Load the image of the
        !            63:    executable specified by PATH in TASK.  Create a thread
        !            64:    in TASK and point it at the executable's entry point.  Initialize
        !            65:    TASK's stack with argument vector ARGV of length ARGC whose
        !            66:    strings are STRINGS.  STRINGS has length STRINGLEN.
        !            67:    Return 0 for success, non-zero otherwise.  */
        !            68: int boot_script_exec_cmd (void *hook,
        !            69:                          task_t task, char *path, int argc,
        !            70:                          char **argv, char *strings, int stringlen);
        !            71: 
        !            72: /* The user must define this function.  Load the contents of FILE
        !            73:    into a fresh anonymous memory object and return the memory object port.  */
        !            74: mach_port_t boot_script_read_file (const char *file);
        !            75: 
        !            76: /* The user must define this functions to perform the corresponding
        !            77:    Mach task manipulations.  */
        !            78: int boot_script_task_create (struct cmd *); /* task_create + task_suspend */
        !            79: int boot_script_task_resume (struct cmd *);
        !            80: int boot_script_prompt_task_resume (struct cmd *);
        !            81: int boot_script_insert_right (struct cmd *, mach_port_t, mach_port_t *namep);
        !            82: int boot_script_insert_task_port (struct cmd *, task_t, mach_port_t *namep);
        !            83: 
        !            84: /* The user must define this function to clean up the `task_t'
        !            85:    returned by boot_script_task_create.  */
        !            86: void boot_script_free_task (task_t task, int aborting);
        !            87: 
        !            88: 
        !            89: /* Parse the command line LINE.  This causes the command line to be
        !            90:    converted into an internal format.  Returns 0 for success, non-zero
        !            91:    otherwise.
        !            92: 
        !            93:    NOTE: The parser writes into the line so it must not be a string constant.
        !            94:    It is also the responsibility of the caller not to deallocate the line
        !            95:    across calls to the parser.  */
        !            96: int boot_script_parse_line (void *hook, char *cmdline);
        !            97: 
        !            98: /* Execute the command lines prevously parsed.
        !            99:    Returns 0 for success, non-zero otherwise.  */
        !           100: int boot_script_exec (void);
        !           101: 
        !           102: /* Create an entry in the symbol table for variable NAME,
        !           103:    whose type is TYPE and value is VAL.  Returns 0 on success,
        !           104:    non-zero otherwise.  */
        !           105: int boot_script_set_variable (const char *name, int type, integer_t val);
        !           106: 
        !           107: /* Define the function NAME, which will return type RET_TYPE.  */
        !           108: int boot_script_define_function (const char *name, int ret_type,
        !           109:                                 int (*func) (const struct cmd *cmd,
        !           110:                                              integer_t *val));
        !           111: 
        !           112: /* Returns a string describing the error ERR.  */
        !           113: char *boot_script_error_string (int err);
        !           114: 
        !           115: 
        !           116: #endif /* _boot_script_h */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.