Hey all,

Even with the solution of Tomasz the question still is, is it posible
to reserve more than 4 Mb memory at boot time?

To quote "Using Shared Memory in Real-Time Linux" by Frederick M.
Proctor

        The size of the shared memory pool must be less than the pagesize 
        declared in /usr/include/asm/param.h. In Intel-Pentium class machines 
        and above, the page size is 4 MB. On earlier machines, the page
        size is 1 MB. 

If this is correct, why is it only possible to use a amount less than
the page size ?

Thanx,
Erwin
 


Tomasz Motylewski wrote:
> 
> On Mon, 31 May 1999, Erwin Rol wrote:
> 
> > In the documentation on the RT-Linux website
> > it is said that the shared memory must be smaller
> > than the page size. Is this (still) true, and is
> > it posible to have bigger amounts of shared memory, for
> > example 32Mb ?
> 
> I do not think that using the method with reservation of memory at boot you
> are limited.
> 
> But I agree that this method is too static - sometimes amount of memory needs
> to be changed. I have written a simple driver allowing you to allocate in the
> kernel module any amount of memory, which is them mmappable though a 10,254
> cheracter device. You can get it at:
> 
> http://crds.chemie.unibas.ch/PCI-MIO-E/mbuff-0.4.tar.gz
> 
> API:
>   in the kernel:
>     extern int shm_allocate(unsigned int size, void **shm);
>     extern int shm_deallocate(void * shm);
>     example:
>       struct myshm *shm;
>       shm_allocate(1024*1024*32,(void **) &shm);
>       at this point you can mmap it from user program.
>       shm->a =20; use it any way;
>       shm_deallocate(shm); /* the memory will be freed on the last unmap
>                               by the user */
>   user space: see tester.c example.
>   access through misc device (enable MISC in the kernel):
> crw-r--r--   1 root     root      10, 254 Apr 24 14:19 rtl_shm
> 
> Should work without problems (if your system can work with 32M taken away):
> download, uncompress, "make test".
> 
> You may wish to change 1024*1024 to 1024*1024*32 in mmap.c
> I have tested it:
> 
> [motyl@crds motyl]$ free (before insmod)
>              total       used       free     shared    buffers     cached
> Mem:        126736     125616       1120      70004        564      16768
> -/+ buffers/cache:     108284      18452
> Swap:       130044      14812     115232
> 
> [motyl@crds motyl]$ free (after insmod rtl_shm.o)
>              total       used       free     shared    buffers     cached
> Mem:         94992      93744       1248      47768        420      14516
> -/+ buffers/cache:      78808      16184
> Swap:       130044      41664      88380
> 
> [motyl@crds motyl]$ free   (after rmmod rtl_shm)
>              total       used       free     shared    buffers     cached
> Mem:        127764      92768      34996      48068        604      14624
> -/+ buffers/cache:      77540      50224
> Swap:       130044      43008      87036
> 
> It can assemble big block even from a fragmented memory, sending things to
> swap of neccesary. This memory is only logically in one block. But you would
> care only when doing DMA with non scatter-gather capable device.
> 
> --
> Tomek
> 
> --- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> ----
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/~rtlinux/

-- 
        Q - S O F T - E N G I N E E R I N G 

Erwin Rol (Software Engineer)     phone: +49-89-68050051
[EMAIL PROTECTED]  fax  : +49-89-68050052
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to