(toppers-users 800) linux_serial.c について

Okada Masahiro masahi-o @ astem.or.jp
2003年 5月 6日 (火) 14:14:38 JST


岡田と申します。
よろしくお願いします。

Toppersのシミュレーション環境を FreeBSD で nativeで動かそうとしていま
す。Linuxのものを書き換えて、動かそうとしていますが、ひとつつまずいて
いるところがあるので、お助け下さい。

つまずいているのは systask/linux_serial.c 内の serial_int_handler で、
sig_sem を呼び出しているところで、E_CTX が返ってしまうことです。どうも、
CPUがロック状態なので sig_sem が呼び出せないようです。

serial_int_handler は、serial_sigio_callback から、

      syscall(loc_cpu());
      flag = serial_int_handler(1);
      syscall(unl_cpu());

というふうに呼び出されていて、serial_int_handler 内でもロックは解除し
ていないようなので sig_sem が E_CTX を返すのは間違っていないように思い
ます。

しかし、Linux環境では動いていると思うので、何がおかしいのか分からない
状態です。

多分、私が何か勘違いしているんだと思いますが、何がおかしいのでしょうか?
お助け下さい。