• オンラインツール
  • - 計算機
    • 文字数カウント
  • - ダウンロード
    • TikTok ダウンロード
    • Douyin ダウンロード
  • - Webツール
    • BASE64
    • Base64→画像
    • 画像→Base64
    • URLエンコード
    • JavaScript
    • タイムスタンプ
    • ユニコード変換
    • JSON整形
    • 拡張子変更
    • リスト作成
    • CSS最適化
  • - 暗号化ツール
    • MD5暗号化
    • ランダムジェネレーター
  • - 画像ツール
    • 画像圧縮
    • QRコードジェネレーター
    • QRコードリーダー
    • 壁紙プレビュー
    • 画像 EXIF
  • - 情報シート
    • 血液型遺伝
    • 服のサイズ
    • app.tool_clock
  • [email protected]
DopuBox
  • English
  • Español
  • Français
  • 日本語
  • 한국어
  • 简体中文
  • 繁體中文
全部 ニュース Meta Code 文化・アート
Linux pollメカニズムの詳細な説明
2022-01-29

すべてのシステム呼び出しは、その名前の前に「sys_」を付けることができることに基づいています。接頭辞。これがカーネルに対応する関数です。例えばopen、read、write、pollをシステムが呼び出し、それに対応するカーネル関数はsys_open、sys_read、sys_write、sys_poll。

一、カーネルフレームワーク:

システム呼び出しpollまたはselectの場合、対応するカーネル関数はsys_です。poll。解析sys_pollは、pollメカニズムを理解することができます。

1.

sys_Poll関数はfs/selectにある.cファイルでは、コードは以下の通りです。

< 0) or no (0) timeout */ timeout_jiffies = timeout_msecs; } return do_sys_poll(ufds, nfds, &timeout_jiffies); }タイムアウトパラメータを少し処理した後、do_を直接呼び出します。sys_poll。

2.

do_sys_Poll関数もfs/selectに位置する.cファイルでは、他のコードは無視されます。

poll_initwait関数は非常に簡単で、pollを初期化します。wqueues変数table:

int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds, s64 *timeout)
{
……
poll_initwait(&table);
……

fdcount = do_poll(nfds, head, &table, timeout);
……
}

poll_initwait > init_poll_funcptr(&pwq->pt, __pollwait); > pt->qproc = qproc;

すなわちtable->pt->qproc=pollwait,__pollwaitは駆動するpoll関数に使用されます。

3.

do_sys_Poll関数はfs/selectにある.cファイルでは、コードは以下の通りです。

= (s64)MAX_SCHEDULE_TIMEOUT-1)) {

< 0) { 16 /* Wait indefinitely */ 17 __timeout = MAX_SCHEDULE_TIMEOUT; 18 } else if (unlikely(*timeout >19

/*

20

* Wait for longer than MAX_SCHEDULE_TIMEOUT. Do it in

21

* a loop

22

*/

23

__timeout = MAX_SCHEDULE_TIMEOUT - 1;

static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)

{

……

if (file->f_op && file->f_op->poll)

mask = file->f_op->poll(file, pwait);

……

}

24

*timeout -= __timeout;

25

static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p)

{

if (p && wait_address)

p->qproc(filp, wait_address, p);

}

} else {

static void __pollwait(struct file *filp, wait_queue_head_t *wait_address,

poll_table *p)

{

struct poll_table_entry *entry = poll_get_entry(p);

if (!entry)

return;

get_file(filp);

entry->filp = filp;

entry->wait_address = wait_address;

init_waitqueue_entry(&entry->wait, current);

add_wait_queue(wait_address, &entry->wait);

}

26

__timeout = *timeout;

27

*timeout = 0;

28

}

29

30

__timeout = schedule_timeout(__timeout);

31


ソース元URL:https://dopubox.com/article/p/08ccc3846a4e07d7

その他のツール
  • 文字数カウント TikTok ダウンロード Douyin ダウンロード BASE64 Base64→画像 画像→Base64 URLエンコード JavaScript タイムスタンプ ユニコード変換 JSON整形 拡張子変更 リスト作成 CSS最適化 MD5暗号化 ランダムジェネレーター 画像圧縮 QRコードジェネレーター QRコードリーダー 壁紙プレビュー 画像 EXIF 血液型遺伝 服のサイズ app.tool_clock
  • 藤子・F・不二雄の名言「ありそうもない話をありそうに描きたい」【本と名言365】
    2024-05-29

    一力が本因坊初防衛
    2024-05-30

    住所要件の指摘受け自主的に転入 東京・足立区の20代選管委員・古野香織さん
    2024-05-30

    ブームなぜ起きた? 東京国立近代美術館で「ハニワと土偶の近代」展
    2024-05-30

    “家形埴輪”大集合、総選挙も 「住宅展示場の気分で」、奈良
    2024-06-01

    テレ東が警察密着番組の担当者らを懲戒処分
    2024-06-03

    文科相、佐渡金山の果報待ちたい ユネスコの評価、近く判明
    2024-06-03

    国際博物館の日、今年のテーマは「学びと研究のための博物館」
    2024-06-04

    「ゲバルト」展が東京日仏学院などで開催。反暴力的反応とその美的様式を探る
    2024-06-05

    お台場エリアを舞台に新芸術祭「東京お台場トリエンナーレ 2025」が誕生
    2024-06-05

    エドガー・サラン個展「EDGAR SARIN ー HUNKY DORY」(VAGUE KOBE)レポート。展示空間の可能性やその調和の在り方を問いかける
    2024-06-04

    田名網敬一「TANAAMI!! AKATSUKA!! / 45 rpm」展、集英社マンガアートヘリテージ トーキョーギャラリーで開催
    2024-06-04

    クールべ《世界の起源》はなぜ攻撃されたのか? ポンピドゥー・センター・メッスで破壊・盗難事件
    2024-06-04

    105歳で死去した画家弥勒祐徳さん おごらず、黙々と、ひたすらに神楽など描く
    2024-06-05

    岡田将生の初ブランド「IN MY DEN」始動、第1弾グッズの受注販売がスタート
    2024-06-06

    そごう・西武が百貨店として初めてNFTマーケット開設、NFT作品約100点を発売
    2024-06-06

    藤井八冠、5連覇へ白星発進 将棋棋聖戦、山崎八段破る
    2024-06-06

    藤井、棋聖戦5連覇へ白星発進
    2024-06-06

    今週末に見たい展覧会ベスト8。閉幕の横浜トリエンナーレから、「梅津庸一 クリスタルパレス」、石川九楊の2ヶ月連続個展まで
    2024-06-06

    パートナーとの強い絆から生まれた、ベンジャミン・ブリテンの代表作【クラシック今日は何の日?】
    2024-06-06

    ©  Dopu Box
    💛