diff options
Diffstat (limited to 'arch/s390/include/asm/timer.h')
-rw-r--r-- | arch/s390/include/asm/timer.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/arch/s390/include/asm/timer.h b/arch/s390/include/asm/timer.h new file mode 100644 index 00000000..e63069ba --- /dev/null +++ b/arch/s390/include/asm/timer.h @@ -0,0 +1,55 @@ +/* + * include/asm-s390/timer.h + * + * (C) Copyright IBM Corp. 2003,2006 + * Virtual CPU timer + * + * Author: Jan Glauber (jang@de.ibm.com) + */ + +#ifndef _ASM_S390_TIMER_H +#define _ASM_S390_TIMER_H + +#ifdef __KERNEL__ + +#include <linux/timer.h> + +#define VTIMER_MAX_SLICE (0x7ffffffffffff000LL) + +struct vtimer_list { + struct list_head entry; + + int cpu; + __u64 expires; + __u64 interval; + + void (*function)(unsigned long); + unsigned long data; +}; + +/* the vtimer value will wrap after ca. 71 years */ +struct vtimer_queue { + struct list_head list; + spinlock_t lock; + __u64 timer; /* last programmed timer */ + __u64 elapsed; /* elapsed time of timer expire values */ + __u64 idle_enter; /* cpu timer on idle enter */ + __u64 idle_exit; /* cpu timer on idle exit */ +}; + +extern void init_virt_timer(struct vtimer_list *timer); +extern void add_virt_timer(void *new); +extern void add_virt_timer_periodic(void *new); +extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires); +extern int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires); +extern int del_virt_timer(struct vtimer_list *timer); + +extern void init_cpu_vtimer(void); +extern void vtime_init(void); + +extern void vtime_stop_cpu(void); +extern void vtime_start_leave(void); + +#endif /* __KERNEL__ */ + +#endif /* _ASM_S390_TIMER_H */ |