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/