摘要:
http://blog.csdn.net/luckyaslan/article/details/7869235Step 1:安装Source Insight并启动程序可以进入图1界面,在工具条上有几个值得注意的地方,如图所示,图中内凹左边的是工程按钮,用于显示工程窗口的情况;右边的那个按钮按下去将会显示一个窗口,里边提供光标所在的函数体内对其他函数的调用图,通过点击该窗体里那些函数就可以进入该函数所在的地方。图1 Source Insight界面图由于Source Insight实质上是一个支持多种开发语言(java,c ,c++等等)的编辑器,只不过由于其查找、定位、彩色显示等功能的强大,而 阅读全文
摘要:
1. linux内核链表链表数据结构的定义:struct list_head{struct list_head *next, *prev;};list_head结构包含两个指向list_head结构的指针prev和next,由此可见,内核的链表具备双链表功能,实际上,通常它都组织成双向环链表。2. 链表操作Linux内核中提供的链表操作主要有:初始化链表头INIT_LIST_HEAD(list_head*head)插入节点list_add(struct list_head *new, struct list_head *head) (链表头head之后插入节点)list_add_tail(st 阅读全文
摘要:
1. 逻辑地址 线性地址 物理地址段式管理: 16位CPU,20根地址总线,可寻址1M内存,但是只有16位的寄存器,64K。逻辑地址 = 段基地址 + 段内偏移地址物理地址 PA = 段寄存的值 * 16 + 逻辑地址段式管理: 32位CPU,两种模式 实模式 + 保护模式实模式 和 16位CPU一样,段寄存器的值*16就是段地址保护模式: 段基地址32位,每个段都有4G容量,段寄存器的值是一个选择器,间接指出一个32位的段地址。页式管理:线性地址被分为固定长度的组,称为页(page),例如32位的机器,线性地址最大可为4G,如果用4KB为一个页来划分,这样整个线性地址就被划分为2的20次方个 阅读全文
摘要:
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9400141今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数。”你看了看日期,不是吧!这哪里是马上要开始了,分明是已经开始了!这怎么可能来得及呢?“没关系的。”你的leader安慰你道:“功能其实很简单的,接口都已经提供好了,你只需要调用一下就行了。”好吧,你勉为其难地接受了,对于这种突如其来的新需求,你早已习惯。你的leader向你具体描述了一下需 阅读全文
摘要:
stat函数讲解表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errno错误代码: ENOENT 参数file_name指定的文件不存在 ENOTDIR 路径中的目录存在但却非真正的目录 ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接 EFAULT 参数buf为无效指针,指向无法存在的内存空间 EACCESS 存取文件时被拒. 阅读全文
摘要:
LINUX系统中动态链接库的创建与使用http://www.cnblogs.com/ardar/articles/357321.html正常C源文件编写,编译时-shared即可得到SO, gcc -shared add.c -o add.so使用如下:#include#includeint main(){ int result=0; int (*add_fun)(int a, int b); //result = add(2,3); //printf("the result is: %d\n", result); void *dp = dlopen("./add 阅读全文
摘要:
1. 模块关系图2. 定时器模块 == 模拟定时器 + 基本定时器模拟定时器结构typedef struct stuSimTimer{ char szName[20]; //定时器时间 int nInterval; //定时间隔,取0时表示取消定时 time_t nLast; //上次定时的系统时间 int nRemain; //剩余时间 int (*pfunc)(char *); //定时到达 执行代码} SIMTIMER;typedef SIMTIMER * PSIMTIMER;模拟定时器有两种方法 :a:相对时间法for (i=0; i= sTim... 阅读全文
摘要:
1. 字符串报文分类: 固定长度字符串报文, 固定分隔符字符串报文。2. 字符串报文组包3. 字符串报文解析字符串报文结构体:typedef struct STRRESVARstu{ int nAmount; //数据域总数 int nFlag; //报文类型 0定长域 1分割域 int *filedlen; //每个数据域的长度 int nCompartlen; //分割符号的长度 char szCompart[10]; //分隔符符串 char **filedaddr; //指向每个数据域首地址的指针} STRRESVAR;4. 示例一#in... 阅读全文
摘要:
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号量:(1) 内核信号量,由内核控制路径使用(2) 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEMV信号量。POSIX信号量又分为有名信号量和无名信号量。有名信号量,其值保存在文件中, 所以它可以用于线程也可以用于进程间的同步。无名信号量,其值保存在内存中。倘若对信号量没有 阅读全文
摘要:
http://blog.csdn.net/yinjiabin/article/details/7489563根文件系统一般包括:1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp;2)基本程序运行所需的库函数,如:libc/uC-libc;3)基本的系统配置文件,如:rc,inittab等脚本文件;4)必要的设备支持文件,如:/dev/hd*,/dev/tty,/dev/fdO;5)基本的应用程序,如:sh,ls,cp,mv等。 根文件系统的制作就是生成包含上述各种文件的文件系统的过程,可通过直接拷贝宿主机上交叉编译器处的文 阅读全文