linux kernel 工程师
全部博文(99)
分类: 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);
}