
Linux kernel 相关
lcw_202
这个作者很懒,什么都没留下…
展开
-
内核Makefile简单语法与应用
1.1 概述2.6的Makefile的写法和应用相对于2.4有了一些变化,可能对于很多人来说,因为找不到相关的文档,都是模仿内核中已有的文件来写自己的Makefile。其实,在内核的Documentation / kbuild目录下面,还是有对内核Makefile语法的详细说明的。在这里就2.6内核中Makefile最常见的应用情况做一个简单的翻译和归纳介绍。 2.6内核原创 2010-04-13 21:42:00 · 570 阅读 · 0 评论 -
Kernel Locking Techniques
Aug 01, 2002 By Robert Love in SysAdminRobert explains the various locking primitives in the Linux kernel, why you need them and how kernel developers can use them to write safe code. <br />Proper locking can be tough—real tough. Improper locking can re转载 2011-03-19 17:53:00 · 875 阅读 · 0 评论 -
Spinlock编程(自旋锁)
本文转载<br />在 Linux Kernel 里有著许多重要的资料结构,这些资料在操作系统的运作中扮演著举足轻重的角色。然而,Linux是个多工的操作系统,也就是在同一时间里可以同时有许多的行程在执行,所以,很有可能某个行程在依序读取 inode list,同时却又有另一个在inode list 里加入新的 inode,这会造成什么情形呢?这会造成 inode list 的不稳定。所以,在 Kernel里,我们需要一个机制,可以使得当我们在修改某个重要的资料结构时,不能被中断,即使被中断了,这个资料结构转载 2011-03-19 20:25:00 · 652 阅读 · 0 评论 -
vivi的ld script的内容及分析
下面给出vivi的ld script的内容及分析。(1)[Makefile]<br />LINKFLAGS =-Tarch/vivi.lds-Bstatic可见,链接的脚本是arch/vivi.lds,而且链接静态库。但是在arch下没有vivi.lds,而是有vivi.lds.in。看了一下vivi.lds.in的内容,<br />SECTIONS {<br />.= TEXTADDR;<br />.text :{*(.text)}<br />.data ALIGN(4):{*(.data)}<br />原创 2011-04-23 16:27:00 · 884 阅读 · 0 评论 -
图解开源协议
<br />原创 2011-05-03 21:06:00 · 601 阅读 · 0 评论 -
likely() | unlikely()
在内核代码中常见到两个宏 likely() 和 unlikly() ,它们定义在 include/linux/compiler.h 中:引用 #define likely(x) __builtin_expect(!!(x), 1)#define unlike转载 2011-08-05 15:20:35 · 1021 阅读 · 0 评论 -
内存机制的建立 (2011-04-24 17:34)
分类: Linuxkernel是怎么管理内存的呢?从启动的角度来看,怎么看kernel怎么建立内存管理模块。还是需要从全局变量的角度来看。1. early_ioremap--固定映射FIXMAPioremap的作用是将IO和BIOS以及物理地址空间映射到在转载 2011-09-26 18:38:31 · 1916 阅读 · 0 评论 -
linux中断处理浅析
2009-06-21 11:51最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~第一阶段--获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序.在进入中断服务程序时, CPU已经自动禁止了本CPU转载 2011-10-27 18:29:57 · 632 阅读 · 0 评论 -
透過 User-Mode-Linux 來學習核心設計 (1)
« GCC 函式追蹤功能 |回到主頁面|透過 User-Mode-Linux 來學習核心設計 (2) »January 11, 2007透過 User-Mode-Linux 來學習核心設計 (1)因為收到不少網友來信指教,小弟決定整理過去的心得與筆記,分享如何透過 [User-Mode Linux] (以下簡寫 UML,注意該術語與軟體工程的 Unified Modeling转载 2012-03-07 22:37:27 · 796 阅读 · 0 评论 -
系统调用及参数传递过程
sys_clone 参数是从ebx开始的,奇怪了,eax干嘛去了?于是通过google温习了一下Linux系统调用的参数传递过程,此篇文章不错,转载于此。1.系统调用函数接口是如何转化为陷入命令系统调用是通过一条陷入指令进入核心态,然后根据传给核心的系统调用号为索引在系统调用表中找到相映的处理函数入口地址。这里将详细介绍这一过程。我们以x86为例说明:由于陷入指令是一条特殊转载 2012-03-25 17:02:56 · 1902 阅读 · 0 评论 -
vim-ide
http://code.google.com/p/vimide/ubuntu 12.04 LTS vim-ide 0.5 安装ok winmanger:http://www.vim.org/scripts/script.php?script_id=95 map :FirstExplorerWindowmap :BottomExplorerWindowmap :W原创 2012-04-28 14:38:01 · 774 阅读 · 0 评论 -
ubunt-12.04-LTS root登录
因开发需要直接root登录,按照:1、执行sudo dpkg-reconfigure gdm 将登录管理器修改为gdm, lightdm当前已经把root用户给屏蔽了,没有找到解开的方法。gdm还保留着other的选择。2、修改/etc/pam.d/login文件:将auth [success=ok new_authtok_reqd=ok ignore=ignore user_un原创 2012-04-28 17:14:54 · 615 阅读 · 0 评论 -
使用call_usermodehelper在Linux内核中直接运行用户空间程序
系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化. 内核刚刚启动时,只有内核态的代码,后来在init过程中,在内核态运行了一些初始化系统的程序,才产生了工作在用户空间的进程。/* This is a non __init function. Force it to be noinline otherwise gcc 736 * makes it转载 2012-12-11 16:59:57 · 768 阅读 · 0 评论 -
Linux 2.6 设备模型
<br />网上看到的一篇有关Linux 2.6 设备模型的文章,结构清晰,值得一看。<br />http://linux.chinaunix.net/bbs/viewthread.php?tid=905104<br />原创 2011-03-05 21:47:00 · 715 阅读 · 0 评论 -
谈一个Kernel32当中的ANSI到Unicode转换的问题
2010年6月17日 Zhang Cong 发表评论 阅读评论【这篇文章就是我在twitter上说过的那篇文章,早已写好,但由于一些原因压到现在才发表,深表歉意】众所周知,Windows的几乎所有带有字符串参数的API都是有W和A两个版本,分别对应于Unicode和ANSI版本。同时,Windows 内部是使用Unicode的,因此所有的A版本的API函数都是实际上调用了一次ANSI到Unicode的字符集转换之后,再调用Unicode版本的函数。你真的清楚这中间的这一步转换吗?普通转载 2010-11-18 15:09:00 · 648 阅读 · 0 评论 -
git 使用说明
<br />Linus为Linux Kernel Project发起的版本控制项目。HEAD代表当前最新状态。<br />tag为某个状态的标签。<br />SHA1为每个提交日志的唯一标识。<br /><br />install:<br /><br />apt-get install git-core<br /><br /><br />git clone:<br /><br />git仓库可以使用git clone获得:<br />git clone g转载 2010-12-06 14:03:00 · 515 阅读 · 0 评论 -
中断处理中的延迟调度和内核抢占
init_IRQ() set_intr_gate 设置中断处理例程为: push $vector; jmp common_interrupt;common_interrupt SAVE_ALL do_irq irq_enter desc->handle_irq(如:8259A,在init_IRQ中通过set_irq_chip_and_handler_name函数原创 2010-12-27 21:38:00 · 1175 阅读 · 0 评论 -
《浅析pc机上如何将vmlinuz- 2.6.31-14-generic解压出vmlinux》
<br />浅析pc机上如何将vmlinuz-2.6.31-14-generic解压出vmlinux<br /><br />luther@gliethttp:~$ vim /boot/grub/grub.cfg<br />可以看到我们进入的系统的内核为<br />linux /boot/vmlinuz-2.6.31-14-generic<br /><br />查找1F 8B 08这是gzip的标志头<br />我找到的内容为<br />0000 366C: 1F 8B 08 0转载 2010-11-07 21:18:00 · 1229 阅读 · 0 评论 -
内核操作文件
<br /><br />平时网络部分的东西碰的多些,这块一开始还真不知道怎么写,因为肯定和在用户空间下是不同的。google过后,得到以下答案。一般可以用两种方法:第一种是用系统调用。第二种方法是filp->open()等函数。下面分别来说下这两种方法。<br /><br /><br />1 利用系统调用:<br />sys_open,sys_write,sys_read等。<br />其实分析过sys_open可以知道,最后调用的也是filp->open。<br />sys_open ==>转载 2010-11-07 21:28:00 · 669 阅读 · 0 评论 -
内核sem、wait_queue_head_t、timer和kernel_thread使用驱动范例
浅析linux内核中sem、wait_queue_head_t、timer和kernel_thread使用驱动范例#include#define __TIMER_TEST_MOD1 1#define __TIMER_TEST_MOD2 2#define __TIMER_TEST_MOD3 3#define __TIMER_TEST_MOD4 4#define __TIMER_TEST_MOD5 5#define __TIMER_TEST_MOD6 6#define TIMER_T转载 2010-11-07 21:39:00 · 1824 阅读 · 0 评论 -
在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
#include #include #include #include #include #include #include #include #include #define MY_FILE "/root/LogFile"char buf[128];struct file *file = NULL;static int __init init(void){ mm_segment_t old_fs;转载 2010-11-07 21:26:00 · 1067 阅读 · 0 评论 -
Linux 用户态与内核态的交互
Linux 用户态与内核态的交互<br />——netlink 篇<br /><br />作者:Kendo<br />2006-9-3<br /><br />这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载:<br />http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz<br /><br />参考文档<br />转载 2010-11-07 21:37:00 · 611 阅读 · 0 评论 -
Linux-2.6.21.1 网络函数调用流程
Linux-2.6.21.1 网络函数调用流程 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。<br />msn: yfydz_no1@hotmail.com<br />来源:http://yfydz.cublog.cn<br />接收以太帧:<br />netif_rx<br /> -> queue<br /> -> netif_receive_skb<br /> -> bond<转载 2010-11-08 16:18:00 · 763 阅读 · 0 评论 -
Linux信号功能的实现
Linux内核中工作队列(work_queue)的操作 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。<br />msn: yfydz_no1@hotmail.com<br />来源:http://yfydz.cublog.cn<br />1. 前言<br />工作队列(workqueue)的Linux内核中的定义的用来处理不是很紧急事件的回调方式处理方法.<br />以下代码的linux内核版本为2.6转载 2010-11-08 16:30:00 · 574 阅读 · 0 评论 -
Linux信号功能的实现
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。<br />msn: yfydz_no1@hotmail.com<br />来源:http://yfydz.cublog.cn<br />1. 前言<br />信号是类UNIX系统中一个重要的进程控制方法,向中断一样,可通过向进程发送不同的信号临时中断程序的正常运行而进入信号处理程序或执行缺省的信号响应,如重新更新程序配置、终止进程等。<br />在用户空间中转载 2010-11-08 16:31:00 · 744 阅读 · 0 评论 -
VMWare Workstation 6.0调试Linux Kernel
<br />刚刚在LKML上看到的。可以做到C源代码级别的内核单步调试,真是简单的无以复加了。 如果不存在LICENSE方面的考虑, 我觉得UML(User Mode Linux)已经可以抛弃了。<br /><br />一、环境:<br /> 1, 一台Linux机器, 用于运行gdb和VMWare Workstation 6.0, 我们称之为HOST机器。<br /> 2, VMWare6.0中安装一个Linux系统, 我们称这个Linux系统为GUE转载 2010-11-09 13:49:00 · 592 阅读 · 0 评论 -
KGDB调试配置
kgdb 选项 :<br />Kernel hacking--><br />CONFIG_KGDB=y<br />CONFIG_KGDB_SERIAL_CONSOLE=y<br />选项在 Kernel hacking 里可以找到<br />同时,为了能在系统运行时中断系统并出发远程 gdb,必须打开内核 Magic Sys-Rq 键选项 :<br />CONFIG_MAGIC_SYSRQ=y<br />打开内核符号调试:<br />CONFIG_DEBUG_原创 2010-11-09 14:58:00 · 921 阅读 · 0 评论 -
linux kernel测试初探
前言 Linux基金会在4月3日公布了Linux开发年报,向我们展示了linux kernel作为世上最大开源合作项目之一的魅力。自2005年以来,共有800家公司7800名开发人员参与Linux kernel开发,最近一年也有200家公司共1000名开发人员参与。目前在Linus Torvalds的监督之下,Linux核心约2到3个月发布一个新的稳定版本,每次更新大约包含8000到120转载 2012-12-21 20:15:11 · 1369 阅读 · 0 评论