Subject: syscalls return values
To: None <tech-kern@netbsd.org>
From: Emmanuel Dreyfus <p99dreyf@criens.u-psud.fr>
List: tech-kern
Date: 01/19/2001 20:24:29
I have a problem with the lstat system call in Linux emulation.
According to Linux, it should return a long. 

If I write with a printf the return value in the kernel, at the end od
linux_sys_lstat, I can see that everything went fine, and that the
return value is 0. But the user process get a non zero return value. I
think this is caused by a size mismatch: the kernel sets up a 32 bits
long result, and the process reads a 64 bits value.

Is there any way of returning a long after a syscall? If I just change
in syscalls.master the return value from int to long, when I generate
linux_syscallargs.h, the system call still have a int result and not a
long. 

Any idea about how to fix this?

-- 
Emmanuel Dreyfus.
Sryvpvgngvbaf!
Ibhf irarm qr creqer ibger grzcf n qrpbqre har fvtangher fnaf vagrerg.
p99dreyf@criens.u-psud.fr