从初始化开始
刚开始看这部分代码的时候是一脸懵逼的,感觉哪里都连接着哪里不知道从哪里入手。既然如此,那还是从初始化的流程上开始看吧。
main()
cpu_exec_init_all()
io_mem_init()
{
memory_region_init_io(&io_mem_rom, NULL, &readonly_mem_ops, NULL, NULL, UINT64_MAX);
memory_region_init_io(&io_mem_unassigned, NULL, &unassigned_mem_ops, NULL, NULL, UINT64_MAX);
memory_region_init_io(&io_mem_notdirty, NULL, ¬dirty_mem_ops, NULL, NULL, UINT64_MAX);
memory_region_clear_global_locking(&io_mem_notdirty);
memory_region_init_io(&io_mem_watch, NULL, &watch_mem_ops, NULL, NULL, UINT64_MAX);
}
memory_map_init()
{
memory_region_init(system_memory, NULL, "system", UINT64_MAX);
address_space_init(&address_space_memory, system_memory, "memory");
memory_region_init_io(system_io, NULL, &unassigned_io_ops, NULL, "io", 65536);
address_space_init(&address_space_io, system_io, "I/O");
}
这部分代码是在main函数中开始的部分执行的。其中主要使用了两个函数:
memory_region_init
address_space_init
既然如此,那我们就挨个了解一下。
Last updated
Was this helpful?