mirror of
https://github.com/ipxe/ipxe
synced 2026-06-29 00:07:28 +03:00
[settings] Allow for writable built-in settings
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -2758,6 +2758,30 @@ struct builtin_setting cwduri_builtin_setting __builtin_setting = {
|
|||||||
.fetch = cwduri_fetch,
|
.fetch = cwduri_fetch,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store built-in setting
|
||||||
|
*
|
||||||
|
* @v settings Settings block
|
||||||
|
* @v setting Setting to store
|
||||||
|
* @v data Setting data, or NULL to clear setting
|
||||||
|
* @v len Length of setting data
|
||||||
|
* @ret rc Return status code
|
||||||
|
*/
|
||||||
|
static int builtin_store ( struct settings *settings __unused,
|
||||||
|
const struct setting *setting,
|
||||||
|
const void *data, size_t len ) {
|
||||||
|
struct builtin_setting *builtin;
|
||||||
|
|
||||||
|
for_each_table_entry ( builtin, BUILTIN_SETTINGS ) {
|
||||||
|
if ( setting_cmp ( setting, builtin->setting ) == 0 ) {
|
||||||
|
if ( ! builtin->store )
|
||||||
|
return -ENOTSUP;
|
||||||
|
return builtin->store ( data, len );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch built-in setting
|
* Fetch built-in setting
|
||||||
*
|
*
|
||||||
@@ -2795,6 +2819,7 @@ static int builtin_applies ( struct settings *settings __unused,
|
|||||||
/** Built-in settings operations */
|
/** Built-in settings operations */
|
||||||
static struct settings_operations builtin_settings_operations = {
|
static struct settings_operations builtin_settings_operations = {
|
||||||
.applies = builtin_applies,
|
.applies = builtin_applies,
|
||||||
|
.store = builtin_store,
|
||||||
.fetch = builtin_fetch,
|
.fetch = builtin_fetch,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -268,6 +268,14 @@ struct settings_applicator {
|
|||||||
struct builtin_setting {
|
struct builtin_setting {
|
||||||
/** Setting */
|
/** Setting */
|
||||||
const struct setting *setting;
|
const struct setting *setting;
|
||||||
|
/**
|
||||||
|
* Store setting value
|
||||||
|
*
|
||||||
|
* @v data Setting data, or NULL to clear setting
|
||||||
|
* @v len Length of setting data
|
||||||
|
* @ret rc Return status code
|
||||||
|
*/
|
||||||
|
int ( * store ) ( const void *data, size_t len );
|
||||||
/** Fetch setting value
|
/** Fetch setting value
|
||||||
*
|
*
|
||||||
* @v data Buffer to fill with setting data
|
* @v data Buffer to fill with setting data
|
||||||
|
|||||||
Reference in New Issue
Block a user