C question - headers in mmaped files

Duncan Roe duncanr at optimation.com.au
Tue Apr 1 21:45:42 EST 2003


dat = (data *) map+64;

means

dat = ((data*)map) + 64;

i.e. add 64 * sizeof map to machine address.

If you want dat to start 64 bytes in from map, try

dat=(data*)((char*)map+64); /* N.b. avoid confusing whitespace ;) */

Cheers ... Duncan.

On Tue, Apr 01, 2003 at 08:53:17PM +1000, Jepri wrote:
> Hey all, I've got a C question for them who do that sort of thing.  Not 
> quite linux, but the list is a tad slow thesedays.
> 
> I'm writing some code that writes and reads data out of files using 
> mmap, and I get to make up my own file format.  It seemed natural to 
> have a header describing the file, but I can't figure out how to access 
> the header in the mmaped chunk of memory.  I thought I could just take 
> pointers to anywhere inside the mmaped memory and cast them to whatever 
> I wanted, but it doesn't seem to work for me.
> 
> i.e. I tried something really naive like:
> 
> map = (char *) mmap(etc etc)
> head = (header *) map;
> dat = (data *) map+64;
> 
> but data ended up pointing over 1kb heigher than it should have.  
> What's the right way to do this?  Is there an easy way for me to make 
> multiple 'segments' in the file that have different data formats?
> 
> 
> 
> 



More information about the linux mailing list