You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was wondering whether or not the instrumentation PMTest_* function (i.e. PMTest_assign, PMTest_flush, PMTest_fence), must be placed manually, or if there is some kind of compiler plugin that I'm missing. Assume I am not using any transactions and am doing it the old-fashioned manually clflush; sfence (or clwb/clflushopt) approach to persistence. I was looking to modify this...
Since new->next and new->value are meant to persist before the write to root->head, but this example deliberately violates this by persisting root->head before new->value. How would I catch this in PMTest? I got...
I'm wondering if PMTest_assign -> PMTest_flush -> PMTest_fence can be kind of automated based on the instructions themselves, like PMDK's pmemcheck does. Is this possible, or do I have to manually instrument everything? Also am I correct in my translation to using PMTest?
Finally, let's say that I do not wish to sendTrace yet... for example, let's say that I have a non-blocking persistent data structure (so transactions are out of the question) that lazily persists certain fields; how does PMTest handle this? As well, during atomic operations, such as compare-and-swap, how should I go about instrumenting that?
Thanks in advance!
The text was updated successfully, but these errors were encountered:
LouisJenkinsCS
changed the title
Does insertion of PMTest_* instrumentation need to be done manually?
Does insertion of PMTest_* instrumentation need to be done manually? (and other questions on usage)
Feb 10, 2020
In particular, this slide says "Auto inject low-level checkers for high-level checkers"
Does this imply that PMTest does this in some way, or that it can do it (I.E if some higher-level checker existed) or that it is only inside of PMDK Transactions?
Hello developers,
I was wondering whether or not the instrumentation
PMTest_*
function (i.e.PMTest_assign
,PMTest_flush
,PMTest_fence
), must be placed manually, or if there is some kind of compiler plugin that I'm missing. Assume I am not using any transactions and am doing it the old-fashioned manuallyclflush; sfence
(orclwb
/clflushopt
) approach to persistence. I was looking to modify this...https://github.com/pmem/pmdk/blob/0206f00217755e9b638fae01188e0408fb1e31e6/src/examples/pmreorder/pmreorder_list.c#L140-L153
Since
new->next
andnew->value
are meant to persist before the write toroot->head
, but this example deliberately violates this by persistingroot->head
beforenew->value
. How would I catch this in PMTest? I got...I'm wondering if
PMTest_assign -> PMTest_flush -> PMTest_fence
can be kind of automated based on the instructions themselves, like PMDK's pmemcheck does. Is this possible, or do I have to manually instrument everything? Also am I correct in my translation to using PMTest?Finally, let's say that I do not wish to
sendTrace
yet... for example, let's say that I have a non-blocking persistent data structure (so transactions are out of the question) that lazily persists certain fields; how does PMTest handle this? As well, duringatomic
operations, such ascompare-and-swap
, how should I go about instrumenting that?Thanks in advance!
The text was updated successfully, but these errors were encountered: