自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

转载 循环队列

循环队列  为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。  (1) 循环队列的基本操作  插入新元素;  PASCAL语言:  procedure Add2(var q:equeue;x:qtype;var r:integer);  begin

2008-12-10 11:12:00 1697

转载 ftruncate函数的功能及使用

ftruncate()函数功能:改变文件大小 相关函数:open、truncate表头文件:#include 函数原型:int ftruncate(int fd, off_t  length)函数说明:ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。如果原来的文件件大小比参数length大,则超过

2008-11-28 16:28:00 42044

转载 mmap/munmap函数详解

【 mmap/munmap系统调用】       功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到

2008-11-28 16:20:00 7996 1

转载 fork函数

fork()函数,Linux系统调用  头文件:  #include   函数定义:  int fork( void );  返回值:  子进程中返回0,父进程中返回子进程ID,出错返回-1  函数说明:  一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯

2008-11-28 11:16:00 1102

转载 pthread 常用函数

nt pthread_create(               pthread_t *tid,               const pthread_attr_t *attr,               void*(*start_routine)(void*),               void *arg               );//参数tid 用于返回新创建线程的线程号;//s

2008-11-28 10:18:00 1097

原创 c语言字符串 数字转换函数大全转

atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字母)tolower(将大写字母转换成小写字母)     atof(将字符串转换成浮点型

2008-11-28 10:16:00 3799

原创 send函数和recv函数的解释转

send函数2008-04-03 00:23int send( SOCKET s,    const char FAR *buf,    int len,    int flags );   不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该

2008-11-28 10:13:00 896

原创 pthread_join函数及linux线程转

pthread_join函数及linux线程pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。所有线程都有一个线程号,也就是Thread ID。其类型为pth

2008-11-27 18:02:00 1194

原创 Linux网络驱动程序编写(三)转

2.4 常用的系统支持       2.4.1 内存申请和释放     include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。   void *kmalloc(unsigned int len,int priority);   void kfree(void *__ptr);     与用户模式下的malloc()不同,kmallo

2008-11-27 17:21:00 907

原创 Linux下PCI设备驱动程序开发转

一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不

2008-11-27 17:19:00 1100

原创 stat函数说明转

1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。函数原型#include int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。int fstat(int filedes, struct stat *buf);通过文件描述符获取文件对应的属性

2008-11-27 17:18:00 718

原创 基于Linux操作系统的底层驱动技术转

5.3  基于Linux操作系统的底层驱动技术这里的底层驱动是指Linux下的底层设备驱动,这些驱动通常都是加载在内核态的,可以提供给上层用户态的应用程序访问底层设备的能力。也就是说,上层应用程序通过底层的驱动程序可以实现输入/输出的管理等功能。5.3.1  设备驱动概述设备管理即输入/输出子系统,可分为上下两部分:一部分是上层的,与设备无关,这部分根据输入/输出请求,通过特定的设备驱

2008-11-27 14:00:00 3154

原创 C语言中const关键使用详解转

const char *pa;char const *pb;上面两种定义方法一样都是 pa(pb)指向的变量的值不可改变,及*pa,*pb, 而pa,和pb本身是可变的,如:pa = &ca; //ok×pa = c //errorchar * const pc = &ca;pc本身是不可变的(只能在定义时初始化),但指向的变量值是可变的,如pc = &ca;  //error*pc =

2008-11-26 11:04:00 704

原创 内核源码学习:Linux 2.4内核API(十一)转

skb_append追加一个缓冲区void skb_append (struct sk_buff * old, struct sk_buff * newsk)old为插入之前的缓冲区,newsk为要插入的缓冲区把一个数据包放在链表中给定的包之前。该函数持有链表锁,并且是原子操作。一个缓冲区不能同时放在两个链表中。skb_unlink

2008-11-25 12:17:00 1260

原创 class_device_create函数转

class_device_create() -- 生成并注册一个逻辑设备2007年08月31日 星期五 11:31usb_register_bus() --> class_device_create()linux-2.6.21.5/drivers/base/class.cclass_device_create - creates a class device and reg

2008-11-24 19:09:00 1949

原创 linux 基础复习(9)设备驱动入门转

linux 基础复习(9)设备驱动入门 [ 2008-5-21 10:40:00 | By: 夏虫 ] 0推荐Linux 内核中采用可加载的模块化设计(LKMs,Loadable Kernel Modules),一般情况下编译的Linux 内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其他的代码可以选择在内核

2008-11-24 18:57:00 838

原创 字符设备文件转

字符设备文件--------------------------------------------------------------------------------4.1.1. 关于file_operations结构体     结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核

2008-11-19 15:39:00 1130

原创 Socket函数参数说明转

Socket函数参数说明1、WSAStartup函数用于初始化Winsock[声明]int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);[参数]wVersionRequested - 要求使用Winsock的最低版本号lpWSAData - Winsock的详细资料[返回值]当函数成功调用时返回0失败时返回非0的值2、sock

