diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2014-08-30 11:28:50 -0400 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2014-08-30 14:01:21 -0400 |
commit | 5b08f1a5b99136ef052b6f430b62bc618cd44946 (patch) | |
tree | 257d405d78e871e6b944db987ffaf5c40f862fce | |
parent | 5d31d3c3bc0358eeed08e2a5242dc2b065110aad (diff) |
Remove I/O priority. It is harmful when used with the new file code.
HAVE_IO_PRIORITY was defined for native targets with dircache.
It is already effectively disabled for the most part since dircache no
longer lowers its thread's I/O priority. It existed primarily for the
aforementioned configuration.
Change-Id: Ia04935305397ba14df34647c8ea29c2acaea92aa
-rw-r--r-- | apps/buffering.c | 9 | ||||
-rw-r--r-- | apps/buffering.h | 3 | ||||
-rw-r--r-- | apps/codec_thread.c | 8 | ||||
-rw-r--r-- | apps/playback.c | 13 | ||||
-rw-r--r-- | firmware/export/config.h | 4 | ||||
-rw-r--r-- | firmware/kernel/include/thread.h | 5 | ||||
-rw-r--r-- | firmware/kernel/thread-internal.h | 3 | ||||
-rw-r--r-- | firmware/kernel/thread.c | 18 | ||||
-rw-r--r-- | firmware/storage.c | 58 |
9 files changed, 0 insertions, 121 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index 1826fa1b91..96ec92201f 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -1572,15 +1572,6 @@ size_t buf_get_watermark(void) return BUF_WATERMARK; } -#ifdef HAVE_IO_PRIORITY -void buf_back_off_storage(bool back_off) -{ - int priority = back_off ? - IO_PRIORITY_BACKGROUND : IO_PRIORITY_IMMEDIATE; - thread_set_io_priority(buffering_thread_id, priority); -} -#endif - /** -- buffer thread helpers -- **/ static void shrink_buffer_inner(struct memory_handle *h) { diff --git a/apps/buffering.h b/apps/buffering.h index 218f77ed85..5a1369a31d 100644 --- a/apps/buffering.h +++ b/apps/buffering.h @@ -111,9 +111,6 @@ size_t buf_length(void); size_t buf_used(void); bool buf_pin_handle(int handle_id, bool pin); bool buf_signal_handle(int handle_id, bool signal); -#ifdef HAVE_IO_PRIORITY -void buf_back_off_storage(bool back_off); -#endif /* Settings */ void buf_set_watermark(size_t bytes); diff --git a/apps/codec_thread.c b/apps/codec_thread.c index f2039d10e6..a1fa96d021 100644 --- a/apps/codec_thread.c +++ b/apps/codec_thread.c @@ -470,15 +470,7 @@ static void load_codec(const struct codec_load_info *ev_data) /* Either not a valid handle or the buffer method failed */ const char *codec_fn = get_codec_filename(data.afmt); if (codec_fn) - { -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(true); -#endif status = codec_load_file(codec_fn, &ci); -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(false); -#endif - } } /* Types must agree */ diff --git a/apps/playback.c b/apps/playback.c index efc23306a0..5c2fc7f8ce 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1560,9 +1560,6 @@ static bool audio_load_cuesheet(struct track_info *info, int hid = ERR_UNSUPPORTED_TYPE; struct cuesheet_file cue_file; -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(true); -#endif if (look_for_cuesheet_file(track_id3, &cue_file)) { hid = bufalloc(NULL, sizeof (struct cuesheet), TYPE_CUESHEET); @@ -1586,9 +1583,6 @@ static bool audio_load_cuesheet(struct track_info *info, } } -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(false); -#endif if (hid == ERR_BUFFER_FULL) { logf("buffer is full for now (%s)", __func__); @@ -1627,10 +1621,6 @@ static bool audio_load_albumart(struct track_info *info, memset(&user_data, 0, sizeof(user_data)); user_data.dim = &albumart_slots[i].dim; -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(true); -#endif - /* We can only decode jpeg for embedded AA */ if (track_id3->has_embedded_albumart && track_id3->albumart.type == AA_TYPE_JPG) { @@ -1651,9 +1641,6 @@ static bool audio_load_albumart(struct track_info *info, } } -#ifdef HAVE_IO_PRIORITY - buf_back_off_storage(false); -#endif if (hid == ERR_BUFFER_FULL) { logf("buffer is full for now (%s)", __func__); diff --git a/firmware/export/config.h b/firmware/export/config.h index b1ee101fe6..a56dd32303 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -1196,10 +1196,6 @@ Lyre prototype 1 */ #define HAVE_PLUGIN_CHECK_OPEN_CLOSE #endif -#if defined(HAVE_DIRCACHE) && (CONFIG_PLATFORM & PLATFORM_NATIVE) -#define HAVE_IO_PRIORITY -#endif - #if defined(CPU_COLDIRE) || CONFIG_CPU == IMX31L /* Can record and play simultaneously */ #define HAVE_PCM_FULL_DUPLEX diff --git a/firmware/kernel/include/thread.h b/firmware/kernel/include/thread.h index dfb632785e..a4f338ed0c 100644 --- a/firmware/kernel/include/thread.h +++ b/firmware/kernel/include/thread.h @@ -169,11 +169,6 @@ int thread_set_priority(unsigned int thread_id, int priority); int thread_get_priority(unsigned int thread_id); #endif /* HAVE_PRIORITY_SCHEDULING */ -#ifdef HAVE_IO_PRIORITY -void thread_set_io_priority(unsigned int thread_id, int io_priority); -int thread_get_io_priority(unsigned int thread_id); -#endif /* HAVE_IO_PRIORITY */ - #if NUM_CORES > 1 unsigned int switch_core(unsigned int new_core); #endif diff --git a/firmware/kernel/thread-internal.h b/firmware/kernel/thread-internal.h index 10606a54a6..868e57c65c 100644 --- a/firmware/kernel/thread-internal.h +++ b/firmware/kernel/thread-internal.h @@ -134,9 +134,6 @@ struct thread_entry #ifdef HAVE_SCHEDULER_BOOSTCTRL unsigned char cpu_boost; /* CPU frequency boost flag */ #endif -#ifdef HAVE_IO_PRIORITY - unsigned char io_priority; -#endif }; /* Thread ID, 32 bits = |VVVVVVVV|VVVVVVVV|VVVVVVVV|SSSSSSSS| */ diff --git a/firmware/kernel/thread.c b/firmware/kernel/thread.c index 05c09dc594..ea76421389 100644 --- a/firmware/kernel/thread.c +++ b/firmware/kernel/thread.c @@ -367,10 +367,6 @@ static void new_thread_base_init(struct thread_entry *thread, #ifdef HAVE_SCHEDULER_BOOSTCTRL thread->cpu_boost = 0; #endif -#ifdef HAVE_IO_PRIORITY - /* Default to high (foreground) priority */ - thread->io_priority = IO_PRIORITY_IMMEDIATE; -#endif } /*--------------------------------------------------------------------------- @@ -1421,20 +1417,6 @@ int thread_get_priority(unsigned int thread_id) } #endif /* HAVE_PRIORITY_SCHEDULING */ -#ifdef HAVE_IO_PRIORITY -int thread_get_io_priority(unsigned int thread_id) -{ - struct thread_entry *thread = __thread_id_entry(thread_id); - return thread->io_priority; -} - -void thread_set_io_priority(unsigned int thread_id,int io_priority) -{ - struct thread_entry *thread = __thread_id_entry(thread_id); - thread->io_priority = io_priority; -} -#endif - /*--------------------------------------------------------------------------- * Starts a frozen thread - similar semantics to wakeup_thread except that * the thread is on no scheduler or wakeup queue at all. It exists simply by diff --git a/firmware/storage.c b/firmware/storage.c index e0b491a5f9..e9a3396f30 100644 --- a/firmware/storage.c +++ b/firmware/storage.c @@ -33,63 +33,9 @@ static unsigned int storage_drivers[NUM_DRIVES]; static unsigned int num_drives; #endif - -#ifdef HAVE_IO_PRIORITY - -/* Same for flash? */ -#define STORAGE_MINIMUM_IDLE_TIME (HZ/10) -#define STORAGE_DELAY_UNIT (HZ/20) - -static unsigned int storage_last_thread[NUM_DRIVES]; -static unsigned int storage_last_activity[NUM_DRIVES]; - -static bool storage_should_wait(int drive, int prio) -{ - int other_prio = thread_get_io_priority(storage_last_thread[drive]); - if(TIME_BEFORE(current_tick,storage_last_activity[drive]+STORAGE_MINIMUM_IDLE_TIME)) - { - if(prio<=other_prio) - { - /* There is another active thread, but we have lower priority */ - return false; - } - else - { - /* There is another active thread, but it has lower priority */ - return true; - } - } - else - { - /* There's nothing going on anyway */ - return false; - } -} - -static void storage_wait_turn(IF_MD_NONVOID(int drive)) -{ -#ifndef HAVE_MULTIDRIVE - int drive=0; -#endif - int my_prio = thread_get_io_priority(thread_self()); - int loops=my_prio; - while(storage_should_wait(drive, my_prio) && (loops--)>=0) - { - sleep(STORAGE_DELAY_UNIT); - } - - storage_last_thread[drive] = thread_self(); - storage_last_activity[drive] = current_tick; -} -#endif - int storage_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf) { -#ifdef HAVE_IO_PRIORITY - storage_wait_turn(IF_MD(drive)); -#endif - #ifdef CONFIG_STORAGE_MULTI int driver=(storage_drivers[drive] & DRIVER_MASK)>>DRIVER_OFFSET; int ldrive=(storage_drivers[drive] & DRIVE_MASK)>>DRIVE_OFFSET; @@ -132,10 +78,6 @@ int storage_read_sectors(IF_MD(int drive,) unsigned long start, int count, int storage_write_sectors(IF_MD(int drive,) unsigned long start, int count, const void* buf) { -#ifdef HAVE_IO_PRIORITY - storage_wait_turn(IF_MD(drive)); -#endif - #ifdef CONFIG_STORAGE_MULTI int driver=(storage_drivers[drive] & DRIVER_MASK)>>DRIVER_OFFSET; int ldrive=(storage_drivers[drive] & DRIVE_MASK)>>DRIVE_OFFSET; |