From 3e975ecf3fee92394878b75046f70375ada597a2 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 27 Aug 2013 13:46:12 +0100 Subject: [settings] Make built-in settings a linker table Allow for configurable provision of built-in settings by placing them in a linker table rather than an array. Signed-off-by: Michael Brown --- src/include/ipxe/settings.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/include/ipxe') diff --git a/src/include/ipxe/settings.h b/src/include/ipxe/settings.h index d1666e1d9..4f1610720 100644 --- a/src/include/ipxe/settings.h +++ b/src/include/ipxe/settings.h @@ -253,6 +253,28 @@ struct settings_applicator { /** Declare a settings applicator */ #define __settings_applicator __table_entry ( SETTINGS_APPLICATORS, 01 ) +/** A built-in setting */ +struct builtin_setting { + /** Setting */ + struct setting *setting; + /** Fetch setting value + * + * @v data Buffer to fill with setting data + * @v len Length of buffer + * @ret len Length of setting data, or negative error + */ + int ( * fetch ) ( void *data, size_t len ); +}; + +/** Built-in settings table */ +#define BUILTIN_SETTINGS __table ( struct builtin_setting, "builtin_settings" ) + +/** Declare a built-in setting */ +#define __builtin_setting __table_entry ( BUILTIN_SETTINGS, 01 ) + +/** Built-in setting scope */ +extern struct settings_scope builtin_scope; + /** * A generic settings block * -- cgit v1.2.3-55-g7522