diff options
| author | Thomas Martitz <kugel@rockbox.org> | 2012-05-26 22:46:56 +0200 |
|---|---|---|
| committer | Thomas Martitz <kugel@rockbox.org> | 2012-05-26 22:46:56 +0200 |
| commit | 3f365fc06b67f8842b2e155349110f7c5659768d (patch) | |
| tree | 3c83d9fc4802331cf542bfb23546a52b2190ba5c /firmware/load_code.c | |
| parent | 3f72ba0e3f34ac47a83a426e6a19b96045b842de (diff) | |
| download | rockbox-3f365fc06b67f8842b2e155349110f7c5659768d.zip rockbox-3f365fc06b67f8842b2e155349110f7c5659768d.tar.gz rockbox-3f365fc06b67f8842b2e155349110f7c5659768d.tar.bz2 rockbox-3f365fc06b67f8842b2e155349110f7c5659768d.tar.xz | |
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
Diffstat (limited to 'firmware/load_code.c')
| -rw-r--r-- | firmware/load_code.c | 104 |
1 files changed, 0 insertions, 104 deletions
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 <windows.h> -#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 <dlfcn.h> -#endif -#include <stdio.h> -#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 |