すまん。言葉が足りなかった。
いつからノンブロッキングの定義が変わったのかなと…。
わしの知っているノンブロッキングとは(joy stickだからreadの場合だけでいいよね)

readで要求をした量より十分なデータがある場合、
readは正常に終了し、要求した量のデータをreadして、そのバイト数を返す。

readで要求をした量に比べて十分なデータがない場合、
readは正常に終了し、すべてのデータをreadして、readできたバイト数を返す。

readできるデータがなかった場合、
readは失敗し、errnoに適当な値がセットされる。(おそらくEAGAINかEWOULDBLOCK)

と思うのだが…。