Workspace usage trouble

Cedric Aubert cedric_aubert at yahoo.fr
Fri Jan 16 14:25:34 UTC 2004


Thanks a lot, I will try this but
I take a look in the libc_start_hook() function and
I have the reent structure allocated with calloc, so
it should be in heap, no ?

In fact, I have just look at the CVS, this feature is
true since rtems-4.6.0-pre5 and rtems-4.6.0-branch but
I use the rtems-4.6.0-pre4 so, reent struct still
allocate
in my heap.

Any idea ?

Cedric

> -----Original Message-----
> From: Joel Sherrill
[mailto:joel.sherrill at oarcorp.com]
> Sent: Friday, January 16, 2004 1:08 PM
> To: cedric_aubert at yahoo.fr
> Cc: RTEMS-USERS
> Subject: Re: Workspace usage trouble
>
>
> Cedric Aubert wrote:
>
> >Hi all,
> >
> >I have some trouble with my workspace size. All
work
> >fine when I put some
> >wrong number of task or semaphore or file
dexcriptors
> >but when I put the
> >real number (with some upper number for task
semaphore
> >and file descriptor)
> >that's don't work, it can't open allocate some task
or
> >other object in the
> >workspace.
> >
> >So how can I see the available memory left in
> >workspace ?
> >
> >
> I have worked up a routine to get information and
free space left in the
> heap but it has not been tested.
>
> >How can I known witch object use the workspace ?
> >
> >What I missed to specifie ?
> >
> >I take a look in the condefs but it seem to have
> >nothing forgotten.
> >
> >
> >
> Given the inquiry yesterday on the list and a
night's, I think I
> remembered it:
>
>
> /*
>  * reent struct allocation moved here from
libc_start_hook() to avoid
>  * mutual exclusion problems when memory is
allocated from the start hook.
>  *
>  * Memory is also now allocated from the workspace
rather than the heap.
>  *  -- ptorre 9/30/03
>  */
>
> The newlib C library reent extension was in the heap
and is now in the
> workspace.
> That needs to be accounted for in confdefs.h on a
per task basis.
>  Try this
> hack/patch and see if it helps:
>
> $ cvs diff -u confdefs.h
> Index: confdefs.h
>
===================================================================
> RCS file:
/usr1/CVS/rtems/cpukit/sapi/include/confdefs.h,v
> retrieving revision 1.55.2.1
> diff -u -r1.55.2.1 confdefs.h
> --- confdefs.h  4 Sep 2003 18:47:20 -0000      
1.55.2.1
> +++ confdefs.h  16 Jan 2004 12:05:46 -0000
> @@ -805,12 +805,15 @@
>  #define CONFIGURE_OBJECT_TABLE_STUFF \
>    ( sizeof(Objects_Control *) + sizeof(rtems_name
*) +
> sizeof(rtems_name) )
>
> +#include <reent.h>
> +
>  #define CONFIGURE_MEMORY_FOR_TASKS(_tasks) \
>    (((_tasks) + 1 ) * \
>     ((sizeof(Thread_Control) + CONTEXT_FP_SIZE + \
>        STACK_MINIMUM_SIZE + sizeof(
RTEMS_API_Control ) + \
>        CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
>        CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API + \
> +      sizeof(struct reent) + \
>        CONFIGURE_OBJECT_TABLE_STUFF)) \
>    )
>
>
>
>
> >Thanks a lot
> >
> >Cedric
> >
> >
> >/* configuration information */
> >
> >#include <bsp.h>
> >#include <rtems.h>
> >#include <stdlib.h>
> >#include <stdio.h>
> >#include <string.h>
> >#include <Task.h>
> >
> >#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER			//
Use
> >console
> >
> >#define CONFIGURE_RTEMS_INIT_TASKS_TABLE			//
Utiliser
> >la table Init Task
> >plus bas
> >
> >#define CONFIGURE_MAXIMUM_TASKS
> 53 			// 32 SDEL
> >Task and 1 RTEMS Init
> >Task
> >#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 		10
> >// Nombre de MailBox
> >#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 		3
> >// Signal
> >#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 
300
> >	// Nombre Max de
> >File Descriptor
> >#define CONFIGURE_MAXIMUM_SEMAPHORES
> 500			//
> >Nombre Max de Semaphore
> >#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 			12
> 		//
> >Nombre Max de Port
> >Serie
> >
> >#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM // A
la
> >place de MiniIMFS pour
> >avoir le support des link
> >
> >// #define CONFIGURE_MEMORY_OVERHEAD           	
500
> >// Ko suplementaire
> >
> >#define STACK_CHECKER_ON
> 	1 // Activation du
> >Stach Check
> >
> >#define CONFIGURE_INIT
> >
> >
> >rtems_task Init(rtems_task_argument)
> >{
> >	/* Starting Application */
> >}
> >
> >/*
> > *  The user is defining their own table
information
> >and setting the
> > *  appropriate variables.
> > */
> >
>
>/****************************************************************
> ***********
> >******************/
> >
> >#define CONFIGURE_HAS_OWN_INIT_TASK_TABLE
> >
> >#ifdef CONFIGURE_HAS_OWN_INIT_TASK_TABLE
> >
> >#undef CONFIGURE_INIT_TASK_NAME
> >#define CONFIGURE_INIT_TASK_NAME
> >rtems_build_name( 'm', 'a', 'i',
> >'n' )
> >
> >#undef CONFIGURE_INIT_TASK_STACK_SIZE
> >#define CONFIGURE_INIT_TASK_STACK_SIZE
> >RTEMS_MINIMUM_STACK_SIZE // 0x6000
> >de place laissé par FBUG
> >
> >#undef CONFIGURE_INIT_TASK_PRIORITY
> >#define CONFIGURE_INIT_TASK_PRIORITY      1
> >
> >#undef CONFIGURE_INIT_TASK_ATTRIBUTES
> >#define CONFIGURE_INIT_TASK_ATTRIBUTES
> >RTEMS_DEFAULT_ATTRIBUTES
> >
> >#undef CONFIGURE_INIT_TASK_ENTRY_POINT
> >#define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
> >
> >#undef CONFIGURE_INIT_TASK_INITIAL_MODES
> >#define CONFIGURE_INIT_TASK_INITIAL_MODES
> >RTEMS_PREEMPT
> >
> >#undef CONFIGURE_INIT_TASK_ARGUMENTS
> >#define CONFIGURE_INIT_TASK_ARGUMENTS     0
> >
> >#ifdef CONFIGURE_INIT
> >
> >rtems_initialization_tasks_table
> >Initialization_tasks[] = {
> >  { CONFIGURE_INIT_TASK_NAME,
> >    CONFIGURE_INIT_TASK_STACK_SIZE,
> >    CONFIGURE_INIT_TASK_PRIORITY,
> >    CONFIGURE_INIT_TASK_ATTRIBUTES,
> >    CONFIGURE_INIT_TASK_ENTRY_POINT,
> >    CONFIGURE_INIT_TASK_INITIAL_MODES,
> >    CONFIGURE_INIT_TASK_ARGUMENTS
> >  }
> >};
> >
> >#endif
> >
> >#define CONFIGURE_INIT_TASK_TABLE
Initialization_tasks
> >
> >#define CONFIGURE_INIT_TASK_TABLE_SIZE \
> >  sizeof(CONFIGURE_INIT_TASK_TABLE) /
> >sizeof(rtems_initialization_tasks_table)
> >
> >#endif    /* CONFIGURE_HAS_OWN_INIT_TASK_TABLE */
> >
>
>/****************************************************************
> ***********
> >******************/
> >
> >#include <confdefs.h>
> >
> >--
> >Cedric AUBERT
> >Ingenieur Recherche et Developpement
> >SDEL Controle Commande
> >D2A - Rue Nungesser et Coli
> >44860 Saint Aignan de Grand Lieu
> >FRANCE
> >
> >Tel : +33 (0)2 40 84 50 00
> >Poste : 5109
> >Fax : +33 (0)2 40 84 51 10
> >
> >E-mail : cedric_aubert at yahoo.fr
> >Web : http://www.sdelcc.com
> >


__________________________________
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus



More information about the users mailing list