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:
parent
659712cbf3
commit
eec960e3b3
|
@ -363,3 +363,43 @@ out:
|
||||||
free(buf_free);
|
free(buf_free);
|
||||||
return ret;
|
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
|
||||||
|
|
|
@ -96,4 +96,6 @@ int envfs_save(char *filename, char *dirname);
|
||||||
/* defaults to /dev/env0 */
|
/* defaults to /dev/env0 */
|
||||||
extern char *default_environment_path;
|
extern char *default_environment_path;
|
||||||
|
|
||||||
|
int envfs_register_partition(const char *devname, unsigned int partnr);
|
||||||
|
|
||||||
#endif /* _ENVFS_H */
|
#endif /* _ENVFS_H */
|
||||||
|
|
Loading…
Reference in New Issue