Source code for the Trusted Boot Module.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
tbm-mcu/source/shell/mufs.c

94 lines
1.7 KiB

#include <ctype.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <flash.h>
#include <ftl.h>
#include <macros.h>
#include <shell.h>
#include <fs/mufs.h>
static void do_mufs_mount(const char *s);
static void do_mufs_format(const char *s);
static void do_mufs_mkdir(const char *s);
static void do_mufs_ls(const char *s);
static struct cmd mufs_cmds[] = {
{ "mount", do_mufs_mount },
{ "format", do_mufs_format },
{ "mkdir", do_mufs_mkdir },
{ "ls", do_mufs_ls },
{ NULL, NULL },
};
extern struct flash_dev *flash;
struct mufs mufs;
static void do_mufs_mount(const char *s)
{
(void)s;
if (!flash) {
fprintf(stderr, "error: no flash device probed.\n");
return;
}
if (mufs_mount(&mufs, flash) < 0) {
fprintf(stderr, "error: unable to mount the filesystem.\n");
return;
}
printf("log2_nentries=%u\n", mufs.log2_nentries);
printf("nentries=%u\n", UINT32_C(1) << mufs.log2_nentries);
}
static void do_mufs_format(const char *s)
{
(void)s;
if (!flash) {
fprintf(stderr, "error: no flash device probed.\n");
return;
}
if (mufs_format(flash) < 0) {
fprintf(stderr, "error: unable to format the flash device.\n");
return;
}
}
static void do_mufs_mkdir(const char *s)
{
if (mufs_mkdir(&mufs, s) < 0) {
fprintf(stderr, "error: unable to create the directory\n");
return;
}
}
static void do_mufs_ls(const char *s)
{
struct mufs_dirent ent;
struct mufs_dir *dir;
if (!(dir = mufs_opendir(&mufs, s))) {
fprintf(stderr, "error: unable to open the directory\n");
return;
}
while (mufs_readdir(dir, &ent) == 0) {
printf("%s\n", ent.path);
}
mufs_closedir(dir);
}
void do_mufs_cmd(const char *line)
{
cmd_exec(mufs_cmds, line);
}