Deleted Added
full compact
utcopy.c (151937) utcopy.c (167802)
1/******************************************************************************
2 *
3 * Module Name: utcopy - Internal to external object translation utilities
1/******************************************************************************
2 *
3 * Module Name: utcopy - Internal to external object translation utilities
4 * $Revision: 1.122 $
4 * $Revision: 1.130 $
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
12 * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp.
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.

--- 173 unchanged lines hidden (view full) ---

194 ACPI_OPERAND_OBJECT *InternalObject,
195 ACPI_OBJECT *ExternalObject,
196 UINT8 *DataSpace,
197 ACPI_SIZE *BufferSpaceUsed)
198{
199 ACPI_STATUS Status = AE_OK;
200
201
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.

--- 173 unchanged lines hidden (view full) ---

194 ACPI_OPERAND_OBJECT *InternalObject,
195 ACPI_OBJECT *ExternalObject,
196 UINT8 *DataSpace,
197 ACPI_SIZE *BufferSpaceUsed)
198{
199 ACPI_STATUS Status = AE_OK;
200
201
202 ACPI_FUNCTION_TRACE ("UtCopyIsimpleToEsimple");
202 ACPI_FUNCTION_TRACE (UtCopyIsimpleToEsimple);
203
204
205 *BufferSpaceUsed = 0;
206
207 /*
208 * Check for NULL object case (could be an uninitialized
209 * package element)
210 */

--- 209 unchanged lines hidden (view full) ---

420 UINT8 *Buffer,
421 ACPI_SIZE *SpaceUsed)
422{
423 ACPI_OBJECT *ExternalObject;
424 ACPI_STATUS Status;
425 ACPI_PKG_INFO Info;
426
427
203
204
205 *BufferSpaceUsed = 0;
206
207 /*
208 * Check for NULL object case (could be an uninitialized
209 * package element)
210 */

--- 209 unchanged lines hidden (view full) ---

420 UINT8 *Buffer,
421 ACPI_SIZE *SpaceUsed)
422{
423 ACPI_OBJECT *ExternalObject;
424 ACPI_STATUS Status;
425 ACPI_PKG_INFO Info;
426
427
428 ACPI_FUNCTION_TRACE ("UtCopyIpackageToEpackage");
428 ACPI_FUNCTION_TRACE (UtCopyIpackageToEpackage);
429
430
431 /*
432 * First package at head of the buffer
433 */
434 ExternalObject = ACPI_CAST_PTR (ACPI_OBJECT, Buffer);
435
436 /*

--- 44 unchanged lines hidden (view full) ---

481ACPI_STATUS
482AcpiUtCopyIobjectToEobject (
483 ACPI_OPERAND_OBJECT *InternalObject,
484 ACPI_BUFFER *RetBuffer)
485{
486 ACPI_STATUS Status;
487
488
429
430
431 /*
432 * First package at head of the buffer
433 */
434 ExternalObject = ACPI_CAST_PTR (ACPI_OBJECT, Buffer);
435
436 /*

--- 44 unchanged lines hidden (view full) ---

481ACPI_STATUS
482AcpiUtCopyIobjectToEobject (
483 ACPI_OPERAND_OBJECT *InternalObject,
484 ACPI_BUFFER *RetBuffer)
485{
486 ACPI_STATUS Status;
487
488
489 ACPI_FUNCTION_TRACE ("UtCopyIobjectToEobject");
489 ACPI_FUNCTION_TRACE (UtCopyIobjectToEobject);
490
491
492 if (ACPI_GET_OBJECT_TYPE (InternalObject) == ACPI_TYPE_PACKAGE)
493 {
494 /*
495 * Package object: Copy all subobjects (including
496 * nested packages)
497 */
498 Status = AcpiUtCopyIpackageToEpackage (InternalObject,
499 RetBuffer->Pointer, &RetBuffer->Length);
500 }
501 else
502 {
503 /*
504 * Build a simple object (no nested objects)
505 */
506 Status = AcpiUtCopyIsimpleToEsimple (InternalObject,
490
491
492 if (ACPI_GET_OBJECT_TYPE (InternalObject) == ACPI_TYPE_PACKAGE)
493 {
494 /*
495 * Package object: Copy all subobjects (including
496 * nested packages)
497 */
498 Status = AcpiUtCopyIpackageToEpackage (InternalObject,
499 RetBuffer->Pointer, &RetBuffer->Length);
500 }
501 else
502 {
503 /*
504 * Build a simple object (no nested objects)
505 */
506 Status = AcpiUtCopyIsimpleToEsimple (InternalObject,
507 (ACPI_OBJECT *) RetBuffer->Pointer,
508 ((UINT8 *) RetBuffer->Pointer +
509 ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))),
507 ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer),
508 ACPI_ADD_PTR (UINT8, RetBuffer->Pointer,
509 ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))),
510 &RetBuffer->Length);
511 /*
512 * build simple does not include the object size in the length
513 * so we add it in here
514 */
515 RetBuffer->Length += sizeof (ACPI_OBJECT);
516 }
517

