文章目录
简介
在linux的代码里有一个注释如下;
If softirq window is exhausted then punt. 少个逗号,加上 If softirq window is exhausted, then punt.
使用bing翻译是:如果 softirq 窗口用尽,则 punt。
这里的punt没有翻译出来。这一句的灵魂就在于punt,结果没有翻译出来。
cpp
static __latent_entropy void net_rx_action(struct softirq_action *h)
{
。。。。。
/* If softirq window is exhausted then punt.
* Allow this to run for 2 jiffies since which will allow
* an average latency of 1.5/HZ.
*/
if (unlikely(budget <= 0 ||
time_after_eq(jiffies, time_limit))) {
sd->time_squeeze++;
break;
}
这就没办法了,就只能查字典
字典
punt *[pʌnt]
n. 方头平底船, 踢悬空球, 赌博者
vt. 踢悬空球, 用篙撑船, 赌博
vi. 踢悬空球, 用篙撑船, 赌博
n long shallow flat-bottomed boat with square ends that is moved by pushing the end of a long pole against the bottom of a river (用篙撑的)长而浅的方头平底船.
v (a) [I, Ipr, Ip] move a punt with a pole (in the specified direction) 用篙撑方头平底船: She soon learned to punt. 她很快就学会了撑方头平底船. * They punted along the river. 他们撑着方头平底船沿河航行. (b) [I] (often 常作 go punting) go along a river in a punt, esp for pleasure 乘方头平底船沿河航行(尤指游览).
v [Tn] kick (a football) after it has dropped from the hands and before it touches the ground 踢(从手中落下而未着地之足球); 踢(悬空球).
n kick made in this way 踢悬空球.
v [I] 1 (in some card-games) lay a stake against the bank (在某些牌戏中)对庄家下赌注. 2 (infml 口 esp Brit) speculate in shares, bet money on a horse, etc; gamble 进行股票投机、对赛马下赌注等; 赌博.
解释
从字面的理解就是踢悬空球,不知道这个词的词源是怎么来的;感觉更像是一个形音词;在球从手上下落,然后在落地之前踢一脚之后的声音"嗙特"。在球落地之前来一脚,意味着不落地,直接踢出去了。
下面这个赌博的意思是说,这个球不落地。其实对于这个球来说有"不落地,急转弯"的引申。
If softirq window is exhausted, then punt.
再回来这么理解:如果softirq的窗口被消耗完,则返回。
另一个
cpp
static int try_charge_memcg(struct mem_cgroup *memcg, gfp_t gfp_mask,
unsigned int nr_pages)
{
。。。。
/*
* If the hierarchy is above the normal consumption range, schedule
* reclaim on returning to userland. We can perform reclaim here
* if __GFP_RECLAIM but let's always punt for simplicity and so that
* GFP_KERNEL can consistently be used during reclaim. @memcg is
* not recorded as it most likely matches current's and won't
* change in the meantime. As high limit is checked again before
* reclaim, the cost of mismatch is negligible.
*/
do {
bool mem_high, swap_high;
另一个
踢悬空球,踢回去。直接返回的意思。
cpp
static int affine_move_task(struct rq *rq, struct task_struct *p, struct rq_flags *rf,
int dest_cpu, unsigned int flags)
{
。。。。
if (task_running(rq, p) || READ_ONCE(p->__state) == TASK_WAKING) {
/*
* MIGRATE_ENABLE gets here because 'p == current', but for
* anything else we cannot do is_migration_disabled(), punt
* and have the stopper function handle it all race-free.
*/
stop_pending = pending->stop_pending;
if (!stop_pending)
pending->stop_pending = true;