Next: , Previous: Database structure overview, Up: Internals


4.3 How the pointers are stored

All pointers in the database ( not in shared memory etc. ) are stored in the mmap independent format, e.g. when a data block is mmap()ed read-write to address 0x40190000, the pointer to the beginning of data area (0x40192000) is stored in database as 0x2000. Such pointers are later referred to as “relative pointers”. Magic number 0x40190000 stands for a “segment base address” here, e.g. the address, where this block is currently mmap()ed. This value is subtracted from “real pointer” before assignment to mmaped pointer, and added to “relative” ( or stored ) pointer before use. The subtractions and additions are done on fly. ‘