Conversation
rcu_dereference_sym basically calls CMM_ACCESS_ONCE which essentially is the same macro as the ACCESS_ONCE kernel one. This macro ensures that the compiler won't make any optimization and won't load the given value twice. std::atomic should do the trick here.
…uarantee that once it's done, the Gc is unlocked.
Conflicts: gc/gc_lock.cc gc/gc_lock.h
…s. This allows us to block writes when needed
gc/gc_lock.h
Outdated
There was a problem hiding this comment.
I would recommend calling jml's do_abort() before the throw statement. This give us a chance to easily trap the error in gdb if it shows up in DasDB.
I came up with the exact same conclusion. That's why I was throwing an exception. After that, I discovered that the assertion would fail and I decided to get rid of it.
Take a look at gc_test, I have tests for that. |
…is useful if we can't use catch throw in gdb
This patch introduces a new type of lock in GcLock: writelock.
With that comes a new interface :