/* * File : module.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rt-thread.org/license/LICENSE * * Change Logs: * Date Author Notes * 2010-04-12 yi.qiu first version */ #include #include #include "string.h" #if defined(RT_USING_FINSH) && defined(RT_USING_MODULE) #include void run_module(const char* filename) { int fd, length; char *module_name; struct rt_module* module; struct _stat s; char *buffer; stat(filename, &s); buffer = (char *)rt_malloc(s.st_size); fd = open(filename, O_RDONLY, 0); length = read(fd, buffer, s.st_size); if (length <= 0) { rt_kprintf("check: read file failed\n"); close(fd); rt_free(buffer); return; } rt_kprintf("read %d bytes from file\n", length); module_name = strrchr(filename, '/'); module = rt_module_load(++module_name, (void *)buffer); rt_free(buffer); close(fd); } FINSH_FUNCTION_EXPORT(run_module, run module from file); #endif