/* Copyright (c) 2013 The Regents of the University of California
 * Barret Rhoden <brho@cs.berkeley.edu>
 * See LICENSE for details.
 *
 * Reader-writer queue locks (sleeping locks).
 *
 * Readers favor readers; writers favor writers.  Check out rwlock.c for more
 * info. 
 *
 * One consequence of this: "if some reader holds a rwlock, then any other
 * thread (including itself) can get an rlock". */

#ifndef ROS_KERN_RWLOCK_H
#define ROS_KERN_RWLOCK_H

#include <ros/common.h>
#include <kthread.h>
#include <atomic.h>

struct rwlock {
	spinlock_t					lock;
	atomic_t					nr_readers;
	bool						writing;
	struct cond_var				readers;
	struct cond_var				writers;
};
typedef struct rwlock rwlock_t;

void rwinit(struct rwlock *rw_lock);
void rlock(struct rwlock *rw_lock);
bool canrlock(struct rwlock *rw_lock);
void runlock(struct rwlock *rw_lock);
void wlock(struct rwlock *rw_lock);
void wunlock(struct rwlock *rw_lock);

#endif /* ROS_KERN_RWLOCK_H */
