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: とかだったような。 ★7