101 lines
3.0 KiB
C
101 lines
3.0 KiB
C
/*
|
|
www.sourceforge.net/projects/dfhack
|
|
Copyright (c) 2009 Petr Mrázek (peterix)
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
warranty. In no event will the authors be held liable for any
|
|
damages arising from the use of this software.
|
|
|
|
Permission is granted to anyone to use this software for any
|
|
purpose, including commercial applications, and to alter it and
|
|
redistribute it freely, subject to the following restrictions:
|
|
|
|
1. The origin of this software must not be misrepresented; you must
|
|
not claim that you wrote the original software. If you use this
|
|
software in a product, an acknowledgment in the product documentation
|
|
would be appreciated but is not required.
|
|
|
|
2. Altered source versions must be plainly marked as such, and
|
|
must not be misrepresented as being the original software.
|
|
|
|
3. This notice may not be removed or altered from any source
|
|
distribution.
|
|
*/
|
|
|
|
#ifndef SHMS_CORE_H
|
|
#define SHMS_CORE_H
|
|
|
|
// increment on every core change
|
|
#define CORE_VERSION 10
|
|
|
|
typedef struct
|
|
{
|
|
shm_cmd cmd[SHM_MAX_CLIENTS]; // MANDATORY!
|
|
uint32_t address;
|
|
uint32_t value;
|
|
uint32_t length;
|
|
uint32_t error;
|
|
uint64_t Qvalue;
|
|
} shm_core_hdr;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t version;
|
|
char name[256];
|
|
} modulelookup;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t version;
|
|
char module[256];
|
|
char name[256];
|
|
} commandlookup;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t sv_version; // output
|
|
uint32_t cl_affinity; // input
|
|
uint32_t sv_PID; // output
|
|
uint32_t sv_useYield; // output
|
|
} coreattach;
|
|
|
|
enum CORE_COMMAND
|
|
{
|
|
// basic states
|
|
CORE_RUNNING = 0, // no command, normal server execution
|
|
CORE_RUN, // sent by the client to restart the server execution
|
|
CORE_STEP, // client suspend sets step
|
|
CORE_SUSPEND, // client notifies server to wait for commands (server is stalled in busy wait)
|
|
CORE_SUSPENDED, // response to WAIT, server is stalled in busy wait
|
|
CORE_ERROR, // there was a server error
|
|
|
|
// utility commands
|
|
CORE_ATTACH, // compare affinity, get core version and process ID
|
|
CORE_ACQUIRE_MODULE, // get index of a loaded module by name and version
|
|
CORE_ACQUIRE_COMMAND, // get module::command callsign by module name, command name and module version
|
|
|
|
// raw reads
|
|
CORE_READ, // cl -> sv, read some data
|
|
CORE_READ_QUAD, // cl -> sv, read a quad
|
|
CORE_READ_DWORD, // cl -> sv, read a dword
|
|
CORE_READ_WORD, // cl -> sv, read a word
|
|
CORE_READ_BYTE, // cl -> sv, read a byte
|
|
|
|
// raw writes
|
|
CORE_WRITE,// client writes to server
|
|
CORE_WRITE_QUAD,// client writes a QUAD to server
|
|
CORE_WRITE_DWORD,// client writes a DWORD to server
|
|
CORE_WRITE_WORD,// client writes a WORD to server
|
|
CORE_WRITE_BYTE,// client writes a BYTE to server
|
|
|
|
// string functions
|
|
CORE_READ_STL_STRING,// client requests contents of STL string at address
|
|
CORE_READ_C_STRING,// client requests contents of a C string at address, max length (0 means zero terminated)
|
|
CORE_WRITE_STL_STRING,// client wants to set STL string at address to something
|
|
|
|
// total commands
|
|
NUM_CORE_CMDS
|
|
};
|
|
#endif
|
|
|