From 3f365fc06b67f8842b2e155349110f7c5659768d Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sat, 26 May 2012 22:46:56 +0200 Subject: load_code: Get rid of win32 specific code in favor SDL_LoadFunction & friends APIs. Refactor native/hosted implementation seperation while at it (no wrappers starting with _ anymore). Change-Id: If68ae89700443bb3be483c1cace3d6739409560a --- firmware/load_code.c | 104 --------------------------------------------------- 1 file changed, 104 deletions(-) (limited to 'firmware/load_code.c') diff --git a/firmware/load_code.c b/firmware/load_code.c index a76aca3..d22d6bb 100644 --- a/firmware/load_code.c +++ b/firmware/load_code.c @@ -25,8 +25,6 @@ #include "debug.h" #include "load_code.h" -#if (CONFIG_PLATFORM & PLATFORM_NATIVE) - /* load binary blob from disk to memory, returning a handle */ void * lc_open(const char *filename, unsigned char *buf, size_t buf_size) { @@ -97,105 +95,3 @@ error_fd: error: return NULL; } - -#elif (CONFIG_PLATFORM & PLATFORM_HOSTED) -/* libdl wrappers */ - - -#ifdef WIN32 -/* win32 */ -#include -#define dlopen(_x_, _y_) LoadLibraryW(_x_) -#define dlsym(_x_, _y_) (void *)GetProcAddress(_x_, _y_) -#define dlclose(_x_) FreeLibrary(_x_) -static inline char *_dlerror(void) -{ - static char err_buf[64]; - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, - err_buf, sizeof(err_buf), NULL); - return err_buf; -} -#define dlerror _dlerror -#else -/* unix */ -#include -#endif -#include -#include "rbpaths.h" -#include "general.h" - -void * _lc_open(const _lc_open_char *filename, unsigned char *buf, size_t buf_size) -{ - (void)buf; - (void)buf_size; - return dlopen(filename, RTLD_NOW); -} - -void *lc_open_from_mem(void *addr, size_t blob_size) -{ -#ifndef SIMULATOR - (void)addr; - (void)blob_size; - /* we don't support loading code from memory on application builds, - * it doesn't make sense (since it means writing the blob to disk again and - * then falling back to load from disk) and requires the ability to write - * to an executable directory */ - return NULL; -#else - /* support it in the sim for the sake of simulating */ - int fd, i; - char temp_filename[MAX_PATH]; - - /* We have to create the dynamic link library file from ram so we - can simulate the codec loading. With voice and crossfade, - multiple codecs may be loaded at the same time, so we need - to find an unused filename */ - for (i = 0; i < 10; i++) - { - snprintf(temp_filename, sizeof(temp_filename), - ROCKBOX_DIR "/libtemp_binary_%d.dll", i); - fd = open(temp_filename, O_WRONLY|O_CREAT|O_TRUNC, 0700); - if (fd >= 0) - break; /* Created a file ok */ - } - - if (fd < 0) - { - DEBUGF("open failed\n"); - return NULL; - } - - if (write(fd, addr, blob_size) < (ssize_t)blob_size) - { - DEBUGF("Write failed\n"); - close(fd); - remove(temp_filename); - return NULL; - } - - close(fd); - return lc_open(temp_filename, NULL, 0); -#endif -} - - -void *_lc_get_header(void *handle) -{ - char *ret = dlsym(handle, "__header"); - if (ret == NULL) - ret = dlsym(handle, "___header"); - - return ret; -} - -void _lc_close(void *handle) -{ - if (handle) - dlclose(handle); -} - -const char *lc_last_error(void) -{ - return dlerror(); -} -#endif -- cgit v1.1