diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-03-04 09:21:54 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-03-04 09:21:54 +0100 |
commit | ea0f831cd0c749194a0103ec4814fe91c3955084 (patch) | |
tree | 9a69ef4476e29cf61e53058c1452cc3afd27be6c /common | |
parent | 62ee96bd3b5e02173c0d9956c4f1e1a4de8f940d (diff) | |
parent | 439eefcfe40d7ca821985d969312c4e90f7a1a7b (diff) | |
download | barebox-ea0f831cd0c749194a0103ec4814fe91c3955084.tar.gz barebox-ea0f831cd0c749194a0103ec4814fe91c3955084.tar.xz |
Merge branch 'for-next/mxs'
Diffstat (limited to 'common')
-rw-r--r-- | common/environment.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/common/environment.c b/common/environment.c index e8d623f7e4..78cd45cce7 100644 --- a/common/environment.c +++ b/common/environment.c @@ -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 |