(toppers-users 807) Re: linux_serial.c について
Okada Masahiro
masahi-o @ astem.or.jp
2003年 5月 12日 (月) 15:11:05 JST
岡田です。
At Tue, 06 May 2003 14:14:38 +0900,
Okada Masahiro wrote:
> つまずいているのは 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());
>
** Cut quoted 6 lines by the mail filter. **
自分で、Debian(3.0)上でToppersのシミュレーション環境のLinux版で確かめ
てみました。すると、
syscall(loc_cpu());
syslog(LOG_INFO, "sns_loc(%d)", sns_loc());
syscall(unl_cpu());
というのを動かしてみると、sns_loc() が何故か 0 を返しました。
ToppersのLinux版では、ロック中でも sense_lock() が 0 を返すので、
systask/linux_serial.c 内の serial_int_handler で、ロック中なのに
sim_sem を呼び出せてしまうのではないかと思いますが。
何か、私の勘違い等、ございましたらご指摘下さい。よろしくお願いします。