Plan9

アセンブリ結果の比較

ソース int main(int ac,char **av) { return 0; } Plan9 TEXT main+0(SB),0,$0 MOVL $0,AX RET , RET , END , Linux(gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) .file "t.c" .text .globl main .type main, @function main: .LFB0: .cfi_startpro…

timeout

Plan9にはUNIXでいうselect関数がない。このため、selectを用いたtimeoutは他のインプリメントにする必要がある。 参考になるのはこの辺りかな。 dial http://plan9.bell-labs.com/magic/man2html/1/expect fossilcons http://plan9.bell-labs.com/magic/man…

sha512module.c

マクロを分割および関数化に変更 #ifdef PLAN9 void RND(SHA_INT64 *a,SHA_INT64 *b,SHA_INT64 *c,SHA_INT64 *d,SHA_INT64 *e,SHA_INT64 *f,SHA_INT64 *g,SHA_INT64 *h, int i,SHA_INT64 ki, SHA_INT64 W[80]) { SHA_INT64 t0,t1; t0 = *h + Sigma1(*e) + Ch…

sha512

マクロが複雑すぎて、out of fixed registersが出て、sha512はポートできない。 とりあえず、除外しておく。とおもったら、import shaでこけた。 /* Various logical functions */ #define ROR64(x, y) ? ( ((((x) & Py_ULL(0xFFFFFFFFFFFFFFFF))>>( (unsign…

起動はできた

cpu% ./8.out Python 2.5.1 (r251:54863, Sep 20 2007, 22:53:44) [C] on unknown Type "help", "copyright", "credits" or "license" for more information. >>>

configの事

PythonのOS依存部分は、下記の2つ。 PC/config.c Modules/config.cいずれもPlan9の場合は Plan9/config.c で済ませる違っているのはこの辺 21,23d20 25d21 41,42d36 64,69d57Python/Python-ast.c */Python/_types.c */ 82,87d69 20c20md5(void); - > extern …

mkfile.lib

新しく追加されたモジュールを追加 Python-ast.$O? asdl.$O? ast.$O? exceptions.$O? codeobject.$O? _typesmodule.$O? md5.$O? posixmodule.$O? この辺。 posixmoduleがエラーになる。posixでないしな。 struct内のinitstrcutはなくなったようだ

longobject.c

SIZEOF_SIZE_T の定義が必要になったのでPlan9/pyconfig.hに追加 limits.hに相当する物がない。

floatobject.c

floatobject.cがコンパイルできなくなってた。 エラーの箇所は、 /usr/moroo/src/Python-2.5.1-Plan9/Plan9/../Objects/floatobject.c:1043[../Objects /floatobject.c:10189] syntax error, last name: typestrtypestrをtypestr_に変えるとエラーがなくなる…

Plan9的には

/n/sqlに /n/sql/ctl /n/sql/query などを作って、ここにSQLを書き込んで /n/sql/response から読み取るというのがきれいなのじゃないだろうか?

移植中断

ちょっと気力が萎えたので移植中断。

h_errno

thread.cでh_errnoを使用。これらは、元々gethostbyaddr.cで使用中。 Plan9ではgethostbyname自体がない(ndbに聞きにいく)ので、実装を変える必要がある。

ftpする方法

bootesがホストオーナのCPUサーバで、glendaがftpする方法のメモ auth/factotumでglendaがfactotumを起動 auth/factotum -g 'proto=pass server=www.example.com service=ftp user=glenda !password=SECRET'でパスワードを登録 ftpfs www.example.comで/n/ft…

ioctl

ioctlとかは、Apeを参考にする。 でも、実装が結構大胆 int ioctl(int fd, unsigned long request, void* arg) { struct stat d; if(request == FIONREAD) { if(fstat(fd, &d) < 0) { errno = EBADF; return -1; } /* this works if the file is buffered so…

dirmod.c

ここもstatがあったので変更 大体こんな感じ 437c437 < if (unixstat(filepath, &statbuf) != 0) --- > if (stat(filepath, &statbuf) != 0)また、S_ISDIRの記述が必要なのでsys/stat.hからコピー。

既にportに掛かってる人が…

http://lists.cse.psu.edu/archives/9fans/2000-July/001918.html

stat

statはかち合うのでunixstatに変更 cpu% diff plan9?copydir.c ../src/port/copydir.c 78c78 < if (unixstat(fromfile, &fst) < 0) --- > if (stat(fromfile, &fst) < 0)cpu% cat mkfile.lib

ローカルマウント

先日のtip9ugでdrawtermが/mnt/termにローカルのディスクをマウントすると聞いて、早速試した。 しかし、/書類 というディレクトリがあると、 ls: /mnt/term: bad character is file name: #/ と言われてしまう。でも、ローカルからのコピーとかは楽ですね。…