diff options
Diffstat (limited to 'lib/bootstrap/disk.c')
-rw-r--r-- | lib/bootstrap/disk.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/bootstrap/disk.c b/lib/bootstrap/disk.c new file mode 100644 index 0000000000..879d3315e8 --- /dev/null +++ b/lib/bootstrap/disk.c @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2011 Sascha Hauer, Pengutronix + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com> + * + * Under GPLv2 + */ + +#include <common.h> +#include <fs.h> +#include <fcntl.h> +#include <sizes.h> +#include <errno.h> +#include <malloc.h> +#include <bootstrap.h> + +void* bootstrap_read_disk(char *dev, char *fstype) +{ + int ret; + void *buf; + int len; + char *path = "/"; + + ret = mount(dev, fstype, path); + if (ret) { + bootstrap_err("mounting %s failed with %d\n", dev, ret); + return NULL; + } + + buf = read_file("/barebox.bin", &len); + if (!buf) { + bootstrap_err("could not read barebox.bin from %s\n", dev); + umount(path); + return NULL; + } + + return buf; +} |