reactos/rosapps/sysutils/utils/pice/module/parse.h

183 lines
4.4 KiB
C

/*++
Copyright (c) 1998-2001 Klaus P. Gerlicher
Module Name:
parse.h
Abstract:
HEADER for parse.c
Environment:
LINUX 2.2.X
Kernel mode only
Author:
Klaus P. Gerlicher
Revision History:
15-Nov-2000: general cleanup of source files
Copyright notice:
This file may be distributed under the terms of the GNU Public License.
--*/
typedef struct TagArgs
{
ULONG Value[16];
ULONG Count;
UCHAR Switch[16];
ULONG CountSwitches;
BOOLEAN bNotTranslated[16];
LPSTR pToken[16];
}ARGS,*PARGS;
typedef struct tagCPUInfo
{
char *Name;
PULONG pValue;
}CPUINFO;
typedef BOOLEAN (*PFN)(PARGS);
#define MAX_ARGS (5)
typedef struct _CMDTABLE
{
char * Cmd;
PFN Handler;
char * Help;
ULONG Flags;
ULONG ParamFlags[MAX_ARGS];
LPSTR pszRecognizedSwitches;
ULONG CommandGroup;
}CMDTABLE,*PCMDTABLE;
typedef struct tagKeyWords
{
char* KeyWord;
PVOID pValue;
ULONG ulSize;
}KEYWORDS;
typedef struct tagSETGETREGS
{
char *RegName;
PULONG RegAddr;
}SETGETREGS;
typedef struct tag_BP
{
ULONG LinearAddress;
ULONG Segment,Offset;
BOOLEAN Used;
BOOLEAN Active;
BOOLEAN Virtual;
char ModName[256];
char SymName[256];
}BP;
extern BOOLEAN bNeedToFillBuffer;
extern BOOLEAN bCodeOn;
extern BOOLEAN bShowSrc;
extern BP Bp[];
extern BOOLEAN bInt3Here;
extern BOOLEAN bInt1Here;
extern BOOLEAN bStepping;
extern char szCurrentFile[256];
extern PDEBUG_MODULE pCurrentMod;
extern PICE_SYMBOLFILE_HEADER* pCurrentSymbols;
extern LONG ulCurrentlyDisplayedLineNumber;
extern LIST_ENTRY* pPsProcessListHead;
BOOLEAN AsciiToHex(LPSTR p,PULONG pValue);
void Parse(LPSTR pCmdLine,BOOLEAN bInvokedByFkey);
LPSTR FindCommand(LPSTR p);
ULONG StrLenUpToWhiteChar(LPSTR p,LPSTR lpszWhiteChars);
BOOLEAN WaitForKey(void);
BOOLEAN ConvertTokenToHex(LPSTR p,PULONG pValue);
void DisplaySourceFile(LPSTR pSrcLine,LPSTR pSrcEnd,ULONG ulLineNumber,ULONG ulLineNumberToInvert);
BOOLEAN ConvertTokenToSrcFile(LPSTR p,PULONG pValue);
void RepaintDesktop(void);
void PutStatusText(LPSTR p);
void UnassembleOneLineDown(void);
void UnassembleOnePageDown(ULONG page);
void UnassembleOneLineUp(void);
void UnassembleOnePageUp(ULONG page);
extern BOOLEAN (*DisplayMemory)(PARGS pArgs);
#define COMMAND_PROTOTYPE(arg) BOOLEAN arg(PARGS pArgs)
#define COMMAND_RET return TRUE
// available commands
COMMAND_PROTOTYPE(ShowGdt);
COMMAND_PROTOTYPE(LeaveIce);
COMMAND_PROTOTYPE(SingleStep);
COMMAND_PROTOTYPE(ShowHelp);
COMMAND_PROTOTYPE(ShowPageDirs);
COMMAND_PROTOTYPE(ShowProcesses);
COMMAND_PROTOTYPE(DisplayMemoryDword);
COMMAND_PROTOTYPE(DisplayMemoryByte);
COMMAND_PROTOTYPE(DisplayPhysMemDword);
COMMAND_PROTOTYPE(Unassemble);
COMMAND_PROTOTYPE(ShowSymbols);
COMMAND_PROTOTYPE(ShowModules);
COMMAND_PROTOTYPE(SetBreakpoint);
COMMAND_PROTOTYPE(ListBreakpoints);
COMMAND_PROTOTYPE(ClearBreakpoints);
COMMAND_PROTOTYPE(Ver);
COMMAND_PROTOTYPE(Hboot);
COMMAND_PROTOTYPE(I3here);
COMMAND_PROTOTYPE(I1here);
COMMAND_PROTOTYPE(SetSrcDisplay);
COMMAND_PROTOTYPE(ShowIdt);
COMMAND_PROTOTYPE(StepOver);
COMMAND_PROTOTYPE(StepInto);
COMMAND_PROTOTYPE(SetGetRegisters);
COMMAND_PROTOTYPE(SetCodeDisplay);
COMMAND_PROTOTYPE(NextInstr);
COMMAND_PROTOTYPE(ShowCPU);
COMMAND_PROTOTYPE(ShowTables);
COMMAND_PROTOTYPE(WalkStack);
COMMAND_PROTOTYPE(ShowVirtualMemory);
COMMAND_PROTOTYPE(UnassembleAtCurrentEip);
COMMAND_PROTOTYPE(PokeMemory);
COMMAND_PROTOTYPE(PeekMemory);
COMMAND_PROTOTYPE(ShowLocals);
COMMAND_PROTOTYPE(SwitchTables);
COMMAND_PROTOTYPE(SwitchFiles);
COMMAND_PROTOTYPE(EvaluateExpression);
COMMAND_PROTOTYPE(SizeCodeWindow);
COMMAND_PROTOTYPE(SizeDataWindow);
COMMAND_PROTOTYPE(ClearScreen);
COMMAND_PROTOTYPE(ShowMappings);
COMMAND_PROTOTYPE(ShowTimers);
COMMAND_PROTOTYPE(ShowPCI);
COMMAND_PROTOTYPE(SetKeyboardLayout);
COMMAND_PROTOTYPE(ShowSysCallTable);
COMMAND_PROTOTYPE(SetAltKey);
COMMAND_PROTOTYPE(ShowContext);
//ei - make sure the following correspond to ntoskrnl/mm/i386/page.c
//sedwards - Dont use them if you dont need them. Use DDK headers instead.
#define PAGETABLE_MAP (0xf0000000)
#define PAGEDIRECTORY_MAP (0xf0000000 + (PAGETABLE_MAP / (1024)))
//#define PAGE_SHIFT 12
#define PTRS_PER_PTE 1024
//#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (4 * 1024 * 1024))
#define ADDR_TO_PDE(v) (PULONG)(PAGEDIRECTORY_MAP + \
(((ULONG)v / (1024 * 1024))&(~0x3)))
#define ADDR_TO_PTE(v) (PULONG)(PAGETABLE_MAP + ((((ULONG)v / 1024))&(~0x3)))
#define ADDR_TO_PDE_OFFSET(v) (((ULONG)v / (4 * 1024 * 1024)))