Re: [RFC] syscalls, x86: Add __NR_kcmp syscall

From: KOSAKI Motohiro
Date: Wed Jan 18 2012 - 04:12:25 EST


(1/18/12 3:01 AM), Cyrill Gorcunov wrote:
On Tue, Jan 17, 2012 at 01:35:00PM -0800, Eric W. Biederman wrote:
"H. Peter Anvin"<hpa@xxxxxxxxx> writes:

On 01/17/2012 06:44 AM, Cyrill Gorcunov wrote:
On Tue, Jan 17, 2012 at 04:38:14PM +0200, Alexey Dobriyan wrote:
On 1/17/12, Cyrill Gorcunov<gorcunov@xxxxxxxxx> wrote:
+#define KCMP_EQ 0
+#define KCMP_LT 1
+#define KCMP_GT 2

LT and GT are meaningless.


I found symbolic names better than open-coded values. But sure,
if this is problem it could be dropped.

Or you mean that in general anything but 'equal' is useless?


Why on Earth would user space need to know which order in memory certain
kernel objects are?

For checkpoint restart and for some other kinds of introspection what is
needed is a comparison function to see if two processes share the same
object. The most interesting of these objects from a checkpoint restart case
are file descriptors, and there can be a lot of file descriptors.

The order in memory does not matter. What does matter is that the
comparison function return some ordering between objects. The algorithm
for figuring out of N items which of them are duplicates is O(N^2) if
the comparison function can only return equal or not equal. The
algorithm for finding duplications is only O(NlogN) if the comparison
function will return an ordering among the objects.

Yes, thanks Eric, I missed this text in patch description, my bad. And
yes, performance will degrade with plain eq/ne approach. But as Pavel
stated in another email

I think Eric only said gt/lt compare is useful. We don't need to expose bare
pointer order. example, kcmp(rotate(ptr, per-task-random-value)) is enough
hide the critical information. I think.

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