You are viewing paulmck

Previous Entry | Next Entry

TMEverywhere
It is perfectly legal to execute memory-mapping operations (including mmap() and shmat()) within a lock-based critical section, and, at least in principle, from within an RCU read-side critical section. What happens when you attempt to execute such an operation from within a transaction? More to the point, what happens if the memory region being remapped contains some variables participating in the current thread's transaction? And what if this memory region contains variables participating in some other thread's transaction?

It should not be necessary to consider cases where the TM system's metadata is remapped, given that most locking primitives do not define the outcome of remapping their lock variables.

Here are some possible ways for TM to handle memory mapping operations.