home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / Blitz / version-1-0 / OSProject / p3 / Thread.h < prev   
Text File  |  2006-04-17  |  2KB  |  55 lines

  1. header Thread
  2.  
  3.   uses System, List
  4.  
  5.   const
  6.  
  7.     SYSTEM_STACK_SIZE = 1000       -- in words
  8.     STACK_SENTINEL = 0x24242424    -- in ASCII, this is "$$$$"
  9.  
  10.   functions
  11.  
  12.     InitializeScheduler ()
  13.     Run (nextThread: ptr to Thread)
  14.     PrintReadyList ()
  15.     ThreadStart ()
  16.     ThreadFinish ()
  17.     FatalError (errorMessage: ptr to array of char)
  18.     SetInterruptsTo (newStatus: int) returns int
  19.     TimerInterruptHandler ()
  20.  
  21.     external Switch (prevThread, nextThread: ptr to Thread)
  22.     external ThreadStartUp ()
  23.  
  24.   var
  25.  
  26.     readyList: List [Thread]
  27.     currentThread: ptr to Thread
  28.     mainThread: Thread = new Thread
  29.     idleThread: Thread = new Thread
  30.     threadsToBeDestroyed:  List [Thread]
  31.     currentInterruptStatus: int
  32.  
  33.   enum JUST_CREATED, READY, RUNNING, BLOCKED, UNUSED      -- Thread status
  34.   enum ENABLED, DISABLED                                  -- Interrupt status
  35.  
  36.   class Thread
  37.     superclass Listable
  38.     fields
  39.       -- The first two fields are at fixed offsets, hardwired into Switch!
  40.       regs: array [13] of int        -- Space for r2..r14
  41.       stackTop: ptr to void          -- Space for r15 (system stack top ptr)
  42.       name: ptr to array of char
  43.       status: int                    -- JUST_CREATED, READY, RUNNING, BLOCKED, UNUSED
  44.       systemStack: array [SYSTEM_STACK_SIZE] of int
  45.     methods
  46.       Init (n: ptr to array of char)
  47.       Fork (fun: ptr to function (int), arg: int)
  48.       Yield ()
  49.       Sleep ()
  50.       CheckOverflow ()
  51.       Print ()
  52.   endClass
  53.  
  54. endHeader
  55.