/* Copyright (c) 2002, Thomas Kurschel Part of Radeon driver Benaphore definition */ #ifndef _BENAPHORE_H #define _BENAPHORE_H typedef struct { sem_id sem; int32 ben; } benaphore; #define INIT_BEN(x, prefix) ( (x).ben = 0, (x).sem = create_sem(0, #prefix " benaphore"), (x).sem ) #define ACQUIRE_BEN(x) if((atomic_add(&(x.ben), 1)) >= 1) acquire_sem(x.sem); #define RELEASE_BEN(x) if((atomic_add(&(x.ben), -1)) > 1) release_sem(x.sem); #define DELETE_BEN(x) delete_sem(x.sem); #endif