上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 26 下一页
摘要: 递归是指函数在执行的过程中调用到自身已完成需要的功能,用递归能解决的问题通常能将问题不断缩小为性质相同但规模更小的问题(递归情况),直到问题足够小能够直接解决(基本情况),如下面简单的例子: #include<stdio.h> void f(int n) { printf("Level %d:n location %p\n",n,&n); /* 语句1 */ if(n < 3) f(n+1)... 阅读全文
posted @ 2013-04-19 14:08 ydzhang 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 在项目中遇到一个问题,当客户端通过SUN RPC进行远程过程调用时,服务器如何获取调用方的IP地址,由于RPC是socket的封装,在send/recv的调用中都能获取数据包的源IP地址,故RPC肯定又能提供这样的接口。 最开始的需求源于DNFS的存储节点周期性的向元数据服务器发送心跳信息,当收到心跳信息后,服务器需要辨别心跳信息来自哪一个存储节点,WCW师兄的方法是在调用参数中增加IP地址... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(1931) 评论(0) 推荐(0) 编辑
摘要: 上个月给文件系统添加额外的属性设置接口,但却是完全脱离文件系统实现的,直接使用rpc连接元数据服务器来设置/获取属性,而没有通过文件系统的客户端。当时想着还有一种方法就是在fuse-2.8中支持了ioctl接口,可通过为分布式文件系统实现ioctl接口实现扩展属性的获取与设置。 使用ioctl首先要理解ioctl命令的封装格式,ioctl的命令对应一个32bits的整数,其格式如下: ... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。如下例所示: #include <stdlib.h>#include <stdio.h>struct device{int num;int count; int reserve[0]; /* * reserve是一个数组名;该数组没有元素;该数组的其实地址紧随结... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1. 内核符号表 内核符号表是linux内核提供给内核代码的一部分引用,所指的“内核代码”包括内核以及驱动程序等运行在内核内存空间的程序,“引用”包括对变量的引用,对函数的引用等。最常见的内核符号引用如printk打印输出,通常内核符号是由一部分内核代码提供给其他内核代码访问其内部数据的接口。 外部模块只能使用内核或其他外部模块导出的符号。内核或外部模块可通过EXPORT_SYMBOL宏导出符... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(1175) 评论(0) 推荐(0) 编辑
摘要: 方法1:修改系统调用表(适用于linux-2.4内核) 内核使用sys_call_table数组来存储系统调用表,将系统调用号与系统调用处理函数对应起来,通过修改sys_call_table数组的某一个元素,即可实现截获系统调用的功能,在2.4内核中,sys_call_table符号是被导出的,外部模块可以使用,故能简单的实现截获系统调用,在加载模块时,修改sys_call_table的处理函数... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 在不同的操作系统中,换行符的存储方式不同,如linux系统以\n表示,而Mac OS以\r表示,windows系统则以\r\n表示,而C语言中,换行则以\n表示,故在不同的操作系统下用C语言读取文本文件时,需要做相应的处理,本文主要介绍windows系统下的处理。 1. 检查文件是否以文本模式打开,如果不是则不需要做特殊处理; 2. 循环依次读取文件中的字符,按以下规则对字符进行处理,直到读... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(2041) 评论(0) 推荐(0) 编辑
摘要: asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name, char __user * type, unsigned long flags, void __user * data); 参数说明: 1. 文件系统所在的设备文件的路径名,或者如果不需要则为NULL(如网络文件系统); 2. 文件系统被安... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Iometer简介 Iometer 是一个工作在单系统和集群系统上用来衡量和描述I/O子系统的工具。 Iometer 既是工作负载生成器(也就是说,它可以进行输入输出操作,以便增加系统的负荷),它还是一个测量工具(也就是说,它检查并且记录I/O 操作的性能和对系统的影响)。它可以被配置为模拟任何程序或者基准测试程序的磁盘和网络I/O的负载,或者用来产生整个综合的I/O负载。它也可以用来产生并测... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(869) 评论(0) 推荐(0) 编辑
摘要: 链表(list)和哈希表(hlist)是内核常用到的两个工具,负责组织内核中很多的数据结构,如在进程管理中用于组织进程,文件系统中的inode节点链表,dentry链表,vfsmount链表等等。 链表使用struct list_head内嵌结构来将其寄生的结构组织成双向循环链表,并且表头跟普通节点的结构相同,非常容易理解。 但哈希表不同,其表头跟普通节点采用不同的数据结构,并且节点的组织也不是... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(560) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 26 下一页