RES: Possible confdefs error when calculating workspace size
Fabrício de Novaes Kucinskis
fabricio at dea.inpe.br
Mon Mar 14 18:44:00 UTC 2011
Your assumption was right: I didn't defined CONFIGURE_MESSAGE_BUFFER_MEMORY,
basically because it wasn't necessary for my applications to run ok. Now I'm
curious: what was the amount of 'extra' memory allocated by previous
versions of confdefs?
But I bet more people like me, due to the overestimation made by previous
versions, never configured adequately the message buffer memory and will
start having problems with it now.
To be honest, I've never noticed the CONFIGURE_MESSAGE_BUFFER_MEMORY macro.
Wouldn't be a good idea to point to it on the RTEMS User's Manual, item
10.4.1, 'Description'? I suggest a little change, something like: "...
Memory is allocated from the RTEMS Workspace for the specified count of
messages, each of max_message_size bytes in length (see the
CONFIGURE_MESSAGE_BUFFER_MEMORY configuration parameter on item 23.2.2)."
Thank you very much,
De: Joel Sherrill [mailto:joel.sherrill at oarcorp.com]
Enviada em: segunda-feira, 14 de março de 2011 11:29
Para: Fabrício de Novaes Kucinskis
Cc: rtems-users at rtems.com
Assunto: Re: Possible confdefs error when calculating workspace size
On 03/14/2011 09:17 AM, Fabrício de Novaes Kucinskis wrote:
> Hi all,
> I'm upgrading an application from RTEMS 4.8 to 4.10. This application
> runs 11 tasks (including Init and Idle) and some message queues.
> When running on RTEMS 4.10, the application creates all tasks, but
> stops after the creation of some queues, returning RTEMS_UNSATISFIED
> from a rtems_message_queue_create directive. According to the manual,
> this means "unable to allocate message buffers" (from the workspace).
How are you accounting for the message buffer memory? It comes
out of the workspace.
For each message queue, you need to reserve like this:
#define CONFIGURE_MESSAGE_BUFFER_MEMORY \
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( _maxQ1, _sizeQ1) + \
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( _maxQ2, _sizeQ2) + \
> The problem is solved when I add one to the number of configured tasks
> (RTEMS_MAXIMUM_TASKS 12) - this increases the workspace size as well.
> This didn't happen with previous versions - all I needed to do was
> inform the correct number of tasks, and the workspace seemed to have
> the right size.
> I couldn't find anything on the documentation that indicates a change
> on the workspace size configuration.
There are almost always changes to the internals of confdefs.h from
version to version. This time, it got tighter and did not overallocate
as much memory. In 4.9, it was over estimating and likely covered up
that you didn't reserve memory for the message buffers.
> Is there something I'm missing, or this could be a possible error on
> Thanks in advance and best regards,
> Fabrício de Novaes Kucinskis.
Joel Sherrill, Ph.D. Director of Research& Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users