2 * Copyright (C) 2001-2003 Hewlett-Packard Co.
3 * Contributed by Stephane Eranian <eranian@hpl.hp.com>
5 * This file is part of the ELILO, the EFI Linux boot loader.
7 * ELILO is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
12 * ELILO is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with ELILO; see the file COPYING. If not, write to the Free
19 * Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 * Please check out the elilo.txt for complete documentation on how
23 * to use this program.
26 #ifndef __ELILO_CONFIG_H__
27 #define __ELILO_CONFIG_H__
29 #define opt_offsetof(opt) (&((boot_image_t *)(0x0))->opt)
31 typedef enum { OPT_NOTUSED, OPT_STR, OPT_CMD, OPT_BOOL, OPT_NUM, OPT_FILE } config_option_type_t;
33 typedef enum { OPT_GLOBAL, /* global and shared among architectures */
34 OPT_IMAGE, /* per image only and shared among architectures */
35 OPT_IMAGE_SYS /* per image and architecture specific (offset base in sys_img_opts) */
36 } config_option_scope_t;
38 typedef enum { OPTIONS_GROUP_GLOBAL, /* group must be added to global set of options */
39 OPTIONS_GROUP_IMAGE, /* group must be added to per-image set of options */
40 } config_option_group_scope_t;
42 struct _config_option_t;
43 typedef INTN option_action_t(struct _config_option_t *, VOID *);
45 typedef struct _config_option_t {
46 config_option_type_t type; /* option type: OPT_CMD, OPT_BOOL, ... */
47 config_option_scope_t scope; /* option scope: global, per image, per image_sys */
48 CHAR16 *name; /* unicode string for the option */
49 option_action_t *action; /* option specific action */
50 INTN (*check)(void *); /* check valid arguments, NULL=don't need */
51 VOID *data; /* which data structure to record the option */
54 extern INTN register_config_options(config_option_t *opt, UINTN nentries, config_option_group_scope_t);
56 #endif /* __ELILO_CONFIG_H__ */