(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 を呼び出せてしまうのではないかと思いますが。

何か、私の勘違い等、ございましたらご指摘下さい。よろしくお願いします。