blob: 1069a90a21cbeb907782f0d6522c83fcc9533199 [file]
#if defined(__clang__)
#define THREAD_ANNOTATION_ATTRIBUTE_(x) __attribute__((x))
#else
#define THREAD_ANNOTATION_ATTRIBUTE_(x)
#endif
#define CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE_(capability(x))
#define ACQUIRE() THREAD_ANNOTATION_ATTRIBUTE_(acquire_capability())
#define RELEASE() THREAD_ANNOTATION_ATTRIBUTE_(release_capability())
class CAPABILITY("mutex") Mutex {
public:
void lock() ACQUIRE();
void unlock() RELEASE();
};
void Mutex::lock() ACQUIRE() {}
void Mutex::unlock() RELEASE() {}
int main() {
Mutex m;
m.lock();
m.unlock();
return 0;
}