Robert McCullough wrote:
> Hi Gilles,
> 
>   --> -----Original Message-----
>   --> From: Gilles Chanteperdrix [mailto:[EMAIL PROTECTED]
>   --> Sent: Wednesday, April 09, 2008 3:29 PM
>   --> To: [EMAIL PROTECTED]
>   --> Cc: [email protected]
>   --> Subject: Re: [Xenomai-help] mlockall questions
>   --> 
>   --> Robert McCullough wrote:
>   -->  > Hi,
>   -->  >
>   -->  > I am converting part of a C++ application to real-time.
>   -->  >
>   -->  > I noticed that all the Xenomai examples call
>   -->  > mlockall(MCL_CURRENT|MCL_FUTURE) at the beginning of main before
>   --> creating
>   -->  > any real-time threads.
>   -->  > Is calling mlockall a requirement when using Xenomai?
>   --> 
>   --> Yes it is.
>   --> 
> [Robert McCullough] 
> OK.
>   -->  >
>   -->  > I have added a couple of Xenomai tasks to my C++ app.
>   -->  > A) Without calling mlockall my application seems to run fine but I
>   --> noticed
>   -->  > in /proc/xenomai/stat that a few page faults occurred.
>   --> 
>   --> Well normally your application should stop with a message telling you
>   --> that you have not call mlockall. Do you happen to install a handler
>   --> for
>   --> SIGXCPU ?
> [Robert McCullough] 
> Yes.
>   --> 
>   -->  > B) When calling mlockall at the beginning of my main() I do not see
>   --> any page
>   -->  > faults but some of the C++ threads do not start.
>   -->  >
>   -->  > Why would mlockall cause some threads not to start?
>   --> 
>   --> Well, you should check rt_task_create or pthread_create return
>   --> value. The usual error is that you run out of memory because of the
>   --> stack size problem explained in the TROUBLESHOOTING guide.
>   --> 
>   --> --
>   --> 
>   --> 
>   -->                                             Gilles.
> [Robert McCullough] 
> Thanks.
> Calling "ulimit -s 2048" before my application in my startup script seems to
> work fine when I am running over nfs to the Denx ELDK with a bash shell.
> But my application needs to run from a CompactFlash card running BusyBox on
> a MPC5200 and BusyBox does not seem to support the "ulimit" command.
> Is there another way to set this stack limit size?
> 

- Setting the stack size property into the attribute struct for each new pthread
your application may create: pthread_attr_setstacksize(&thattr, stacksize);

- Or passing the right stack size value to any (non-POSIX) Xenomai API task
creation service, we do enforce it (e.g. rt_task_create(), taskInit(),
t_create()...).

- Or calling setrlimit(RLIMIT_STACK, ...) to set a global default value for all
subsequent glibc-originated threads. This is what the ulimit command does, 
actually.

-- 
Philippe.

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to