9
0
Fork 0

env: add register_persistent_environment

- heavily copied from register_persistant_environment which was
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>

Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Eric Bénard 2013-02-19 10:17:23 +01:00 committed by Sascha Hauer
parent 659712cbf3
commit eec960e3b3
2 changed files with 42 additions and 0 deletions

View File

@ -363,3 +363,43 @@ out:
free(buf_free);
return ret;
}
#ifdef __BAREBOX__
/**
* Try to register an environment storage on a device's partition
* @return 0 on success
*
* We rely on the existence of a usable storage device, already attached to
* our system, to get something like a persistent memory for our environment.
* We need to specify the partition number to use on this device.
* @param[in] devname Name of the device
* @param[in] partnr Partition number
* @return 0 on success, anything else in case of failure
*/
int envfs_register_partition(const char *devname, unsigned int partnr)
{
struct cdev *cdev;
char *partname;
if (!devname)
return -EINVAL;
cdev = cdev_by_name(devname);
if (cdev == NULL) {
pr_err("No %s present\n", devname);
return -ENODEV;
}
partname = asprintf("%s.%d", devname, partnr);
cdev = cdev_by_name(partname);
if (cdev == NULL) {
pr_err("No %s partition available\n", partname);
pr_info("Please create the partition %s to store the env\n", partname);
return -ENODEV;
}
return devfs_add_partition(partname, 0, cdev->size,
DEVFS_PARTITION_FIXED, "env0");
}
EXPORT_SYMBOL(envfs_register_partition);
#endif

View File

@ -96,4 +96,6 @@ int envfs_save(char *filename, char *dirname);
/* defaults to /dev/env0 */
extern char *default_environment_path;
int envfs_register_partition(const char *devname, unsigned int partnr);
#endif /* _ENVFS_H */