
linux内核
文章平均质量分 70
martin2350
这个作者很懒,什么都没留下…
展开
-
volatile
就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。volatile的作用 volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就转载 2012-03-21 11:15:41 · 303 阅读 · 0 评论 -
Generic Netlink HOW-TO based on Jamal's original doc
An Introduction To Using Generic Netlink===============================================================================Last Updated: November 10, 2006Table of Contents 1. Introduction 1.1. Doc转载 2013-03-10 18:46:18 · 768 阅读 · 0 评论 -
进程上下文和中断上下文
[原文:http://blog.chinaunix.net/u3/93613/showart_1907687.html]进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事的两个概念。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器转载 2013-03-10 16:44:23 · 599 阅读 · 0 评论 -
为什么在中断上下文中不能休眠?
这个问题有很多人问过,我看了下linux得内核代码,原因如下(当然我不能保证一定对,如果有牛人理解得更好,欢迎指正)1. 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断(这点对 于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断context中休眠,则没有办法唤转载 2013-03-10 16:45:31 · 754 阅读 · 0 评论 -
netlink socket编程实例解析
开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。在linux系统中,把系统的某个特性分割成在内核中和在用户空间中分别实现一部分的做法是很常见的(比如linux系统的防火墙就分成了内核态的Netfilter和用户态的iptables)。然而,内核程序与用户态的程序又是怎样行通讯转载 2012-12-26 16:01:39 · 957 阅读 · 0 评论 -
LINUX netlink机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火转载 2012-12-26 15:59:19 · 555 阅读 · 0 评论 -
container_of()宏
在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the转载 2012-07-10 22:19:00 · 345 阅读 · 0 评论 -
LXR安装
安装环境为:Centos6.2。1.apache服务器的安装 默认情况下Centos已经安装了apache服务器,其访问目录为/var/www/html。但是由于初次在linux下配置apache,不了解情况。前后反反复复卸载/安装了好几次,所以也就出现了很多莫名其妙的问题。主要还是不了接apache的一些概念。apache的关键就是找到其默认的访问目录。原创 2012-06-27 11:46:41 · 1027 阅读 · 0 评论 -
用 vmlinuz 得到 vmlinux 逆转化
http://www.linuxquestions.org/questions/programming-9/convert-vmlinuz-to-vmlinux-530085/The vmlinuz isn't just the compressed kernel, it's complete bootable image including the decompressor. To ge转载 2012-05-03 16:10:59 · 1094 阅读 · 0 评论 -
__attribute__
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribu转载 2012-03-21 10:53:23 · 261 阅读 · 0 评论 -
at&a汇编
1、寄存器前面要加“%”,如 mov %eax,%ebx这里要注意的一点是,AT&T汇编中,源寄存器和目的寄存器的顺序和intel汇编刚好相反,AT&T汇编中,左边的是源寄存器,右边的是目的寄存器,在上边那个例>子中,%eax是源寄存器,%ebx是目的寄存器。2、立即数/常数前面要加$,如 mov $4,%ebx 把4这个数装入ebx这个寄存器。符号常数直接用, 如 mov val转载 2012-03-22 23:09:37 · 2199 阅读 · 0 评论 -
Linux内核源码分析——compiler.h分析
《Linux内核源码分析——compiler.h分析》转自 强悍的lost的bolg Linux的内核源码都会包含文件linux/compile.h,所以先分析该文件内的内容,作为开篇。1 汇编编译时不定义的内容该文件的第一个内容是对宏__ASSEMBLY__的判断,这个宏的作用是避免在进行汇编编译的时候,不定义后续相关内容。这个宏通过在编译器中用-D选项中加入,参转载 2012-04-29 22:31:20 · 646 阅读 · 0 评论 -
asmlinkage
在大型C语言项目工程或者linux内核中我们都会经常见到两个FASTCALL和armlinkage两个标识符(修饰符),那么它们各有什么不同呢?今天就给大家共同分享一下自己的心得.大家都知道在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢? 有一定理论基础的朋友一定会肯定地回答:这些函数参数和函数内部局部变量一起被分配到了函数的局部转载 2012-04-29 22:19:47 · 701 阅读 · 1 评论 -
Linux Kernel 2.6内核进程调度复杂度为O(1)的代码分析
主要看了linux2.6.x内核进程调度那一块,和大家share一下。 每个cpu都有一个单独的runqueue,每个runqueue中有prio_array_t *active, *expired,他们是特定时间可以互换的两个指针。前者是有timeslice剩余的array,后者是耗尽timeslice的array。prio_array的结构定义如下:转载 2012-04-29 22:30:03 · 810 阅读 · 0 评论 -
Linux 网卡如何支持TSO GSO指南
来源链接:http://gavin1992.gotoip2.com/papperdetails_tech.php?pid=11 1.什么是TSO GSO TSO是tcp segment offload的缩写,GSO是 generic segmentation offload 的缩写。 详细解释参看http://en.wikipedia.org/wiki/La转载 2013-04-03 11:44:03 · 3271 阅读 · 1 评论