diff options
Diffstat (limited to 'firmware/thread.c')
-rw-r--r-- | firmware/thread.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c index 38933f623e..81ef42a6b0 100644 --- a/firmware/thread.c +++ b/firmware/thread.c | |||
@@ -2413,6 +2413,11 @@ unsigned int create_thread(void (*function)(void), | |||
2413 | prio_add_entry(&thread->pdist, priority); | 2413 | prio_add_entry(&thread->pdist, priority); |
2414 | #endif | 2414 | #endif |
2415 | 2415 | ||
2416 | #ifdef HAVE_IO_PRIORITY | ||
2417 | /* Default to high (foreground) priority */ | ||
2418 | thread->io_priority = IO_PRIORITY_IMMEDIATE; | ||
2419 | #endif | ||
2420 | |||
2416 | #if NUM_CORES > 1 | 2421 | #if NUM_CORES > 1 |
2417 | thread->core = core; | 2422 | thread->core = core; |
2418 | 2423 | ||
@@ -2918,6 +2923,20 @@ int thread_get_priority(unsigned int thread_id) | |||
2918 | } | 2923 | } |
2919 | #endif /* HAVE_PRIORITY_SCHEDULING */ | 2924 | #endif /* HAVE_PRIORITY_SCHEDULING */ |
2920 | 2925 | ||
2926 | #ifdef HAVE_IO_PRIORITY | ||
2927 | int thread_get_io_priority(unsigned int thread_id) | ||
2928 | { | ||
2929 | struct thread_entry *thread = thread_id_entry(thread_id); | ||
2930 | return thread->io_priority; | ||
2931 | } | ||
2932 | |||
2933 | void thread_set_io_priority(unsigned int thread_id,int io_priority) | ||
2934 | { | ||
2935 | struct thread_entry *thread = thread_id_entry(thread_id); | ||
2936 | thread->io_priority = io_priority; | ||
2937 | } | ||
2938 | #endif | ||
2939 | |||
2921 | /*--------------------------------------------------------------------------- | 2940 | /*--------------------------------------------------------------------------- |
2922 | * Starts a frozen thread - similar semantics to wakeup_thread except that | 2941 | * Starts a frozen thread - similar semantics to wakeup_thread except that |
2923 | * the thread is on no scheduler or wakeup queue at all. It exists simply by | 2942 | * the thread is on no scheduler or wakeup queue at all. It exists simply by |