• 온라인 도구
  • - 계산기
    • 문자 수
  • - 다운로드
    • TikTok 다운로드
    • DouYin 다운로드
  • - 웹 도구
    • 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
  • 囲碁、一力遼本因坊が初防衛 余正麒破り三冠堅持
    2024-05-30

    日テレ、意思疎通できず信頼喪失 「セクシー田中さん」の調査結果
    2024-05-31

    将棋叡王戦、藤井が勝ち最終局へ
    2024-05-30

    授業中の生徒や住民が弾道ミサイル飛来を想定した避難訓練 福島・須賀川桐陽高
    2024-05-31

    藤井聡太八冠が勝ち、最終局へ 将棋叡王戦で2勝2敗
    2024-05-31

    入試問題は白黒です 「わかりやすさ」「カラフル」は逆効果、自分で図を書くべし 桜井信一の攻める中学受験
    2024-05-31

    【光る君へ】平安時代、強烈なエピソードで知られた2人の受領とは
    2024-06-01

    吉田南さん、バイオリン部門6位 エリザベート音楽コン、奈良出身
    2024-06-01

    【大河ドラマ「光る君へ」本日第22話】紫式部と清少納言は「顔を合わせていなかった」?
    2024-06-01

    知られざる作品や作家との巡り合いが生まれる高円寺のギャラリーショップ。
    2024-06-02

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

    ジャスパー・モリソンの名言「…が「普通」のものより役にたつことはない。」【本と名言365】
    2024-06-03

    “20世紀音楽”の発展に貢献した指揮者、クーセヴィツキー。その偉業とは【クラシック今日は何の日?】
    2024-06-03

    2025年春に「直島新美術館」が誕生。既存の活動から新しい価値創造を目指す
    2024-06-04

    「国芳の団扇絵 猫と歌舞伎とチャキチャキ娘」(太田記念美術館)開幕レポート。世界初の展覧会
    2024-06-04

    建築家・白井晟一設計の個人住宅「桂花の舎」が江之浦測候所に移築へ
    2024-06-04

    「TRIO パリ・東京・大阪 モダンアート・コレクション」(東京国立近代美術館)開幕レポート。トリオで再発見する3館のコレクション
    2024-06-05

    東京都写真美術館で「今森光彦 にっぽんの里山」が開催へ
    2024-06-04

    第55回星雲賞・自由部門に「巨大ロボット展」 日本SFファングループ連合会議
    2024-06-05

    ユージーン・スタジオが東南アジアに美術館を建設予定。新法人YES__pte.ltdを設立し、インドネシア・ジャカルタに美術館準備室を開設
    2024-06-04

    ©  Dopu Box
    💛