kernel: Remove Thread::next_priority

This commit is contained in:
Pawel Dziepak
2013-10-08 20:21:35 +02:00
parent 346e789a21
commit 9363e99b19
5 changed files with 13 additions and 22 deletions
-1
View File
@@ -422,7 +422,6 @@ struct Thread : TeamThreadIteratorEntry<thread_id>, KernelReferenceable,
timer alarm; // protected by scheduler lock timer alarm; // protected by scheduler lock
char name[B_OS_NAME_LENGTH]; // protected by fLock char name[B_OS_NAME_LENGTH]; // protected by fLock
int32 priority; // protected by scheduler lock int32 priority; // protected by scheduler lock
int32 next_priority; // protected by scheduler lock
int32 io_priority; // protected by fLock int32 io_priority; // protected by fLock
int32 state; // protected by scheduler lock int32 state; // protected by scheduler lock
int32 next_state; // protected by scheduler lock int32 next_state; // protected by scheduler lock
@@ -154,7 +154,7 @@ affine_enqueue_in_run_queue(Thread *thread)
} else { } else {
Thread *curr, *prev; Thread *curr, *prev;
for (curr = sRunQueue[targetCPU], prev = NULL; curr for (curr = sRunQueue[targetCPU], prev = NULL; curr
&& curr->priority >= thread->next_priority; && curr->priority >= thread->priority;
curr = curr->queue_next) { curr = curr->queue_next) {
if (prev) if (prev)
prev = prev->queue_next; prev = prev->queue_next;
@@ -173,8 +173,6 @@ affine_enqueue_in_run_queue(Thread *thread)
thread->scheduler_data->fLastQueue = targetCPU; thread->scheduler_data->fLastQueue = targetCPU;
} }
thread->next_priority = thread->priority;
// notify listeners // notify listeners
NotifySchedulerListeners(&SchedulerListener::ThreadEnqueuedInRunQueue, NotifySchedulerListeners(&SchedulerListener::ThreadEnqueuedInRunQueue,
thread); thread);
@@ -304,7 +302,7 @@ affine_set_thread_priority(Thread *thread, int32 priority)
thread = dequeue_from_run_queue(prev, targetCPU); thread = dequeue_from_run_queue(prev, targetCPU);
// set priority and re-insert // set priority and re-insert
thread->priority = thread->next_priority = priority; thread->priority = priority;
affine_enqueue_in_run_queue(thread); affine_enqueue_in_run_queue(thread);
} }
@@ -152,7 +152,7 @@ simple_get_effective_priority(Thread* thread)
ASSERT(schedulerThreadData->priority_penalty >= 0); ASSERT(schedulerThreadData->priority_penalty >= 0);
ASSERT(effectivePriority >= B_LOWEST_ACTIVE_PRIORITY); ASSERT(effectivePriority >= B_LOWEST_ACTIVE_PRIORITY);
return min_c(effectivePriority, thread->next_priority); return effectivePriority;
} }
@@ -217,7 +217,6 @@ simple_enqueue_in_run_queue(Thread* thread)
else else
sRunQueue->PushBack(thread, threadPriority); sRunQueue->PushBack(thread, threadPriority);
thread->next_priority = thread->priority;
schedulerThreadData->cpu_bound = true; schedulerThreadData->cpu_bound = true;
schedulerThreadData->time_left = 0; schedulerThreadData->time_left = 0;
schedulerThreadData->stolen_time = 0; schedulerThreadData->stolen_time = 0;
@@ -267,7 +266,7 @@ simple_set_thread_priority(Thread* thread, int32 priority)
// set priority and re-insert // set priority and re-insert
simple_cancel_penalty(thread); simple_cancel_penalty(thread);
thread->priority = thread->next_priority = priority; thread->priority = priority;
simple_enqueue_in_run_queue(thread); simple_enqueue_in_run_queue(thread);
} }
@@ -118,7 +118,7 @@ enqueue_in_run_queue(Thread *thread)
Thread *curr, *prev; Thread *curr, *prev;
for (curr = sRunQueue, prev = NULL; curr for (curr = sRunQueue, prev = NULL; curr
&& curr->priority >= thread->next_priority; && curr->priority >= thread->priority;
curr = curr->queue_next) { curr = curr->queue_next) {
if (prev) if (prev)
prev = prev->queue_next; prev = prev->queue_next;
@@ -134,8 +134,6 @@ enqueue_in_run_queue(Thread *thread)
else else
sRunQueue = thread; sRunQueue = thread;
thread->next_priority = thread->priority;
if (thread->priority != B_IDLE_PRIORITY) { if (thread->priority != B_IDLE_PRIORITY) {
// Select a CPU for the thread to run on. It's not certain that the // Select a CPU for the thread to run on. It's not certain that the
// thread will actually run on it, but we will notify the CPU to // thread will actually run on it, but we will notify the CPU to
@@ -211,7 +209,7 @@ set_thread_priority(Thread *thread, int32 priority)
sRunQueue = item->queue_next; sRunQueue = item->queue_next;
// set priority and re-insert // set priority and re-insert
thread->priority = thread->next_priority = priority; thread->priority = priority;
enqueue_in_run_queue(thread); enqueue_in_run_queue(thread);
} }
+7 -10
View File
@@ -167,7 +167,6 @@ Thread::Thread(const char* name, thread_id threadID, struct cpu_ent* cpu)
team_next(NULL), team_next(NULL),
queue_next(NULL), queue_next(NULL),
priority(-1), priority(-1),
next_priority(-1),
io_priority(-1), io_priority(-1),
cpu(cpu), cpu(cpu),
previous_cpu(NULL), previous_cpu(NULL),
@@ -901,7 +900,6 @@ thread_create_thread(const ThreadCreationAttributes& attributes, bool kernel)
// available for deinitialization // available for deinitialization
thread->priority = attributes.priority == -1 thread->priority = attributes.priority == -1
? B_NORMAL_PRIORITY : attributes.priority; ? B_NORMAL_PRIORITY : attributes.priority;
thread->next_priority = thread->priority;
thread->state = B_THREAD_SUSPENDED; thread->state = B_THREAD_SUSPENDED;
thread->next_state = B_THREAD_SUSPENDED; thread->next_state = B_THREAD_SUSPENDED;
@@ -1427,7 +1425,7 @@ make_thread_unreal(int argc, char **argv)
continue; continue;
if (thread->priority > B_DISPLAY_PRIORITY) { if (thread->priority > B_DISPLAY_PRIORITY) {
thread->priority = thread->next_priority = B_NORMAL_PRIORITY; thread->priority = B_NORMAL_PRIORITY;
kprintf("thread %" B_PRId32 " made unreal\n", thread->id); kprintf("thread %" B_PRId32 " made unreal\n", thread->id);
} }
} }
@@ -1463,7 +1461,7 @@ set_thread_prio(int argc, char **argv)
Thread* thread = it.Next();) { Thread* thread = it.Next();) {
if (thread->id != id) if (thread->id != id)
continue; continue;
thread->priority = thread->next_priority = prio; thread->priority = prio;
kprintf("thread %" B_PRId32 " set to priority %" B_PRId32 "\n", id, prio); kprintf("thread %" B_PRId32 " set to priority %" B_PRId32 "\n", id, prio);
found = true; found = true;
break; break;
@@ -1702,9 +1700,8 @@ _dump_thread_info(Thread *thread, bool shortInfo)
kprintf("name: \"%s\"\n", thread->name); kprintf("name: \"%s\"\n", thread->name);
kprintf("hash_next: %p\nteam_next: %p\nq_next: %p\n", kprintf("hash_next: %p\nteam_next: %p\nq_next: %p\n",
thread->hash_next, thread->team_next, thread->queue_next); thread->hash_next, thread->team_next, thread->queue_next);
kprintf("priority: %" B_PRId32 " (next %" B_PRId32 ", " kprintf("priority: %" B_PRId32 " (I/O: %" B_PRId32 ")\n",
"I/O: %" B_PRId32 ")\n", thread->priority, thread->next_priority, thread->priority, thread->io_priority);
thread->io_priority);
kprintf("state: %s\n", state_to_text(thread, thread->state)); kprintf("state: %s\n", state_to_text(thread, thread->state));
kprintf("next_state: %s\n", state_to_text(thread, thread->next_state)); kprintf("next_state: %s\n", state_to_text(thread, thread->next_state));
kprintf("cpu: %p ", thread->cpu); kprintf("cpu: %p ", thread->cpu);
@@ -1919,7 +1916,7 @@ thread_exit(void)
panic("thread_exit() called with interrupts disabled!\n"); panic("thread_exit() called with interrupts disabled!\n");
// boost our priority to get this over with // boost our priority to get this over with
thread->priority = thread->next_priority = B_URGENT_DISPLAY_PRIORITY; thread->priority = B_URGENT_DISPLAY_PRIORITY;
if (team != kernelTeam) { if (team != kernelTeam) {
// Cancel previously installed alarm timer, if any. Hold the scheduler // Cancel previously installed alarm timer, if any. Hold the scheduler
@@ -2730,7 +2727,7 @@ thread_init(kernel_args *args)
gCPU[i].running_thread = thread; gCPU[i].running_thread = thread;
thread->team = team_get_kernel_team(); thread->team = team_get_kernel_team();
thread->priority = thread->next_priority = B_IDLE_PRIORITY; thread->priority = B_IDLE_PRIORITY;
thread->state = B_THREAD_RUNNING; thread->state = B_THREAD_RUNNING;
thread->next_state = B_THREAD_READY; thread->next_state = B_THREAD_READY;
sprintf(name, "idle thread %" B_PRIu32 " kstack", i + 1); sprintf(name, "idle thread %" B_PRIu32 " kstack", i + 1);
@@ -3217,7 +3214,7 @@ set_thread_priority(thread_id id, int32 priority)
// It's ourself, so we know we aren't in the run queue, and we can // It's ourself, so we know we aren't in the run queue, and we can
// manipulate our structure directly. // manipulate our structure directly.
oldPriority = thread->priority; oldPriority = thread->priority;
thread->priority = thread->next_priority = priority; thread->priority = priority;
} else { } else {
oldPriority = thread->priority; oldPriority = thread->priority;
scheduler_set_thread_priority(thread, priority); scheduler_set_thread_priority(thread, priority);