Semaphores macro error

Joel Sherrill joel.sherrill at oarcorp.com
Wed Apr 11 17:29:34 UTC 2007


Leon Pollak wrote:
> On Wednesday 11 April 2007, D. Peter Siddons wrote:
>   
>> Isn't this message issued by gdb itself? i.e. by the host, not the
>> target? As a result of the 'printf "%s", "No waiting threads"' command?
>> Pete.
>>     
> Yes, it looks so. But I do not understand how it can cause such an error.
>
>   
Does changing it to

printf "No waiting threads"

without the formatting string help?

It is very weird.

--joel
>> Leon Pollak wrote:
>>     
>>> On Wednesday 11 April 2007, you wrote:
>>>       
>>>> You can try the ugly hack of commenting out lines or printing until you
>>>> figure out what
>>>> is blowing up.  I have no other idea how to debug these scripts.  That's
>>>> how I did it when I wrote them.
>>>>         
>>> Joel, I do not see any sense in the results I have. Please, can you help
>>> to interpreter them?
>>>
>>> I added prints as following (mine are with "=X=\n":
>>>
>>> define rtems_helper_score_threadq
>>>   set $tq = $arg0
>>>   set $THREAD_QUEUE_DISCIPLINE_FIFO     = 0
>>>   set $THREAD_QUEUE_DISCIPLINE_PRIORITY = 1
>>>
>>>   if $tq->discipline == $THREAD_QUEUE_DISCIPLINE_FIFO
>>>     printf "  FIFO - "
>>>     set $limit = 1
>>>   end
>>>
>>>   if $tq->discipline == $THREAD_QUEUE_DISCIPLINE_PRIORITY
>>>     printf "  PRIO - "
>>>     set $limit = 3
>>>   end
>>>
>>>   # now walk them
>>>   set $count = 0
>>>   set $pri_index = 0
>>>   set $queues = &$tq->Queues
>>> printf "=2=\n"
>>>   while $pri_index < $limit
>>>     set $chain = &$queues.Priority[$pri_index]
>>>     set $ptail = &$chain->permanent_null
>>> printf "=3=\n"
>>>     set $next = $chain->first
>>>     while $next != $ptail
>>> printf "=4=\n"
>>>       set $t = (Thread_Control_struct *)$next
>>>       printf "0x%08x@%d ", $t->Object.id, $t->current_priority
>>>       set $next = $next->next
>>>       set $count = $count + 1
>>>     end
>>> printf "=5=\n"
>>>     set $pri_index = $pri_index + 1
>>>   end
>>> printf "=6=\n"
>>>   if $count == 0
>>> printf "=7=\n"
>>>     printf "%s", "No waiting threads"
>>>   end
>>> printf "=8=\n"
>>> end
>>> # Internal Helper Do Not Document
>>>
>>> ========================================================================
>>>
>>>
>>> And the result was:
>>> =====================================================================
>>>  # | Name |    ID    | Information
>>> ---+------+----------+-----------------------------------------------
>>>  1 | LBIO | 1a010001 |   Mutex ###
>>> INHT UNL=1=
>>>   PRIO - =2=
>>> =3=
>>> =5=
>>> =3=
>>> =5=
>>> =3=
>>> =5=
>>> =6=
>>> =7=
>>> No memory available to program: call to malloc failed
>>>
>>>
>>> I do not understand this.
>>>       
>
>
>
>   




More information about the users mailing list