在 kernel中如何定時, 變數 HZ 和 jiffies

來源:互聯網
上載者:User

 

HZ      定義了時鐘中斷的頻率,即每秒鐘時鐘中斷的次數

jiffies  記錄了自啟動後,時鐘中斷髮生的次數

 

例如:

unsigned long timeout
= jiffies + (3*HZ)

;
     while (hwgroup->busy) {
     /* ... */
     if (time_after(jiffies, timeout)

) {
     return -EBUSY;
     }
     /* ... */
}
return SUCCESS;

 

timeout這個值,被賦值成了當前的時鐘中斷數目 加上 3秒鐘時鐘中斷的次數。

當time_after成功返回時,表示已經發生了這麼多次的時鐘中斷,即過了三秒鐘。

 

 

if (stream->rescheduled) {
ehci_info(ehci, "ep%ds-iso rescheduled " "%lu times in %lu
            seconds/n", stream->bEndpointAddress, is_in? "in":
            "out", stream->rescheduled,     ((jiffies – stream->start)/HZ)

);
}

 

而這段代碼則計算出了 開始到現在 所經曆的時間,以秒為單位。 

 

 

 

time_after用的是忙等,這樣對cpu資源時鐘浪費,用schedule_timeout()可以將cpu讓給其他人使用

unsigned long timeout = jiffies + HZ;

set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(timeout); /* Allow other parts of the kernel to run */

 

這樣就可以讓出一秒鐘給別人。  詳見schedule_timeout()。

 



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.