1 /* 2 * include/asm-s390/timer.h 3 * 4 * (C) Copyright IBM Corp. 2003,2006 5 * Virtual CPU timer 6 * 7 * Author: Jan Glauber (jang@de.ibm.com) 8 */ 9 10 #ifndef _ASM_S390_TIMER_H 11 #define _ASM_S390_TIMER_H 12 13 #ifdef __KERNEL__ 14 15 #include <linux/timer.h> 16 17 #define VTIMER_MAX_SLICE (0x7ffffffffffff000LL) 18 19 struct vtimer_list { 20 struct list_head entry; 21 22 int cpu; 23 __u64 expires; 24 __u64 interval; 25 26 void (*function)(unsigned long); 27 unsigned long data; 28 }; 29 30 /* the vtimer value will wrap after ca. 71 years */ 31 struct vtimer_queue { 32 struct list_head list; 33 spinlock_t lock; 34 __u64 timer; /* last programmed timer */ 35 __u64 elapsed; /* elapsed time of timer expire values */ 36 __u64 idle_enter; /* cpu timer on idle enter */ 37 __u64 idle_exit; /* cpu timer on idle exit */ 38 }; 39 40 extern void init_virt_timer(struct vtimer_list *timer); 41 extern void add_virt_timer(void *new); 42 extern void add_virt_timer_periodic(void *new); 43 extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires); 44 extern int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires); 45 extern int del_virt_timer(struct vtimer_list *timer); 46 47 extern void init_cpu_vtimer(void); 48 extern void vtime_init(void); 49 50 extern void vtime_stop_cpu(void); 51 extern void vtime_start_leave(void); 52 53 #endif /* __KERNEL__ */ 54 55 #endif /* _ASM_S390_TIMER_H */ 56