On Thu, 2009-05-28 at 18:39 +0200, Philippe Gerum wrote:
> On Thu, 2009-05-28 at 11:59 -0400, Andreas Glatz wrote:
> > Hi,
> > 
> > We have to start 40+ Xenomai tasks in kernel space.
> > We want to allocate at least 4kbyte of stack memory
> > for each of them. So we need the stack heap size 
> > to be more than 160kbyte. 
> > 
> > In the documentation it says that the total 
> > stack heap size cannot be more than 128kbyte
> > (the limit of kmalloc).
> 
> Could you point me at that doc? TIA,
> 
> > 
> > Now my idea is to modify the Xenomai code to have 
> > more than one stack heaps. So when I'm running out
> > of space in one heap I can switch to the next heap...
> > 
> > Is there an easier way to increase the max. stack heap size?
> > 
> 
> See CONFIG_XENO_OPT_SYS_STACKPOOLSZ, nucleus configuration menu.

I found this in kernel/xenomai/nucleus/Kconfig :

config XENO_OPT_SYS_STACKPOOLSZ
        depends on XENO_GENERIC_STACKPOOL
    int "Size of the private stack pool (Kb)"
    default 32
    range 0 128
    help

    On this architecture, kernel-based Xenomai threads get the
    stack space they need from a private memory pool.  If you
    don't start any kernel-based thread (i.e. no RTDM driver
    thread, and no real-time task created from an application
    embodied into a kernel module), you may leave a zero value for
    this option. The size is expressed in Kilobytes.


And if you follow the CONFIG_XENO_OPT_SYS_STACKPOOLSZ macro 
you eventually end up at this comment in kernel/xenomai/nucleus/pod.c :

    /*
     * We have to differentiate the system heap memory from the
     * pool the kernel thread stacks will be obtained from,
     * because on some architectures, vmalloc memory may not be
     * accessed while running in physical addressing mode
     * (e.g. exception trampoline code on powerpc with standard
     * MMU support - CONFIG_PPC_STD_MMU). Meanwhile, since we want
     * to allow the system heap to be larger than 128Kb in
     * contiguous memory, we can't restrict to using kmalloc()
     * memory for it either.  Therefore, we manage a private stack
     * pool for kernel-based threads which will be populated with
     * the kind of memory the underlying arch requires, still
     * allowing the system heap to rely on a vmalloc'ed segment.
     */
    heapaddr = xnarch_alloc_stack_mem(CONFIG_XENO_OPT_SYS_STACKPOOLSZ *
1024);



Andreas


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

Reply via email to