OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [kernel/] [time/] [tick-internal.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * tick internal variable and functions used by low/high res code
3
 */
4
DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
5
extern spinlock_t tick_device_lock;
6
extern ktime_t tick_next_period;
7
extern ktime_t tick_period;
8
extern int tick_do_timer_cpu __read_mostly;
9
 
10
extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast);
11
extern void tick_handle_periodic(struct clock_event_device *dev);
12
 
13
/*
14
 * NO_HZ / high resolution timer shared code
15
 */
16
#ifdef CONFIG_TICK_ONESHOT
17
extern void tick_setup_oneshot(struct clock_event_device *newdev,
18
                               void (*handler)(struct clock_event_device *),
19
                               ktime_t nextevt);
20
extern int tick_program_event(ktime_t expires, int force);
21
extern void tick_oneshot_notify(void);
22
extern int tick_switch_to_oneshot(void (*handler)(struct clock_event_device *));
23
extern void tick_resume_oneshot(void);
24
# ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
25
extern void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
26
extern void tick_broadcast_oneshot_control(unsigned long reason);
27
extern void tick_broadcast_switch_to_oneshot(void);
28
extern void tick_shutdown_broadcast_oneshot(unsigned int *cpup);
29
extern int tick_resume_broadcast_oneshot(struct clock_event_device *bc);
30
# else /* BROADCAST */
31
static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
32
{
33
        BUG();
34
}
35
static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
36
static inline void tick_broadcast_switch_to_oneshot(void) { }
37
static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { }
38
# endif /* !BROADCAST */
39
 
40
#else /* !ONESHOT */
41
static inline
42
void tick_setup_oneshot(struct clock_event_device *newdev,
43
                        void (*handler)(struct clock_event_device *),
44
                        ktime_t nextevt)
45
{
46
        BUG();
47
}
48
static inline void tick_resume_oneshot(void)
49
{
50
        BUG();
51
}
52
static inline int tick_program_event(ktime_t expires, int force)
53
{
54
        return 0;
55
}
56
static inline void tick_oneshot_notify(void) { }
57
static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
58
{
59
        BUG();
60
}
61
static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
62
static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { }
63
static inline int tick_resume_broadcast_oneshot(struct clock_event_device *bc)
64
{
65
        return 0;
66
}
67
#endif /* !TICK_ONESHOT */
68
 
69
/*
70
 * Broadcasting support
71
 */
72
#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
73
extern int tick_do_broadcast(cpumask_t mask);
74
 
75
extern int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu);
76
extern int tick_check_broadcast_device(struct clock_event_device *dev);
77
extern int tick_is_broadcast_device(struct clock_event_device *dev);
78
extern void tick_broadcast_on_off(unsigned long reason, int *oncpu);
79
extern void tick_shutdown_broadcast(unsigned int *cpup);
80
extern void tick_suspend_broadcast(void);
81
extern int tick_resume_broadcast(void);
82
 
83
extern void
84
tick_set_periodic_handler(struct clock_event_device *dev, int broadcast);
85
 
86
#else /* !BROADCAST */
87
 
88
static inline int tick_check_broadcast_device(struct clock_event_device *dev)
89
{
90
        return 0;
91
}
92
 
93
static inline int tick_is_broadcast_device(struct clock_event_device *dev)
94
{
95
        return 0;
96
}
97
static inline int tick_device_uses_broadcast(struct clock_event_device *dev,
98
                                             int cpu)
99
{
100
        return 0;
101
}
102
static inline void tick_do_periodic_broadcast(struct clock_event_device *d) { }
103
static inline void tick_broadcast_on_off(unsigned long reason, int *oncpu) { }
104
static inline void tick_shutdown_broadcast(unsigned int *cpup) { }
105
static inline void tick_suspend_broadcast(void) { }
106
static inline int tick_resume_broadcast(void) { return 0; }
107
 
108
/*
109
 * Set the periodic handler in non broadcast mode
110
 */
111
static inline void tick_set_periodic_handler(struct clock_event_device *dev,
112
                                             int broadcast)
113
{
114
        dev->event_handler = tick_handle_periodic;
115
}
116
#endif /* !BROADCAST */
117
 
118
/*
119
 * Check, if the device is functional or a dummy for broadcast
120
 */
121
static inline int tick_device_is_functional(struct clock_event_device *dev)
122
{
123
        return !(dev->features & CLOCK_EVT_FEAT_DUMMY);
124
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.