--- 20 unchanged lines hidden (view full) ---

538static ACPI_STATUS
539AcpiUtCopyEsimpleToIsimple (
540 ACPI_OBJECT *ExternalObject,
541 ACPI_OPERAND_OBJECT **RetInternalObject)
542{
543 ACPI_OPERAND_OBJECT *InternalObject;
544
545
510 &RetBuffer->Length);
511 /*
512 * build simple does not include the object size in the length
513 * so we add it in here
514 */
515 RetBuffer->Length += sizeof (ACPI_OBJECT);
516 }
517

--- 20 unchanged lines hidden (view full) ---

538static ACPI_STATUS
539AcpiUtCopyEsimpleToIsimple (
540 ACPI_OBJECT *ExternalObject,
541 ACPI_OPERAND_OBJECT **RetInternalObject)
542{
543 ACPI_OPERAND_OBJECT *InternalObject;
544
545
546 ACPI_FUNCTION_TRACE ("UtCopyEsimpleToIsimple");
546 ACPI_FUNCTION_TRACE (UtCopyEsimpleToIsimple);
547
548
549 /*
550 * Simple types supported are: String, Buffer, Integer
551 */
552 switch (ExternalObject->Type)
553 {
554 case ACPI_TYPE_STRING:

--- 17 unchanged lines hidden (view full) ---

572
573 /* Must COPY string and buffer contents */
574
575 switch (ExternalObject->Type)
576 {
577 case ACPI_TYPE_STRING:
578
579 InternalObject->String.Pointer =
547
548
549 /*
550 * Simple types supported are: String, Buffer, Integer
551 */
552 switch (ExternalObject->Type)
553 {
554 case ACPI_TYPE_STRING:

--- 17 unchanged lines hidden (view full) ---

572
573 /* Must COPY string and buffer contents */
574
575 switch (ExternalObject->Type)
576 {
577 case ACPI_TYPE_STRING:
578
579 InternalObject->String.Pointer =
580 ACPI_MEM_CALLOCATE ((ACPI_SIZE) ExternalObject->String.Length + 1);
580 ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) ExternalObject->String.Length + 1);
581 if (!InternalObject->String.Pointer)
582 {
583 goto ErrorExit;
584 }
585
586 ACPI_MEMCPY (InternalObject->String.Pointer,
587 ExternalObject->String.Pointer,
588 ExternalObject->String.Length);
589
590 InternalObject->String.Length = ExternalObject->String.Length;
591 break;
592
593
594 case ACPI_TYPE_BUFFER:
595
596 InternalObject->Buffer.Pointer =
581 if (!InternalObject->String.Pointer)
582 {
583 goto ErrorExit;
584 }
585
586 ACPI_MEMCPY (InternalObject->String.Pointer,
587 ExternalObject->String.Pointer,
588 ExternalObject->String.Length);
589
590 InternalObject->String.Length = ExternalObject->String.Length;
591 break;
592
593
594 case ACPI_TYPE_BUFFER:
595
596 InternalObject->Buffer.Pointer =
597 ACPI_MEM_CALLOCATE (ExternalObject->Buffer.Length);
597 ACPI_ALLOCATE_ZEROED (ExternalObject->Buffer.Length);
598 if (!InternalObject->Buffer.Pointer)
599 {
600 goto ErrorExit;
601 }
602
603 ACPI_MEMCPY (InternalObject->Buffer.Pointer,
604 ExternalObject->Buffer.Pointer,
605 ExternalObject->Buffer.Length);

--- 54 unchanged lines hidden (view full) ---

660 ACPI_OBJECT *ExternalObject;
661 UINT32 Length = 0;
662 UINT32 ThisIndex;
663 UINT32 ObjectSpace = 0;
664 ACPI_OPERAND_OBJECT *ThisInternalObj;
665 ACPI_OBJECT *ThisExternalObj;
666
667
598 if (!InternalObject->Buffer.Pointer)
599 {
600 goto ErrorExit;
601 }
602
603 ACPI_MEMCPY (InternalObject->Buffer.Pointer,
604 ExternalObject->Buffer.Pointer,
605 ExternalObject->Buffer.Length);

--- 54 unchanged lines hidden (view full) ---

660 ACPI_OBJECT *ExternalObject;
661 UINT32 Length = 0;
662 UINT32 ThisIndex;
663 UINT32 ObjectSpace = 0;
664 ACPI_OPERAND_OBJECT *ThisInternalObj;
665 ACPI_OBJECT *ThisExternalObj;
666
667
668 ACPI_FUNCTION_TRACE ("UtCopyEpackageToIpackage");
668 ACPI_FUNCTION_TRACE (UtCopyEpackageToIpackage);
669
670
671 /*
672 * First package at head of the buffer
673 */
674 ExternalObject = (ACPI_OBJECT *)Buffer;
675
676 /*

--- 36 unchanged lines hidden (view full) ---

713ACPI_STATUS
714AcpiUtCopyEobjectToIobject (
715 ACPI_OBJECT *ExternalObject,
716 ACPI_OPERAND_OBJECT **InternalObject)
717{
718 ACPI_STATUS Status;
719
720
669
670
671 /*
672 * First package at head of the buffer
673 */
674 ExternalObject = (ACPI_OBJECT *)Buffer;
675
676 /*

--- 36 unchanged lines hidden (view full) ---

713ACPI_STATUS
714AcpiUtCopyEobjectToIobject (
715 ACPI_OBJECT *ExternalObject,
716 ACPI_OPERAND_OBJECT **InternalObject)
717{
718 ACPI_STATUS Status;
719
720
721 ACPI_FUNCTION_TRACE ("UtCopyEobjectToIobject");
721 ACPI_FUNCTION_TRACE (UtCopyEobjectToIobject);
722
723
724 if (ExternalObject->Type == ACPI_TYPE_PACKAGE)
725 {
726 /*
727 * Packages as external input to control methods are not supported,
728 */
722
723
724 if (ExternalObject->Type == ACPI_TYPE_PACKAGE)
725 {
726 /*
727 * Packages as external input to control methods are not supported,
728 */
729 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
730 "Packages as parameters not implemented!\n"));
729 ACPI_ERROR ((AE_INFO,
730 "Packages as parameters not implemented!"));
731
732 return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
733 }
734
735 else
736 {
737 /*
738 * Build a simple object (no nested objects)

--- 56 unchanged lines hidden (view full) ---

795 * Allocate and copy the actual buffer if and only if:
796 * 1) There is a valid buffer pointer
797 * 2) The buffer has a length > 0
798 */
799 if ((SourceDesc->Buffer.Pointer) &&
800 (SourceDesc->Buffer.Length))
801 {
802 DestDesc->Buffer.Pointer =
731
732 return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
733 }
734
735 else
736 {
737 /*
738 * Build a simple object (no nested objects)

--- 56 unchanged lines hidden (view full) ---

795 * Allocate and copy the actual buffer if and only if:
796 * 1) There is a valid buffer pointer
797 * 2) The buffer has a length > 0
798 */
799 if ((SourceDesc->Buffer.Pointer) &&
800 (SourceDesc->Buffer.Length))
801 {
802 DestDesc->Buffer.Pointer =
803 ACPI_MEM_ALLOCATE (SourceDesc->Buffer.Length);
803 ACPI_ALLOCATE (SourceDesc->Buffer.Length);
804 if (!DestDesc->Buffer.Pointer)
805 {
806 return (AE_NO_MEMORY);
807 }
808
809 /* Copy the actual buffer data */
810
811 ACPI_MEMCPY (DestDesc->Buffer.Pointer,

--- 6 unchanged lines hidden (view full) ---

818 /*
819 * Allocate and copy the actual string if and only if:
820 * 1) There is a valid string pointer
821 * (Pointer to a NULL string is allowed)
822 */
823 if (SourceDesc->String.Pointer)
824 {
825 DestDesc->String.Pointer =
804 if (!DestDesc->Buffer.Pointer)
805 {
806 return (AE_NO_MEMORY);
807 }
808
809 /* Copy the actual buffer data */
810
811 ACPI_MEMCPY (DestDesc->Buffer.Pointer,

--- 6 unchanged lines hidden (view full) ---

818 /*
819 * Allocate and copy the actual string if and only if:
820 * 1) There is a valid string pointer
821 * (Pointer to a NULL string is allowed)
822 */
823 if (SourceDesc->String.Pointer)
824 {
825 DestDesc->String.Pointer =
826 ACPI_MEM_ALLOCATE ((ACPI_SIZE) SourceDesc->String.Length + 1);
826 ACPI_ALLOCATE ((ACPI_SIZE) SourceDesc->String.Length + 1);
827 if (!DestDesc->String.Pointer)
828 {
829 return (AE_NO_MEMORY);
830 }
831
832 /* Copy the actual string data */
833
834 ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer,

--- 4 unchanged lines hidden (view full) ---

839 case ACPI_TYPE_LOCAL_REFERENCE:
840 /*
841 * We copied the reference object, so we now must add a reference
842 * to the object pointed to by the reference
843 */
844 AcpiUtAddReference (SourceDesc->Reference.Object);
845 break;
846
827 if (!DestDesc->String.Pointer)
828 {
829 return (AE_NO_MEMORY);
830 }
831
832 /* Copy the actual string data */
833
834 ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer,

--- 4 unchanged lines hidden (view full) ---

839 case ACPI_TYPE_LOCAL_REFERENCE:
840 /*
841 * We copied the reference object, so we now must add a reference
842 * to the object pointed to by the reference
843 */
844 AcpiUtAddReference (SourceDesc->Reference.Object);
845 break;
846
847 case ACPI_TYPE_REGION:
848 /*
849 * We copied the Region Handler, so we now must add a reference
850 */
851 if (DestDesc->Region.Handler)
852 {
853 AcpiUtAddReference (DestDesc->Region.Handler);
854 }
855 break;
856
847 default:
848 /* Nothing to do for other simple objects */
849 break;
850 }
851
852 return (AE_OK);
853}
854

--- 78 unchanged lines hidden (view full) ---

933 }
934
935 TargetObject->Package.Count = SourceObject->Package.Count;
936 TargetObject->Common.Flags = SourceObject->Common.Flags;
937
938 /*
939 * Create the object array
940 */
857 default:
858 /* Nothing to do for other simple objects */
859 break;
860 }
861
862 return (AE_OK);
863}
864

--- 78 unchanged lines hidden (view full) ---

943 }
944
945 TargetObject->Package.Count = SourceObject->Package.Count;
946 TargetObject->Common.Flags = SourceObject->Common.Flags;
947
948 /*
949 * Create the object array
950 */
941 TargetObject->Package.Elements =
942 ACPI_MEM_CALLOCATE (((ACPI_SIZE) SourceObject->Package.Count + 1) *
943 sizeof (void *));
951 TargetObject->Package.Elements = ACPI_ALLOCATE_ZEROED (
952 ((ACPI_SIZE) SourceObject->Package.Count + 1) * sizeof (void *));
944 if (!TargetObject->Package.Elements)
945 {
946 Status = AE_NO_MEMORY;
947 goto ErrorExit;
948 }
949
950 /*
951 * Pass the new package object back to the package walk routine

--- 37 unchanged lines hidden (view full) ---

989AcpiUtCopyIpackageToIpackage (
990 ACPI_OPERAND_OBJECT *SourceObj,
991 ACPI_OPERAND_OBJECT *DestObj,
992 ACPI_WALK_STATE *WalkState)
993{
994 ACPI_STATUS Status = AE_OK;
995
996
953 if (!TargetObject->Package.Elements)
954 {
955 Status = AE_NO_MEMORY;
956 goto ErrorExit;
957 }
958
959 /*
960 * Pass the new package object back to the package walk routine

--- 37 unchanged lines hidden (view full) ---

998AcpiUtCopyIpackageToIpackage (
999 ACPI_OPERAND_OBJECT *SourceObj,
1000 ACPI_OPERAND_OBJECT *DestObj,
1001 ACPI_WALK_STATE *WalkState)
1002{
1003 ACPI_STATUS Status = AE_OK;
1004
1005
997 ACPI_FUNCTION_TRACE ("UtCopyIpackageToIpackage");
1006 ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage);
998
999
1000 DestObj->Common.Type = ACPI_GET_OBJECT_TYPE (SourceObj);
1001 DestObj->Common.Flags = SourceObj->Common.Flags;
1002 DestObj->Package.Count = SourceObj->Package.Count;
1003
1004 /*
1005 * Create the object array and walk the source package tree
1006 */
1007
1008
1009 DestObj->Common.Type = ACPI_GET_OBJECT_TYPE (SourceObj);
1010 DestObj->Common.Flags = SourceObj->Common.Flags;
1011 DestObj->Package.Count = SourceObj->Package.Count;
1012
1013 /*
1014 * Create the object array and walk the source package tree
1015 */
1007 DestObj->Package.Elements = ACPI_MEM_CALLOCATE (
1016 DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED (
1008 ((ACPI_SIZE) SourceObj->Package.Count + 1) *
1009 sizeof (void *));
1010 if (!DestObj->Package.Elements)
1011 {
1017 ((ACPI_SIZE) SourceObj->Package.Count + 1) *
1018 sizeof (void *));
1019 if (!DestObj->Package.Elements)
1020 {
1012 ACPI_REPORT_ERROR (
1013 ("AmlBuildCopyInternalPackageObject: Package allocation failure\n"));
1021 ACPI_ERROR ((AE_INFO, "Package allocation failure"));
1014 return_ACPI_STATUS (AE_NO_MEMORY);
1015 }
1016
1017 /*
1018 * Copy the package element-by-element by walking the package "tree".
1019 * This handles nested packages of arbitrary depth.
1020 */
1021 Status = AcpiUtWalkPackageTree (SourceObj, DestObj,
1022 return_ACPI_STATUS (AE_NO_MEMORY);
1023 }
1024
1025 /*
1026 * Copy the package element-by-element by walking the package "tree".
1027 * This handles nested packages of arbitrary depth.
1028 */
1029 Status = AcpiUtWalkPackageTree (SourceObj, DestObj,
1022 AcpiUtCopyIelementToIelement, WalkState);
1030 AcpiUtCopyIelementToIelement, WalkState);
1023 if (ACPI_FAILURE (Status))
1024 {
1025 /* On failure, delete the destination package object */
1026
1027 AcpiUtRemoveReference (DestObj);
1028 }
1029
1030 return_ACPI_STATUS (Status);

--- 18 unchanged lines hidden (view full) ---

1049AcpiUtCopyIobjectToIobject (
1050 ACPI_OPERAND_OBJECT *SourceDesc,
1051 ACPI_OPERAND_OBJECT **DestDesc,
1052 ACPI_WALK_STATE *WalkState)
1053{
1054 ACPI_STATUS Status = AE_OK;
1055
1056
1031 if (ACPI_FAILURE (Status))
1032 {
1033 /* On failure, delete the destination package object */
1034
1035 AcpiUtRemoveReference (DestObj);
1036 }
1037
1038 return_ACPI_STATUS (Status);

--- 18 unchanged lines hidden (view full) ---

1057AcpiUtCopyIobjectToIobject (
1058 ACPI_OPERAND_OBJECT *SourceDesc,
1059 ACPI_OPERAND_OBJECT **DestDesc,
1060 ACPI_WALK_STATE *WalkState)
1061{
1062 ACPI_STATUS Status = AE_OK;
1063
1064
1057 ACPI_FUNCTION_TRACE ("UtCopyIobjectToIobject");
1065 ACPI_FUNCTION_TRACE (UtCopyIobjectToIobject);
1058
1059
1060 /* Create the top level object */
1061
1062 *DestDesc = AcpiUtCreateInternalObject (ACPI_GET_OBJECT_TYPE (SourceDesc));
1063 if (!*DestDesc)
1064 {
1065 return_ACPI_STATUS (AE_NO_MEMORY);

--- 18 unchanged lines hidden ---
1066
1067
1068 /* Create the top level object */
1069
1070 *DestDesc = AcpiUtCreateInternalObject (ACPI_GET_OBJECT_TYPE (SourceDesc));
1071 if (!*DestDesc)
1072 {
1073 return_ACPI_STATUS (AE_NO_MEMORY);

--- 18 unchanged lines hidden ---