Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417973
  • 博文数量: 99
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 1012
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 16:30
个人简介

linux kernel 工程师

文章分类

全部博文(99)

文章存档

2018年(5)

2017年(12)

2016年(27)

2015年(10)

2014年(43)

2012年(2)

我的朋友

分类: LINUX

2014-02-14 08:54:33

qdisk_run 是对__qdisc_run的一个封装,仅仅会被NET_TX_SOFTIRQ对应的软中断服务程序net_tx_action调用
在调用__qdisc_run之前设置__QDISC___STATE_RUNNING状态

 --------------------------华丽的分割线------------------------------------
//  qdisk running 状态的操作包括:
//设置__QDISC___STATE_RUNNING bit
//清除__QDISC___STATE_RUNNING bit
//查询__QDISC___STATE_RUNNING bit

static inline bool qdisc_is_running(const struct Qdisc *qdisc)
{
 return (qdisc->__state & __QDISC___STATE_RUNNING) ? true : false;
}

static inline bool qdisc_run_begin(struct Qdisc *qdisc)
{
 if (qdisc_is_running(qdisc))
  return false;
 qdisc->__state |= __QDISC___STATE_RUNNING;
 return true;
}

static inline void qdisc_run_end(struct Qdisc *qdisc)
{
 qdisc->__state &= ~__QDISC___STATE_RUNNING;
}

--------------------------华丽的分割线------------------------------------

static inline void qdisc_run(struct Qdisc *q)
{
 if (qdisc_run_begin(q)) // 标志qdisk is running
  __qdisc_run(q);
}

阅读(1216) | 评论(0) | 转发(0) |
0

上一篇:__qdisc_run 原理分析

下一篇:qdisc_restart分析

给主人留下些什么吧!~~