TianoCore EDK2 master
Loading...
Searching...
No Matches
AmlString.c
Go to the documentation of this file.
1
10#include <String/AmlString.h>
11
12#include <AmlDefines.h>
14
30BOOLEAN
31EFIAPI
33 IN UINT32 Root,
34 IN UINT32 ParentPrefix,
35 IN UINT32 SegCount
36 )
37{
38 if (((Root == 0) || (Root == 1)) &&
39 (ParentPrefix <= MAX_UINT8) &&
40 (!((ParentPrefix != 0) && (Root != 0))) &&
41 (SegCount <= MAX_UINT8) &&
42 ((SegCount + Root + ParentPrefix) != 0))
43 {
44 return TRUE;
45 }
46
47 return FALSE;
48}
49
64EFIAPI
66 OUT CHAR8 *DstBuffer,
67 IN UINT32 MaxDstBufferSize,
68 IN CONST CHAR8 *SrcBuffer,
69 IN UINT32 Count
70 )
71{
72 UINT32 Index;
73
74 if ((DstBuffer == NULL) ||
75 (SrcBuffer == NULL))
76 {
77 ASSERT (0);
78 return EFI_INVALID_PARAMETER;
79 }
80
81 if (Count == 0) {
82 return EFI_SUCCESS;
83 }
84
85 if (Count > MaxDstBufferSize) {
86 Count = MaxDstBufferSize;
87 }
88
89 for (Index = 0; Index < Count; Index++) {
90 if ((SrcBuffer[Index] >= 'a') && (SrcBuffer[Index] <= 'z')) {
91 DstBuffer[Index] = (CHAR8)((UINT8)SrcBuffer[Index] - ('a' - 'A'));
92 } else {
93 DstBuffer[Index] = SrcBuffer[Index];
94 }
95 }
96
97 return EFI_SUCCESS;
98}
99
110BOOLEAN
111EFIAPI
113 IN CONST CHAR8 *Buffer
114 )
115{
116 if (Buffer == NULL) {
117 return FALSE;
118 }
119
120 if ((Buffer[0] == AML_ROOT_CHAR) && (Buffer[1] == '\0')) {
121 return TRUE;
122 } else {
123 return FALSE;
124 }
125}
126
142BOOLEAN
143EFIAPI
145 IN CHAR8 Ch
146 )
147{
148 if ((Ch == '_') || ((Ch >= 'A') && (Ch <= 'Z')) || ((Ch >= 'a') && (Ch <= 'z'))) {
149 return TRUE;
150 } else {
151 return FALSE;
152 }
153}
154
174BOOLEAN
175EFIAPI
177 IN CHAR8 Ch
178 )
179{
180 if (AmlIsLeadNameChar (Ch) || ((Ch >= '0') && (Ch <= '9'))) {
181 return TRUE;
182 } else {
183 return FALSE;
184 }
185}
186
198BOOLEAN
199EFIAPI
201 IN CONST CHAR8 *AslBuffer,
202 OUT UINT32 *Size
203 )
204{
205 UINT32 Index;
206
207 if ((AslBuffer == NULL) ||
208 (Size == NULL))
209 {
210 return FALSE;
211 }
212
213 if (!AmlIsLeadNameChar (AslBuffer[0])) {
214 return FALSE;
215 }
216
217 for (Index = 1; Index < AML_NAME_SEG_SIZE; Index++) {
218 if ((AslBuffer[Index] == '.') ||
219 (AslBuffer[Index] == '\0'))
220 {
221 *Size = Index;
222 return TRUE;
223 } else if (!AmlIsNameChar (AslBuffer[Index])) {
224 return FALSE;
225 }
226 }
227
228 *Size = Index;
229 return TRUE;
230}
231
242BOOLEAN
243EFIAPI
245 IN CONST CHAR8 *AmlBuffer
246 )
247{
248 UINT32 Index;
249
250 if (AmlBuffer == NULL) {
251 return FALSE;
252 }
253
254 if (!AmlIsLeadNameChar (AmlBuffer[0])) {
255 return FALSE;
256 }
257
258 for (Index = 1; Index < AML_NAME_SEG_SIZE; Index++) {
259 if (!AmlIsNameChar (AmlBuffer[Index])) {
260 return FALSE;
261 }
262 }
263
264 return TRUE;
265}
266
285EFIAPI
287 IN CONST CHAR8 *Buffer,
288 OUT UINT32 *Root,
289 OUT UINT32 *ParentPrefix,
290 OUT UINT32 *SegCount
291 )
292{
293 UINT32 NameSegSize;
294
295 if ((Buffer == NULL) ||
296 (Root == NULL) ||
297 (ParentPrefix == NULL) ||
298 (SegCount == NULL))
299 {
300 ASSERT (0);
301 return EFI_INVALID_PARAMETER;
302 }
303
304 *Root = 0;
305 *ParentPrefix = 0;
306 *SegCount = 0;
307
308 // Handle Root and ParentPrefix(s).
309 if (*Buffer == AML_ROOT_CHAR) {
310 *Root = 1;
311 Buffer++;
312 } else if (*Buffer == AML_PARENT_PREFIX_CHAR) {
313 do {
314 Buffer++;
315 (*ParentPrefix)++;
316 } while (*Buffer == AML_PARENT_PREFIX_CHAR);
317 }
318
319 // Handle SegCount(s).
320 while (AslIsNameSeg (Buffer, &NameSegSize)) {
321 // Safety checks on NameSegSize.
322 if ((NameSegSize == 0) || (NameSegSize > AML_NAME_SEG_SIZE)) {
323 ASSERT (0);
324 return EFI_INVALID_PARAMETER;
325 }
326
327 // Increment the NameSeg count.
328 (*SegCount)++;
329 Buffer += NameSegSize;
330
331 // Skip the '.' separator if present.
332 if (*Buffer == '.') {
333 Buffer++;
334 }
335 } // while
336
337 // An ASL NameString/path must be NULL terminated.
338 if (*Buffer != '\0') {
339 ASSERT (0);
340 return EFI_INVALID_PARAMETER;
341 }
342
343 if (!AmlIsNameString (*Root, *ParentPrefix, *SegCount)) {
344 ASSERT (0);
345 return EFI_INVALID_PARAMETER;
346 }
347
348 return EFI_SUCCESS;
349}
350
370EFIAPI
372 IN CONST CHAR8 *Buffer,
373 OUT UINT32 *Root,
374 OUT UINT32 *ParentPrefix,
375 OUT UINT32 *SegCount
376 )
377{
378 if ((Buffer == NULL) ||
379 (Root == NULL) ||
380 (ParentPrefix == NULL) ||
381 (SegCount == NULL))
382 {
383 ASSERT (0);
384 return EFI_INVALID_PARAMETER;
385 }
386
387 *Root = 0;
388 *ParentPrefix = 0;
389 *SegCount = 0;
390
391 // Handle Root and ParentPrefix(s).
392 if (*Buffer == AML_ROOT_CHAR) {
393 *Root = 1;
394 Buffer++;
395 } else if (*Buffer == AML_PARENT_PREFIX_CHAR) {
396 do {
397 Buffer++;
398 (*ParentPrefix)++;
399 } while (*Buffer == AML_PARENT_PREFIX_CHAR);
400 }
401
402 // Handle SegCount(s).
403 if (*Buffer == AML_DUAL_NAME_PREFIX) {
404 *SegCount = 2;
405 } else if (*Buffer == AML_MULTI_NAME_PREFIX) {
406 *SegCount = *((UINT8 *)(Buffer + 1));
407 } else if (AmlIsNameSeg (Buffer)) {
408 *SegCount = 1;
409 } else if (*Buffer == AML_ZERO_OP) {
410 *SegCount = 0;
411 } else {
412 ASSERT (0);
413 return EFI_INVALID_PARAMETER;
414 }
415
416 // Safety checks on exit.
417 if (!AmlIsNameString (*Root, *ParentPrefix, *SegCount)) {
418 ASSERT (0);
419 return EFI_INVALID_PARAMETER;
420 }
421
422 return EFI_SUCCESS;
423}
424
437UINT32
438EFIAPI
440 IN UINT32 Root,
441 IN UINT32 ParentPrefix,
442 IN UINT32 SegCount
443 )
444{
445 UINT32 TotalSize;
446
447 if (!AmlIsNameString (Root, ParentPrefix, SegCount)) {
448 ASSERT (0);
449 return 0;
450 }
451
452 // Root and ParentPrefix(s).
453 TotalSize = Root + ParentPrefix;
454
455 // Add size required for NameSeg(s).
456 TotalSize += (SegCount * AML_NAME_SEG_SIZE);
457
458 // Add size required for '.' separator(s).
459 TotalSize += (SegCount > 1) ? (SegCount - 1) : 0;
460
461 // Add 1 byte for NULL termination '\0'.
462 TotalSize += 1;
463
464 return TotalSize;
465}
466
479UINT32
480EFIAPI
482 IN UINT32 Root,
483 IN UINT32 ParentPrefix,
484 IN UINT32 SegCount
485 )
486{
487 UINT32 TotalSize;
488
489 if (!AmlIsNameString (Root, ParentPrefix, SegCount)) {
490 ASSERT (0);
491 return 0;
492 }
493
494 // Root and ParentPrefix(s).
495 TotalSize = Root + ParentPrefix;
496
497 // If SegCount == 0, '\0' must end the AML NameString/path.
498 TotalSize += (SegCount == 0) ? 1 : (SegCount * AML_NAME_SEG_SIZE);
499
500 // AML prefix. SegCount > 2 = MultiNamePrefix, SegCount = 2 DualNamePrefix.
501 TotalSize += (SegCount > 2) ? 2 : ((SegCount == 2) ? 1 : 0);
502
503 return TotalSize;
504}
505
515EFIAPI
517 IN CONST CHAR8 *AslPath,
518 OUT UINT32 *AslPathSizePtr
519 )
520{
521 if ((AslPath == NULL) ||
522 (AslPathSizePtr == NULL))
523 {
524 ASSERT (0);
525 return EFI_INVALID_PARAMETER;
526 }
527
528 *AslPathSizePtr = 0;
529 do {
530 (*AslPathSizePtr)++;
531 AslPath++;
532 } while (*AslPath != '\0');
533
534 return EFI_SUCCESS;
535}
536
546EFIAPI
548 IN CONST CHAR8 *AmlPath,
549 OUT UINT32 *AmlPathSizePtr
550 )
551{
552 EFI_STATUS Status;
553
554 UINT32 Root;
555 UINT32 ParentPrefix;
556 UINT32 SegCount;
557
558 if ((AmlPath == NULL) ||
559 (AmlPathSizePtr == NULL))
560 {
561 ASSERT (0);
562 return EFI_INVALID_PARAMETER;
563 }
564
565 Status = AmlParseNameStringInfo (
566 AmlPath,
567 &Root,
568 &ParentPrefix,
569 &SegCount
570 );
571 if (EFI_ERROR (Status)) {
572 ASSERT (0);
573 return Status;
574 }
575
576 *AmlPathSizePtr = AmlComputeNameStringSize (Root, ParentPrefix, SegCount);
577 if (*AmlPathSizePtr == 0) {
578 ASSERT (0);
579 return EFI_INVALID_PARAMETER;
580 }
581
582 return Status;
583}
584
597EFIAPI
599 IN CONST CHAR8 *AslPath,
600 OUT CHAR8 **OutAmlPath
601 )
602{
603 EFI_STATUS Status;
604
605 UINT32 Root;
606 UINT32 ParentPrefix;
607 UINT32 SegCount;
608 UINT32 TotalSize;
609 UINT32 NameSegSize;
610
611 CONST CHAR8 *AslBuffer;
612 CHAR8 *AmlBuffer;
613 CHAR8 *AmlPath;
614
615 if ((AslPath == NULL) ||
616 (OutAmlPath == NULL))
617 {
618 return EFI_INVALID_PARAMETER;
619 }
620
621 // Analyze AslPath. AslPath is checked in the call.
622 Status = AslParseNameStringInfo (AslPath, &Root, &ParentPrefix, &SegCount);
623 if (EFI_ERROR (Status)) {
624 ASSERT (0);
625 return Status;
626 }
627
628 // Compute TotalSize.
629 TotalSize = AmlComputeNameStringSize (Root, ParentPrefix, SegCount);
630 if (TotalSize == 0) {
631 ASSERT (0);
632 return EFI_INVALID_PARAMETER;
633 }
634
635 // Allocate memory.
636 AmlPath = AllocateZeroPool (TotalSize);
637 if (AmlPath == NULL) {
638 ASSERT (0);
639 return EFI_OUT_OF_RESOURCES;
640 }
641
642 AmlBuffer = AmlPath;
643 AslBuffer = AslPath;
644
645 // Handle Root and ParentPrefix(s).
646 if (Root == 1) {
647 *AmlBuffer = AML_ROOT_CHAR;
648 AmlBuffer++;
649 AslBuffer++;
650 } else if (ParentPrefix > 0) {
651 SetMem (AmlBuffer, ParentPrefix, AML_PARENT_PREFIX_CHAR);
652 AmlBuffer += ParentPrefix;
653 AslBuffer += ParentPrefix;
654 }
655
656 // Handle prefix and SegCount(s).
657 if (SegCount > 2) {
658 *AmlBuffer = AML_MULTI_NAME_PREFIX;
659 AmlBuffer++;
660 *AmlBuffer = (UINT8)SegCount;
661 AmlBuffer++;
662 } else if (SegCount == 2) {
663 *AmlBuffer = AML_DUAL_NAME_PREFIX;
664 AmlBuffer++;
665 }
666
667 if (SegCount != 0) {
668 // Write NameSeg(s).
669 while (1) {
670 SegCount--;
671
672 // Get the NameSeg size.
673 if (!AslIsNameSeg (AslBuffer, &NameSegSize)) {
674 ASSERT (0);
675 Status = EFI_INVALID_PARAMETER;
676 goto error_handler;
677 }
678
679 // Convert to Upper case and copy.
680 Status = AmlUpperCaseMemCpyS (
681 AmlBuffer,
682 TotalSize,
683 AslBuffer,
684 NameSegSize
685 );
686 if (EFI_ERROR (Status)) {
687 ASSERT (0);
688 goto error_handler;
689 }
690
691 // Complete the NameSeg with an underscore ('_') if shorter than 4 bytes.
692 SetMem (
693 AmlBuffer + NameSegSize,
694 AML_NAME_SEG_SIZE - NameSegSize,
695 AML_NAME_CHAR__
696 );
697
698 // Go to the next NameSeg.
699 AmlBuffer += AML_NAME_SEG_SIZE;
700 AslBuffer += NameSegSize;
701
702 // Skip the '.' separator.
703 if (SegCount != 0) {
704 if (*AslBuffer == '.') {
705 AslBuffer++;
706 } else {
707 ASSERT (0);
708 Status = EFI_INVALID_PARAMETER;
709 goto error_handler;
710 }
711 } else {
712 // (SegCount == 0)
713 if (*AslBuffer == '\0') {
714 break;
715 } else {
716 ASSERT (0);
717 Status = EFI_INVALID_PARAMETER;
718 goto error_handler;
719 }
720 }
721 } // while
722 } else {
723 // (SegCount == 0)
724 // '\0' needs to end the AML NameString/path.
725 *AmlBuffer = AML_ZERO_OP;
726 AmlBuffer++;
727 }
728
729 // Safety checks on exit.
730 // Check that AmlPath has been filled with TotalSize bytes.
731 if ((SegCount != 0) ||
732 (*AslBuffer != AML_ZERO_OP) ||
733 (((UINT32)(AmlBuffer - AmlPath)) != TotalSize))
734 {
735 ASSERT (0);
736 Status = EFI_INVALID_PARAMETER;
737 goto error_handler;
738 }
739
740 *OutAmlPath = AmlPath;
741 return EFI_SUCCESS;
742
743error_handler:
744 FreePool (AmlPath);
745 return Status;
746}
747
760EFIAPI
762 IN CONST CHAR8 *AmlPath,
763 OUT CHAR8 **OutAslPath
764 )
765{
766 EFI_STATUS Status;
767
768 UINT32 Root;
769 UINT32 ParentPrefix;
770 UINT32 SegCount;
771 UINT32 TotalSize;
772
773 CONST CHAR8 *AmlBuffer;
774 CHAR8 *AslBuffer;
775 CHAR8 *AslPath;
776
777 if ((AmlPath == NULL) ||
778 (OutAslPath == NULL))
779 {
780 ASSERT (0);
781 return EFI_INVALID_PARAMETER;
782 }
783
784 // Analyze AslPath. AmlPath is checked in the call.
785 Status = AmlParseNameStringInfo (AmlPath, &Root, &ParentPrefix, &SegCount);
786 if (EFI_ERROR (Status)) {
787 ASSERT (0);
788 return Status;
789 }
790
791 // Compute TotalSize.
792 TotalSize = AslComputeNameStringSize (Root, ParentPrefix, SegCount);
793 if (TotalSize == 0) {
794 ASSERT (0);
795 return EFI_INVALID_PARAMETER;
796 }
797
798 // Allocate memory.
799 AslPath = AllocateZeroPool (TotalSize);
800 if (AslPath == NULL) {
801 ASSERT (0);
802 return EFI_OUT_OF_RESOURCES;
803 }
804
805 AmlBuffer = AmlPath;
806 AslBuffer = AslPath;
807
808 // Handle prefix and SegCount(s).
809 if (Root == 1) {
810 *AslBuffer = AML_ROOT_CHAR;
811 AslBuffer++;
812 AmlBuffer++;
813 } else if (ParentPrefix > 0) {
814 SetMem (AslBuffer, ParentPrefix, AML_PARENT_PREFIX_CHAR);
815 AslBuffer += ParentPrefix;
816 AmlBuffer += ParentPrefix;
817 }
818
819 // Handle Root and Parent(s).
820 // Skip the MultiName or DualName prefix chars.
821 if (SegCount > 2) {
822 AmlBuffer += 2;
823 } else if (SegCount == 2) {
824 AmlBuffer += 1;
825 }
826
827 // Write NameSeg(s).
828 while (SegCount) {
829 // NameSeg is already in upper case and always 4 bytes long.
830 CopyMem (AslBuffer, AmlBuffer, AML_NAME_SEG_SIZE);
831 AslBuffer += AML_NAME_SEG_SIZE;
832 AmlBuffer += AML_NAME_SEG_SIZE;
833
834 SegCount--;
835
836 // Write the '.' separator if there is another NameSeg following.
837 if (SegCount != 0) {
838 *AslBuffer = '.';
839 AslBuffer++;
840 }
841 } // while
842
843 // NULL terminate the ASL NameString.
844 *AslBuffer = '\0';
845 AslBuffer++;
846
847 // Safety checks on exit.
848 // Check that AslPath has been filled with TotalSize bytes.
849 if (((UINT32)(AslBuffer - AslPath)) != TotalSize) {
850 ASSERT (0);
851 Status = EFI_INVALID_PARAMETER;
852 goto error_handler;
853 }
854
855 *OutAslPath = AslPath;
856 return EFI_SUCCESS;
857
858error_handler:
859 FreePool (AslPath);
860 return Status;
861}
862
871BOOLEAN
872EFIAPI
874 IN CONST CHAR8 *AslName1,
875 IN CONST CHAR8 *AslName2
876 )
877{
878 EFI_STATUS Status;
879 UINT32 AslName1Len;
880 UINT32 AslName2Len;
881
882 if ((AslName1 == NULL) ||
883 (AslName2 == NULL))
884 {
885 ASSERT (0);
886 return FALSE;
887 }
888
889 Status = AslGetNameStringSize (AslName1, &AslName1Len);
890 if (EFI_ERROR (Status)) {
891 ASSERT (0);
892 return FALSE;
893 }
894
895 Status = AslGetNameStringSize (AslName2, &AslName2Len);
896 if (EFI_ERROR (Status)) {
897 ASSERT (0);
898 return FALSE;
899 }
900
901 // AslName1 and AslName2 don't have the same length
902 if (AslName1Len != AslName2Len) {
903 return FALSE;
904 }
905
906 return (CompareMem (AslName1, AslName2, AslName1Len) == 0);
907}
908
917BOOLEAN
918EFIAPI
920 IN CONST CHAR8 *AmlName1,
921 IN CONST CHAR8 *AmlName2
922 )
923{
924 EFI_STATUS Status;
925 UINT32 AmlName1Len;
926 UINT32 AmlName2Len;
927
928 if ((AmlName1 == NULL) ||
929 (AmlName2 == NULL))
930 {
931 ASSERT (0);
932 return FALSE;
933 }
934
935 Status = AmlGetNameStringSize (AmlName1, &AmlName1Len);
936 if (EFI_ERROR (Status)) {
937 ASSERT (0);
938 return FALSE;
939 }
940
941 Status = AmlGetNameStringSize (AmlName2, &AmlName2Len);
942 if (EFI_ERROR (Status)) {
943 ASSERT (0);
944 return FALSE;
945 }
946
947 // AmlName1 and AmlName2 don't have the same length
948 if (AmlName1Len != AmlName2Len) {
949 return FALSE;
950 }
951
952 return (CompareMem (AmlName1, AmlName2, AmlName1Len) == 0);
953}
954
969BOOLEAN
970EFIAPI
972 IN CONST CHAR8 *AmlName1,
973 IN CONST CHAR8 *AslName2
974 )
975{
976 EFI_STATUS Status;
977
978 CHAR8 *AmlName2;
979 BOOLEAN RetVal;
980
981 if ((AmlName1 == NULL) ||
982 (AslName2 == NULL))
983 {
984 ASSERT (0);
985 return FALSE;
986 }
987
988 // Convert the AslName2 to an AmlName2.
989 // AmlName2 must be freed.
990 Status = ConvertAmlNameToAslName (AslName2, &AmlName2);
991 if (EFI_ERROR (Status)) {
992 ASSERT (0);
993 return FALSE;
994 }
995
996 RetVal = AmlCompareNameString (AmlName1, AmlName2);
997
998 // Free AmlName2.
999 FreePool (AmlName2);
1000
1001 return RetVal;
1002}
1003
1018CONST
1019CHAR8 *
1020EFIAPI
1022 IN CONST CHAR8 *AmlPath,
1023 IN UINT32 Root,
1024 IN UINT32 ParentPrefix
1025 )
1026{
1027 if (AmlPath == NULL) {
1028 ASSERT (0);
1029 return NULL;
1030 }
1031
1032 AmlPath += Root;
1033 AmlPath += ParentPrefix;
1034 AmlPath += ((*AmlPath == AML_MULTI_NAME_PREFIX) ? 2
1035 : (*AmlPath == AML_DUAL_NAME_PREFIX) ? 1 : 0);
1036 return AmlPath;
1037}
INTN EFIAPI CompareMem(IN CONST VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI SetMem(OUT VOID *Buffer, IN UINTN Length, IN UINT8 Value)
Definition: SetMemWrapper.c:38
EFI_STATUS EFIAPI ConvertAmlNameToAslName(IN CONST CHAR8 *AmlPath, OUT CHAR8 **OutAslPath)
Definition: AmlString.c:761
BOOLEAN EFIAPI AslCompareNameString(IN CONST CHAR8 *AslName1, IN CONST CHAR8 *AslName2)
Definition: AmlString.c:873
EFI_STATUS EFIAPI AmlParseNameStringInfo(IN CONST CHAR8 *Buffer, OUT UINT32 *Root, OUT UINT32 *ParentPrefix, OUT UINT32 *SegCount)
Definition: AmlString.c:371
EFI_STATUS EFIAPI AmlUpperCaseMemCpyS(OUT CHAR8 *DstBuffer, IN UINT32 MaxDstBufferSize, IN CONST CHAR8 *SrcBuffer, IN UINT32 Count)
Definition: AmlString.c:65
BOOLEAN EFIAPI AmlCompareNameString(IN CONST CHAR8 *AmlName1, IN CONST CHAR8 *AmlName2)
Definition: AmlString.c:919
BOOLEAN EFIAPI CompareAmlWithAslNameString(IN CONST CHAR8 *AmlName1, IN CONST CHAR8 *AslName2)
Definition: AmlString.c:971
BOOLEAN EFIAPI AmlIsNameChar(IN CHAR8 Ch)
Definition: AmlString.c:176
UINT32 EFIAPI AmlComputeNameStringSize(IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
Definition: AmlString.c:481
BOOLEAN EFIAPI AmlIsLeadNameChar(IN CHAR8 Ch)
Definition: AmlString.c:144
BOOLEAN EFIAPI AslIsNameSeg(IN CONST CHAR8 *AslBuffer, OUT UINT32 *Size)
Definition: AmlString.c:200
BOOLEAN EFIAPI AmlIsRootPath(IN CONST CHAR8 *Buffer)
Definition: AmlString.c:112
EFI_STATUS EFIAPI AslParseNameStringInfo(IN CONST CHAR8 *Buffer, OUT UINT32 *Root, OUT UINT32 *ParentPrefix, OUT UINT32 *SegCount)
Definition: AmlString.c:286
EFI_STATUS EFIAPI AmlGetNameStringSize(IN CONST CHAR8 *AmlPath, OUT UINT32 *AmlPathSizePtr)
Definition: AmlString.c:547
EFI_STATUS EFIAPI ConvertAslNameToAmlName(IN CONST CHAR8 *AslPath, OUT CHAR8 **OutAmlPath)
Definition: AmlString.c:598
CONST CHAR8 *EFIAPI AmlGetFirstNameSeg(IN CONST CHAR8 *AmlPath, IN UINT32 Root, IN UINT32 ParentPrefix)
Definition: AmlString.c:1021
UINT32 EFIAPI AslComputeNameStringSize(IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
Definition: AmlString.c:439
BOOLEAN EFIAPI AmlIsNameSeg(IN CONST CHAR8 *AmlBuffer)
Definition: AmlString.c:244
BOOLEAN EFIAPI AmlIsNameString(IN UINT32 Root, IN UINT32 ParentPrefix, IN UINT32 SegCount)
Definition: AmlString.c:32
EFI_STATUS EFIAPI AslGetNameStringSize(IN CONST CHAR8 *AslPath, OUT UINT32 *AslPathSizePtr)
Definition: AmlString.c:516
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SUCCESS
Definition: UefiBaseType.h:112