MIPL程序解读(2)

这部分对主要的线程进行总体上的分析。 2、runner线程分析runner是从tq_list链表中,读取一项项的任务,分别执行。tq_list链表中的任务是按时间先后顺序进行排列,最先执行的程序放在前面,只有一个函数对这个链表进行插入操作,就是sorted_insert()。因此,只要看哪些地方调用了sorted_insert(),就可以知道一共有哪些任务会出现在队列中。只有一个函
摘要由CSDN通过智能技术生成

这部分对主要的线程进行总体上的分析。

 

2runner线程分析

runner是从tq_list链表中,读取一项项的任务,分别执行。tq_list链表中的任务是按时间先后顺序进行排列,最先执行的程序放在前面,只有一个函数对这个链表进行插入操作,就是sorted_insert()。因此,只要看哪些地方调用了sorted_insert(),就可以知道一共有哪些任务会出现在队列中。

只有一个函数调用了sorted_insert(),就是add_task_abs(), 因此,只要看哪些地方调用了add_task_abs (),就可以知道一共有哪些任务会出现在队列中。

 

序号

处理函数

说明

1

_expire()

绑定到期了的超时处理函数

2

bu_resend

重新发送一个绑定更新报文

3

mn_rr_check_entry

rr表示Information for return routability,这个函数是对绑定更新选项进行处理,

4

nonce_regen

随机数重新产生

5

md_router_timeout_probe

应用在移动检测中,看看路由器是否依旧可以连接。

6

mpd_resend_unsol_mpa

mpaMobile Prefix AdverisementsmpdMobile Prefix Discoveryunsolunsolicitation。这是重发非请求的mpa

7

mpd_send_unsol_mpa

发送非请求的mpa

8

ti_resend

Resend HoTI or CoTI, if we haven't got HoT or CoT

9

dhaad_expire_halist

dhaadDynamic Home Agent Address Discovery。这个函数是删除过期的家乡代理列表。

10

dhaad_resend

每隔一段时间,重新发送dhaad请求消息。

11

md_discover_router

md表示mobile detection,移动检测。每隔一段时间,发送一个路由器发现的icmpv6报文。

12

mpd_resend_mps

MPSMobile Prefix Solicitation消息,就是重发mps消息。

13

mpd_send_first_mps

MPSMobile Prefix Solicitation消息,就是发送第一次mps消息。

 

 

任务队列的数据结构

跟任务队列相关的数据结构,主要就是一个tq_elem的数据结构。

 

 

 

3mh_listen线程分析

 

static void *mh_listen(void *arg)

{

       uint8_t msg[MAX_PKT_LEN];

       struct in6_pktinfo pktinfo;

       struct in6_addr haoa, rta;

       struct sockaddr_in6 addr;

       struct ip6_mh *mh;

       struct in6_addr_bundle addrs;

       ssize_t len;

       struct mh_handler *h;

 

       pthread_dbg("thread started");

 

       while (1) {

              pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);

//int pthread_setcancelstate(int state, int *oldstate) 设置本线程对Cancel信号的反应,state

//有两种值:PTHREAD_CANCEL_ENABLE(缺省)和PTHREAD_CANCEL_DISABLE

//分别表示收到信号后设为CANCLED状态和忽略CANCEL信号继续运行

//old_state如果不为NULL则存入原来的Cancel状态以便恢复。

              len = mh_recv(msg, sizeof(msg), &addr, &pktinfo, &haoa, &rta);

//从接收移动头部的socket中接收数据,保存在msg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值