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