2018-01-22 :-)
_ [NetBSD][golang][システムコール]golang システムコール IoctlGetWinsize とか
ローカル
$(GOPATH)/src/github.com/docker/docker/vendor/golang.org/x/sys/unix
リポジトリ
https://github.com/moby/moby/tree/master/vendor/golang.org/x/sys/unix
syscall_netbsd.go や syscall_openbsd.go はあるがメソッド定義は無い。
% cd ~/work/go/src/github.com/docker/docker/vendor/golang.org/x/sys/unix % grep IoctlGetWinsize * syscall_darwin.go:func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { syscall_freebsd.go:func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { syscall_linux.go:func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { syscall_solaris.go:func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
https://github.com/moby/moby/blob/master/vendor/golang.org/x/sys/unix/README.md
これによると
- ビルドシステムを作り直している最中だよ。現在ビルドシステムは 2 つあるよ。古いビルドシステムと新しいビルドシステムがあるよ。
- 古いビルドシステム (GOOS != "Linux" || GOARCH == "sparc64")
- システムにあるヘッダファイル(.h)から go ファイルを生成するよ。でもそれはシステム依存のファイルが生成されるのであまりよろしくないよ
- 生成するには mkall.sh( $(GOPATH)/go/src/golang.org/x/sys/unix/mkall.sh )を使うよ
- 新しいビルドシステム (GOOS == "Linux" && GOARCH != "sparc64")
- docker の仕組みを使うよ(よく分からん)
- mkall.go を使うよ( $(GOPATH)/src/golang.org/x/sys/unix/linux/mkall.go )。これは Linux のヘッダファイルやライブラリを用いてシステムコール番号やシステムコールの go ファイルを生成するよ
- syscall_${GOOS}.go は手で書いてるよ
[ツッコミを入れる]