Changeset dbe9ff0 in mainline for src


Ignore:
Timestamp:
2005-09-01T08:53:06Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f9447155
Parents:
75d5721
Message:

Preemption work.
Define PREEMPTION_DISABLED macro.
This macro determines the level of preemptivity (0 = preemption enabled, THE→preemption_disabled = no preemption inside spinlock, 1 = preemption disabled).
Reformulate preemption code in clock.c to consider PREEMPTION_DISABLED.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/time/clock.c

    r75d5721 rdbe9ff0  
    8585
    8686        if (THREAD) {
     87                __u64 ticks;
     88               
    8789                spinlock_lock(&CPU->lock);
    8890                CPU->needs_relink++;
     
    9092       
    9193                spinlock_lock(&THREAD->lock);
    92                 if (!THREAD->ticks--) {
    93                         spinlock_unlock(&THREAD->lock);
     94                if (ticks = THREAD->ticks)
     95                        THREAD->ticks--;
     96                spinlock_unlock(&THREAD->lock);
     97               
     98                if (!ticks && !PREEMPTION_DISABLED) {
    9499                        scheduler();
    95                 }
    96                 else {
    97                         spinlock_unlock(&THREAD->lock);
    98100                }
    99101        }
Note: See TracChangeset for help on using the changeset viewer.