|
|
researchv9-SUN3
#include <tty.h>
#ifndef PROC_H
#define PROC_H
extern int NPROC;
#define STKSIZ (4096-sizeof(struct _*))
#define CBSIZE 64 /* NPROC*CBSIZE <= queue.h/NCHARS */
#ifndef QUEUE_H
struct clist {
long c_tail;
long c_head;
short c_cc;
short state;
};
#endif
struct pcb {
int psw;
char (*pc)();
int sp;
int lower;
int upper;
int ap;
int fp;
int reg[9]; /* 9 user registers */
int blkmv;
};
struct Proc {
struct pcb pcb;
char *text;
char *data;
char *bss;
int state;
Layer * layer;
Rectangle rect; /* rectangle on screen */
struct clist kbdqueue;
char **traploc;
int *traptype;
int nticks;
Texture * cursor;
short inhibited;
short nchars;
unsigned char cbuf[CBSIZE*3]; /* circular buffer */
unsigned char *cbufpin, *cbufpout;
struct ttychars ttychars; /* chars for tty driver emulation */
int stack[STKSIZ/sizeof(int)]; /* int for alignment */
struct Font *defaultfont;
};
struct Nqueue { /* structure used by putname / getname */
struct Nqueue *next;
struct Proc *proc;
long data;
char name[4];
};
#ifndef MUX_H
# ifdef TASK_C
struct Proc *newproc();
# else
extern struct Proc *newproc();
# endif
extern struct Proc *P;
extern struct Proc proctab[];
#endif
#ifdef MUXTERM
/*
* Data at start of user program
*/
struct udata {
Rectangle Drect;
Layer * Jdisplayp;
int argc;
char **argv;
struct Mouse mouse;
};
/* states */
#define RUN 1 /* ready to be scheduled */
#define BUSY 2 /* active */
#define BLOCKED 4 /* blocked by user with ^S */
#define USER 8 /* a user-68ld'd process */
#define KBDLOCAL 16 /* has requested the KBD */
#define MOUSELOCAL 32 /* has requested the MOUSE */
#define GOTMOUSE 64 /* currently owns MOUSE */
#define WAKEUP 128 /* tell CONTROL to issue setrun(p) */
#define MOVED 256 /* layer got moved */
#define UNBLOCKED 512 /* Has been unblocked */
#define ZOMBIE 1024 /* proc died horribly; waiting for debugger */
#define RESHAPED 2048 /* layer got reshaped */
#define ZOMBOOT 4096 /* put in ZOMBIE state after booting */
#define ALARMREQD 8192 /* has requested an alarm */
#define setrun(p) ((p)->state|=RUN)
#define setnorun(p) ((p)->state&=~RUN)
#else
#define MOVED 256 /* layer got moved */
#define RESHAPED 2048 /* layer got reshaped */
#endif MUXTERM
#endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.