#ifndef RDBSERVER_SERVER_H_ #define RDBSERVER_SERVER_H_ #include #include #include #include typedef enum rdb_server_state_t { state_stopped, state_running, state_stepping } rdb_server_state_t; typedef enum rdb_server_stop_reason_t { /* not even stopped */ stop_reason_none, /* we are stepping */ stop_reason_trace, /* we hit an actual breakpoint */ stop_reason_breakpoint, /* the user hit pause */ stop_reason_trap, /* some opcode is not implemented */ stop_reason_not_implemented } rdb_server_stop_reason_t; #define RDB_SERVER_MAX_BREAKPOINTS 16 typedef struct RdbServer { VB *sim; uint32_t brks[RDB_SERVER_MAX_BREAKPOINTS]; uint32_t brkslen; rdb_server_state_t state; rdb_server_stop_reason_t stopreason; } RdbServer; void rdbServerInit(RdbServer *srv, VB *sim); bool rdbServerIsRunning(RdbServer *srv); int rdbServerHandleCommand(RdbServer *srv, CommandBuf *cmd, RdbResponse *res); int rdbServerSendStopPacket(RdbServer *srv, RdbResponse *res); #endif