Implement redirection of output from NSH builtin commands to a file in a mounted volume

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5521 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2013-01-15 21:01:37 +00:00
parent 8c3c7314a8
commit fd1189a6fe
4 changed files with 22 additions and 20 deletions

View File

@ -73,7 +73,7 @@ CONFIG_SCHED_WORKPRIORITY=192
CONFIG_SCHED_WORKPERIOD=50000
CONFIG_SCHED_WORKSTACKSIZE=1024
CONFIG_SIG_SIGWORK=17
CONFIG_SCHED_WAITPID=n
CONFIG_SCHED_WAITPID=y
CONFIG_SCHED_ATEXIT=n
CONFIG_SCHED_ONEXIT=n
@ -224,6 +224,7 @@ CONFIG_EXAMPLES_OSTEST_STACKSIZE=8192
#
# Settings for apps/nshlib
#
CONFIG_NSH_BUILTIN_APPS=n
CONFIG_NSH_FILEIOSIZE=1024
CONFIG_NSH_STRERROR=n
CONFIG_NSH_LINELEN=80

View File

@ -12,8 +12,7 @@ Execution starts in the following order:
is set. It must be set for the VSN board.
- boot, performs initial chip and board initialization
- sched/os_bringup.c then calls either user_start or exec_builtin()
with application as set in the .config
- sched/os_bringup.c then calls user entry defined in the .config file.
Naming throughout the code

View File

@ -1314,15 +1314,16 @@ static int fat_dup(FAR const struct file *oldp, FAR struct file *newp)
* file is re-opened.
*/
newff->ff_bflags = 0;
newff->ff_oflags = oldff->ff_oflags;
newff->ff_sectorsincluster = oldff->ff_sectorsincluster;
newff->ff_dirindex = oldff->ff_dirindex;
newff->ff_currentcluster = oldff->ff_currentcluster;
newff->ff_dirsector = oldff->ff_dirsector;
newff->ff_size = oldff->ff_size;
newff->ff_currentsector = 0;
newff->ff_cachesector = 0;
newff->ff_bflags = 0; /* File buffer flags */
newff->ff_oflags = oldff->ff_oflags; /* File open flags */
newff->ff_sectorsincluster = oldff->ff_sectorsincluster; /* Sectors remaining in cluster */
newff->ff_dirindex = oldff->ff_dirindex; /* Index to directory entry */
newff->ff_currentcluster = oldff->ff_currentcluster; /* Current cluster */
newff->ff_dirsector = oldff->ff_dirsector; /* Sector containing directory entry */
newff->ff_size = oldff->ff_size; /* Size of the file */
newff->ff_startcluster = oldff->ff_startcluster; /* Start cluster of file on media */
newff->ff_currentsector = oldff->ff_currentsector; /* Current sector */
newff->ff_cachesector = 0; /* Sector in file buffer */
/* Attach the private date to the struct file instance */

View File

@ -56,6 +56,7 @@
#include <errno.h>
#include <debug.h>
#include <nuttx/kmalloc.h>
#include <nuttx/fs/fs.h>
#include <nuttx/fs/ioctl.h>
#include <nuttx/fs/dirent.h>
@ -225,7 +226,7 @@ static int romfs_open(FAR struct file *filep, FAR const char *relpath,
* file.
*/
rf = (FAR struct romfs_file_s *)zalloc(sizeof(struct romfs_file_s));
rf = (FAR struct romfs_file_s *)kzalloc(sizeof(struct romfs_file_s));
if (!rf)
{
fdbg("Failed to allocate private data\n", ret);
@ -317,12 +318,12 @@ static int romfs_close(FAR struct file *filep)
if (!rm->rm_xipbase && rf->rf_buffer)
{
free(rf->rf_buffer);
kfree(rf->rf_buffer);
}
/* Then free the file structure itself. */
free(rf);
kfree(rf);
filep->f_priv = NULL;
return ret;
}
@ -915,7 +916,7 @@ static int romfs_bind(FAR struct inode *blkdriver, FAR const void *data,
/* Create an instance of the mountpt state structure */
rm = (FAR struct romfs_mountpt_s *)zalloc(sizeof(struct romfs_mountpt_s));
rm = (FAR struct romfs_mountpt_s *)kzalloc(sizeof(struct romfs_mountpt_s));
if (!rm)
{
fdbg("Failed to allocate mountpoint structure\n");
@ -959,12 +960,12 @@ static int romfs_bind(FAR struct inode *blkdriver, FAR const void *data,
errout_with_buffer:
if (!rm->rm_xipbase)
{
free(rm->rm_buffer);
kfree(rm->rm_buffer);
}
errout_with_sem:
sem_destroy(&rm->rm_sem);
free(rm);
kfree(rm);
return ret;
}
@ -1031,11 +1032,11 @@ static int romfs_unbind(FAR void *handle, FAR struct inode **blkdriver)
if (!rm->rm_xipbase && rm->rm_buffer)
{
free(rm->rm_buffer);
kfree(rm->rm_buffer);
}
sem_destroy(&rm->rm_sem);
free(rm);
kfree(rm);
return OK;
}