<document>
<title "net/util 履歴">
<chapter "gethostbyname, gethostbyaddrをリエントラントなシステムコールに">
<renew "01/10/20">
これらは、UNIXではリエントラントではなかった。

リエントラントなシステムコールに変更したものを、

src/machine/net/utils/*_r.c

に用意した。各ファイルには、*_rrという関数が定義されている。これが、バッファを用意しリエントラントなシステムコールを行う仕組み。確保されたバッファは最後にset_buffer、時間がたつと自動的に解放される仕組みにした｡

ウィンドウズのシステムコールがリエントラントであったら、上記ファイルのシステムコールをそれに置き換えてください｡
日文研の一部サーバでは、gethostbyname、gethostbyaddrがネームDBを参照できないことがまれに発生します｡これがバグによるものなのか、ネットワークの異常なのか現在わかっていません｡参照できない場合、時間をおいて参照すると再び参照できるようになります｡今のところ、gethostbyname_rr / gethostbyaddr_rr を参照する場合、結果が返ってこなかった場合、時間をおいて参照する処理が入っています｡

リエントラント処理を行っても、sethostent endhostent処理はリエントラントではありません。従って、これを使ってネームDBを参照する場合、前後をnetutils_lockでロックする必要があります｡
</chapter>
</title>
</document>