|
|
1.1 ! root 1: #include "core.pri" ! 2: #include "m68kcore.h" ! 3: #ifdef V9 ! 4: #include <sys/param.h> ! 5: #include <sys/dir.h> ! 6: #include <machine/pte.h> ! 7: #include <sys/user.h> ! 8: #include <sys/proc.h> ! 9: #include <sys/pioctl.h> ! 10: #else ! 11: #include <sys/types.h> ! 12: #include <sys/reg.h> ! 13: #include <sys/time.h> ! 14: #include <sys/param.h> ! 15: #include <sys/user.h> ! 16: #include <sys/core.h> ! 17: #include <sys/ptrace.h> ! 18: #include <sys/wait.h> ! 19: int ptrace(int,int,...); ! 20: #endif V9 ! 21: ! 22: #define SYSADR KERNELBASE /* address of system seg. */ ! 23: #define USRADR UADDR /* start of User page */ ! 24: ! 25: char *SignalName(int); ! 26: void Wait3(); ! 27: ! 28: class HostCore : public M68kCore { ! 29: friend SigMask; friend KernCore; ! 30: friend HostProcess; friend HostContext; ! 31: int kmemfd; ! 32: #ifdef V9 ! 33: proc pr; ! 34: union { ! 35: user struct_u; ! 36: char char_u[ctob(UPAGES)]; ! 37: } union_u; ! 38: char *uarea() { return union_u.char_u; } ! 39: user *u() { return &union_u.struct_u; } ! 40: char *exechang(long e) { return ioctl(e?PIOCSEXEC:PIOCREXEC); } ! 41: char *waitstop(); ! 42: short ppid() { return pr.p_ppid; } ! 43: char *pswT(); ! 44: #else ! 45: friend WaitList; ! 46: Bsdcore bsdcore; ! 47: int pid; ! 48: int cursig; ! 49: int sigmask; ! 50: int state; ! 51: int endtext; ! 52: int startdata; ! 53: int enddata; ! 54: int startstack; ! 55: char *exechang(long); ! 56: short ppid() { return 0; } ! 57: char *pswT(long,int); ! 58: char *waitstop(int); ! 59: int ptrace(int,int=0,int=0,int=0); ! 60: char *regrw(long,char*,int,int); ! 61: #endif V9 ! 62: long regaddr(); ! 63: int fpvalid(long); ! 64: long scratchaddr(); ! 65: Behavs behavetype(); ! 66: char *ioctl(int); ! 67: char *signalmask(long); ! 68: char *clrcurrsig(); ! 69: char *sendsig(long); ! 70: char *dostep(long,long,int); ! 71: char *readwrite(long,char*,int,int); ! 72: virtual char *seekto(int&,long&,int&); ! 73: virtual int instack(long,long); ! 74: public: ! 75: HostCore(Process *p, Master *m):(p, m) { kmemfd = -1; } ! 76: Context *newContext(); ! 77: Behavs behavs(); ! 78: char *eventname(); ! 79: char *destroy(); ! 80: char *laybpt(Trap*); ! 81: char *open(); ! 82: #ifdef V9 ! 83: char *resources(); ! 84: #else ! 85: void close(); ! 86: #endif V9 ! 87: char *problem(); ! 88: char *readcontrol(); ! 89: char *reopen(char*,char*); ! 90: char *run(); ! 91: char *stop(); ! 92: virtual int event(); ! 93: }; ! 94: ! 95: class HostContext : public Context { friend HostCore; ! 96: long regs[18]; ! 97: HostCore *core; ! 98: int pending; ! 99: public: ! 100: HostContext() {} ! 101: void restore(); ! 102: }; ! 103: ! 104: class KernCore : public HostCore { ! 105: long sbr; ! 106: long slr; ! 107: long intstack; ! 108: pcb pcb_copy; ! 109: long pcb_loc; ! 110: char *seekto(int&,long&,int&); ! 111: int instack(long,long); ! 112: public: ! 113: KernCore(Process *p, Master *m):(p,m) {} ! 114: long cs_fp; ! 115: long regloc(int,int=0); ! 116: long pc(); ! 117: long fp(); ! 118: char *open(); ! 119: char *readcontrol(); ! 120: Behavs behavs(); ! 121: char *eventname(); ! 122: int event(); ! 123: char *getpcb(long); ! 124: char *specialop(char*); ! 125: char *special(char*,long); ! 126: }; ! 127: ! 128: #ifndef V9 ! 129: class WaitMem { ! 130: friend WaitList; ! 131: HostCore *core; ! 132: WaitMem *next; ! 133: int changed; ! 134: _wait status; ! 135: }; ! 136: ! 137: class WaitList { ! 138: WaitMem *head; ! 139: public: ! 140: void add(HostCore*); ! 141: void remove(HostCore*); ! 142: int wait(HostCore*, int); ! 143: WaitList() { head = 0; } ! 144: }; ! 145: ! 146: #define WAIT_POLL 0x1 ! 147: #define WAIT_PCFIX 0x2 ! 148: #define WAIT_DISCARD 0x4 ! 149: #endif V9 ! 150: ! 151: void WaitForExecHang(char*);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.