merge ROS Shell without integrated explorer part into trunk
[reactos.git] / reactos / apps / utils / pice / module / parse.h
1 /*++
2
3 Copyright (c) 1998-2001 Klaus P. Gerlicher
4
5 Module Name:
6
7 parse.h
8
9 Abstract:
10
11 HEADER for parse.c
12
13 Environment:
14
15 LINUX 2.2.X
16 Kernel mode only
17
18 Author:
19
20 Klaus P. Gerlicher
21
22 Revision History:
23
24 15-Nov-2000: general cleanup of source files
25
26 Copyright notice:
27
28 This file may be distributed under the terms of the GNU Public License.
29
30 --*/
31 typedef struct TagArgs
32 {
33 ULONG Value[16];
34 ULONG Count;
35 UCHAR Switch[16];
36 ULONG CountSwitches;
37 BOOLEAN bNotTranslated[16];
38 LPSTR pToken[16];
39 }ARGS,*PARGS;
40
41 typedef struct tagCPUInfo
42 {
43 char *Name;
44 PULONG pValue;
45 }CPUINFO;
46
47 typedef BOOLEAN (*PFN)(PARGS);
48
49 #define MAX_ARGS (5)
50
51 typedef struct _CMDTABLE
52 {
53 char * Cmd;
54 PFN Handler;
55 char * Help;
56 ULONG Flags;
57 ULONG ParamFlags[MAX_ARGS];
58 LPSTR pszRecognizedSwitches;
59 ULONG CommandGroup;
60 }CMDTABLE,*PCMDTABLE;
61
62 typedef struct tagKeyWords
63 {
64 char* KeyWord;
65 PVOID pValue;
66 ULONG ulSize;
67 }KEYWORDS;
68
69 typedef struct tagSETGETREGS
70 {
71 char *RegName;
72 PULONG RegAddr;
73 }SETGETREGS;
74
75 typedef struct tag_BP
76 {
77 ULONG LinearAddress;
78 ULONG Segment,Offset;
79 BOOLEAN Used;
80 BOOLEAN Active;
81 BOOLEAN Virtual;
82 char ModName[256];
83 char SymName[256];
84 }BP;
85
86 extern BOOLEAN bNeedToFillBuffer;
87
88 extern BOOLEAN bCodeOn;
89 extern BOOLEAN bShowSrc;
90 extern BP Bp[];
91 extern BOOLEAN bInt3Here;
92 extern BOOLEAN bInt1Here;
93
94 extern BOOLEAN bStepping;
95
96 extern char szCurrentFile[256];
97 extern PDEBUG_MODULE pCurrentMod;
98 extern PICE_SYMBOLFILE_HEADER* pCurrentSymbols;
99 extern LONG ulCurrentlyDisplayedLineNumber;
100 extern LIST_ENTRY* pPsProcessListHead;
101
102 BOOLEAN AsciiToHex(LPSTR p,PULONG pValue);
103 void Parse(LPSTR pCmdLine,BOOLEAN bInvokedByFkey);
104 LPSTR FindCommand(LPSTR p);
105 ULONG StrLenUpToWhiteChar(LPSTR p,LPSTR lpszWhiteChars);
106 BOOLEAN WaitForKey(void);
107 BOOLEAN ConvertTokenToHex(LPSTR p,PULONG pValue);
108 void DisplaySourceFile(LPSTR pSrcLine,LPSTR pSrcEnd,ULONG ulLineNumber,ULONG ulLineNumberToInvert);
109 BOOLEAN ConvertTokenToSrcFile(LPSTR p,PULONG pValue);
110 void RepaintDesktop(void);
111 void PutStatusText(LPSTR p);
112 void UnassembleOneLineDown(void);
113 void UnassembleOnePageDown(ULONG page);
114 void UnassembleOneLineUp(void);
115 void UnassembleOnePageUp(ULONG page);
116
117 extern BOOLEAN (*DisplayMemory)(PARGS pArgs);
118
119 #define COMMAND_PROTOTYPE(arg) BOOLEAN arg(PARGS pArgs)
120 #define COMMAND_RET return TRUE
121
122 // available commands
123 COMMAND_PROTOTYPE(ShowGdt);
124 COMMAND_PROTOTYPE(LeaveIce);
125 COMMAND_PROTOTYPE(SingleStep);
126 COMMAND_PROTOTYPE(ShowHelp);
127 COMMAND_PROTOTYPE(ShowPageDirs);
128 COMMAND_PROTOTYPE(ShowProcesses);
129 COMMAND_PROTOTYPE(DisplayMemoryDword);
130 COMMAND_PROTOTYPE(DisplayMemoryByte);
131 COMMAND_PROTOTYPE(DisplayPhysMemDword);
132 COMMAND_PROTOTYPE(Unassemble);
133 COMMAND_PROTOTYPE(ShowSymbols);
134 COMMAND_PROTOTYPE(ShowModules);
135 COMMAND_PROTOTYPE(SetBreakpoint);
136 COMMAND_PROTOTYPE(ListBreakpoints);
137 COMMAND_PROTOTYPE(ClearBreakpoints);
138 COMMAND_PROTOTYPE(Ver);
139 COMMAND_PROTOTYPE(Hboot);
140 COMMAND_PROTOTYPE(I3here);
141 COMMAND_PROTOTYPE(I1here);
142 COMMAND_PROTOTYPE(SetSrcDisplay);
143 COMMAND_PROTOTYPE(ShowIdt);
144 COMMAND_PROTOTYPE(StepOver);
145 COMMAND_PROTOTYPE(StepInto);
146 COMMAND_PROTOTYPE(SetGetRegisters);
147 COMMAND_PROTOTYPE(SetCodeDisplay);
148 COMMAND_PROTOTYPE(NextInstr);
149 COMMAND_PROTOTYPE(ShowCPU);
150 COMMAND_PROTOTYPE(ShowTables);
151 COMMAND_PROTOTYPE(WalkStack);
152 COMMAND_PROTOTYPE(ShowVirtualMemory);
153 COMMAND_PROTOTYPE(UnassembleAtCurrentEip);
154 COMMAND_PROTOTYPE(PokeMemory);
155 COMMAND_PROTOTYPE(PeekMemory);
156 COMMAND_PROTOTYPE(ShowLocals);
157 COMMAND_PROTOTYPE(SwitchTables);
158 COMMAND_PROTOTYPE(SwitchFiles);
159 COMMAND_PROTOTYPE(EvaluateExpression);
160 COMMAND_PROTOTYPE(SizeCodeWindow);
161 COMMAND_PROTOTYPE(SizeDataWindow);
162 COMMAND_PROTOTYPE(ClearScreen);
163 COMMAND_PROTOTYPE(ShowMappings);
164 COMMAND_PROTOTYPE(ShowTimers);
165 COMMAND_PROTOTYPE(ShowPCI);
166 COMMAND_PROTOTYPE(SetKeyboardLayout);
167 COMMAND_PROTOTYPE(ShowSysCallTable);
168 COMMAND_PROTOTYPE(SetAltKey);
169 COMMAND_PROTOTYPE(ShowContext);
170
171 //ei - make sure the following correspond to ntoskrnl/mm/i386/page.c
172 //sedwards - Dont use them if you dont need them. Use DDK headers instead.
173 #define PAGETABLE_MAP (0xf0000000)
174 #define PAGEDIRECTORY_MAP (0xf0000000 + (PAGETABLE_MAP / (1024)))
175 //#define PAGE_SHIFT 12
176 #define PTRS_PER_PTE 1024
177 //#define PAGE_SIZE (1UL << PAGE_SHIFT)
178 #define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (4 * 1024 * 1024))
179 #define ADDR_TO_PDE(v) (PULONG)(PAGEDIRECTORY_MAP + \
180 (((ULONG)v / (1024 * 1024))&(~0x3)))
181 #define ADDR_TO_PTE(v) (PULONG)(PAGETABLE_MAP + ((((ULONG)v / 1024))&(~0x3)))
182 #define ADDR_TO_PDE_OFFSET(v) (((ULONG)v / (4 * 1024 * 1024)))