inrw
sem_id inrw; /* in read or write function */
atomic_add(&data->inrw, 1);
atomic_add(&data->inrw, -1);
atomic_add(&data->inrw, -1);
atomic_add(&data->inrw, -1);
data->inrw = 0;
while (inrw(data)) {
atomic_add(&data->inrw, 1);
atomic_add(&data->inrw, -1);
atomic_add(&data->inrw, -1);
atomic_add(&data->inrw, -1);
return data->inrw;