Unable to create TX buffer recovery queue

Joel Sherrill joel.sherrill at oarcorp.com
Wed Jun 6 13:38:09 UTC 2007


Amalaye Oyake wrote:
> Setting MANAGERS=all may be one step but don't some of the
>
> #define CONFIGURE_MAXIMUM_XYZs have default values of 0?
>
> I may need to assign some values to these perhaps?
>
>   
Definitely if the driver is allocating an RTEMS message queue.
You have to account for it.

CONFIGURE_MAXIMUM_MESSAGE_QUEUES

and you need to account for the message buffer memory.  In 4.7
and older, you use CONFIGURE_MEMORY_OVERHEAD
which is the number of extra KB (not bytes) you want for message
buffers.

In CVS, I added CONFIGURE_MESSAGE_BUFFER_MEMORY
to account for this.  When a CVS RTEMS, you shouldn't have
to use CONFIGURE_MEMORY_OVERHEAD unless something
is broken in confdefs.h or you are just being sloppy guessing on
message buffers and task stacks.

--joel
> -AO
>
> -----Original Message-----
> From: Daron Chabot [mailto:djc915 at mail.usask.ca] 
> Sent: Tuesday, June 05, 2007 5:11 PM
> To: Amalaye Oyake
> Cc: RTEMS
> Subject: Re: Unable to create TX buffer recovery queue
>
>
> On 5-Jun-07, at 5:21 PM, Amalaye Oyake wrote:
>
>   
>> Hello,
>>
>> I am using RTEMS on a i386 system (a 400Mhz Pentium II with 128MB  
>> of RAM).
>> The NIC is a 3C905B (3COM Card) ... RTEMS finds the NIC, does a  
>> timer setup,
>> identifies the media and says unit elnk1 driver attached.
>>
>> Then it says
>>
>> RTEMS: etherlink : Unable to create TX Buffer recovery queue
>> RTEMS: fatal error, exiting
>>
>> What do the above errors mean? How can I fix this?
>>     
>
> Have a look at the driver source, elnk.c, line 3525:
>
> if (txDaemonTid == 0)
>     {
>        if( rtems_message_queue_create( rtems_build_name 
> ('X','L','c','r'),
>                                        sc->numTxbuffers+1,
>                                        sizeof(struct TXMD *),
>                                        RTEMS_FIFO | RTEMS_LOCAL,
>                                        &chainRecoveryQueue ) !=  
> RTEMS_SUCCESSFUL )
>        {
>           rtems_panic( "etherlink : Unable to create TX buffer  
> recovery queue\n" );
>        }
>
> ...
>
> i.e. the directive, rtems_message_queue_create( ), is failing...
>
> I'm going to guess that you haven't included the Message Manager in  
> your application's Makefile. If memory is not an issue (and 128 MB is  
> *lots* to play with...), just set the "Managers" variable to "all":
>
> i.e. in your Makefile set
> MANAGERS=all
>
> That will circumvent several obscure "gotchyaz"...
>
>
> -- dc
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>   




More information about the users mailing list