日期:2014-05-16  浏览次数:20675 次

从Linux代码反思整形以及无符号整形变量的知识

Linux代码反思整形以及无符号整形变量的知识

?

今日,在分析Linux调度器的过程中。

sched.c中的init_cfs_rq中,看到了如下一条奇怪的赋值语句。

?

static?void?init_cfs_rq(struct?cfs_rq?*cfs_rq,?struct?rq?*rq)

{

????cfs_rq->tasks_timeline?=?RB_ROOT;

????INIT_LIST_HEAD(&cfs_rq->tasks);

#ifdef?CONFIG_FAIR_GROUP_SCHED

????cfs_rq->rq?=?rq;

????/*?allow?initial?update_cfs_load()?to?truncate?*/

#ifdef?CONFIG_SMP

????cfs_rq->load_stamp?=?1;

#endif

#endif

????cfs_rq->min_vruntime?=?(u64)(-(1LL?<<?20));

#ifndef?CONFIG_64BIT

????cfs_rq-&