|
|
1.1 root 1: #ifndef CORE_H
2: #define CORE_H
3: #ifndef UNIV_H
4: #include "univ.h"
5: #endif
6:
7: enum Behavs {
8: BREAKED = 1,
9: ERRORED = 0,
10: HALTED = 2,
11: ACTIVE = 3,
12: PENDING = 4,
13: STMT_STEPPED = 5,
14: INST_STEPPED = 6,
15: };
16: char *BehavsName(Behavs);
17:
18: >pri
19: union UCslfd { /* lsb lo */
20: double dbl;
21: float flt;
22: long lng;
23: short sht;
24: char chr;
25: };
26:
27: #include <CC/signal.h>
28: #include <CC/sys/types.h>
29: #include <CC/sys/stat.h>
30: >
31: class Context {
32: PUBLIC(Context,U_CONTEXT)
33: char *error;
34: Context() { error = "context save error"; }
35: virtual void restore();
36: };
37:
38: #define PEEKFAIL ((Cslfd*)-1)
39: class Core : public PadRcv{
40: friend HostCore; friend KernCore;
41: friend KernMaster; friend HostMaster;
42: friend M68kCore;
43: friend RtRawCore;
44: friend RtNrtxCore;
45: friend HostContext; // for ioctl(corefd)
46: >pub
47: char pub_filler[64];
48: >pri
49: struct stat corestat;
50: struct stat stabstat;
51: char *behavs_problem;
52: >
53: int corefd;
54: int stabfd;
55: int _online;
56: Process *_process;
57: SymTab *_symtab;
58: virtual char *read(long,char*,int);
59: virtual char *write(long,char*,int);
60: int corefstat();
61: int stabfstat();
62: PUBLIC(Core,U_CORE)
63: Core(Process*, Master*);
64: Process *process();
65: SymTab *symtab();
66: char *procpath();
67: char *stabpath();
68:
69: virtual Context *newContext();
70: virtual char *liftbpt(Trap*);
71: virtual char *laybpt(Trap*);
72: virtual int REG_PC();
73: virtual int REG_FP();
74: virtual int REG_SP();
75: virtual int REG_AP();
76: virtual long saved(Frame*,int,int=0);
77: virtual Behavs behavs();
78: virtual Asm *newAsm();
79: virtual Cslfd *peek(long,Cslfd* =PEEKFAIL);
80: virtual Cslfd *peekcode(long);
81: virtual CallStk *callstack();
82: virtual Frame frameabove(long);
83: virtual char *blockmove(long,long,long);
84: virtual char *special(char*,long);
85: virtual char *destroy();
86: virtual char *eventname();
87: virtual char *open();
88: virtual char *peekstring(long,char* = 0);
89: virtual char *poke(long,long,int);
90: virtual char *pokedbl(long,double,int);
91: virtual char *problem();
92: virtual char *readcontrol();
93: virtual char *regname(int);
94: virtual char *reopen(char*,char*);
95: virtual char *resources();
96: virtual char *run();
97: virtual char *step(long=0,long=0);
98: virtual char *popcallstack();
99: virtual char *stepprolog();
100: virtual char *stop();
101: virtual char *specialop(char*);
102: virtual int event();
103: virtual int online();
104: virtual long regloc(int,int=0);
105: virtual void close();
106: virtual long apforcall(int);
107: virtual char *docall(long,int);
108: virtual long returnregloc();
109: virtual char *regpoke(int r,long l);
110: virtual long regpeek(int r);
111: virtual long fp();
112: virtual long sp();
113: virtual long pc();
114: virtual long ap();
115: virtual void slavedriver(Core*);
116: virtual int nregs();
117: };
118: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.