- 博客(7)
- 资源 (53)
- 收藏
- 关注
原创 netlink 简单介绍
<br /><br />Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火墙(NETLINK_FIREWALL),socket 监视(NETLINK_INET_D
2010-12-22 09:15:00 1878
转载 netlink使用方法
<br /><br />测试环境:2.6.28<br />Netlink在2.6内核的不同版本中发生了很大变化,具体请参考(注意其中的版本号不一定确切):<br />http://blog.csdn.net/sealyao/archive/2009/10/02/4628141.aspx<br />0. 综述<br />以下程序基本流程如下:<br />运行netlink内核模块;<br />运行用户态程序,向内核发送连接消息,通知内核自身进程id;<br />内核接收用户消息,记录其进程id;<br />内
2010-12-21 14:24:00 2156
转载 Netlink中常用宏定义
<br /><br />在linux/netlink.h中定义了一些方便对消息进行处理的宏,这些宏包括:<br />#define NLMSG_ALIGNTO 4 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )<br /><br />宏NLMSG_ALIGN(len)用于得到不小于len且字节对齐的最小数值。<br />#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(
2010-12-21 14:23:00 2634
转载 Linux内核中ioremap映射的透彻理解
<br /><br />几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:<br /><br /> (1)I/O映射方式(I/O-mapped)<br /><br /> 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。<br /
2010-12-20 13:23:00 1596
转载 写的很不错的latex-suite 使用教程
<br />转自: http://ilovenn.blog.51cto.com/853223/369646<br /> <br />由于没从源里安装texlive,所以没法直接从源里安装kile、winefish、rubber。首先考虑用gedit编辑latex文档,并 且下了一个gedit的latex插件,但是好像这个插件需要rubber(有没有人能解决这个问题阿,求助!),所以考虑用vim的latex- suite插件。1、首先,下载这个插件http://vim-latex.sourceforge.ne
2010-12-19 14:23:00 8169
转载 Udev 内核机制(kobject_uevent) 性能优化
<br />前言<br />这两天遇到一些 udev 的问题, 顺便阅读了一下文档(见参考文档), 基本了解了 udev 的机制。 嵌入式系统性能很重要,于是对内核这一块进行了性能方面的研究。<br />内核大概20多处会调用了 kobject_uevent 函数发送 KOBJ_ADD / KOBJ_REMOVE 等事件。其中我们最关心的就是在device_add/device_del 中向用户空间发送设备的添加、删除信息。<br />kobject_uevent 直接调用 kobject_uevent_e
2010-12-02 15:26:00 1889
转载 Linux内核网络系统结构图(TCP/IP)和源代码的布局
<br /><br />上面的代码在内核中经常使用到,其中“__attribute__”、“__section__”等就是GCC编译器的关键字。 上面这段程序提供了一种初始化模块的方法:<br />1、如果一个内核模块需要在系统启动的时候初始化,只需在模块的源程序中调用“module_init( function )”这样的代码,GCC编译器在编译代码时,就会将这个函数的指针放到一个特定的代码段中(“.initcall.init”代码段);<br />2、Linux启动时,在生成第一个内核线程后,
2010-12-01 17:12:00 3200
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人