先生、質問!

例えば、上にあるようにノンブロックモードでread()して、
データが何も無かったために、errnoに「無かった」ことを示す値がセットされたとする。
errnoを調べる前に、
もう一度read()を実行したら、読み込みたいだけ読み込むことが出来た。
このときerrnoは、「無かった」ことを示す値がセットされているのか、
「全く正常に終了した」ということを示す値がセットされてるのか知りたいです。
read()に限らずerrnoを使用する関数全てについて、それらがerrnoの使用について一定の決まりに従っているのがが激しく知りたいです。

よろしくお願いします。