X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fenv.h;h=d6c2d751d62b6cc7eb3bbf9a108b36be14a8a486;hb=2493ce6258a59881b702cbe255db9e53f1e3fd13;hp=b59c3c36f20238ccd61f38cb1a3772c45e925b24;hpb=db19701039bc78b5870d74e0d7ecaf4f9e4d8d87;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/env.h b/include/env.h index b59c3c3..d6c2d75 100644 --- a/include/env.h +++ b/include/env.h @@ -9,6 +9,7 @@ #ifndef __ENV_H #define __ENV_H +#include #include #include @@ -21,6 +22,46 @@ enum env_valid { ENV_REDUND, /* Redundant environment is valid */ }; +/** enum env_op - environment callback operation */ +enum env_op { + env_op_create, + env_op_delete, + env_op_overwrite, +}; + +/** struct env_clbk_tbl - declares a new callback */ +struct env_clbk_tbl { + const char *name; /* Callback name */ + int (*callback)(const char *name, const char *value, enum env_op op, + int flags); +}; + +/* + * Define a callback that can be associated with variables. + * when associated through the ".callbacks" environment variable, the callback + * will be executed any time the variable is inserted, overwritten, or deleted. + * + * For SPL these are silently dropped to reduce code size, since environment + * callbacks are not supported with SPL. + */ +#ifdef CONFIG_SPL_BUILD +#define U_BOOT_ENV_CALLBACK(name, callback) \ + static inline __maybe_unused void _u_boot_env_noop_##name(void) \ + { \ + (void)callback; \ + } +#else +#define U_BOOT_ENV_CALLBACK(name, callback) \ + ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \ + {#name, callback} +#endif + +/** enum env_redund_flags - Flags for the redundand_environment */ +enum env_redund_flags { + ENV_REDUND_OBSOLETE = 0, + ENV_REDUND_ACTIVE = 1, +}; + /** * env_get_id() - Gets a sequence number for the environment * @@ -72,6 +113,16 @@ int env_match(unsigned char *name, int index); */ char *env_get(const char *varname); +/* + * Like env_get, but prints an error if envvar isn't defined in the + * environment. It always returns what env_get does, so it can be used in + * place of env_get without changing error handling otherwise. + * + * @varname: Variable to look up + * @return value of variable, or NULL if not found + */ +char *from_env(const char *envvar); + /** * env_get_f() - Look up the value of an environment variable (early) *