On 16 Feb 2008, at 21:55, ik wrote:

Exactly my point on the design in the first place. The corrent design
takes integers only. Regarding the Linux Kernel, I did not knew about
the floating points issues,

I don't know of a single OS kernel which supports using floating point in kernel space.

but what about pointers, arrays, structs
etc ?

Pointers are the same size as TSysParam. There are no system calls which take arrays, structs etc.

"These  days  passing  five parameters is not a problem any more, and
there is a __NR__newselect (used by libc 6) that corresponds directly
to sys_select() and similarly __NR_mmap2."

So originally the problem was 5 parameters not 6 !

They added usage of ebp only later on.

and there are
functions that might have more then 6 parameters,

Which ones?

BTW, why the C function uses var_args and not using overloads

C doesn't support function overloading.

or other
"magic" to pass the valid amount of parameters ?
<int syscall(int number, ...);>

Function overloading is no more magic than varargs.

And there are changes for every type of bit:
"On newer platforms that only have 64-bit file access and 32-bit uids
(e.g., alpha, ia64, s390x) there are no *64 or *32 calls.  Where the
*64  and  *32  calls  exist,  the other versions are obsolete."

I don't understand what what this has to do with the way system call interfacing works.


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to