Re: [PATCH 0/3] clone64() and unshare64() system calls

From: H. Peter Anvin
Date: Wed Apr 09 2008 - 20:02:16 EST


sukadev@xxxxxxxxxx wrote:
This is a resend of the patch set Cedric had sent earlier. I ported
the patch set to 2.6.25-rc8-mm1 and tested on x86 and x86_64.
---

We have run out of the 32 bits in clone_flags !

This patchset introduces 2 new system calls which support 64bit clone-flags.

long sys_clone64(unsigned long flags_high, unsigned long flags_low,
unsigned long newsp);

long sys_unshare64(unsigned long flags_high, unsigned long flags_low);

The current version of clone64() does not support CLONE_PARENT_SETTID and CLONE_CHILD_CLEARTID because we would exceed the 6 registers limit of some arches. It's possible to get around this limitation but we might not
need it as we already have clone()


I really dislike this interface.

If you're going to make it a 64-bit pass it in as a 64-bit number, instead of breaking it into two numbers. Better yet, IMO, would be to pass a pointer to a structure like:

struct shared {
unsigned long nwords;
unsigned long flags[];
};

... which can be expanded indefinitely.

-hpa
--
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/