After trace system, found this problem is from scall_o32.S
line 161 in 2.4.26 kernel.
bltz t0, bad_stack # -> sp is bad
If stack address larger than 0x7fffffff, branch will take,
and that's why I got "-4142" errno on select system call
even parameters in stack are correct. I tried to remove this
line and seems "select" works fine.
-----Original message-----
From:Ralf Baechle <ralf@linux-mips.org>
To:Macleod <macleod@mail2000.com.tw>
Cc:linux-mips@linux-mips.org
Date:Sun, 22 Aug 2004 14:14:36 +0200
Subject:Re: System call select on R4600
On Sun, Aug 22, 2004 at 11:54:10AM +0800, Macleod wrote:
> My problem is "select" system call always return -1
> and errno is -4142, but sys_select has never been called.
> Think, it has some problem on handling system call.
> Because if I change SYS(sys_select, 5) to 4 arguments,
> sys_select will be executed.
> Thanks!
This is a bug which was fixed a while ago. I assume your application
is picking up a bad definition from an old kernel header package or so.
Still doing syscalls directly is a fragily; better avoid and use your
libc's select(3).
Ralf
|