diff options
author | Thomas Martitz <kugel@rockbox.org> | 2014-02-07 18:12:31 +0100 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2014-02-23 20:23:51 +0100 |
commit | 77f19f75eb3661b3e3966da20effa2631ed380f1 (patch) | |
tree | 1e29f482e6de115cf6cdbf9958cba3d7ce8dc6af /firmware/export/storage.h | |
parent | 706e6b7a75339cadc7b8a856a2eace68f89bb168 (diff) | |
download | rockbox-77f19f75eb3661b3e3966da20effa2631ed380f1.tar.gz rockbox-77f19f75eb3661b3e3966da20effa2631ed380f1.zip |
storage: Add STORAGE_HOSTFS
CONFIG_STORAGE & STORAGE_HOSTFS allows to use parts of the storage_* API to be
compiled for application targets without compiling storage.c or performing
actually raw storage access. This is primarily to enable application targets to
implement HAVE_MULTIVOMULE/HAVE_HOTSWAP (in a later commit).
SIMULATOR uses the same mechanism without explicitely defining STORAGE_HOSTFS
(how to add a bit to an existing preprocessor token?).
Change-Id: Ib3f8ee0d5231e2ed21ff00842d51e32bc4fc7292
Diffstat (limited to 'firmware/export/storage.h')
-rw-r--r-- | firmware/export/storage.h | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/firmware/export/storage.h b/firmware/export/storage.h index 1793e385df..8e7281d523 100644 --- a/firmware/export/storage.h +++ b/firmware/export/storage.h @@ -26,6 +26,10 @@ #include "config.h" /* for HAVE_MULTIDRIVE or not */ #include "mv.h" +#if (CONFIG_STORAGE & STORAGE_HOSTFS) || defined(SIMULATOR) +#define HAVE_HOSTFS +#endif + #if (CONFIG_STORAGE & STORAGE_SD) #include "sd.h" #endif @@ -51,19 +55,20 @@ struct storage_info char *revision; }; -#if (CONFIG_STORAGE == 0) +#ifdef HAVE_HOSTFS +#include "hostfs.h" /* stubs for the plugin api */ static inline void stub_storage_sleep(void) {} static inline void stub_storage_spin(void) {} static inline void stub_storage_spindown(int timeout) { (void)timeout; } #endif -#if defined(CONFIG_STORAGE) && !defined(CONFIG_STORAGE_MULTI) +#if !defined(CONFIG_STORAGE_MULTI) || defined(HAVE_HOSTFS) /* storage_spindown, storage_sleep and storage_spin are passed as * pointers, which doesn't work with argument-macros. */ #define storage_num_drives() NUM_DRIVES - #if (CONFIG_STORAGE == 0) /* application */ + #if defined(HAVE_HOSTFS) #define STORAGE_FUNCTION(NAME) (stub_## NAME) #define storage_spindown stub_storage_spindown #define storage_sleep stub_storage_sleep @@ -73,8 +78,21 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; } #define storage_sleepnow() #define storage_disk_is_active() 0 #define storage_soft_reset() - #define storage_init() - #define storage_close() + #define storage_init() hostfs_init() + #ifdef HAVE_STORAGE_FLUSH + #define storage_flush() hostfs_flush() + #endif + #define storage_last_disk_activity() (-1) + #define storage_spinup_time() 0 + #define storage_get_identify() (NULL) /* not actually called anywher */ + + #ifdef STORAGE_GET_INFO + #error storage_get_info not implemented + #endif + #ifdef HAVE_HOTSWAP + #define storage_removable(drive) hostfs_removable(IF_MD(drive)) + #define storage_present(drive) hostfs_present(IF_MD(drive)) + #endif #elif (CONFIG_STORAGE & STORAGE_ATA) #define STORAGE_FUNCTION(NAME) (ata_## NAME) #define storage_spindown ata_spindown @@ -205,9 +223,9 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; } #else //#error No storage driver! #endif -#else /* NOT CONFIG_STORAGE_MULTI and PLATFORM_NATIVE*/ +#else /* CONFIG_STORAGE_MULTI || !HAVE_HOSTFS */ -/* Simulator and multi-driver use normal functions */ +/* Multi-driver use normal functions */ void storage_enable(bool on); void storage_sleep(void); |