diff options
Diffstat (limited to 'usr/kinit/do_mounts_mtd.c')
-rw-r--r-- | usr/kinit/do_mounts_mtd.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/usr/kinit/do_mounts_mtd.c b/usr/kinit/do_mounts_mtd.c new file mode 100644 index 0000000..20d27ca --- /dev/null +++ b/usr/kinit/do_mounts_mtd.c @@ -0,0 +1,42 @@ +/* + * Mount an MTD device as a character device. + */ + +#include <errno.h> +#include <fcntl.h> +#include <sys/mount.h> +#include <sys/stat.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <inttypes.h> + +#include "kinit.h" +#include "do_mounts.h" + +int mount_mtd_root(int argc, char *argv[], const char *root_dev_name, + const char *type, unsigned long flags) +{ + const char *data = get_arg(argc, argv, "rootflags="); + + if (!type) + type = "jffs2"; + + printf("Trying to mount MTD %s as root (%s filesystem)\n", + root_dev_name, type); + + if (mount(root_dev_name, "/root", type, flags, data)) { + int err = errno; + fprintf(stderr, + "%s: Unable to mount MTD %s (%s filesystem) " + "as root: %s\n", + progname, root_dev_name, type, strerror(err)); + return -err; + } else { + fprintf(stderr, "%s: Mounted root (%s filesystem)%s.\n", + progname, type, (flags & MS_RDONLY) ? " readonly" : ""); + return 0; + } + +} |