mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
make env_entry::callback conditional on !CONFIG_SPL_BUILD
The callback member of struct env_entry is always NULL for an SPL build. Removing it thus saves a bit of run-time memory in the SPL (when CONFIG_SPL_ENV_SUPPORT=y) since struct env_entry is embedded in struct env_entry_node - i.e. about 2KB for the normal case of 512+change hash table entries. Two small fixups are needed for this, all other references to the callback member are already under !CONFIG_SPL_BUILD: Don't initialize .callback in set_flags() - hsearch_r doesn't use that value anyway. And make env_callback_init() initialize ->callback to NULL for a new entry instead of relying on an unused or deleted entry having NULL in ->callback. Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
34284970a1
commit
080019b86c
4 changed files with 4 additions and 2 deletions
2
env/callback.c
vendored
2
env/callback.c
vendored
|
@ -55,6 +55,8 @@ void env_callback_init(struct env_entry *var_entry)
|
|||
first_call = 0;
|
||||
}
|
||||
|
||||
var_entry->callback = NULL;
|
||||
|
||||
/* look in the ".callbacks" var for a reference to this variable */
|
||||
if (callback_list != NULL)
|
||||
ret = env_attr_lookup(callback_list, var_name, callback_name);
|
||||
|
|
1
env/flags.c
vendored
1
env/flags.c
vendored
|
@ -457,7 +457,6 @@ static int set_flags(const char *name, const char *value, void *priv)
|
|||
|
||||
e.key = name;
|
||||
e.data = NULL;
|
||||
e.callback = NULL;
|
||||
hsearch_r(e, ENV_FIND, &ep, &env_htab, 0);
|
||||
|
||||
/* does the env variable actually exist? */
|
||||
|
|
|
@ -29,8 +29,10 @@ enum env_action {
|
|||
struct env_entry {
|
||||
const char *key;
|
||||
char *data;
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
int (*callback)(const char *name, const char *value, enum env_op op,
|
||||
int flags);
|
||||
#endif
|
||||
int flags;
|
||||
};
|
||||
|
||||
|
|
|
@ -450,7 +450,6 @@ static void _hdelete(const char *key, struct hsearch_data *htab,
|
|||
debug("hdelete: DELETING key \"%s\"\n", key);
|
||||
free((void *)ep->key);
|
||||
free(ep->data);
|
||||
ep->callback = NULL;
|
||||
ep->flags = 0;
|
||||
htab->table[idx].used = USED_DELETED;
|
||||
|
||||
|
|
Loading…
Reference in a new issue