Linuxの省電力システムコール - シグナルとの相互作用

Linuxの省電力システムコール - シグナルとの相互作用

Linuxオペレーティングシステムの省電力文書に関する質問があります。

眠っている男3説明する:

スレッドの安全性に関しては、sleep()「MT-Unsafe sig:SIGCHLD / linux」があります。これは、Linux上でsleep()シグナルハンドラを一時的にインストールできることを意味しますSIGCHLD

しかし、同じ文書には「Linuxsleep()ではnanosleep(2)

これが確認されました睡眠の実装GNU標準ライブラリ内。

男性2nm睡眠説明する:

「POSIX.1は(nanosleep)信号と対話しないことを明示的に述べています。」 Nanosleepは、「呼び出しスレッドでハンドラ呼び出しをトリガーするシグナルを渡す」(nanosleepのマニュアルを参照)によって中断することができます。

質問は次のとおりです。

sleep(3)Linuxで文書化の問題がありますか?

"MT-Unsafe sig:SIGCHLD/linux"のドキュメントは間違っているようです。文書によると、Linuxでこれをsleep(3)使ってnanosleep(2)も邪魔にならないからです。SIGCHLDnanosleep(2)

それとも私が何かを見逃しているのでしょうか?

ベストアンサー1

texinfoでコメント源泉もっと明確に言えば:

@deftypefun {unsigned int} sleep (unsigned int @var{seconds})
@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtunsafe{@mtascusig{:SIGCHLD/linux}}@asunsafe{}@acunsafe{}}
@c On Mach, it uses ports and calls time.  On generic posix, it calls
@c nanosleep.  On Linux, it temporarily blocks SIGCHLD, which is MT- and
@c AS-Unsafe, and in a way that makes it AC-Unsafe (C-unsafe, even!).

それが嘘ではない場合、sleep(3)Linuxにはブロック機能はありませんSIGCHLD。これは古い解決策の残余です。2015年に削除されました)以前のLinuxのバグの場合(2.6.32で修正)

これは犯罪言語は以下で紹介されます。

* manual/time.texi: Document MTASC-safety properties.
author  Alexandre Oliva <[email protected]> 
    Sat, 1 Feb 2014 04:51:51 +0000 (02:51 -0200)
committer   Alexandre Oliva <[email protected]> 
    Sat, 1 Feb 2014 04:51:51 +0000 (02:51 -0200)
commit  23e5b8cb1ba7a31450bda75e3f06b7c76e175db4

おすすめ記事