| /* 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); |