How many Timers Can I Create???

Joel Sherrill joel.sherrill at OARcorp.com
Mon Apr 12 16:43:04 UTC 2004


Alex wrote:

> Ok, but I am still looking to this behaiviour as strange, because the pc I am using has 256 MB of ram and if the rtems see memory as a flat fashion, It looks like that rtems is waisting memory in timers... Sorry about my statement ... I am beginner in rtems, but now I am interesting in find out the reason... I think we all!
> 
> So if with 256 mb rtems only allows to create 10 timers, well If we need 20 timers We have to put ~512 Mb on the PC. It looks very strange...

It doesn't matter how much physical RAM is in your target hardware.
What matters is how much you told RTEMS it had available to use.
In the deeply embedded world, one wants tight control over
memory layout and usage.  The amount you want RTEMS to use
is calculated by confdefs.h and it doesn't get a byte more.
Your C program heap may be huge on that PC but RTEMS is
likely being told to use just a handful of kilobytes.

--joel

> Alex
> 
> 
> 
> ----- Mensagem Original -----
> De: Joel Sherrill <joel.sherrill at OARcorp.com>
> Data: Segunda-Feira, 12 de Abril de 2004, 17:18
> Assunto: Re: How many Timers Can I Create???
> 
> 
>>Kamen Penev wrote:
>>
>>
>>>Joel Sherrill wrote:
>>>
>>>
>>>>Alex wrote:
>>>>
>>>>
>>>>>Hi,
>>>>>
>>>>>Does RTEMS has a confifured maximum number o timers it 
>>
>>supports, or 
>>
>>>>>it naturally crashs when too much timers are created?
>>>>>
>>>>>In an test I am doing I have the following:
>>>>>
>>>>>#define CONFIGURE_MAXIMUM_POSIX_TIMERS 150
>>>>>#define CONFIGURE_MAXIMUM_ 150
>>>>>
>>>>>Then I have source code to create 100 timers, but when the 
>>
>>program 
>>
>>>>>starts it hangs, even before starting sreating the first 
>>
>>timer. The 
>>
>>>>>timers are created with the timer_create POSIX function.
>>>>
>>>>
>>>>
>>>>Sounds like the BSP was unable to assign the memory for that much
>>>>workspace.
>>>
>>>
>>>
>>>I see this in confdefs.h (ss-20030417):
>>>
>>>#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
>>> ((_timers) * \
>>>  ( 0 ) )
>>>
>>>Maybe this is why?
>>
>>That would explain it also. :)
>>
>>I would guess that the proper definitions in
>>cpukit/sapi/include/confdefs.h should be:
>>
>>#define CONFIGURE_MEMORY_FOR_POSIX_TIMERS(_timers) \
>>  ((_timers) * sizeof(POSIX_Timer_Control))
>>
>>And since POSIX timers implicitly use a Classic API timer:
>>
>>#define CONFIGURE_MEMORY_FOR_TIMERS(_timers) \
>>  ((_timers + CONFIGURE_MAXIMUM_POSIX_TIMERS) * \
>>     ( sizeof(Timer_Control) + CONFIGURE_OBJECT_TABLE_STUFF ) )
>>
>>My earlier statement about the bspstart.c failing still
>>apply.  But this time you probably got slightly further
>>in initialization before things failed.  RTEMS initialization
>>probably ran out of workspace duging the preallocation of
>>object control blocks.
>>
>>If this works, let us know so a PR can be filed.
>>
>>
>>>Kamen
>>>
>>
>>
>>
> ___________________________________________________________________________________________
> IOL Flash. A net normal em versao acelerada.
> Promocao: Ligue-se a Internet pelo IOL Flash e ganhe um Vale de €10 da Galp!
> Saiba como: http://www.iol.pt/central_utilizador/iol_flash/promocao.php
> 





More information about the users mailing list