Linux编程
文章平均质量分 66
wswifth
菜鸟,无限学习中……
展开
-
Source Insight使用教程
作为一个开放源代码的操作系统,Linux附带的源代码库使得广大爱好者有了一个广泛学习、深入钻研的机会,特别是Linux内核的组织极为复杂,同时,又不能像windows平台的程序一样,可以使用集成开发环境通过察看变量和函数,甚至设置断点、单步运行、调试等手段来弄清楚整个程序的组织结构,使得Linux内核源代码的阅读变得尤为困难。当然Linux下的vim和emacs编辑程序并不是没有提供变量转载 2009-10-29 09:29:00 · 1839 阅读 · 1 评论 -
Linux内核网络系统结构图(TCP/IP)和源代码的布局
file: init.h #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) #define __exit_call __attribute__ ((unused,__section__ (".exitcall.exit"))) extern initcall_t __initcall_start, __initcall_end; #define __initcall(fn) /原创 2010-08-07 11:54:00 · 2278 阅读 · 0 评论 -
中断服务下半部之tasklet详解
【摘要】本文详解了中断服务下半部之tasklet实现机制。介绍了tasklet链表的组织形式tasklet_vec,在此基础之上分析了tasklet执行流程。最后介绍了tasklet相关的API,如何编写自己的tasklet处理程序及定义一个tasklet对象并向内核提交等待调度运行。 【关键字】中断下半部,tasklet,tasklet_vec,tasklet_schedule,TASKLET_转载 2010-05-07 21:15:00 · 826 阅读 · 0 评论 -
Linux内核同步介绍和方法
Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态,linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。 Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。内核同步方法列表如下:中断屏蔽原子操作自旋锁读写自旋锁顺序锁信号量读写信号量BKL(大内核锁)Seq锁一、并发与竞态转载 2010-05-07 23:14:00 · 892 阅读 · 0 评论 -
LINUX0.11内核KERNEL包(内核代码)中的几个重要的文件分析
在KERNEL包中有几个重要的文件夹和文件,他们各司其职,处理着有关内核的一些功能操作。其中文件夹有三个:blk_drv(块设备驱动),chr_drv(字符设备驱动),math(数学协处理器) 文件中asm.s fork.c mktime.c panic.c printk.c sched.c signal.c exit.c sys.c traps.c system_ca原创 2010-04-05 16:07:00 · 1018 阅读 · 0 评论 -
Linux下Socket编程
主机字节序 Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是保留端口号,你可以选择大于1024中的任何一个没有被占用的端口号。连接建立 面向连接的客户程序使用Connect函数来配置socket并与远端服务器建立一个TCP连接,其函数原型为: int转载 2010-04-01 14:57:00 · 596 阅读 · 0 评论 -
中断处理的tasklet
今天在研究CAN_MODULE和CAN_DRIVE整合的问题时,为了防止CAN_DRIVE在发生硬中断后执行的时间太长,我想把CAN_RX声明成一个tasklet,其也是在linux2.4内核下比较好的一种注册方式。还有一种就是传统的上半区和下半区,不过貌似已经不是很常用了。 下面是从网上弄来的一些总结: 从某种程度上讲,tasklet机制是Linux内核对BH机制的一种扩展。在2原创 2010-03-25 22:55:00 · 667 阅读 · 0 评论 -
spin_lock的定义
spin lock只有在多cpu下才有意义。 当一个资源被cpu1占用的时候,如果cpu2也要使用这个资源, cpu2就需要原地等待cpu1释放这个资源之后才能使用资源。转载 2010-03-23 16:40:00 · 615 阅读 · 0 评论 -
【转】嵌入式Linux网络驱动程序的开发及实现原理
随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成千上万的计算机专家和爱好者的青睐。在嵌入式领域,通过对Linux进行小型化裁剪后,使其能够固化在容量只有几十兆字节的存储器芯片或单片机中,成为应用于特定场合的嵌入式Linux系统。Linux强大的网络支持功能实现了对包括TCP/IP在内的多种协议的支持,满足了面向21世纪的嵌入式系统应用联网的需求转载 2010-01-11 21:17:00 · 1624 阅读 · 1 评论 -
南岭实验室的项目总体结构图及其总结与思考
南岭实验室的项目总体结构图,这是我问曲师兄后自己总结的结构,在这里面,client是每一个操作自己车辆的用户,通过个人电脑向自己的车辆发送信息,先通过server判断请求是否正确,是否可靠,然后通过CDMA发送给车载网关,车载网关有CDMA的接收端,接收到消息后将其交给CDMA的驱动,驱动扔给linux网络协议堆栈,然后packet截包程序从总截获数据包,然后根据IPV6地址判断是扔给ca原创 2010-03-18 21:28:00 · 1162 阅读 · 0 评论 -
linux的进程管理1
主要看了Linux完全注释那本书,终于准备攻读Linux内核源码了,先看了第二张的总体概念,感觉操作系统有很多东西还真是大同小异,记得ucos就是有一个叫做快表的东西,里面最多可以表示64个进程,而早版的Linux(0.11)也有这个一说的东西。 在Linux中也有一个PCB来表示每个进程,在这个结构体中,有指向任务代码的指针,有指向任务数据的指针,还有指向堆栈段地址(这个栈空间用来保存该原创 2010-03-16 21:52:00 · 832 阅读 · 0 评论 -
linux内核2.4.x网络接口分析层次图
今天大概分写了下《Linux内核2.4.x的网络接口源码的结构[转]》中的结构层次图,作为一个辅助的了解原创 2009-12-30 20:50:00 · 1357 阅读 · 0 评论 -
深入Linux网络核心堆栈(对于netfilter的用法和讲解)
目录1 - 简介 1.1 - 本文涉及的内容 1.2 - 本文不涉及的内容2 - 各种Netfilter hook及其用法 2.1 - Linux内核对数据包的处理 2.2 - Netfilter对IPv4的hook3 - 注册和注销Netfilter hook4 - Netfilter 基本的数据报过滤技术[1] 4.1 - 深入hook函数 4.2 - 基于接口进行过滤 4.3转载 2009-12-31 22:26:00 · 12275 阅读 · 2 评论 -
对于数据包的截取,使用linux中的netfilter钩子函数
在师哥的代码(packet.c)中使用的是Linux2.4内核中的一个子系统:netfilter,该子系统的使用可以过滤数据包,也就对数据包经行了截获,它通过调用内核网络代码中的一些hook函数完成所需要的工作。而当一个当数据包游历Linux内核的网络堆栈时,它穿过了几个hook点,在这里,数据包可以被分析并且选择是保留还是丢弃,这些hook点就是Netfilter hook。 而钩子原创 2009-12-31 22:03:00 · 9017 阅读 · 0 评论 -
Linux内核2.4.x的网络接口源码的结构[转]
一.前言 Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。 本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。 本文以Linux2.4.16内核作为讲解的对象,内核源码可以在http://www.kernel.org上下载。我读源码时参考的是http://lx原创 2009-12-29 23:36:00 · 1096 阅读 · 0 评论 -
printk函数的使用
printk()函数的总结我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在lin转载 2010-01-13 13:51:00 · 831 阅读 · 0 评论 -
第一个LINUX下的驱动程序
今天做了一个比较重大的决定,因为导师的需要开始研究Understanding Linux Network Internals.但是是全英文的。拿着金山词霸一边翻译一边看感觉还不错,但是想看第二遍的时候就不好找了,而且还是电子书。所以,我决定,翻译他。也算是对自己的一个要求吧。 然后写研究了下Linux的驱动编程,看了下字符设备的编程。下面是在网上找的一个字符设备,这里也做下介绍。作为第一原创 2009-10-29 23:44:00 · 757 阅读 · 0 评论 -
inde节点和file结构的区别
inode 或i节点是指对文件的索引。如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等。就像书本的目录一样,便于查找和管理。这目录是操作系统需要的,用来找文件或叫管理文件。许多操作系统都用到这个概念,如linux, 某些嵌入原创 2011-08-07 21:39:58 · 839 阅读 · 0 评论