135 lines
4.0 KiB
C
135 lines
4.0 KiB
C
|
#ifndef __API_MAKIDEBUG_H
|
||
|
#define __API_MAKIDEBUG_H
|
||
|
|
||
|
/*---------------------------------------------------------
|
||
|
api_makiDebugger
|
||
|
void debugger_trace();
|
||
|
int debugger_isActive();
|
||
|
int debugger_getVIP();
|
||
|
int debugger_getVSD();
|
||
|
int debugger_getVCC();
|
||
|
int debugger_getVSP();
|
||
|
int debugger_filterEvent(int vcpuid, int eventid);
|
||
|
void debugger_eventComplete();
|
||
|
MakiJITD *debugger_createJITD(int vcpuid, int bringitup=1);
|
||
|
int debugger_readStack(int n);
|
||
|
int debugger_getCodeBlock(int vcpuid);
|
||
|
---------------------------------------------------------*/
|
||
|
|
||
|
#include <wasabicfg.h>
|
||
|
|
||
|
#ifndef WASABI_COMPILE_SCRIPT
|
||
|
#error "This module requires the script api"
|
||
|
#endif
|
||
|
|
||
|
#ifndef WASABI_COMPILE_MAKIDEBUG
|
||
|
#error "This module requires the script debugger api"
|
||
|
#endif
|
||
|
|
||
|
#include <bfc/dispatch.h>
|
||
|
#include <api/script/scriptvar.h>
|
||
|
|
||
|
class MakiJITD;
|
||
|
|
||
|
class NOVTABLE api_makiDebugger : public Dispatchable {
|
||
|
public:
|
||
|
void debugger_trace();
|
||
|
int debugger_isActive();
|
||
|
int debugger_getVIP();
|
||
|
int debugger_getVSD();
|
||
|
int debugger_getVCC();
|
||
|
int debugger_getVSP();
|
||
|
int debugger_filterEvent(int vcpuid, int eventid);
|
||
|
void debugger_eventComplete();
|
||
|
MakiJITD *debugger_createJITD(int vcpuid, int bringitup=1);
|
||
|
scriptVar debugger_readStack(int n);
|
||
|
const char *debugger_getCodeBlock(int vcpuid);
|
||
|
|
||
|
enum {
|
||
|
API_MAKIDEBUGGER_DEBUGGER_TRACE = 0,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_ISACTIVE = 10,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_GETVIP = 20,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_GETVSD = 30,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_GETVCC = 40,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_GETVSP = 50,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_FILTEREVENT = 60,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_EVENTCOMPLETE = 70,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_CREATEJITD = 80,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_READSTACK = 90,
|
||
|
API_MAKIDEBUGGER_DEBUGGER_GETCODEBLOCK = 100,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline void api_makiDebugger::debugger_trace() {
|
||
|
_voidcall(API_MAKIDEBUGGER_DEBUGGER_TRACE);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_isActive() {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_ISACTIVE, (int)0);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_getVIP() {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_GETVIP, (int)0);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_getVSD() {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_GETVSD, (int)0);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_getVCC() {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_GETVCC, (int)0);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_getVSP() {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_GETVSP, (int)0);
|
||
|
}
|
||
|
|
||
|
inline int api_makiDebugger::debugger_filterEvent(int vcpuid, int eventid) {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_FILTEREVENT, (int)0, vcpuid, eventid);
|
||
|
}
|
||
|
|
||
|
inline void api_makiDebugger::debugger_eventComplete() {
|
||
|
_voidcall(API_MAKIDEBUGGER_DEBUGGER_EVENTCOMPLETE);
|
||
|
}
|
||
|
|
||
|
inline MakiJITD *api_makiDebugger::debugger_createJITD(int vcpuid, int bringitup) {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_CREATEJITD, (MakiJITD *)NULL, vcpuid, bringitup);
|
||
|
}
|
||
|
|
||
|
inline const char *api_makiDebugger::debugger_getCodeBlock(int vcpuid) {
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_GETCODEBLOCK, (const char *)NULL, vcpuid);
|
||
|
}
|
||
|
|
||
|
inline scriptVar api_makiDebugger::debugger_readStack(int n) {
|
||
|
scriptVar v={0,0};
|
||
|
return _call(API_MAKIDEBUGGER_DEBUGGER_READSTACK, v, n);
|
||
|
}
|
||
|
|
||
|
class api_makiDebuggerI : public api_makiDebugger {
|
||
|
public:
|
||
|
virtual void debugger_trace()=0;
|
||
|
virtual int debugger_isActive()=0;
|
||
|
virtual int debugger_getVIP()=0;
|
||
|
virtual int debugger_getVSD()=0;
|
||
|
virtual int debugger_getVCC()=0;
|
||
|
virtual int debugger_getVSP()=0;
|
||
|
virtual int debugger_filterEvent(int vcpuid, int eventid)=0;
|
||
|
virtual void debugger_eventComplete()=0;
|
||
|
virtual MakiJITD *debugger_createJITD(int vcpuid, int bringitup=1)=0;
|
||
|
virtual scriptVar debugger_readStack(int n)=0;
|
||
|
virtual const char *debugger_getCodeBlock(int vcpuid)=0;
|
||
|
|
||
|
protected:
|
||
|
RECVS_DISPATCH;
|
||
|
};
|
||
|
|
||
|
// {858E4B64-AF1E-4b64-8D27-EFFAD9F82BB4}
|
||
|
static const GUID makiDebugApiServiceGuid =
|
||
|
{ 0x858e4b64, 0xaf1e, 0x4b64, { 0x8d, 0x27, 0xef, 0xfa, 0xd9, 0xf8, 0x2b, 0xb4 } };
|
||
|
|
||
|
extern api_makiDebugger *debugApi;
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|