小编enf*_*net的帖子

uart_register_driver和platform_driver_register之间的区别?

我正在研究内核代码中的UART驱动程序,想知道,谁首先进入图片,device_register()或者driver_register()打电话?

为了区别他们,请遵循.

在UART探测中,我们打电话

uart_register_driver(struct uart_driver *drv)
Run Code Online (Sandbox Code Playgroud)

成功注册后,

uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
Run Code Online (Sandbox Code Playgroud)

请详细解释一下.

kernel serial-port linux-device-driver linux-kernel uart

3
推荐指数
1
解决办法
1004
查看次数

Linux内核:在paging_init时间零页分配的作用

我试图了解arch/arm启动时的内核内存预留.

有一个调用paging_init()用于设置页表,初始化区域内存映射等setup_arch().它还zero page在分配实际值之前分配一个mem_map.

void __init paging_init(const struct machine_desc *mdesc)
{
    void *zero_page;
    ---
    zero_page = early_alloc(PAGE_SIZE);
    ---
    empty_zero_page = virt_to_page(zero_page);
    __flush_dcache_page(NULL, empty_zero_page);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这个角色zero page吗?

这个问题的一部分,这个.

boot kernel arm memory-management linux-kernel

3
推荐指数
1
解决办法
2779
查看次数

pgd_bad, pmd_bad, pud_bad, 转换内核地址是什么意思?

有人可以解释一下内核页表中的宏吗?

#define pgd_bad(pgd)            (!(pgd_val(pgd) & 2))
#define pmd_bad(pmd)            (!(pmd_val(pmd) & 2))
#define pud_bad(pud)            (!(pud_val(pud) & 2))
Run Code Online (Sandbox Code Playgroud)

kernel memory-management linux-kernel arm64 page-tables

2
推荐指数
1
解决办法
1676
查看次数