]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupport.h
4df396657c3a9003bfade7996c7965763179efdd
[mirror_edk2.git] / MdeModulePkg / Universal / EbcDxe / EbcDebugger / EdbSupport.h
1 /** @file
2
3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12
13 **/
14
15 #ifndef _EFI_EDB_SUPPORT_H_
16 #define _EFI_EDB_SUPPORT_H_
17
18 #include <Uefi.h>
19
20 #define EFI_DEBUG_PROMPT_STRING L"EDB > "
21 #define EFI_DEBUG_PROMPT_COLUMN 5
22 #define EFI_DEBUG_INPUS_BUFFER_SIZE 64
23
24 #define EFI_DEBUGGER_LINE_NUMBER_IN_PAGE 0x10
25
26 #define EFI_DEBUG_MAX_PRINT_BUFFER (80 * 4)
27
28 /**
29
30 Convert hex string to uint.
31
32 @param Str - The string
33
34 **/
35 UINTN
36 EFIAPI
37 Xtoi (
38 CHAR16 *Str
39 );
40
41 /**
42
43 Convert hex string to uint.
44
45 @param Str - The string
46
47 **/
48 UINT64
49 EFIAPI
50 LXtoi (
51 CHAR16 *Str
52 );
53
54 /**
55
56 Convert hex string to uint.
57
58 @param Str - The string
59
60 **/
61 UINTN
62 EFIAPI
63 Atoi (
64 CHAR16 *Str
65 );
66
67 /**
68
69 Convert hex string to uint.
70
71 @param Str - The string
72
73 **/
74 UINTN
75 EFIAPI
76 AsciiXtoi (
77 CHAR8 *Str
78 );
79
80 /**
81
82 Convert hex string to uint.
83
84 @param Str - The string
85
86 **/
87 UINTN
88 EFIAPI
89 AsciiAtoi (
90 CHAR8 *Str
91 );
92
93 /**
94 Compare the Unicode and Ascii string pointed by String to the string pointed by String2.
95
96 @param String - Unicode String to process
97
98 @param String2 - Ascii string to process
99
100 @return Return a positive integer if String is lexicall greater than String2; Zero if
101 the two strings are identical; and a negative interger if String is lexically
102 less than String2.
103
104 **/
105 INTN
106 EFIAPI
107 StrCmpUnicodeAndAscii (
108 IN CHAR16 *String,
109 IN CHAR8 *String2
110 );
111
112 /**
113
114 Compare the Unicode string pointed by String to the string pointed by String2.
115
116 @param String - Unicode String to process
117 @param String2 - Unicode string to process
118
119 @return Return a positive integer if String is lexically greater than String2; Zero if
120 the two strings are identical; and a negative integer if String is lexically
121 less than String2.
122
123 **/
124 INTN
125 EFIAPI
126 StriCmp (
127 IN CHAR16 *String,
128 IN CHAR16 *String2
129 );
130
131 /**
132
133 Compare the Unicode and Ascii string pointed by String to the string pointed by String2.
134
135 @param String - Unicode String to process
136 @param String2 - Ascii string to process
137
138 @return Return a positive integer if String is lexically greater than String2; Zero if
139 the two strings are identical; and a negative integer if String is lexically
140 less than String2.
141
142 **/
143 INTN
144 EFIAPI
145 StriCmpUnicodeAndAscii (
146 IN CHAR16 *String,
147 IN CHAR8 *String2
148 );
149
150 /**
151
152 Verify if the string is end with the sub string.
153
154 @param Str - The string where to search the sub string
155 @param SubStr - The substring.
156
157 **/
158 BOOLEAN
159 EFIAPI
160 StrEndWith (
161 IN CHAR16 *Str,
162 IN CHAR16 *SubStr
163 );
164
165 /**
166 Duplicate a string.
167
168 @param Src The string to be duplicated.
169
170 **/
171 CHAR16 *
172 EFIAPI
173 StrDuplicate (
174 IN CHAR16 *Src
175 );
176
177 /**
178
179 Find the next token after one or more specified characters.
180
181 @param String Point to the string where to find the substring.
182 @param CharSet Point to the string to be found.
183
184 **/
185 CHAR16 *
186 EFIAPI
187 StrGetNewTokenLine (
188 IN CHAR16 *String,
189 IN CHAR16 *CharSet
190 );
191
192 /**
193
194 Find the next token after one or more specified characters.
195
196 @param CharSet Point to the string to be found.
197
198 **/
199 CHAR16 *
200 EFIAPI
201 StrGetNextTokenLine (
202 IN CHAR16 *CharSet
203 );
204
205 /**
206
207 Find the next token after one specificed characters.
208
209 @param String Point to the string where to find the substring.
210 @param CharSet Point to the string to be found.
211
212 **/
213 CHAR16 *
214 EFIAPI
215 StrGetNewTokenField (
216 IN CHAR16 *String,
217 IN CHAR16 *CharSet
218 );
219
220 /**
221
222 Find the next token after one specificed characters.
223
224 @param CharSet Point to the string to be found.
225
226 **/
227 CHAR16 *
228 EFIAPI
229 StrGetNextTokenField (
230 IN CHAR16 *CharSet
231 );
232
233 /**
234
235 Patch a character to the end of a string.
236
237 @param Buffer The string to be patched.
238 @param Patch The patch character.
239
240 **/
241 VOID
242 EFIAPI
243 PatchForStrTokenAfter (
244 IN CHAR16 *Buffer,
245 IN CHAR16 Patch
246 );
247
248 /**
249 Patch a character at the beginning of a string.
250
251 @param Buffer The string to be patched.
252 @param Patch The patch character.
253
254 **/
255 VOID
256 EFIAPI
257 PatchForStrTokenBefore (
258 IN CHAR16 *Buffer,
259 IN CHAR16 Patch
260 );
261
262 /**
263
264 Find the next token after one or more specified characters.
265
266 @param String Point to the string where to find the substring.
267 @param CharSet Point to the string to be found.
268
269 **/
270 CHAR8 *
271 EFIAPI
272 AsciiStrGetNewTokenLine (
273 IN CHAR8 *String,
274 IN CHAR8 *CharSet
275 );
276
277 /**
278
279 Find the next token after one or more specified characters.
280
281 @param CharSet Point to the string to be found.
282
283 **/
284 CHAR8 *
285 EFIAPI
286 AsciiStrGetNextTokenLine (
287 IN CHAR8 *CharSet
288 );
289
290 /**
291
292 Find the next token after one specificed characters.
293
294 @param String Point to the string where to find the substring.
295 @param CharSet Point to the string to be found.
296
297 **/
298 CHAR8 *
299 EFIAPI
300 AsciiStrGetNewTokenField (
301 IN CHAR8 *String,
302 IN CHAR8 *CharSet
303 );
304
305 /**
306
307 Find the next token after one specificed characters.
308
309 @param CharSet Point to the string to be found.
310
311 **/
312 CHAR8 *
313 EFIAPI
314 AsciiStrGetNextTokenField (
315 IN CHAR8 *CharSet
316 );
317
318 /**
319
320 Patch a character to the end of a string.
321
322 @param Buffer The string to be patched.
323 @param Patch The patch character.
324
325 **/
326 VOID
327 EFIAPI
328 PatchForAsciiStrTokenAfter (
329 IN CHAR8 *Buffer,
330 IN CHAR8 Patch
331 );
332
333 /**
334 Patch a character at the beginning of a string.
335
336 @param Buffer The string to be patched.
337 @param Patch The patch character.
338
339 **/
340 VOID
341 EFIAPI
342 PatchForAsciiStrTokenBefore (
343 IN CHAR8 *Buffer,
344 IN CHAR8 Patch
345 );
346
347 /**
348
349 Shell Library.
350 Get user input.
351
352 @param Prompt The prompt string.
353 @param InStr Point to the input string.
354 @param StrLen The max length of string user can input.
355
356 **/
357 VOID
358 EFIAPI
359 Input (
360 IN CHAR16 *Prompt OPTIONAL,
361 OUT CHAR16 *InStr,
362 IN UINTN StrLen
363 );
364
365 /**
366
367 SetPageBreak.
368
369 **/
370 BOOLEAN
371 EFIAPI
372 SetPageBreak (
373 VOID
374 );
375
376 /**
377 Print a Unicode string to the output device.
378
379 @param Format A Null-terminated Unicode format string.
380 @param ... The variable argument list that contains pointers to Null-
381 terminated Unicode strings to be printed
382
383 **/
384 UINTN
385 EFIAPI
386 EDBPrint (
387 IN CONST CHAR16 *Format,
388 ...
389 );
390
391 /**
392 Print a Unicode string to the output buffer.
393
394 @param Buffer A pointer to the output buffer for the produced Null-terminated
395 Unicode string.
396 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
397 @param Format A Null-terminated Unicode format string.
398 @param ... The variable argument list that contains pointers to Null-
399 terminated Unicode strings to be printed
400
401 **/
402 UINTN
403 EFIAPI
404 EDBSPrint (
405 OUT CHAR16 *Buffer,
406 IN INTN BufferSize,
407 IN CONST CHAR16 *Format,
408 ...
409 );
410
411 /**
412 Print a Unicode string to the output buffer with specified offset..
413
414 @param Buffer A pointer to the output buffer for the produced Null-terminated
415 Unicode string.
416 @param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
417 @param Offset The offset of the buffer.
418 @param Format A Null-terminated Unicode format string.
419 @param ... The variable argument list that contains pointers to Null-
420 terminated Unicode strings to be printed
421
422 **/
423 UINTN
424 EFIAPI
425 EDBSPrintWithOffset (
426 OUT CHAR16 *Buffer,
427 IN INTN BufferSize,
428 IN UINTN Offset,
429 IN CONST CHAR16 *Format,
430 ...
431 );
432
433 /**
434
435 Read a file.
436 If ScanFs is FLASE, it will use DebuggerPrivate->Vol as default Fs.
437 If ScanFs is TRUE, it will scan all FS and check the file.
438 If there is only one file match the name, it will be read.
439 If there is more than one file match the name, it will return Error.
440
441 @param DebuggerPrivate - EBC Debugger private data structure
442 @param FileName - The file to be read.
443 @param BufferSize - The file buffer size
444 @param Buffer - The file buffer
445 @param ScanFs - Need Scan all FS
446
447 @retval EFI_SUCCESS - read file successfully
448 @retval EFI_NOT_FOUND - file not found
449 @retval EFI_NO_MAPPING - there is duplicated files found
450
451 **/
452 EFI_STATUS
453 EFIAPI
454 ReadFileToBuffer (
455 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
456 IN CHAR16 *FileName,
457 OUT UINTN *BufferSize,
458 OUT VOID **Buffer,
459 IN BOOLEAN ScanFs
460 );
461
462 /**
463
464 Get file name under this dir with index
465
466 @param DebuggerPrivate - EBC Debugger private data structure
467 @param DirName - The dir to be read.
468 @param FileName - The file name pattern under this dir
469 @param Index - The file index under this dir
470
471 @return File Name which match the pattern and index.
472
473 **/
474 CHAR16 *
475 EFIAPI
476 GetFileNameUnderDir (
477 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
478 IN CHAR16 *DirName,
479 IN CHAR16 *FileName,
480 IN OUT UINTN *Index
481 );
482
483 #endif