For linux and windows, in the same process, how to make two page entries reference to the same physical page?
For windows, by reading at the MSDN, looks like I can call CreateFileMapping by passing INVALID_HANDLE_VALUE to create a file mapping without backed by a file. Then I can call MapViewOfFileEx twice with different lpBaseAddress, which essentially makes two different addresses reference to the same physical address.
My question is, how to do it under linux? I read manual for mmap, and didn’t see a way to do it, unless the region is backed by a file (with flag MAP_SHARED) but modifications to this region will be written to the file, which is not what I want. Does anyone aware of someway to do this? I am not against backing by a file, as long as the writing to the region doesn’t actually goes to the disk. Using tmpfs is not an option because I can’t guarantee user has a tmpfs mounted.
By the way, the code should be user mode code, not kernel mode.
Use
shm_open()to create a file formmap().“I want to write some emulator” is the same purpose as mine when I used this trick.
I did use ipc/shm, but I forgot the detail. It was very very very very probably:
shmget()+shmat()