eepreg.h¶
eepreg interface definitions
-
EEPROM_RESERV_CPU_LOW
¶ EEPROM reserved near beginning for use by CPU and related.
1
(0U)
Change with care, as it may make existing data difficult to migrate
-
EEPROM_RESERV_CPU_HI
¶ EEPROM reserved near end for use by CPU and related.
1
(0U)
Change with care, as it may make existing data difficult to migrate
-
EEPROM_RESERV_BOARD_LOW
¶ EEPROM reserved near beginning for use by board and related.
1
(0U)
Change with care, as it may make existing data difficult to migrate
-
EEPROM_RESERV_BOARD_HI
¶ EEPROM reserved near end for use by board and related.
1
(0U)
Change with care, as it may make existing data difficult to migrate
-
EEPREG_PTR_LEN
¶ Size in bytes of pointer meta-data in EEPROM.
1
(1U)
-
int(*
eepreg_iter_cb_t
()¶ Signature of callback for iterating over entries in EEPROM registry.
Parameters
name: name of an entry in the registry arg: argument for cb Return values
- 0 on success
- < 0 on failure
-
int
eepreg_add
(uint32_t * pos, const char * name, uint32_t len)¶ Load or write meta-data in EEPROM registry.
This checks to see if relevant meta-data exists in the EEPROM registry, and returns that data position if it exists. If an entry does not exist in the registry, meta-data is written and allocated data space if there is enough remaining. Requesting a different length for an existent entry returns an error.
Parameters
pos: pointer to position variable name: name of entry to load or write len: requested amount of data storage Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOSPC on insufficient EEPROM for entry
- -EADDRINUSE on existing entry with different length
-
int
eepreg_read
(uint32_t * pos, const char * name)¶ Read position meta-data from EEPROM registry.
This is similar to eepreg_add, except it never writes meta-data.
Parameters
pos: pointer to position variable name: name of entry to load Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry or entry
-
int
eepreg_write
(uint32_t * pos, const char * name, uint32_t len)¶ Write meta-data to EEPROM registry.
This ignores existing meta-data and always makes a new entry in the registry. Typical use should be through eepreg_add and not eepreg_write. If multiple entries with the same name exist, eepreg functions will find the oldest. Mainly intended for use by migration utilities.
Parameters
pos: pointer to position variable name: name of entry to write len: requested amount of data storage Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOSPC on insufficient EEPROM for entry
-
int
eepreg_rm
(const char * name)¶ Remove entry from EEPROM registry and free space.
This removes an entry from the EEPROM registry and its corresponding data and moves the data and meta-data of entries after removed entry to occupy the freed space. This preserves the structure of the EEPROM registry. Warning: this is a read/write intensive operation! Mainly intended for use by migration utilities.
Parameters
name: name of entry to remove Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry or entry
-
int
eepreg_iter
(eepreg.h::eepreg_iter_cb_t
cb, void * arg)¶ Iterate over meta-data entries in EEPROM registry.
This executes a callback over each name in the EEPROM registry. The intended work-flow for migration is to: iterate over each entry, check to see if migration is needed, duplicate using eepreg_write if needed, migrate data to duplicate entry, then delete old entry using eepreg_rm.
Note
It is safe for the callback to remove the entry it is called with, or to add new entries.
Parameters
cb: callback to iterate over entries arg: argument for cb Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry
- return value of cb when cb returns < 0
-
int
eepreg_check
(void)¶ Check for the presence of meta-data registry.
Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry
-
int
eepreg_reset
(void)¶ Clear existing meta-data registry.
This removes any existing meta-data registry by writing a new registry with no entries.
Return values
- 0 on success
- -EIO on EEPROM I/O error
-
int
eepreg_len
(uint32_t * len, const char * name)¶ Calculate data length from meta-data in EEPROM registry.
Note
This information is typically already available to code that has called eepreg_add.
Parameters
len: pointer to length variable name: name of entry to load or write Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry or entry
-
int
eepreg_free
(uint32_t * len)¶ Calculate length of remaining EEPROM free space.
Parameters
len: pointer to length variable Return values
- 0 on success
- -EIO on EEPROM I/O error
- -ENOENT on non-existent registry