Linux中的函数间跳转:setjmp()和longjmp()

先来看个实例吧,在 用c++写的简易学生通讯录中有那么个实例:删除通讯录中某个人的号码;1、开始是主页面菜单函数,选择删除功能后;2、跳转到删除信息函数中,在这个函数中还要先调用查找函数;3、在查找函数中又要判断以什么方式查找(姓名还是学号);4、选择好查找方式以后,查找到该人信息返回;5、打印信...

2015-02-28 11:35:21

阅读数:891

评论数:0

Linux内核源码分析--文件系统(六、Super.c)

1、释放指定设备的超级块:首先是对设备块号检查以及检查设备块号对应的超级块的合法性;然后释放8块i节点位图和逻辑块位图,最后释放掉超级块; //释放指定设备的超级块, //释放设备所使用的超级块数组项(s_dev=0),并释放该设备i节点位图和逻辑块所占用的高速缓存块 //如果超级块对应的是文件系...

2015-02-26 17:07:06

阅读数:2379

评论数:0

Linux内核源码分析--文件系统(五、Inode.c)

//把文件上的数据存放在磁盘上,inode 文件i节点;block 文件中数据块号,create是否创建标志 static int _bmap(struct m_inode * inode,int block,int create) { struct buffer_head * bh; int...

2015-02-26 10:54:41

阅读数:2788

评论数:0

Linux内核源码分析--文件系统(四、Bitmap.c)

总结的来说其实Bitmap.c程序就是操作文件系统中的两个位图:i节点位图和逻辑块位图;拿逻辑块位图来说吧,申请一个新的逻辑块时,首先是在8块逻辑块位图中查找一个空闲的比特位,找到以后转换成逻辑块号,然后就通过逻辑块号找到真正的逻辑块,通过函数把该逻辑块映射到缓存区中,当然最后要对缓存区做些属性设...

2015-02-21 16:17:41

阅读数:1777

评论数:0

全面解析C语言中可变参数列表

全面解析c语言中可变参数列表问题:1、大众版:大家习惯的使用方式;2、真实版:真正的使用方式;3、实际原理:具体原理,本质;4、自己实现可变参数列表:理解本质后,自己用自己的方法来实现可变参数列表;5、可变参数列表缺陷:可变参数列表中存在的一些缺陷,以及提供的修改思路和方案。

2015-02-11 15:27:15

阅读数:8845

评论数:1

Linux内核源码分析--文件系统(三、buffer.c)

前面已经大概的分析了下高速缓存区相关知识,这里再来分析下几个重要的函数;1、清缓存:把缓存区数据和设备进行同步; 2、缓存块插入到双链表/hash链表中,从双链表/hash链表中删除缓存块; 3、查找缓存块号; 4、从设备上读取数据到缓存中; 5、缓存区初始化函数;

2015-02-10 14:52:56

阅读数:2452

评论数:0

Linux内核源码分析--文件系统(二、高速缓存区)

从块设备中读取数据是很慢的(I/O操作相对于内存操作来说是比较慢的),所以为了不让CPU浪费宝贵的时间来等待读取块设备上的数据,就在内存中开辟了一段内存地址用来预获取最近使用过的多块设备块上的数据。当CPU需要访问块设备上的数据时,首先会在缓冲区中查找,如果有幸能找到,那么就直接拿过来使用;如果找...

2015-02-09 22:14:06

阅读数:2726

评论数:0

memcopy()函数c语言实现和汇编实现比较

首先来看汇编实现的memcpy函数,是利用宏函数来实现的,用汇编指令rep和movsb配合循环把数据以字节为单位从ds:esi传送到es:edi中,把循环次数放在ecx中。当然这样拷贝的才是真正的内存拷贝,其他的函数都稍微有点牵强;其实我感觉c语言来实现还是比较简单的,就是把输入的数据强制转换成字...

2015-02-07 11:06:25

阅读数:1341

评论数:0

用c++写的简易学生通讯录

学生通讯录系统需求:1、学生通信录信息包括:姓名、学号、年龄、性别、家庭住址、联系电话、寝室号等信息;2、系统以菜单方式工作,使之能提供以下功能:a、学生通信录信息的输入;b、学生的通信录信息删除和修改;c、学生的通信录信息查询和统计功能;d、学生的通信录信息输出显示;e、而且数据都保存在内存中;

2015-02-05 17:09:01

阅读数:7631

评论数:4

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