#define CONFIGURE_INIT
#include <system_def.h>
+#include "appl_config.h"
#include "system.h"
#include "app_def.h"
-#include "appl_config.h"
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <rtems/error.h>
#include <rtems/monitor.h>
#include <rtems/shell.h>
+#include <rtems/rtl/dlfcn-shell.h>
+
+#define USE_RTEMS_TARFS_LOAD
+
+#ifdef USE_RTEMS_TARFS_LOAD
+#include <rtems/imfs.h>
+#else /*USE_RTEMS_TARFS_LOAD*/
#include <rtems/untar.h>
+#endif /*USE_RTEMS_TARFS_LOAD*/
#ifdef CONFIG_OC_APP_APPDL_NET
#include <rtems/rtems_bsdnet.h>
#define CONFIGURE_SHELL_COMMANDS_ALL
#define CONFIGURE_SHELL_COMMANDS_ALL_NETWORKING
#define CONFIGURE_SHELL_MOUNT_MSDOS
+#ifdef CONFIG_OC_APP_APPDL_NET
#define CONFIGURE_SHELL_MOUNT_NFS
+#endif
#include <rtems/shellconfig.h>
typedef int (*call_t)(int argc, char* argv[]);
-int dlopen_forshell(int argc, char **argv)
+volatile int continue_execution;
+
+int dlrun_forshell(int argc, char **argv)
{
void * handle;
int unresolved;
)
{
rtems_status_code status;
+ #ifdef USE_RTEMS_TARFS_LOAD
+ int res;
+ #endif /*USE_RTEMS_TARFS_LOAD*/
printf( "\n\nRTEMS v "
BUILD_VERSION_STRING(__RTEMS_MAJOR__ ,__RTEMS_MINOR__ ,__RTEMS_REVISION__)
BUILD_VERSION_STRING(SW_VER_MAJOR,SW_VER_MINOR,SW_VER_PATCH)
"\n" );
+ #ifdef USE_RTEMS_TARFS_LOAD
+ res = rtems_tarfs_load("/", (void*)(&TARFILE_START), (long)&TARFILE_SIZE);
+ printf("rtems_tarfs_load returned %d\n", res);
+ #else /*USE_RTEMS_TARFS_LOAD*/
status = Untar_FromMemory((unsigned char *)(&TARFILE_START), (long)&TARFILE_SIZE);
-
printf("Untar_FromMemory returned %s\n",rtems_status_text(status));
+ #endif /*USE_RTEMS_TARFS_LOAD*/
Task_1_name = rtems_build_name( 'T', 'S', 'K', '1' );
"test command for shell",
testcmd_forshell);
- rtems_shell_add_cmd("dlopen", "app",
- "runtime load object and call contained function",
- dlopen_forshell);
+ rtems_shell_add_cmd("dlrun", "rtl",
+ "runtime load object and run specified function",
+ dlrun_forshell);
+
+ rtems_shell_add_cmd("dlopen", "rtl",
+ "runtime load object",
+ shell_dlopen);
+
+ rtems_shell_add_cmd("dlclose", "rtl",
+ "close reference to loaded object",
+ shell_dlclose);
+
+ rtems_shell_add_cmd("dlsym", "rtl",
+ "obtain reference to symbol in loaded object",
+ shell_dlsym);
+
+ rtems_shell_add_cmd("dlcall", "rtl",
+ "call function in loaded object",
+ shell_dlcall);
//rtems_monitor_wakeup();