Goソースコードリーディング.......

udzura

 okkun: ふぉ  0

 okkun: https://code.google.com/p/go/source/browse/src/os/file.go#254 ここか  0

 okkun: 微妙に違った  0

 udzura: この小文字のrenameは本当にC.renameかと言う問題が...  0

 okkun: これどこで実装されとるんや......  0

 udzura: そうなんですよ〜  0

 udzura: straceの方が速いわ!ってなった  0

 okkun: ioかなあ  0

 okkun: ちがうなあ  0

 okkun: syscallかなあ  0

 okkun: https://code.google.com/p/go/source/browse/src/syscall/syscall_linux.go#840 これかなあ  0

 okkun: ちがうなあ  0

 udzura: https://github.com/golang/go/blob/439b32936367c3efd0dadab48dd51202e1a510f1/src/os/file_plan9.go  0

 udzura: OSごとなんじゃないかな...  0

 udzura: https://github.com/golang/go/blob/439b32936367c3efd0dadab48dd51202e1a510f1/src/os/file_posix.go#L31  0

 udzura: いま、golangの開発は完全にgithubっぽいっすね...  0

 hiroya: POSIX インタフェースをサポートしている OS では `int rename(const char *oldpath, const char *newpath);`  0

 okkun: nrhd  0

 udzura: fmfm  0

 hiroya: で。  0

 hiroya: windoze はちょっとワカリマセn  0

 udzura: windows~~~  0

 okkun: https://github.com/golang/go/search?utf8=%E2%9C%93&q=rename&type=Code  0

 okkun: 81codes探すのつらい  0

 okkun: https://github.com/golang/go/blob/master/src/os/file_posix.go#L31-L37  0

 --: Notice -> #kernel: https://github.com/golang/go/tree/master/src/os ここの最終更新が普通にmattnさんだった  0

 okkun: ここでsyscall.Renameとかyでる  0

 udzura: syscallはどう定義されてるのか...  0

 udzura: https://github.com/golang/go/tree/master/src/syscall  0

 udzura: *.s  0

 udzura: うわっ  0

 okkun: https://github.com/golang/go/blob/master/src/syscall/zsyscall_linux_amd64.go#L922-L940 これそうなのかなあ  0

 okkun: SYS_RENAME とは  0

 hiroya: ごっつい  0

 hiroya: システムコールの番号?  0

 udzura: どこがGoのコードなのか...  0

 udzura: このコードしかも、自動生成って書いてある  0

 hiroya: Syscall がアセンブラで int 0x80 / sysenter 呼ぶ実装になってるんじゃないかな  0

 udzura: おー  0

 udzura: おーーー  0

 udzura: なるほど...  0

 udzura: 深遠だ  0

 hiroya: https://github.com/golang/go/blob/master/src/syscall/asm_linux_386.s#L15-L23 32bitですけど  0

 okkun: https://github.com/golang/go/blob/master/src/syscall/zsysnum_linux_amd64.go#L89  0

 okkun:  0

 udzura: 知見の嵐  0

 hiroya: vdso は、ちょっと説明できないんですけど、  0

 hiroya: http://blog.yuryu.jp/2014/06/x86-linux-sysenter.html  0

 hiroya: 古いプロセッサだと、sysenter 命令をサポートしていない場合があるので  0

 hiroya: ユーザ空間から、 int 0x80 を使うのか sysenter を使うのか、を意識しなくていいように  0

 hiroya: カーネルが vdso ってなメモリを提供して、そこのコードを呼べば 後はカーネルがいい感じに  0

 okkun: おお  0

 hiroya: sysenter があれば sysenter を呼んで、なければ int 0x80 を呼ぶ  0

 hiroya: とかだったような。 7KitaitiMakoto