static int must_hold(int x) __attribute__((context(1,1))) { int z; return x * 7; } static int release(int x) __attribute__((context(1, 0))) { __context__(-1); return 0; } static int acquiresilently(int x) { __context__(1); return 1; } int main(int argc, char **argv) { must_hold(8); __context__(1); must_hold(0); __context__(-1); return 0; }