From 5b08f1a5b99136ef052b6f430b62bc618cd44946 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sat, 30 Aug 2014 11:28:50 -0400 Subject: 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 --- firmware/storage.c | 58 ------------------------------------------------------ 1 file changed, 58 deletions(-) (limited to 'firmware/storage.c') 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; -- cgit v1.2.3