aboutsummaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/settings.h
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2013-08-27 13:46:12 +0100
committerMichael Brown <mcb30@ipxe.org>2013-08-27 13:46:12 +0100
commit3e975ecf3fee92394878b75046f70375ada597a2 (patch)
tree6b6591e13b325e13faa026556341a69666f50f78 /src/include/ipxe/settings.h
parent6d72b498c2b20b8e833bfce99c30d70d6950d335 (diff)
downloadipxe-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.h22
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
*