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,
|
||||
};
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
@@ -2795,6 +2819,7 @@ static int builtin_applies ( struct settings *settings __unused,
|
||||
/** Built-in settings operations */
|
||||
static struct settings_operations builtin_settings_operations = {
|
||||
.applies = builtin_applies,
|
||||
.store = builtin_store,
|
||||
.fetch = builtin_fetch,
|
||||
};
|
||||
|
||||
|
||||
@@ -268,6 +268,14 @@ struct settings_applicator {
|
||||
struct builtin_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
|
||||
*
|
||||
* @v data Buffer to fill with setting data
|
||||
|
||||
Reference in New Issue
Block a user