Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 110 → Rev 111

/SPARTAN/trunk/src/proc/scheduler.c
42,11 → 42,8
#include <mm/page.h>
#include <synch/spinlock.h>
#include <arch/faddr.h>
#include <arch/atomic.h>
 
#ifdef __SMP__
#include <arch/smp/atomic.h>
#endif /* __SMP__ */
 
/*
* NOTE ON ATOMIC READS:
* Some architectures cannot read __u32 atomically.
53,7 → 50,6
* For that reason, all accesses to nrdy and the likes must be protected by spinlock.
*/
 
spinlock_t nrdylock;
volatile int nrdy;
 
 
77,7 → 73,6
*/
void scheduler_init(void)
{
spinlock_initialize(&nrdylock);
}
 
 
140,9 → 135,7
continue;
}
spinlock_lock(&nrdylock);
nrdy--;
spinlock_unlock(&nrdylock);
atomic_dec(&nrdy);
 
spinlock_lock(&CPU->lock);
CPU->nrdy--;
498,9 → 491,7
cpu->nrdy--;
spinlock_unlock(&cpu->lock);
 
spinlock_lock(&nrdylock);
nrdy--;
spinlock_unlock(&nrdylock);
atomic_dec(&nrdy);
 
r->n--;
list_remove(&t->rq_link);
/SPARTAN/trunk/src/proc/thread.c
49,6 → 49,7
#include <arch/interrupt.h>
#include <smp/ipi.h>
#include <arch/faddr.h>
#include <arch/atomic.h>
 
char *thread_states[] = {"Invalid", "Running", "Sleeping", "Ready", "Entering", "Exiting"}; /**< Thread states */
 
134,9 → 135,8
r->n++;
spinlock_unlock(&r->lock);
 
spinlock_lock(&nrdylock);
avg = ++nrdy / config.cpu_active;
spinlock_unlock(&nrdylock);
atomic_inc(&nrdy);
avg = nrdy / config.cpu_active;
 
spinlock_lock(&cpu->lock);
if ((++cpu->nrdy) > avg) {