Overview
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5130424b5faba815e49caf8a1e96429f.png)
用于时间管理的对象
struct clocksource {
char *name;
struct list_head list;
int rating;
cycle_t (*read)(void);
cycle_t mask;
u32 mult;
u32 shift;
unsigned long flags
}
struct clock_event_device {
const char *name;
unsigned int features;
unsigned long max_delta_ns;
unsigned long min_delta_ns;
unsigned long mult;
int shift;
int rating;
int irq;
cpumask_t cpumask;
int (*set_next_event)(unsigned long evt, struct clock_event_device *);
void (*set_mode)(enum clock_event_mode mode, struct clock_event_device *);
void (*event_handler)(struct clock_event_device *);
void (*broadcast)(cpumask_t mask);
struct list_head list;
enum clock_event_mode mode;
ktime_t next_event;
}
struct tick_device {
struct clock_event_device *evtdev;
enum tick_device_mode mode;
}
enum tick_device_mode {
TICKDEV_MODE_PERIODIC,
TICKDEV_MODE_ONESHOT
}
- 注册一个新的时钟事件设备时,内核会自动创建一个时钟设备。
- tick_cpu_device : Per-CPU链表,包含了系统中每个CPU对应的struct tick_device实例
- tick_next_peroid : 下一个全局时钟事件发生的时间
- tick_do_timer_cpu : 负责全局时钟的CPU编号
- tick_period : 时钟周期的长度,单位为ns
- tick_setup_device