ToDo:
SA_ONSTACK/SA_NOCLDWAIT機能フラグは、 SigAction関数がユーザーに提供しているだけなので、 Revision 2209にてSA_ONSTACK/SA_NOCLDWAITマクロが 未定義の場合は、当該フラグのサポートしないようにした。
具体的には、sigaction(2)に渡す環境依存フラグを組み立てるコードで 関連する部分を ifdefで無効化しています。
他のSA_*マクロが無い場合の同様の処置が可能なはずだが、 SA_SIGINFO/SA_RESTART/SA_RESETHANDに関しては SAD側の SIGFPEハンドラ等の実装に使ってるので必須です。
他の部分に関しては、昨日の日記にも書いたけど Cygwin側の POSIX機能の実装が不足しているのが原因なんで Cygwin環境側で 対処すべき問題だと思う。
sigaction(2)で、SA_SIGINFOを使えるようなので、 POSIX SA_SIGINFOなハンドラのプロトタイプ void handler(int, siginfo_t *info, ucontext_t *uap) が使えるはずなので、環境依存なucontext_t型の定義を 行うヘッダーファイルが存在するべきなのだが... Orz
また、Cygwinに getcontext(3)が存在しないとの情報も有るので、 User Thread Context自体がサポートされていないと思われる。
POSIX SA_SIGINFOなハンドラは、第3引数経由で割り込み時の User Thread Contextを受け取ることになっているので、 sigaction(2)がSA_SIGINFOなハンドラを受け入れる以上 getcontext(3)やucontext.hが未実装なのは SUSv2的に NG。
SUSv2的には、前出のSA_ONSTACK/SA_NOCLDWAIT機能フラグが 存在しないのも NGなのだが...
Cygwinの IPv6 APIの実装が不足している。
外部プロジェクトで、実装を 進めている人々がいるので、その成果物をインストールするか、 自前で RFC3493を実装すべし
仮想マシン上で、母艦のファイルシステムを使う場合は CIFS等の ネットワークマウントに於ける名前空間変換の問題がある。
Cygwinで NTFSをローカルマウントした際に":"キャラクタと パス名に使用できないのは、Cygwinの実装上の制限と思われる。
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記