svn_rev_420
- do more POSIX: - use DIR instead of struct dirent - use (struct dirent)->d_name instead of (struct dirent)->name - switch to a new layout for U_BOOT_CMD: - use C99 initializers to be able to add more fields to the command struct - add aliases for commands (needed mainly for help -> ? and test -> [ - This is not done for all commands yet, but the compiler will tell you ;)
This commit is contained in:
parent
2692aaeb76
commit
e694adc6a4
|
@ -98,6 +98,10 @@ config CMD_ENVIRONMENT
|
|||
depends on FS
|
||||
prompt "envsave / envload"
|
||||
|
||||
config CMD_CLEAR
|
||||
bool
|
||||
prompt "clear"
|
||||
|
||||
config CMD_CONSOLE
|
||||
bool
|
||||
prompt "coninfo"
|
||||
|
@ -159,9 +163,9 @@ config CMD_LOADS
|
|||
bool
|
||||
prompt "loads"
|
||||
|
||||
config CMD_MALLOCINFO
|
||||
config CMD_MEMINFO
|
||||
bool
|
||||
prompt "mallocinfo"
|
||||
prompt "meminfo"
|
||||
|
||||
config CMD_SAVES
|
||||
bool
|
||||
|
|
|
@ -73,17 +73,19 @@ int do_go (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
U_BOOT_CMD(
|
||||
go, CONFIG_MAXARGS, 1, do_go,
|
||||
"go - start application at address 'addr'\n",
|
||||
U_BOOT_CMD_START(go)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_go,
|
||||
.usage = "go - start application at address 'addr'\n",
|
||||
U_BOOT_CMD_HELP(
|
||||
"addr [arg ...]\n - start application at address 'addr'\n"
|
||||
" passing 'arg' as arguments\n"
|
||||
);
|
||||
" passing 'arg' as arguments\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||
|
||||
U_BOOT_CMD(
|
||||
reset, CONFIG_MAXARGS, 1, do_reset,
|
||||
"reset - Perform RESET of the CPU\n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(reset)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_reset,
|
||||
.usage = "reset - Perform RESET of the CPU\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
|
@ -469,9 +469,8 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
int do_edit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||
U_BOOT_CMD(
|
||||
edit, 2, 0, do_edit,
|
||||
"edit - edit a file\n",
|
||||
"<filename> - edit <filename>\n"
|
||||
);
|
||||
U_BOOT_CMD_START(edit)
|
||||
.maxargs = 2,
|
||||
.cmd = do_edit,
|
||||
.usage = "edit <file> - edit a file\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
|
@ -44,7 +44,7 @@ out:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int do_exec(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||
static int do_exec(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
char *script;
|
||||
|
@ -70,10 +70,8 @@ out:
|
|||
return 1;
|
||||
}
|
||||
|
||||
int do_exec (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||
U_BOOT_CMD(
|
||||
exec, CONFIG_MAXARGS, 1, do_exec,
|
||||
"exec - execute a script\n",
|
||||
"<filename> - execute <filename>\n"
|
||||
);
|
||||
|
||||
U_BOOT_CMD_START(exec)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_exec,
|
||||
.usage = "exec <files> - execute a script\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
|
@ -60,6 +60,13 @@ int do_flerase (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD_START(erase)
|
||||
.maxargs = 2,
|
||||
.cmd = do_flerase,
|
||||
.usage = "erase - erase FLASH memory\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
int p;
|
||||
|
@ -89,33 +96,9 @@ int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return rcode;
|
||||
}
|
||||
|
||||
/**************************************************/
|
||||
|
||||
U_BOOT_CMD(
|
||||
erase, 2, 0, do_flerase,
|
||||
"erase - erase FLASH memory\n",
|
||||
"write me\n"
|
||||
);
|
||||
|
||||
U_BOOT_CMD(
|
||||
protect, 4, 1, do_protect,
|
||||
"protect - enable or disable FLASH write protection\n",
|
||||
"on start end\n"
|
||||
" - protect FLASH from addr 'start' to addr 'end'\n"
|
||||
"protect on start +len\n"
|
||||
" - protect FLASH from addr 'start' to end of sect "
|
||||
"w/addr 'start'+'len'-1\n"
|
||||
"protect on N:SF[-SL]\n"
|
||||
" - protect sectors SF-SL in FLASH bank # N\n"
|
||||
"protect on bank N\n - protect FLASH bank # N\n"
|
||||
"protect on all\n - protect all FLASH banks\n"
|
||||
"protect off start end\n"
|
||||
" - make FLASH from addr 'start' to addr 'end' writable\n"
|
||||
"protect off start +len\n"
|
||||
" - make FLASH from addr 'start' to end of sect "
|
||||
"w/addr 'start'+'len'-1 wrtable\n"
|
||||
"protect off N:SF[-SL]\n"
|
||||
" - make sectors SF-SL writable in FLASH bank # N\n"
|
||||
"protect off bank N\n - make FLASH bank # N writable\n"
|
||||
"protect off all\n - make all FLASH banks writable\n"
|
||||
);
|
||||
U_BOOT_CMD_START(protect)
|
||||
.maxargs = 4,
|
||||
.cmd = do_protect,
|
||||
.usage = "protect - enable or disable FLASH write protection\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
|
107
common/cmd_fs.c
107
common/cmd_fs.c
|
@ -22,7 +22,7 @@ static void ls_one(const char *path, struct stat *s)
|
|||
|
||||
int ls(const char *path, ulong flags)
|
||||
{
|
||||
struct dir *dir;
|
||||
DIR *dir;
|
||||
struct dirent *d;
|
||||
char tmp[PATH_MAX];
|
||||
struct stat s;
|
||||
|
@ -45,10 +45,10 @@ int ls(const char *path, ulong flags)
|
|||
return errno;
|
||||
|
||||
while ((d = readdir(dir))) {
|
||||
sprintf(tmp, "%s/%s", path, d->name);
|
||||
sprintf(tmp, "%s/%s", path, d->d_name);
|
||||
if (stat(tmp, &s))
|
||||
goto out;
|
||||
ls_one(d->name, &s);
|
||||
ls_one(d->d_name, &s);
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
|
@ -63,13 +63,13 @@ int ls(const char *path, ulong flags)
|
|||
}
|
||||
|
||||
while ((d = readdir(dir))) {
|
||||
sprintf(tmp, "%s/%s", path, d->name);
|
||||
sprintf(tmp, "%s/%s", path, d->d_name);
|
||||
normalise_path(tmp);
|
||||
if (stat(tmp, &s))
|
||||
goto out;
|
||||
if (!strcmp(d->name, "."))
|
||||
if (!strcmp(d->d_name, "."))
|
||||
continue;
|
||||
if (!strcmp(d->name, ".."))
|
||||
if (!strcmp(d->d_name, ".."))
|
||||
continue;
|
||||
if (s.st_mode & S_IFDIR)
|
||||
ls(tmp, flags);
|
||||
|
@ -115,11 +115,11 @@ static int do_ls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
ls, CONFIG_MAXARGS, 0, do_ls,
|
||||
"ls - list a file or directory\n",
|
||||
"<path> list files on path"
|
||||
);
|
||||
U_BOOT_CMD_START(ls)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_ls,
|
||||
.usage = "ls - list a file or directory\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_cd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -138,11 +138,11 @@ static int do_cd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
cd, 2, 0, do_cd,
|
||||
"cd - change current directory\n",
|
||||
"<path> cd to path"
|
||||
);
|
||||
U_BOOT_CMD_START(cd)
|
||||
.maxargs = 2,
|
||||
.cmd = do_cd,
|
||||
.usage = "cd - change current directory\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_pwd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -150,11 +150,11 @@ static int do_pwd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
pwd, 1, 0, do_pwd,
|
||||
"pwd - display current directory\n",
|
||||
NULL;
|
||||
);
|
||||
U_BOOT_CMD_START(pwd)
|
||||
.maxargs = 2,
|
||||
.cmd = do_pwd,
|
||||
.usage = "pwd - display current directory\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_mkdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -169,11 +169,11 @@ static int do_mkdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
mkdir, 2, 0, do_mkdir,
|
||||
"mkdir - create a new directory\n",
|
||||
""
|
||||
);
|
||||
U_BOOT_CMD_START(mkdir)
|
||||
.maxargs = 2,
|
||||
.cmd = do_mkdir,
|
||||
.usage = "mkdir - create a new directory\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_rm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -188,11 +188,11 @@ static int do_rm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
rm, 2, 0, do_rm,
|
||||
"rm - remove files\n",
|
||||
""
|
||||
);
|
||||
U_BOOT_CMD_START(rm)
|
||||
.maxargs = 2,
|
||||
.cmd = do_rm,
|
||||
.usage = "rm - remove files\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_rmdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -207,11 +207,11 @@ static int do_rmdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
rmdir, 2, 0, do_rmdir,
|
||||
"rm - remove files\n",
|
||||
""
|
||||
);
|
||||
U_BOOT_CMD_START(rmdir)
|
||||
.maxargs = 2,
|
||||
.cmd = do_rmdir,
|
||||
.usage = "rmdir <dir> - remove directories\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_mount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -243,11 +243,12 @@ static int do_mount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
mount, 4, 0, do_mount,
|
||||
"mount - mount a filesystem to a device\n",
|
||||
" <device> <type> <path> add a filesystem of type 'type' on the given device"
|
||||
);
|
||||
U_BOOT_CMD_START(mount)
|
||||
.maxargs = 4,
|
||||
.cmd = do_mount,
|
||||
.usage = "mount - mount a filesystem to a device\n",
|
||||
U_BOOT_CMD_HELP(" <device> <type> <path> add a filesystem of type 'type' on the given device")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_umount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -266,13 +267,11 @@ static int do_umount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
umount, 2, 0, do_umount,
|
||||
"umount - umount a filesystem\n",
|
||||
" <device> <type> <path> add a filesystem of type 'type' on the given device"
|
||||
);
|
||||
|
||||
/* --------- Testing --------- */
|
||||
U_BOOT_CMD_START(umount)
|
||||
.maxargs = 2,
|
||||
.cmd = do_umount,
|
||||
.usage = "umount <path> - umount a filesystem mounted on <path>\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
static int do_cat ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -308,10 +307,8 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
cat, 2, 0, do_cat,
|
||||
"cat - bla bla\n",
|
||||
"<dev:path> list files on device"
|
||||
);
|
||||
/* --------- /Testing --------- */
|
||||
|
||||
U_BOOT_CMD_START(cat)
|
||||
.maxargs = 2,
|
||||
.cmd = do_cat,
|
||||
.usage = "cat - bla bla\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
|
@ -176,11 +176,12 @@ out:
|
|||
return errno;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
md, CONFIG_MAXARGS, 0, do_mem_md,
|
||||
"md - memory display\n",
|
||||
"[.b, .w, .l] address [# of objects]\n - memory display\n"
|
||||
);
|
||||
U_BOOT_CMD_START(md)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_mem_md,
|
||||
.usage = "md - memory display\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int do_mem_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -264,11 +265,12 @@ out:
|
|||
return errno;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
mw, CONFIG_MAXARGS, 0, do_mem_mw,
|
||||
"mw - memory write (fill)\n",
|
||||
"[.b, .w, .l] address value [count]\n - write memory\n"
|
||||
);
|
||||
U_BOOT_CMD_START(mw)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_mem_mw,
|
||||
.usage = "mw - memory write (fill)\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
@ -440,11 +442,12 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
cp, 4, 0, do_cp,
|
||||
"cp - memory copy\n",
|
||||
"[.b, .w, .l] source target count\n - copy memory\n"
|
||||
);
|
||||
U_BOOT_CMD_START(cp)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_cp,
|
||||
.usage = "cp - copy files\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#ifndef CONFIG_CRC32_VERIFY
|
||||
|
||||
|
@ -618,19 +621,21 @@ static int mem_init(void)
|
|||
|
||||
device_initcall(mem_init);
|
||||
|
||||
U_BOOT_CMD(
|
||||
cmp, 4, 0, do_mem_cmp,
|
||||
"cmp - memory compare\n",
|
||||
"[.b, .w, .l] addr1 addr2 count\n - compare memory\n"
|
||||
);
|
||||
U_BOOT_CMD_START(cmp)
|
||||
.maxargs = 4,
|
||||
.cmd = do_mem_cmp,
|
||||
.usage = "cmp - memory compare\n",
|
||||
U_BOOT_CMD_HELP("write me\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#ifndef CONFIG_CRC32_VERIFY
|
||||
|
||||
U_BOOT_CMD(
|
||||
crc32, 4, 0, do_mem_crc,
|
||||
"crc32 - checksum calculation\n",
|
||||
"address count [addr]\n - compute CRC32 checksum [save at addr]\n"
|
||||
);
|
||||
U_BOOT_CMD_START(crc32)
|
||||
.maxargs = 4,
|
||||
.cmd = do_mem_crc,
|
||||
.usage = "crc32 - checksum calculation\n",
|
||||
U_BOOT_CMD_HELP("address count [addr]\n - compute CRC32 checksum [save at addr]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#else /* CONFIG_CRC32_VERIFY */
|
||||
|
||||
|
|
|
@ -51,38 +51,53 @@ int do_sleep (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
sleep , 2, 2, do_sleep,
|
||||
"sleep - delay execution for some time\n",
|
||||
"N\n"
|
||||
" - delay execution for N seconds (N is _decimal_ !!!)\n"
|
||||
);
|
||||
U_BOOT_CMD_START(sleep)
|
||||
.maxargs = 2,
|
||||
.cmd = do_sleep,
|
||||
.usage = "sleep - delay execution for n secondsnn",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMD_MALLOCINFO
|
||||
int do_mallocinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
#ifdef CONFIG_CMD_CLEAR
|
||||
int do_clear (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
|
||||
printf("%c[2J%c[;H", 27, 27);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD_START(clear)
|
||||
.maxargs = 1,
|
||||
.cmd = do_clear,
|
||||
.usage = "clear - clear screen\n",
|
||||
U_BOOT_CMD_END
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMD_MEMINFO
|
||||
int do_meminfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
malloc_stats();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
mallocinfo , 1, 2, do_mallocinfo,
|
||||
"mallocinfo - print info about malloc usage\n",
|
||||
"N\n"
|
||||
" - print info about malloc usage\n"
|
||||
);
|
||||
U_BOOT_CMD_START(meminfo)
|
||||
.maxargs = 1,
|
||||
.cmd = do_meminfo,
|
||||
.usage = "meminfo - print info about memory usage\n",
|
||||
U_BOOT_CMD_END
|
||||
#endif
|
||||
|
||||
/* Implemented in $(CPU)/interrupts.c */
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_IRQ)
|
||||
int do_irqinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||
|
||||
U_BOOT_CMD(
|
||||
irqinfo, 1, 1, do_irqinfo,
|
||||
"irqinfo - print information about IRQs\n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(irqinfo)
|
||||
.maxargs = 1,
|
||||
.cmd = do_irqinfo,
|
||||
.usage = "irqinfo - print information about IRQs\n",
|
||||
U_BOOT_CMD_END
|
||||
#endif /* CONFIG_COMMANDS & CFG_CMD_IRQ */
|
||||
|
||||
|
|
|
@ -93,33 +93,36 @@ int do_bootp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return netboot_common (BOOTP, cmdtp, argc, argv);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
bootp, 3, 1, do_bootp,
|
||||
"bootp\t- boot image via network using BootP/TFTP protocol\n",
|
||||
"[loadAddress] [bootfilename]\n"
|
||||
);
|
||||
U_BOOT_CMD_START(bootp)
|
||||
.maxargs = 3,
|
||||
.cmd = do_bootp,
|
||||
.usage = "bootp\t- boot image via network using BootP/TFTP protocol\n",
|
||||
U_BOOT_CMD_HELP("[loadAddress] [bootfilename]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int do_tftpb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
return netboot_common (TFTP, cmdtp, argc, argv);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
tftpboot, 3, 1, do_tftpb,
|
||||
"tftpboot- boot image via network using TFTP protocol\n",
|
||||
"[loadAddress] [bootfilename]\n"
|
||||
);
|
||||
U_BOOT_CMD_START(tftpboot)
|
||||
.maxargs = 3,
|
||||
.cmd = do_tftpb,
|
||||
.usage = "tftpboot- boot image via network using TFTP protocol\n",
|
||||
U_BOOT_CMD_HELP("[loadAddress] [bootfilename]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
return netboot_common (RARP, cmdtp, argc, argv);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
rarpboot, 3, 1, do_rarpb,
|
||||
"rarpboot- boot image via network using RARP/TFTP protocol\n",
|
||||
"[loadAddress] [bootfilename]\n"
|
||||
);
|
||||
U_BOOT_CMD_START(rarpboot)
|
||||
.maxargs = 3,
|
||||
.cmd = do_rarpb,
|
||||
.usage = "rarpboot- boot image via network using RARP/TFTP protocol\n",
|
||||
U_BOOT_CMD_HELP("[loadAddress] [bootfilename]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#ifdef CONFIG_NET_DHCP
|
||||
int do_dhcp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -135,11 +138,12 @@ int do_dhcp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
dhcp, 3, 1, do_dhcp,
|
||||
"dhcp\t- invoke DHCP client to obtain IP/boot params\n",
|
||||
"\n"
|
||||
);
|
||||
U_BOOT_CMD_START(dhcp)
|
||||
.maxargs = 3,
|
||||
.cmd = do_dhcp,
|
||||
.usage = "dhcp\t- invoke DHCP client to obtain IP/boot params\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif /* CONFIG_NET_DHCP */
|
||||
|
||||
#ifdef CONFIG_NET_NFS
|
||||
|
@ -148,11 +152,13 @@ int do_nfs (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return netboot_common(NFS, cmdtp, argc, argv);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
nfs, 3, 1, do_nfs,
|
||||
"nfs\t- boot image via network using NFS protocol\n",
|
||||
"[loadAddress] [host ip addr:bootfilename]\n"
|
||||
);
|
||||
U_BOOT_CMD_START(nfs)
|
||||
.maxargs = 3,
|
||||
.cmd = do_nfs,
|
||||
.usage = "nfs\t- boot image via network using NFS protocol\n",
|
||||
U_BOOT_CMD_HELP("[loadAddress] [host ip addr:bootfilename]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif /* CONFIG_NET_NFS */
|
||||
|
||||
int net_store_fd;
|
||||
|
@ -229,8 +235,11 @@ int do_cdp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
cdp, 1, 1, do_cdp,
|
||||
"cdp\t- Perform CDP network configuration\n",
|
||||
);
|
||||
U_BOOT_CMD_START(cdp)
|
||||
.maxargs = 1,
|
||||
.cmd = do_cdp,
|
||||
.usage = "cdp\t- Perform CDP network configuration\n",
|
||||
U_BOOT_CMD_HELP("[loadAddress] [host ip addr:bootfilename]\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif /* CFG_CMD_CDP */
|
||||
|
|
123
common/command.c
123
common/command.c
|
@ -39,11 +39,11 @@ do_version (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
version, 1, 1, do_version,
|
||||
"version - print monitor version\n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(version)
|
||||
.maxargs = 1,
|
||||
.cmd = do_version,
|
||||
.usage = "version - print monitor version\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int
|
||||
do_true (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -51,11 +51,11 @@ do_true (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
true, 1, 1, do_true,
|
||||
"true - return 0\n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(true)
|
||||
.maxargs = 1,
|
||||
.cmd = do_true,
|
||||
.usage = "true - return 0\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int
|
||||
do_false (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -63,11 +63,11 @@ do_false (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
false, 1, 1, do_false,
|
||||
"false - return 1\n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(false)
|
||||
.maxargs = 1,
|
||||
.cmd = do_false,
|
||||
.usage = "false - return 1\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#ifdef CONFIG_HUSH_PARSER
|
||||
|
||||
|
@ -92,11 +92,11 @@ do_readline (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
readline, 3, 1, do_readline,
|
||||
"readline - \n",
|
||||
NULL
|
||||
);
|
||||
U_BOOT_CMD_START(readline)
|
||||
.maxargs = 3,
|
||||
.cmd = do_readline,
|
||||
.usage = "readline - \n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int
|
||||
do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -104,6 +104,14 @@ do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
char **ap;
|
||||
int left, adv, expr, last_expr, neg, last_cmp;
|
||||
|
||||
if (*argv[0] == '[') {
|
||||
if (*argv[argc - 1] != ']') {
|
||||
printf("[: missing `]'\n");
|
||||
return 1;
|
||||
}
|
||||
argc--;
|
||||
}
|
||||
|
||||
/* args? */
|
||||
if (argc < 3)
|
||||
return 1;
|
||||
|
@ -211,12 +219,17 @@ do_test (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return expr;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
test, CONFIG_MAXARGS, 1, do_test,
|
||||
"test - minimal test like /bin/sh\n",
|
||||
char *test_aliases[] = { "[", NULL};
|
||||
|
||||
U_BOOT_CMD_START(test)
|
||||
.aliases = test_aliases,
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_test,
|
||||
.usage = "test - minimal test like /bin/sh\n",
|
||||
U_BOOT_CMD_HELP(
|
||||
"[args..]\n"
|
||||
" - test functionality\n"
|
||||
);
|
||||
" - test functionality\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int
|
||||
do_exit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -230,12 +243,11 @@ do_exit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return -r - 2;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
exit, 2, 1, do_exit,
|
||||
"exit - exit script\n",
|
||||
" - exit functionality\n"
|
||||
);
|
||||
|
||||
U_BOOT_CMD_START(exit)
|
||||
.maxargs = 1,
|
||||
.cmd = do_exit,
|
||||
.usage = "exit - exit script\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -323,31 +335,20 @@ int do_help (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
|||
return rcode;
|
||||
}
|
||||
|
||||
char *help_aliases[] = { "?", NULL};
|
||||
|
||||
U_BOOT_CMD(
|
||||
help, CONFIG_MAXARGS, 1, do_help,
|
||||
"help - print online help\n",
|
||||
"[command ...]\n"
|
||||
U_BOOT_CMD_START(help)
|
||||
.maxargs = 2,
|
||||
.cmd = do_help,
|
||||
.aliases = help_aliases,
|
||||
.usage = "help - print online help\n",
|
||||
U_BOOT_CMD_HELP(
|
||||
" - show help information (for 'command')\n"
|
||||
"'help' prints online help for the monitor commands.\n\n"
|
||||
"Without arguments, it prints a short usage message for all commands.\n\n"
|
||||
"To get detailed help information for specific commands you can type\n"
|
||||
"'help' with one or more command names as arguments.\n"
|
||||
);
|
||||
|
||||
/* This do not ust the U_BOOT_CMD macro as ? can't be used in symbol names */
|
||||
#ifdef CONFIG_LONGHELP
|
||||
cmd_tbl_t __u_boot_cmd_question_mark Struct_Section = {
|
||||
"?", CONFIG_MAXARGS, 1, do_help,
|
||||
"? - alias for 'help'\n",
|
||||
NULL
|
||||
};
|
||||
#else
|
||||
cmd_tbl_t __u_boot_cmd_question_mark Struct_Section = {
|
||||
"?", CONFIG_MAXARGS, 1, do_help,
|
||||
"? - alias for 'help'\n"
|
||||
};
|
||||
#endif /* CONFIG_LONGHELP */
|
||||
"'help' with one or more command names as arguments.\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif /* CONFIG_CMD_HELP */
|
||||
|
||||
|
@ -358,15 +359,10 @@ cmd_tbl_t *find_cmd (const char *cmd)
|
|||
{
|
||||
cmd_tbl_t *cmdtp;
|
||||
cmd_tbl_t *cmdtp_temp = &__u_boot_cmd_start; /*Init value */
|
||||
const char *p;
|
||||
int len;
|
||||
int n_found = 0;
|
||||
|
||||
/*
|
||||
* Some commands allow length modifiers (like "cp.b");
|
||||
* compare command name only until first dot.
|
||||
*/
|
||||
len = ((p = strchr(cmd, '.')) == NULL) ? strlen (cmd) : (p - cmd);
|
||||
len = strlen (cmd);
|
||||
|
||||
for (cmdtp = &__u_boot_cmd_start;
|
||||
cmdtp != &__u_boot_cmd_end;
|
||||
|
@ -378,6 +374,19 @@ cmd_tbl_t *find_cmd (const char *cmd)
|
|||
cmdtp_temp = cmdtp; /* abbreviated command ? */
|
||||
n_found++;
|
||||
}
|
||||
if (cmdtp->aliases) {
|
||||
char **aliases = cmdtp->aliases;
|
||||
while(*aliases) {
|
||||
if (strncmp (cmd, *aliases, len) == 0) {
|
||||
if (len == strlen (cmdtp->name))
|
||||
return cmdtp; /* full match */
|
||||
|
||||
cmdtp_temp = cmdtp; /* abbreviated command ? */
|
||||
n_found++;
|
||||
}
|
||||
aliases++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (n_found == 1) { /* exactly one match */
|
||||
return cmdtp_temp;
|
||||
|
|
|
@ -1933,7 +1933,7 @@ size_t malloc_usable_size(mem) Void_t* mem;
|
|||
|
||||
/* Utility to update current_mallinfo for malloc_stats and mallinfo() */
|
||||
|
||||
#ifdef CONFIG_CMD_MALLOCINFO
|
||||
#ifdef CONFIG_CMD_MEMINFO
|
||||
static void malloc_update_mallinfo()
|
||||
{
|
||||
int i;
|
||||
|
@ -2011,7 +2011,7 @@ void malloc_stats()
|
|||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_CMD_MALLOCINFO */
|
||||
#endif /* CONFIG_CMD_MEMINFO */
|
||||
|
||||
|
||||
|
||||
|
|
23
common/env.c
23
common/env.c
|
@ -126,13 +126,15 @@ int do_printenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
printenv, CONFIG_MAXARGS, 1, do_printenv,
|
||||
"printenv- print environment variables\n",
|
||||
U_BOOT_CMD_START(printenv)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_printenv,
|
||||
.usage = "printenv- print environment variables\n",
|
||||
U_BOOT_CMD_HELP(
|
||||
"\n - print values of all environment variables\n"
|
||||
"printenv name ...\n"
|
||||
" - print value of environment variable 'name'\n"
|
||||
);
|
||||
" - print value of environment variable 'name'\n")
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#ifdef CONFIG_SIMPLE_PARSER
|
||||
int do_setenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
|
@ -147,13 +149,16 @@ int do_setenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
setenv, CONFIG_MAXARGS, 0, do_setenv,
|
||||
"setenv - set environment variables\n",
|
||||
U_BOOT_CMD_START(setenv)
|
||||
.maxargs = CONFIG_MAXARGS,
|
||||
.cmd = do_setenv,
|
||||
.usage = "setenv - set environment variables\n",
|
||||
U_BOOT_CMD_HELP(
|
||||
"name value ...\n"
|
||||
" - set environment variable 'name' to 'value ...'\n"
|
||||
"setenv name\n"
|
||||
" - delete environment variable 'name'\n"
|
||||
);
|
||||
U_BOOT_CMD_END
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -161,17 +161,17 @@ int do_delpart ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
addpart, 2, 0, do_addpart,
|
||||
"addpart - add a partition table to a device\n",
|
||||
""
|
||||
);
|
||||
U_BOOT_CMD_START(addpart)
|
||||
.maxargs = 2,
|
||||
.cmd = do_addpart,
|
||||
.usage = "addpart - add a partition table to a device\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
U_BOOT_CMD(
|
||||
delpart, 2, 0, do_delpart,
|
||||
"delpart - delete a partition table from a device\n",
|
||||
""
|
||||
);
|
||||
U_BOOT_CMD_START(delpart)
|
||||
.maxargs = 2,
|
||||
.cmd = do_delpart,
|
||||
.usage = "delpart - delete a partition table from a device\n",
|
||||
U_BOOT_CMD_END
|
||||
|
||||
int part_probe (struct device_d *dev)
|
||||
{
|
||||
|
|
|
@ -45,6 +45,8 @@
|
|||
#include <version.h>
|
||||
#include <mem_malloc.h>
|
||||
#include <debug_ll.h>
|
||||
#include <fs.h>
|
||||
#include <linux/stat.h>
|
||||
|
||||
ulong load_addr = 0; /* Default Load Address */
|
||||
|
||||
|
@ -108,6 +110,7 @@ void start_uboot (void)
|
|||
{
|
||||
initcall_t *initcall;
|
||||
int result;
|
||||
struct stat s;
|
||||
|
||||
/* compiler optimization barrier needed for GCC >= 3.4 */
|
||||
// __asm__ __volatile__("": : :"memory");
|
||||
|
@ -130,12 +133,18 @@ void start_uboot (void)
|
|||
run_command("mkdir /dev", 0);
|
||||
run_command("mkdir /env", 0);
|
||||
run_command("mount none devfs /dev", 0);
|
||||
run_command("loadenv", 0);
|
||||
|
||||
run_command("eth0.ip=172.0.0.2", 0);
|
||||
run_command("eth0.mac=80:81:82:83:84:85", 0);
|
||||
run_command("eth0.serverip=172.0.0.1", 0);
|
||||
run_command("eth0.gateway=172.0.0.1", 0);
|
||||
run_command("eth0.netmask=255.255.255.0", 0);
|
||||
if (!stat("/env/init", &s)) {
|
||||
printf("running /env/init\n");
|
||||
run_command("exec /env/init", 0);
|
||||
}
|
||||
|
||||
// run_command("eth0.ip=172.0.0.2", 0);
|
||||
// run_command("eth0.mac=80:81:82:83:84:85", 0);
|
||||
// run_command("eth0.serverip=172.0.0.1", 0);
|
||||
// run_command("eth0.gateway=172.0.0.1", 0);
|
||||
// run_command("eth0.netmask=255.255.255.0", 0);
|
||||
|
||||
/* main_loop() can return to retry autoboot, if so just run it again. */
|
||||
for (;;) {
|
||||
|
|
|
@ -183,7 +183,7 @@ static int cramfs_fill_dirent (struct device_d *dev, unsigned long offset, struc
|
|||
if (!inode)
|
||||
return -EINVAL;
|
||||
|
||||
memset(d->name, 0, 256);
|
||||
memset(d->d_name, 0, 256);
|
||||
|
||||
/*
|
||||
* Namelengths on disk are shifted by two
|
||||
|
@ -192,7 +192,7 @@ static int cramfs_fill_dirent (struct device_d *dev, unsigned long offset, struc
|
|||
*/
|
||||
|
||||
namelen = CRAMFS_GET_NAMELEN (inode) << 2;
|
||||
dev_read(dev, d->name, namelen, offset + sizeof(struct cramfs_inode), 0);
|
||||
dev_read(dev, d->d_name, namelen, offset + sizeof(struct cramfs_inode), 0);
|
||||
free(inode);
|
||||
return namelen;
|
||||
}
|
||||
|
@ -200,10 +200,10 @@ static int cramfs_fill_dirent (struct device_d *dev, unsigned long offset, struc
|
|||
struct cramfs_dir {
|
||||
unsigned long offset, size;
|
||||
unsigned long inodeoffset;
|
||||
struct dir dir;
|
||||
DIR dir;
|
||||
};
|
||||
|
||||
struct dir* cramfs_opendir(struct device_d *_dev, const char *filename)
|
||||
DIR* cramfs_opendir(struct device_d *_dev, const char *filename)
|
||||
{
|
||||
char *f;
|
||||
struct cramfs_priv *priv = _dev->priv;
|
||||
|
@ -249,7 +249,7 @@ err_free:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static struct dirent* cramfs_readdir(struct device_d *_dev, struct dir *_dir)
|
||||
static struct dirent* cramfs_readdir(struct device_d *_dev, DIR *_dir)
|
||||
{
|
||||
struct fs_device_d *fsdev = _dev->type_data;
|
||||
struct device_d *dev = fsdev->parent;
|
||||
|
@ -266,7 +266,7 @@ static struct dirent* cramfs_readdir(struct device_d *_dev, struct dir *_dir)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int cramfs_closedir(struct device_d *dev, struct dir *_dir)
|
||||
static int cramfs_closedir(struct device_d *dev, DIR *_dir)
|
||||
{
|
||||
struct cramfs_dir *dir = _dir->priv;
|
||||
free(dir);
|
||||
|
|
12
fs/devfs.c
12
fs/devfs.c
|
@ -36,11 +36,11 @@ static int devfs_close(struct device_d *dev, FILE *f)
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct dir* devfs_opendir(struct device_d *dev, const char *pathname)
|
||||
DIR* devfs_opendir(struct device_d *dev, const char *pathname)
|
||||
{
|
||||
struct dir *dir;
|
||||
DIR *dir;
|
||||
|
||||
dir = malloc(sizeof(struct dir));
|
||||
dir = malloc(sizeof(DIR));
|
||||
if (!dir)
|
||||
return NULL;
|
||||
|
||||
|
@ -49,7 +49,7 @@ struct dir* devfs_opendir(struct device_d *dev, const char *pathname)
|
|||
return dir;
|
||||
}
|
||||
|
||||
struct dirent* devfs_readdir(struct device_d *_dev, struct dir *dir)
|
||||
struct dirent* devfs_readdir(struct device_d *_dev, DIR *dir)
|
||||
{
|
||||
struct device_d *dev = dir->priv;
|
||||
|
||||
|
@ -57,14 +57,14 @@ struct dirent* devfs_readdir(struct device_d *_dev, struct dir *dir)
|
|||
dev = dev->next;
|
||||
|
||||
if (dev) {
|
||||
strcpy(dir->d.name, dev->id);
|
||||
strcpy(dir->d.d_name, dev->id);
|
||||
dir->priv = dev->next;
|
||||
return &dir->d;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int devfs_closedir(struct device_d *dev, struct dir *dir)
|
||||
int devfs_closedir(struct device_d *dev, DIR *dir)
|
||||
{
|
||||
free(dir);
|
||||
return 0;
|
||||
|
|
12
fs/fs.c
12
fs/fs.c
|
@ -188,7 +188,7 @@ static struct device_d *get_device_by_path(char **path)
|
|||
|
||||
int dir_is_empty(const char *pathname)
|
||||
{
|
||||
struct dir *dir;
|
||||
DIR *dir;
|
||||
struct dirent *d;
|
||||
int ret = 1;
|
||||
|
||||
|
@ -199,7 +199,7 @@ int dir_is_empty(const char *pathname)
|
|||
}
|
||||
|
||||
while ((d = readdir(dir))) {
|
||||
if (!strcmp(d->name, ".") || !strcmp(d->name, ".."))
|
||||
if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
|
||||
continue;
|
||||
ret = 0;
|
||||
break;
|
||||
|
@ -575,9 +575,9 @@ int umount(const char *pathname)
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct dir *opendir(const char *pathname)
|
||||
DIR *opendir(const char *pathname)
|
||||
{
|
||||
struct dir *dir = NULL;
|
||||
DIR *dir = NULL;
|
||||
struct device_d *dev;
|
||||
struct fs_driver_d *fsdrv;
|
||||
char *p = normalise_path(pathname);
|
||||
|
@ -604,12 +604,12 @@ out:
|
|||
return dir;
|
||||
}
|
||||
|
||||
struct dirent *readdir(struct dir *dir)
|
||||
struct dirent *readdir(DIR *dir)
|
||||
{
|
||||
return dir->fsdrv->readdir(dir->dev, dir);
|
||||
}
|
||||
|
||||
int closedir(struct dir *dir)
|
||||
int closedir(DIR *dir)
|
||||
{
|
||||
return dir->fsdrv->closedir(dir->dev, dir);
|
||||
}
|
||||
|
|
12
fs/ramfs.c
12
fs/ramfs.c
|
@ -426,9 +426,9 @@ int ramfs_truncate(struct device_d *dev, FILE *f, ulong size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct dir* ramfs_opendir(struct device_d *dev, const char *pathname)
|
||||
DIR* ramfs_opendir(struct device_d *dev, const char *pathname)
|
||||
{
|
||||
struct dir *dir;
|
||||
DIR *dir;
|
||||
struct ramfs_priv *priv = dev->priv;
|
||||
struct ramfs_inode *node;
|
||||
// printf("opendir: %s\n", pathname);
|
||||
|
@ -441,26 +441,26 @@ struct dir* ramfs_opendir(struct device_d *dev, const char *pathname)
|
|||
if (node->mode != S_IFDIR)
|
||||
return NULL;
|
||||
|
||||
dir = xmalloc(sizeof(struct dir));
|
||||
dir = xmalloc(sizeof(DIR));
|
||||
|
||||
dir->priv = node->child;
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
struct dirent* ramfs_readdir(struct device_d *dev, struct dir *dir)
|
||||
struct dirent* ramfs_readdir(struct device_d *dev, DIR *dir)
|
||||
{
|
||||
struct ramfs_inode *node = dir->priv;
|
||||
|
||||
if (node) {
|
||||
strcpy(dir->d.name, node->name);
|
||||
strcpy(dir->d.d_name, node->name);
|
||||
dir->priv = node->next;
|
||||
return &dir->d;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ramfs_closedir(struct device_d *dev, struct dir *dir)
|
||||
int ramfs_closedir(struct device_d *dev, DIR *dir)
|
||||
{
|
||||
free(dir);
|
||||
return 0;
|
||||
|
|
|
@ -38,8 +38,8 @@
|
|||
|
||||
struct cmd_tbl_s {
|
||||
char *name; /* Command Name */
|
||||
char **aliases;
|
||||
int maxargs; /* maximum number of arguments */
|
||||
int repeatable; /* autorepeat allowed? */
|
||||
/* Implementation function */
|
||||
int (*cmd)(struct cmd_tbl_s *, int, int, char *[]);
|
||||
char *usage; /* Usage message (short) */
|
||||
|
@ -92,16 +92,18 @@ typedef void command_t (cmd_tbl_t *, int, int, char *[]);
|
|||
|
||||
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))
|
||||
|
||||
#ifdef CONFIG_LONGHELP
|
||||
#define U_BOOT_CMD_START(_name) \
|
||||
const cmd_tbl_t __u_boot_cmd_##_name \
|
||||
Struct_Section = { \
|
||||
.name = #_name,
|
||||
|
||||
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
|
||||
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}
|
||||
#define U_BOOT_CMD_END \
|
||||
};
|
||||
|
||||
#else /* no long help info */
|
||||
|
||||
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
|
||||
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage}
|
||||
|
||||
#endif /* CONFIG_LONGHELP */
|
||||
#ifdef CONFIG_LONGHELP
|
||||
#define U_BOOT_CMD_HELP(text) .help = text,
|
||||
#else
|
||||
#define U_BOOT_CMD_HELP(text)
|
||||
#endif
|
||||
|
||||
#endif /* __COMMAND_H */
|
||||
|
|
14
include/fs.h
14
include/fs.h
|
@ -14,16 +14,16 @@ struct node_d;
|
|||
struct stat;
|
||||
|
||||
struct dirent {
|
||||
char name[256];
|
||||
char d_name[256];
|
||||
};
|
||||
|
||||
struct dir {
|
||||
typedef struct dir {
|
||||
struct device_d *dev;
|
||||
struct fs_driver_d *fsdrv;
|
||||
struct node_d *node;
|
||||
struct dirent d;
|
||||
void *priv; /* private data for the fs driver */
|
||||
};
|
||||
} DIR;
|
||||
|
||||
typedef struct filep {
|
||||
struct device_d *dev; /* The device this FILE belongs to */
|
||||
|
@ -61,7 +61,7 @@ struct fs_driver_d {
|
|||
|
||||
struct dir* (*opendir)(struct device_d *dev, const char *pathname);
|
||||
struct dirent* (*readdir)(struct device_d *dev, struct dir *dir);
|
||||
int (*closedir)(struct device_d *dev, struct dir *dir);
|
||||
int (*closedir)(struct device_d *dev, DIR *dir);
|
||||
int (*stat)(struct device_d *dev, const char *file, struct stat *stat);
|
||||
|
||||
struct driver_d drv;
|
||||
|
@ -98,9 +98,9 @@ int umount(const char *pathname);
|
|||
const char *getcwd(void);
|
||||
int chdir(const char *pathname);
|
||||
|
||||
struct dir *opendir(const char *pathname);
|
||||
struct dirent *readdir(struct dir *dir);
|
||||
int closedir(struct dir *dir);
|
||||
DIR *opendir(const char *pathname);
|
||||
struct dirent *readdir(DIR *dir);
|
||||
int closedir(DIR *dir);
|
||||
|
||||
char *mkmodestr(unsigned long mode, char *str);
|
||||
|
||||
|
|
|
@ -521,10 +521,8 @@ int do_devinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
devinfo, 2, 0, do_devinfo,
|
||||
"devinfo - display info about devices and drivers\n",
|
||||
""
|
||||
);
|
||||
|
||||
|
||||
U_BOOT_CMD_START(devinfo)
|
||||
.maxargs = 2,
|
||||
.cmd = do_devinfo,
|
||||
.usage = "devinfo - display info about devices and drivers\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
10
net/ping.c
10
net/ping.c
|
@ -109,8 +109,8 @@ int do_ping (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
ping, 2, 1, do_ping,
|
||||
"ping\t- send ICMP ECHO_REQUEST to network host\n",
|
||||
"pingAddress\n"
|
||||
);
|
||||
U_BOOT_CMD_START(ping)
|
||||
.maxargs = 2,
|
||||
.cmd = do_ping,
|
||||
.usage = "ping\t- send ICMP ECHO_REQUEST to network host\n",
|
||||
U_BOOT_CMD_END
|
||||
|
|
Loading…
Reference in New Issue