/* Copyright (c) 2015 Google Inc
 * Barret Rhoden <brho@cs.berkeley.edu>
 * See LICENSE for details.
 *
 * FD taps.  Allows the user to receive events when certain things happen to an
 * FD's underlying disk/device file. */

#pragma once

#include <ros/fdtap.h>
#include <sys/queue.h>
#include <kref.h>

struct proc;
struct event_queue;
struct chan;

struct fd_tap;
SLIST_HEAD(fdtap_slist, fd_tap);

struct fd_tap {
	SLIST_ENTRY(fd_tap)			link;	/* for device use */
	struct kref					kref;
	struct chan					*chan;
	int							fd;
	int							filter;
	struct proc					*proc;
	struct event_queue			*ev_q;
	int							ev_id;
	void						*data;
};

int add_fd_tap(struct proc *p, struct fd_tap_req *tap_req);
int remove_fd_tap(struct proc *p, int fd);
int fire_tap(struct fd_tap *tap, int filter);
