|
|
1.1 root 1: #include <tty.h>
2:
3: extern int NPROC;
4: #define STKSIZ 4096
5: #define CBSIZE 64 /* NPROC*CBSIZE <= queue.h/NCHARS */
6:
7: #ifndef QUEUE_H
8: struct cbuf { /* duplicated from queue.h for simplicity */
9: struct cbuf *next;
10: short word;
11: };
12: struct clist {
13: struct cbuf *c_tail;
14: struct cbuf *c_head;
15: short c_cc;
16: short state;
17: };
18: #endif
19: struct pcb {
20: int psw;
21: char (*pc)();
22: int sp;
23: int lower;
24: int upper;
25: int ap;
26: int fp;
27: int reg[9]; /* 9 user registers */
28: int blkmv;
29: };
30: struct Proc {
31: struct pcb pcb;
32: char *text;
33: char *data;
34: char *bss;
35: int state;
36: Layer * layer;
37: Rectangle rect; /* rectangle on screen */
38: struct clist kbdqueue;
39: char **traploc;
40: int *traptype;
41: int nticks;
42: Texture * cursor;
43: short inhibited;
44: short nchars;
45: unsigned char cbuf[CBSIZE*3]; /* circular buffer */
46: unsigned char *cbufpin, *cbufpout;
47: struct ttychars ttychars; /* chars for tty driver emulation */
48: int stack[STKSIZ/sizeof(int)]; /* int for alignment */
49: };
50:
51:
52: #ifndef MUX_H
53: # ifdef TASK_C
54: struct Proc *newproc();
55: # else
56: extern struct Proc *newproc();
57: # endif
58: extern struct Proc *P;
59: extern struct Proc proctab[];
60: #endif
61:
62: #ifdef MUXTERM
63: /*
64: * Data at start of user program
65: */
66: struct udata {
67: Rectangle Drect;
68: Layer * Jdisplayp;
69: int argc;
70: char **argv;
71: struct Mouse mouse;
72: };
73: /* states */
74: #define RUN 1 /* ready to be scheduled */
75: #define BUSY 2 /* active */
76: #define BLOCKED 4 /* blocked by user with ^S */
77: #define USER 8 /* a user-68ld'd process */
78: #define KBDLOCAL 16 /* has requested the KBD */
79: #define MOUSELOCAL 32 /* has requested the MOUSE */
80: #define GOTMOUSE 64 /* currently owns MOUSE */
81: #define WAKEUP 128 /* tell CONTROL to issue setrun(p) */
82: #define MOVED 256 /* layer got moved */
83: #define UNBLOCKED 512 /* Has been unblocked */
84: #define ZOMBIE 1024 /* proc died horribly; waiting for debugger */
85: #define RESHAPED 2048 /* layer got reshaped */
86: #define ZOMBOOT 4096 /* put in ZOMBIE state after booting */
87: #define ALARMREQD 8192 /* has requested an alarm */
88:
89: #define setrun(p) ((p)->state|=RUN)
90: #define setnorun(p) ((p)->state&=~RUN)
91:
92: #else
93: #define MOVED 256 /* layer got moved */
94: #define RESHAPED 2048 /* layer got reshaped */
95: #endif MUXTERM
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.