diff options
author | Michael Brown <mcb30@ipxe.org> | 2013-08-27 13:46:12 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2013-08-27 13:46:12 +0100 |
commit | 3e975ecf3fee92394878b75046f70375ada597a2 (patch) | |
tree | 6b6591e13b325e13faa026556341a69666f50f78 /src/include/ipxe/settings.h | |
parent | 6d72b498c2b20b8e833bfce99c30d70d6950d335 (diff) | |
download | ipxe-3e975ecf3fee92394878b75046f70375ada597a2.tar.gz |
[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 <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/settings.h')
-rw-r--r-- | src/include/ipxe/settings.h | 22 |
1 files changed, 22 insertions, 0 deletions
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 * |