summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2014-08-30 11:28:50 -0400
committerMichael Sevakis <jethead71@rockbox.org>2014-08-30 14:01:21 -0400
commit5b08f1a5b99136ef052b6f430b62bc618cd44946 (patch)
tree257d405d78e871e6b944db987ffaf5c40f862fce
parent5d31d3c3bc0358eeed08e2a5242dc2b065110aad (diff)
downloadrockbox-5b08f1a.tar.gz
rockbox-5b08f1a.tar.bz2
rockbox-5b08f1a.zip
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.c9
-rw-r--r--apps/buffering.h3
-rw-r--r--apps/codec_thread.c8
-rw-r--r--apps/playback.c13
-rw-r--r--firmware/export/config.h4
-rw-r--r--firmware/kernel/include/thread.h5
-rw-r--r--firmware/kernel/thread-internal.h3
-rw-r--r--firmware/kernel/thread.c18
-rw-r--r--firmware/storage.c58
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;