diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-19 21:16:03 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-19 21:16:03 +0000 |
commit | 1f5151d2c5574cbb57e57ea32416ca8970e0dec4 (patch) | |
tree | 96a1a335193aa75f1690a4226655ddbf2dc7bb73 /apps/examples/nxflat/nxflat_main.c | |
parent | 913f876fac94f21a683809d9f648e4793f61e237 (diff) | |
download | px4-nuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.tar.gz px4-nuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.tar.bz2 px4-nuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.zip |
Some minor fixes for CONFIG_ADDRENV=y
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5444 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/examples/nxflat/nxflat_main.c')
-rw-r--r-- | apps/examples/nxflat/nxflat_main.c | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/apps/examples/nxflat/nxflat_main.c b/apps/examples/nxflat/nxflat_main.c index 638e960a0..536bc1dd8 100644 --- a/apps/examples/nxflat/nxflat_main.c +++ b/apps/examples/nxflat/nxflat_main.c @@ -69,6 +69,10 @@ # error "You must provide file descriptors via CONFIG_NFILE_DESCRIPTORS in your configuration file" #endif +#ifdef CONFIG_BINFMT_DISABLE +# error "The binary loader is disabled (CONFIG_BINFMT_DISABLE)!" +#endif + #ifndef CONFIG_NXFLAT # error "You must select CONFIG_NXFLAT in your configuration file" #endif @@ -125,7 +129,9 @@ static const char delimiter[] = "****************************************************************************"; -static char path[128]; +#ifndef CONFIG_BINFMT_EXEPATH +static char fullpath[128]; +#endif /**************************************************************************** * Private Functions @@ -188,19 +194,46 @@ int nxflat_main(int argc, char *argv[]) nxflat_uninitialize(); } + /* Does the system support the PATH variable? Has the PATH variable + * already been set? If YES and NO, then set the PATH variable to + * the ROMFS mountpoint. + */ + +#if defined(CONFIG_BINFMT_EXEPATH) && !defined(CONFIG_PATH_INITIAL) + (void)setenv("PATH", MOUNTPT, 1); +#endif + /* Now excercise every progrm in the ROMFS file system */ for (i = 0; dirlist[i]; i++) { + /* Output a seperated so that we can clearly discrinmate the output of + * this program from the others. + */ + testheader(dirlist[i]); + /* Initialize the binary_s structure */ + memset(&bin, 0, sizeof(struct binary_s)); - snprintf(path, 128, "%s/%s", MOUNTPT, dirlist[i]); - bin.filename = path; + /* If the binary loader does not support the PATH variable, then + * create the full path to the executable program. Otherwise, + * use the relative path so that the binary loader will have to + * search the PATH variable to find the executable. + */ + +#ifdef CONFIG_BINFMT_EXEPATH + bin.filename = dirlist[i]; +#else + snprintf(fullpath, 128, "%s/%s", MOUNTPT, dirlist[i]); + bin.filename = fullpath; +#endif bin.exports = exports; bin.nexports = NEXPORTS; + /* Load the NXFLAT module */ + ret = load_module(&bin); if (ret < 0) { @@ -208,6 +241,8 @@ int nxflat_main(int argc, char *argv[]) exit(1); } + /* Execute the ELF module */ + ret = exec_module(&bin, 50); if (ret < 0) { |