> On Jun 23, 2015, at 1:11 PM, Saiprasad Chavali <s...@marvell.com> wrote:
>
> Hi Andrew,
>
> On the same lines of linked list, what I observed is the assignment of the
> List head pointer (function parameter) to the local variable/temporary is not
> working .
> So the do/while loop goes on until the “count” exceed the maximum PCD set
> value. Not sure what is happening, any idea, what could be the cause.
>
List is the head of the list.
do {
Ptr = Ptr->ForwardLink;
Count++;
} while ((Ptr != List) && (Count < PcdGet32 (PcdMaximumLinkedListLength)));
The head is a special case. It just contains a pointer to the 1st element in
the list, ForwardLink, and the last element in the list, BackLink. When you
initialize the head the ForwareLink, and BackLink both point to the head. The
head never contains data, only the nodes store data.
Head->ForwardLink --> Node1->ForwardLink --> Node2->ForwardLink --> Head
Head->BackLink --> Node2->BackLink --> Node1->BackLink —> Head.
Since each node has a forward and a back link you can insert and delete without
traversing the list (assuming the debugging code is turned off).
This is just a basic circularly doubly linked list:
https://en.wikipedia.org/wiki/Doubly_linked_list
<https://en.wikipedia.org/wiki/Doubly_linked_list>
If is stuck in the do/while loop one of the ForwardLink pointers must be bad.
It should be easy enough to walk the list by hand in the debugger and see what
operation corrupts it. The Obvious answer would be the list operation before
the one that ASSERTs is the bad one. Or if the corruption is in your program it
is likely between the last working call and the failing call.
Thanks,
Andrew Fish
> For my debugging I have removed the global optimization flags (Gy, Gl)?
>
> Thanks
> Sai
>
>
------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors
network devices and physical & virtual servers, alerts via email & sms
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel