--- Vishnu M Menon <vishnu_m_menon@xxxxxxxxx> wrote: > Hi, > > I am trying to solve this problem: reserve the same > virtual memory address range in a given set of > programs so that no addresses falling within this > range will be used by the processes for any other > purpose. Later I'll map a shared memory region to > this > address using mmap(.) or shmat(.). > > My question is: is there a way I can use GCC to > achieve this VM address reservation? The programs > are > fully in my control and are extremely specialized, > so > I am at liberty to use techniques sane people would > balk at. > > To give a clearer idea of what I'm getting at, > reserving 10 MB of memory space might be achieved > through something like: > > char g_MemArray[ 10 * ( 1 << 20 ) ]; > > int > main() > { > printf("Starts at %p\n", g_MemArray ); > return 0; > } > > But of course, layout of global variables will vary > from program to program. I am trying to see if > somehow > the layout can be specified so that VM addresses are > guaranteed to be the same. > > TIA for the replies. I would also welcome any > solutions that do not involve gcc, though I realize > this would be off-topic (for which I apologize in > advance!). > > Regards, > Vishnu > there is an example on the web showing how to do this on a unix system (it concerns fortran common blocks, but the concepts are the same). http://gfortran.info/pmwiki.php?n=CodeSnippets