source: buchla-68k/orig/lib/INCLUDE/MTDEFS.H@ 6888aa2

Last change on this file since 6888aa2 was 3ae31e9, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Imported original source code.

  • Property mode set to 100755
File size: 2.3 KB
RevLine 
[3ae31e9]1/*
2 =============================================================================
3 mtdefs.h -- mutlitasker definitions
4 Version 22 -- 1988-04-14 -- D.N. Lynx Crowe
5 (c) Copyright 1988 -- D.N. Lynx Crowe
6 WARNING: all of these data structures are highly ORDER DEPENDENT.
7 =============================================================================
8*/
9
10/* #define DEBUGGER define to enable debugging in all MT code */
11
12#define MT_NilSR (unsigned)0x2200 /* SR value for _MT_Nil() */
13#define MT_DfPri (unsigned)0x4000 /* default task priority */
14
15#define MTF_RDY 0x0001 /* task ready to run (on MT_RdyQ) */
16#define MTF_SWT 0x0002 /* task waiting on a semaphore */
17#define MTF_RUN 0x0004 /* task running (MT_CurP) */
18#define MTF_STP 0x0008 /* task to be stopped (waiting) */
19
20#define MTF_OCC 0x8000 /* TCB occupied */
21
22/*
23
24*/
25
26typedef long SEM; /* Semaphore */
27
28typedef struct _mt_msg { /* Message */
29
30 struct _mt_msg *next; /* pointer to next message in queue */
31 SEM reply; /* reply semaphore */
32 long msize; /* message size */
33 long mdata; /* message data or pointer */
34} MSG;
35
36typedef struct _mt_mbx { /* Mailbox */
37
38 SEM mail; /* mail waiting semaphore */
39 SEM mutex; /* mutual exclusion semphore */
40 MSG *head; /* pointer to head of message queue */
41 MSG *tail; /* pointer to tail of message queue */
42} MBOX;
43
44typedef struct _mt_tcb { /* Task Control Block */
45
46 struct _mt_tcb *next; /* pointer to next TCB in queue */
47 struct _mt_tcb *fwd; /* pointer to next TCB in chain */
48 unsigned tid; /* task identifier */
49 unsigned pri; /* task priority */
50 long slice; /* time slice */
51 long reg[16]; /* registers */
52 long sp; /* stack pointer */
53 long pc; /* program counter */
54 unsigned sr; /* status register */
55 unsigned flags; /* task status flags */
56 long tos; /* pointer to top of stack */
57} TCB;
58
59struct _mt_str { /* Multi-Tasker variable structure */
60
61 TCB *TCBs; /* TCB chain pointer */
62 TCB *CurP; /* current TCB pointer */
63 TCB *RdyQ; /* ready queue pointer */
64 unsigned IDct; /* TCB ID counter */
65};
66
67struct _mt_def { /* Multi-Tasker interface block */
68
69 struct _mt_str *mtp; /* pointer to mt_str structure */
70 SEM *FCLK; /* pointer to SemFCLK */
71 SEM *Quit; /* pointer to SemQuit */
72 MBOX *Vid; /* pointer to MSG_Vid */
73};
Note: See TracBrowser for help on using the repository browser.