- 博客(19)
- 资源 (4)
- 收藏
- 关注
转载 kernel_execve函数
内核空间调用用户空间的应用程序,通过kernel_execve()实现。 其实现比较简单: arch/arm/kernel/sys_arm.c 在init/main.c中最后会通过kernel_execve()来调用用户空间的init进程(如/sbin/init, /etc/init, /bin/init等)。 在kernel/kmod.c中的___call_u
2014-09-30 09:24:36 2615
转载 strtol函数
转自http://hi.baidu.com/qwpsmile/blog/item/9bc44efa4f41018a9f514637.html+----------------+| strtol |+----------------+i.e. string to longlong int strtol(const char *nptr, char *
2014-09-29 16:03:02 436
转载 linux内核线程的创建
在 Linux 中有很多的内核线程,可以通过 ps command 查看到,比如: kthreadd ksoftirqd watchdog 等等等 … 它们都是由内核从无到有创建的,通过它们的 pid 以及 ppid 可以得出以下几点:在内核初始化 rest_init 函数中,由进程 0 (swapper 进程)创建了两个 processinit 进程 (pid = 1
2014-09-17 10:36:18 1420
转载 kthread_create函数和kernel_thread函数的区别
在看linux驱动代码的时候,经常惠会碰到kthread_create这个函数,google一下,发现很多人在讲二者的区别,但是都在讲源码的区别而已,总结不够,感觉没有说出二者之间的本质区别,自己总结下。 一. 源码分析(linux-2.6.39)1. kthread_create源码分析#define kthread_create( threadfn, data, n
2014-09-17 09:42:27 862
转载 内核日志:API 及实现
http://www.ibm.com/developerworks/cn/linux/l-kernel-logging-apis/index.html从内核到用户空间的日志在内核开发中,我们通常使用 printk 进行日志。但是您曾经考虑过它的过程,以及内核日志的底层实现吗?本文介绍了内核日志的整个过程,包括 printk 及用户空间日志文件的插入。0 评论
2014-09-16 10:01:44 567
转载 linux内核栈,内核同步,用户空间线程同步
在论坛上浏览到一个帖子,是说内核栈的问题的,一时却感到有点陌生了,下面总结一下http://topic.csdn.net/u/20121101/10/86479004-2f2c-491c-bc43-03cc0e087588.html?694191.内核栈1.每当创建一个进程(主线程),用户线程,内核线程时,内核都会给这个进程或线程动态创建一个内核栈,在内核空间,换存在cac
2014-09-16 09:24:35 930
转载 关于软中断原理,以及中断栈的概念等
中断栈与内核栈的话题更多地属于内核的范畴,所以在《深入Linux设备驱动程序内核机制》第5章“中断处理”当中,基本上没怎么涉及到上述内容,只是在5.4节有些许的文字讨论中断栈在中断嵌套情形下可能的溢出问题。本贴在这个基础上对内核栈与中断栈的话题做些补充,讨论基于x86 32位系统,因为64位系统下Linux内核关于栈的支持原理上是相同的,不过也有些特性属于64位特有的,比如IST(Inte
2014-09-15 18:57:06 3969
转载 likely与unlikely
分支声明对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。例如,下面是一个条件选择语句:if (foo) { /* .. */}如果想要把这个选择标记成绝少发生的分支:/* 我们认为f
2014-09-15 16:36:11 507
转载 linux内核之list_head
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序
2014-09-11 17:29:59 407
转载 linux内核符号表
所谓内核符号表就是在内核内部函数或变量中可供外部引用的函数和变量的符号表。在 2.6 内核下,使用以下命令可以看到内核符号表:引用 beyes@linux-beyes:/> cat /proc/kallsyms | morec0100000 T _textc0100000 T startup_32c0100054 t default_entryc01000b0 T
2014-09-11 16:13:56 554
转载 Linux 可加载内核模块剖析
2.6 内核透视图Linux® 可加载内核模块(从内核的 1.2 版本开始引入)是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。探索隐藏在可加载模块后面的原理,并学习这些独立的对象如何动态地转换成 Linux 内核的一部分。0 评论:M. Tim Jones, 顾问工程师, Emulex Corp.2008 年 8
2014-09-11 10:49:18 534
转载 内核栈与用户栈
内核栈和用户栈区别:intel的cpu分为四个运行级别ring0~ring3内核创建进程,创建进程的同时创建进程控制块,创建进程自己的堆栈一个进程有两个堆栈,用户栈和系统栈用户堆栈的空间指向用户地址空间,内核堆栈的空间指向内核地址空间。有个CPU堆栈指针寄存器,进程运行的状态有用户态和内核态,当进程运行在用户态时。CPU堆栈指针寄存器指向的是用户堆栈地址,使
2014-09-03 17:16:35 472
转载 linux内核机制之等待队列
转自:一、定义:/include/linux/wait.hstruct __wait_queue_head {spinlock_t lock;struct list_head task_list;};typedef struct __wait_queue_head wait_queue_head_t;二、作用:在内核里面,等待
2014-09-01 11:56:15 364
转载 C标准缓冲区和内核缓冲区
1.C标准库的I/O缓冲区 UNIX的传统 是Everything is a file,键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。用户程序调用C标准I/O库函数读写普通文件或设备,而这些库函数要通过系统调用把读写请求传给内核 ,最终由内核驱动磁盘
2014-09-01 11:30:24 698
转载 linux内核log介绍
转自:当在linux中工作时,我们发现,提到linux中的日志(log)信息,就会想到syslog,printk中的内核日志,dmesg等等,但却对它们地关系有时候并不清楚。笔者在接触到Linux的几年中,曾经就被这些log搞得昏头转向,不知道该去哪里找自己需要的log,为了弄清楚这个问题,决定花力气把这个问题搞清楚。下面的图清楚地表达出了linux中的各种日志,以及日志相关的函数命令
2014-09-01 10:35:58 9114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人