关闭

early_irq_init

设置irq_default_affinity 值,可以在proc 下看到。 动态分配中断描述符实例,并将其加到radix 树中去。 树的根:irq_desc_tree在用数组来分配中断描述符的,中断描述符的数组为: struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = { [0 … NR_IRQS-1] = {...
阅读(10) 评论(0)

Linux时间子系统的软件架构(一)

一.软件架构 但是随着技术发展,出现了下面两种新的需求: (1)嵌入式设备需要较好的电源管理策略。传统的linux会有一个周期性的时钟,即便是系统无事可做的时候也要醒来,这样导致系统不断的从低功耗(idle)状态进入高功耗的状态。这样的设计不符合电源管理的需求。 (2)多媒体的应用程序需要非常精确的timer,例如为了避免视频的跳帧、音频回放中的跳动,这些需要系统提供足够精度的timer 和...
阅读(18) 评论(0)

linux clk驱动框架

clk common framework(ccf)子系统,用来完成对clock的统一管理. 如今,可运行Linux的主流处理器平台,都有非常复杂的clock tree,我们随便拿一个处理器的spec,查看clock相关的章节,一定会有一个非常庞大和复杂的树状图,这个图由clock相关的器件,以及这些器件输出的clock组成。下图是一个示例: clock相关的器件包括:用于产生clock的Os...
阅读(24) 评论(0)

内核proc文件系统简介

/proc文件系统是一个特殊的由内核创建的文件系统,她仅存在于内存之中而不在外存(硬盘、flash)上。内核用她来向用户空间进程输出消息,可以说是内核向用户空间打开的一扇窗户。 最初开发/proc文件系统是为提供一种内核及其模块向进程 (process) 发送信息的机制 (这就是proc名字的由来)。这个虚拟文件系统让你可以和内核内部数据结构进行交互,获取对于进程的有用信息,并可在运行...
阅读(130) 评论(0)

proc_root_init

1.self_inum:是一个唯一的proc inode number. 虽然它是从proc 文件系统中分配的inode number, 但仅用在nsfs中, 它被用做nsfs的inode number, 只需要保证这个number在nsfs中唯一就可以了. 2.__xlate_proc_name:This function parses a name such as “tty/driver/se...
阅读(168) 评论(0)

vfs_caches_init

调用层次 start_kernel() |____vfs_caches_init() |____dcache_init() |____inode_init() |____files_init()...
阅读(153) 评论(0)

Linux内核中namespace之PID namespace

PID框架的设计 一个框架的设计会考虑很多因素,相信分析过Linux内核的读者来说会发现,内核的大量数据结构被哈希表和链表链接起来,最最主要的目的就是在于查找。可想而知一个好的框架,应该要考虑到检索速度,还有考虑功能的划分。那么在PID框架中,需要考虑以下几个因素.如何通过task_struct快速找到对应的pid如何通过pid快速找到对应的task_struct如何快速的分配一个唯一的pid这些...
阅读(286) 评论(0)

初始化中的kmem_cache 实例

1.radix_tree_node_cachep:radix_tree_init() 2.obj_cache:debug_objects_mem_init()不一定打开 3.object_cache,scan_area_cache:kmemleak_init()不一定打开 4.policy_cache,sn_cache:numa_policy_init()不一定打开 5.init_pid_n...
阅读(219) 评论(0)

CONFIG_BLK_DEV_INITRD

initramfs概述 initramfs与initrd类似,也是初始化好了且存在于ram中的,可以压缩也可以不压缩。但是目前initramfs只支持cpio包格式,它会被populate_rootfs->unpack_to_rootfs(&__initramfs_start, &__initramfs_end - &__initramfs_start, 0)函数(解压缩、)解析、安装。initr...
阅读(46) 评论(0)

lockdep_info

打印锁依赖的信息 可以参考:Linux 死锁检测模块 Lockdep 简介 http://kernel.meizu.com/linux-dead-lock-detect-lockdep.html 了解lockdep locking_selftest:死锁检测...
阅读(42) 评论(0)

time_init

主要是调用clocksource_of_init 函数来实现定时器初始化 这个函数在clksrc-of.c中,通过在__clksrc_of_table 中匹配of_device_id和device_node。 最终执行of_device_id 中的data指向的函数,实现timer 的初始化 执行的查找函数 of_find_matching_node_and_match—–>__of_mat...
阅读(75) 评论(0)

softirq_init

硬件中断需要做尽可能少的事情,多时间要求不严的事情,交给中断下半部分去做。有三种不同形式的下半部实现机制:软中断、tasklet、工作队列。 软中断 内核定义了下面的软中断类型,用户尽量不要自己去创建软中断类型 enum { HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ,...
阅读(88) 评论(0)

build_all_zonelists

关键函数 1.__build_all_zonelists() 2.nr_free_pagecache_pages()__build_all_zonelists(void *data): 对于UMA系统这个函数执行的子函数主要有以下几个:(CONFIG_HAVE_MEMORYLESS_NODES 没有配置) for_each_online_node(nid) {//循环找到系统的所有节点...
阅读(47) 评论(0)

从物理内存角度描述内存之间的关系(bootmem_init)

1.内存条(bank):由内存插槽组成 2.节点(node):从一个cpu 访问速度相同的内存的集合,包含多个bank,使用pg_data_t 表示,称为节点描述符 3.uma:cpu 对所以内存访问的速度一致 numa:cpu 对所以内存访问的速度不一致 4.zone:节点中具有相同内存属性的区域,有zone 结构管理 一般分为dma,normal,hight 三个区域...
阅读(46) 评论(0)

percpu_init_late

void __init percpu_init_late(void) { struct pcpu_chunk *target_chunks[] = { pcpu_first_chunk, pcpu_reserved_chunk, NULL }; struct pcpu_chunk *chunk; unsigned long flags; i...
阅读(43) 评论(0)
138条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:85606次
    • 积分:1869
    • 等级:
    • 排名:千里之外
    • 原创:77篇
    • 转载:61篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论