下载此文档

TCP IP 协议栈分析及实现.docx


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
实验报告
课程名称: TCP/IP 协议栈分析与实现
学生姓名: 郭勇专业: 信息工程
学号: 201005010718 同组学生姓名:无
实验地点:6C601 指导老师: 刘飚
实验日期: 2013年3月25日
实验一:
实验项目名称: Linux 内核通用链表的使用
一、
实验目的和要求:
学习 Linux 内核的通用链表的设计原理,熟练掌握 Linux 内核通用链表的使用。
二、
实验内容
1. 掌握 Linux 通用链表的创建
2. 掌握通用链表增加元素、删除元素和遍历链表的方法。
三、
实验要求
1. 待创建的链表头变量名为 user_queue。
2. 作为链表的宿主节点类型定义如下:
struct user {
int id;/* user id */
struct list_head list;
}
3.
针对上述 user_queue 链表,
要求以队列方式向其中依次添加 10 个类型为 struct user
的宿主节点,并要求这 10 个宿主节点的 id 依次为 1-10
4. 依次遍历输出这 10 个宿主节点的 id
5. 从队列中删除首个宿主节点,然后依次遍历该队列并输出余下各宿主节点的 id 值
四、
实现原理
Linux 的内核源文件 提供了所有的链表定义、各类操作接口及其实现。其中
创建链表的方法如下:
LIST_HEAD(my_list);
内核源文件 中定义了以下若干接口,用于对通用链表进行各类操作:
1)
在指定的 head 后插入新节点,常用于堆栈数据结构的实现
// ***@new: 即将添加的新链表节点
// ***@head: 在此节点后添加
list_add(struct list_head *new, struct list_head *head);
2)
在指定的 head 前插入新节点,常用于队列数据结构的实现
// ***@new: 即将添加的新链表节点
// ***@head: 在此节点前添加
list_add_tail(struct list_head *new, struct list_head *head)
3)
从链表中删除一个指定节点
// ***@entry: 要从链表中删除的链表节点
list_del(struct list_head *entry)
4)
根据当前链表节点指针 ptr 获得宿主节点指针
// * ***@ptr:
struct list_head 类型的指针
// * ***@type: 链表节点所在的宿主节点的类型
// * ***@member: 嵌入宿主的链表节点的变量名
list_entry(ptr, type, member)
5)
遍历链表
// ***@pos: 遍历链表时用于指示正在遍历的链表节点的指针
// ***@head: 链表头
list_for_each(pos, head)
五、
实现代码和运行结果
#include<>
#include<>
#include ""
LIST_HEAD(user_quene);
struct user{
int id;/*user id*/
stru

TCP IP 协议栈分析及实现 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人85872037
  • 文件大小96 KB
  • 时间2018-06-27