ProcessorScheduler.st
changeset 20726 2736c31593ec
parent 20725 3aa64dbbcfa3
child 20736 56ec188751e7
equal deleted inserted replaced
20725:3aa64dbbcfa3 20726:2736c31593ec
  2028     wasBlocked := OperatingSystem blockInterrupts.
  2028     wasBlocked := OperatingSystem blockInterrupts.
  2029 
  2029 
  2030     id := aProcess id.
  2030     id := aProcess id.
  2031     id isNil ifTrue:[   "already dead"
  2031     id isNil ifTrue:[   "already dead"
  2032         wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
  2032         wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
  2033 'no id' errorPrintCR.
  2033         self checkForEndOfDispatch.
  2034         ^ self
  2034         ^ self
  2035     ].
  2035     ].
  2036 
  2036 
  2037     aProcess setId:nil state:#dead.
  2037     aProcess setId:nil state:#dead.
  2038 
  2038 
  3332         "/ check if there are any processes at all
  3332         "/ check if there are any processes at all
  3333         "/ stop dispatching if there is none
  3333         "/ stop dispatching if there is none
  3334         "/ (and anyTimeouts is false, which means that no timeout blocks are present)
  3334         "/ (and anyTimeouts is false, which means that no timeout blocks are present)
  3335         "/ and no readSemaphores are present (which means that noone is waiting for input)
  3335         "/ and no readSemaphores are present (which means that noone is waiting for input)
  3336         "/ and no writeSemaphores are present
  3336         "/ and no writeSemaphores are present
  3337 'check' errorPrintCR.
       
  3338         self noMoreUserProcesses ifTrue:[
  3337         self noMoreUserProcesses ifTrue:[
  3339 'end of dispatch' errorPrintCR.
  3338 'end of dispatch' errorPrintCR.
  3340             dispatching := false.
  3339             dispatching := false.
  3341             ^ self
  3340             ^ self
  3342         ].
  3341         ].