2008-11-19 14:38:00 1211

原创 FTP(文件传输协议)工作原理转

    目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。1、FTP架构          如同其他的很多通讯协议,FTP通讯协议也采用客户机 / 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。

2008-11-12 16:48:00 6173

原创 Linux设备驱动之字符设备驱动程序转

字符设备驱动程序Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得linux的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open()、close()、read()、write() 等。Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个

2008-11-07 15:18:00 1659

原创 struct--timer_list 定时器(动态定时器/内核定时器)转

   struct timer_list|-----------------------------------||struct list_head     entry         ||unsigned long        expires       ||void     (*function)(unsigned long)||unsigned long        data      

2008-11-05 15:05:00 1511 1

原创 struct stat结构分析函数转

stat,lstat,fstat1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。函数原型#include int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。int fstat(int filedes, struct stat *buf);通过文件描述符获

2008-10-31 10:32:00 863

原创 Linux系统调用函数列表转

Linux系统调用的一个列表本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其

2008-10-31 10:30:00 1503

原创 ip包到达后协议栈的基本处理,版本2.4转

blowingwind.cublog.cn 草本植物 ,转载请标明出处ip_rcv -PREROUTING--> ip_rcv_finish                                       |                           ip_route_input  : 查找路由缓存                                      |

2008-10-30 19:04:00 567

原创 协议栈(转)

协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI等),物理层。   协议栈 Protocol Stack ↑  如果不参考下面进行

2008-10-30 19:00:00 609

原创 LDD3源码学习笔记之scull_pipe转

