| /* Copyright (c) 2013 The Regents of the University of California | 
 |  * Barret Rhoden <brho@cs.berkeley.edu> | 
 |  * See LICENSE for details. | 
 |  * | 
 |  * Alarm device includes (needed for the linkage to struct proc) */ | 
 |  | 
 | #pragma once | 
 |  | 
 | #include <sys/queue.h> | 
 | #include <kref.h> | 
 | #include <alarm.h> | 
 | #include <atomic.h> | 
 | #include <fdtap.h> | 
 | #include <rendez.h> | 
 |  | 
 | struct proc_alarm { | 
 | 	TAILQ_ENTRY(proc_alarm)		link; | 
 | 	int				id; | 
 | 	struct kref			kref; | 
 | 	struct alarm_waiter		a_waiter; | 
 | 	struct cond_var			cv; | 
 | 	qlock_t				qlock; | 
 | 	struct proc			*proc; | 
 | 	struct fdtap_slist		fd_taps; | 
 | 	unsigned long			period; | 
 | 	unsigned long			count; | 
 | }; | 
 | TAILQ_HEAD(proc_alarm_list, proc_alarm); | 
 |  | 
 | struct proc_alarm_set { | 
 | 	struct proc_alarm_list 		list; | 
 | 	spinlock_t 			lock; | 
 | 	struct timer_chain		*tchain; | 
 | 	int				id_counter; | 
 | }; | 
 |  | 
 | void devalarm_init(struct proc *p); |