Re: [PATCHv3 0/4] sys_indirect system call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ulrich Drepper wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

H. Peter Anvin wrote:
It seems to me that we could accomplish the same thing by passing the
number of parameters in the upper bits of the system call number
register (%eax in the case of x86.)

This isn't really a generic solution.  The number of parameters is
limited to six.  There are syscalls with six parameters already.  There
are many more with five which could only handle one more parameter.

Also, is it really simpler?  You'd need to have another table which
contains the default number of parameters a system call takes so that
you can fill in the default value of zero.  This extra memory access has
to be performed for every system call.

I think it is unlikely that this approach is faster.  To the contrary,
I'd guess.

I don't have much invested into this but it seems the sys_indirect
approach is so much simpler.  Overhead is only paid if you really need
it which is rarely the case.  Plus, you might have heard Linus and Zack
talk about syslets again.  Starting syslets can be done using the same
interface, I guess.


What bothers me about the sys_indirect approach is that it will get increasingly expensive as time goes on, and in doing so it does a user-space memory reference, which are extra expensive. The extra table can be colocated with the main table (a structure, in effect) so they'll share the same cache line.

	-hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux