Re: [PATCH 01/13] sched: Add 3 new scheduler syscalls to support an extended scheduling parameters ABI

From: Ingo Molnar
Date: Sat Feb 15 2014 - 07:53:28 EST



* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> > > SYNOPSIS
> > > #include <sched.h>
> > >
> > > struct sched_attr {
> > > u32 size;
> > >
> > > u32 sched_policy;
> > > u64 sched_flags;
> > [...]
> > > };
> > >
> > > int sched_setattr(pid_t pid, const struct sched_attr *attr);
> > >
> > > int sched_getattr(pid_t pid, const struct sched_attr *attr, unsigned int size);
> >
> > So, I that there's a flags field in the structure, which allows for
> > some extensibility for these calls in the future. However, is it
> > worthwhile to consider adding a 'flags' argument in the base signature
> > of either of these calls, to allow for some possible extensions in the
> > future. (See http://lwn.net/SubscriberLink/585415/7b905c0248a158a2/ ).
>
> Sure why not.. I picked 'unsigned long' for the flags argument; I
> don't think there's a real standard for this, I've seen: 'int'
> 'unsigned int' and 'unsigned long' flags.
>
> Please holler if there is indeed a preference and I picked the wrong
> one.

Yo!

So, since this is an ABI, if it's a true 64-bit flags value then
please make it u64 - and 'unsigned int' or u32 otherwise. I don't
think we have many (any?) 'long' argument syscall ABIs.

'unsigned long' is generally a bad choice because it's u32 on 32-bit
platforms and u64 on 64-bit platforms.

Now, for syscall argument ABIs it's not a lethal mistake to make (as
compared to say ABI data structures), because syscall arguments have
their own types and width anyway, so any definition mistake can
usually be fixed after the fact.

Thanks,

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