- 博客(14)
- 资源 (1)
- 收藏
- 关注
转载 内核数据结构之 lish.h 分析 (续)
目前函数分析就到这里;由于篇幅限制,当中其实,还有一些很有用的函数:比如切割啊,判断是否为单链表啊等等,其实当你再了解了这些函数之后,后面的都是大同小异。可以自己在做研究,下面将重点放在list.h当中的几个很重要的宏当中。还是顺着list.h往下看,你会看到第一宏: #define list_entry(ptr, type, member) \ conta
2016-03-29 09:10:04 689
转载 内核数据结构之 lish.h 分析
现在开始:structlist_head { struct list_head *next, *prev; };这个就是那个链表的头!是不觉得很奇怪?怎么只有两个指针域,没有数据域呢?其实我现在也纠结这这个问题着呢!没事,咱们先往下看。说不定什么时候,咱就明白了这是怎么一回事情呢。#define LIST_HEAD_INIT(name) {
2016-03-29 09:09:19 646
转载 list_entry()详解
Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个
2016-03-28 11:24:53 850
原创 srand()和rand()产生随机数
很简单一个小程序,就能搞明白这个生成随机数的问题#include #include #include void main( ){ int i=10; //测试输出10个数,是否都是1到3的范围 srand( (unsigned)time(NULL) ); //将当前时间设置成随机函数的种子,所以每
2016-03-23 19:24:37 315
转载 struct和typedef struct彻底明白了
1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名。
2016-03-11 09:39:35 2670 2
原创 数据结构之链表操作
原理如下:代码如下,如有疑问可加我Q 804705550 ,欢迎与大家交流讨论#include#include#include#includestruct inode{ int val; struct inode *point;};struct inode *crate_link(void);bool insert_to_link(struct ino
2016-03-10 17:38:19 259
原创 将编写的系统调用注册为一个正式的系统调用步骤
① 在系统调用表(该表位置linux/arch/arm/kernel/calls.S)的最后加入一个表项; ② 在中加入系统调用的调用号,类似下图,在下图最后加入调用号表项; ③ 最后,实现这个系统调用函数,每个系统调用都必须编译近内核,所处位置可放在与其功能联系最紧密的代码中去。
2016-03-09 10:51:47 438
转载 函数可重入性(Reentrancy)概念详解
转自 http://blog.csdn.net/acs713/article/details/200345111.什么是可重入性重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。可重入的函数必须满足以下三个条件:(1)可以在执行的过程中可以被打断;(2)被打断之
2016-03-09 09:21:39 391
原创 socket编程流程
改图源自 http://www.cnblogs.com/lr-ting/archive/2012/08/24/2652482.html ,为方便自己查阅,故摘出并记录于此:
2016-03-01 17:23:27 271
原创 strcasecmp()和strncasecmp()比较
在strings.h头文件中查得函数实现如下:由以上可知, strcasecmp()函数为S1和S2比较,并忽略大小写差异。strncasecmp()函数为S1和S2比较前N个字符,并忽略大小写差异。 返回值相同: 若参数s1和s2字符串相同则返回0; s1长度大于s
2016-03-01 14:05:47 2250
转载 sockaddr和sockaddr_in的区别
From: http://www.it165.net/pro/html/201211/4066.html初学者很容易对二者有困惑的感觉,下面来讲一下二者的区别。sockaddr是在头文件 /usr/include/bits/socket.h 中定义的,如下: view sourceprint?1.struct sockaddr2.{3
2016-02-29 17:26:41 642
原创 关于问题warning: passing arg 2 of `bind' from incompatible pointer type理解
1.问题意思:bind的第二个参数指针绑定变量地址类型错误警告。2.我的程序中是这样的经过编译后,出现下面报警提示:查看 /usr/include/sys目录下的socket.h解释如下:显而易见,第二个参数四sockaddr的结构体类型,不是sockaddr_in的结构提类型。预知sockaddr和sockaddr_in的区别,
2016-02-29 17:12:38 20744
转载 linux网络编程(转载)
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是
2016-02-29 15:51:20 320
转载 关于编译报错“dereferencing pointer to incomplete type...
本文转载自 http://blog.sina.com.cn/s/blog_9f488855010181ze.html因遇到同样问题,故做个记录首先说一下这个报错的意思,通俗的说就是,试图访问该pointer指向的变量,却发现该变量是一个不完整的类型,多出错于访问结构体联合体的成员。从代码中可看出来,是从201行开始才真正的访问icmp_type指向的变量,200行还没访问。
2016-02-29 13:58:51 3061
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人