/*pipe.c*//*=========================================*//*驱动功能分析*/本驱动使用环形缓冲作为scull设备的的具体实现,类似于pipe.其中实现了阻塞的I/O读写和非同步通知./*=========================================*//*主函数流程分析*/1.定义scull_pipe设备机构体(){/*由于

2008-10-30 15:57:00 738

原创 Linux驱动入门转

1. "hello.c" -------------------------------- /* * 这是我们的第一个源文件, * 它是一个可以加载的内核模块, * 加载时显示"Hello,World!", * 卸载时显示"Bye!"。 * 需要说明一点,写内核或内核模块不能用写应用程序时的系统调用或函数库, * 因为我们写的就是为应用程序提供系统调用的代码。 * 内核有专用的函数库,如, , 等

2008-10-30 15:26:00 567

原创 Linux设备驱动工作流程转

6.2 Linux设备驱动工作流程图6.4所示为Linux设备驱动的工作流程。在Linux系统启动时,设备驱动将被加载。设备驱动成功加载后,将向系统反馈一个主设备号,驱动程序将根据该主设备号在/dev目录下创建对应的设备文件。这样,程序就可以使用open、read、write函数或命令,通过设备文件实现对设备的访问了。498)this.style.width=498;" b

2008-10-30 13:18:00 1316

原创 Linux驱动程序的工作原理转

在Linux环境下设计驱动程序,思想简洁,***作方便,功芤埠芮看?但是支持函数少,只能依赖kernel中的函数,有些常用的***作要自己来编写,而且调试也不方便.本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与Linux fans共享,有不当之处,请予指正.以下的一些文字主要来源于khg,johnsonm的Write linux device driver,Br

2008-10-30 13:16:00 2856 1

原创 一个鼠标驱动程序的分析转

一个鼠标驱动程序的分析(/driver/input/mouse/amimouse.c) 一:Input设备驱动,(我称为虚拟输入设备)//drivers/input/input.c文件     input设备是一种字符设备在模块初始化时创建设备类"input",注册Input字符设备,input的操作函数只有Open函数。当打开特定设备时才将特定的设备操作函数     static

2008-10-30 10:01:00 1133

原创 内核模块转

以下内容只是记录的要点,详细看参考资料:一、内核模块的编写:1、内核模块的代码编写没有外部的函数库可以用,只能使用内核导出的函数;这点于应用程序是有区别的,应用程序习惯于使用外部的库函数,在编译的时候将程序与库函数链接在一起。比如说:内核模块中不能使用printf(),而只能使用printk()函数。2、内核模块至少包含两个函数:模块加载函数、卸载函数;   内核版本2.3

2008-10-30 09:42:00 4263

原创 Linux网卡驱动程序

Linux驱动程序 工作需要写了我们公司一块网卡的Linux驱动程序。经历一个从无到有的过程, 深感技术交流的重要。Linux作为挑战微软垄断的强有力武器,日益受到大家的喜 爱。真希望她能在中国迅速成长。把程序文档贴出来,希望和大家探讨Linux技术 和应用,促进Linux在中国的普及。 本文可随意转载,但请不要在盈利性出版物上刊登。 ------------------ Linux操作系统网

2008-10-29 17:45:00 1662

原创 Linux设备驱动程序分类转

1.1 Linux设备驱动程序分类  Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。  Linux系统的设备分为字符设备(char device),

2008-10-29 17:08:00 6341

原创 select()函数、poll()函数(转载)

这里讨论的是select和poll的系统调用实现方式.首先要熟悉的是内核中为poll和select定义的各种输入输出消息的含义:             POLLIN   有数据可以读入,read不会阻塞,注意:select的请情况下,即使到EOF也是ready的.             POLLPRI   紧急数据,比如TCP,或者packet模式的peseudo-terminal发现slav

2008-10-29 17:03:00 3428

原创 linux网络socket 接口转

linux网络socket 接口1、socket函数:一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。----------------------------------------------------------------- #include int socket(int family,int type,int protocol);    

2008-10-29 16:11:00 2472

原创 struct file结构体转

一、定义:struct file结构体定义在/linux/include/linux/fs.h(Linux 2.6.11内核)中,其原型是:721struct file { 722 /* 723 * fu_list becomes invalid after file_free is called and queued via 724

2008-10-29 14:44:00 1176

原创 分析struct net_device转

分析struct net_device相关文件:linux/include/linux/netdevice.hlinux/drivers/net/Space.clinux/include/net/iw_handler.hchar name[IFNAMSIZ];在space.c文件中初始化。unsigned long mem_end;unsigned long mem_start;设备相关的共享内存

2008-10-29 13:24:00 1373

原创 malloc()与 alloc()区别转

malloc()与 alloc() C语言跟内存分配方式(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从

2008-10-29 11:07:00 594

原创 Linux下select调用的过程转

Linux下select调用的过程:1.用户层应用程序调用select(),底层调用poll())2.核心层调用sys_select() ------> do_select()最终调用文件描述符fd对应的struct file类型变量的struct file_operations *f_op的poll函数。poll指向的函数返回当前可否读写的信息。1)如果当前可读写,返回读写信息。2)如果当前不可

2008-10-29 10:00:00 1094

原创 struct file_operations及struct file结构体理解转

两个主要数据结构如下:struct file_operations {    struct module *owner;    loff_t (*llseek) (struct file *, loff_t, int);    ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);    ssize_t (*write)

2008-10-29 09:44:00 8274 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除