Re: [PULL] Wrapper macros for struct task_struct and struct mm_struct cpumask transition

From: Rusty Russell
Date: Thu Mar 12 2009 - 05:13:25 EST


On Thursday 12 March 2009 18:07:09 Andrew Morton wrote:
> On Thu, 12 Mar 2009 17:45:22 +1030 Rusty Russell <rusty@xxxxxxxxxxxxxxx> wrote:
...
> Please prefer to put the patches in the email if practical? More
> eyeballs and all that.

Hmm, yes. Is there a preferred way of doing that with git request-pull?
Or just append the diff?

> : +/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
> : +#define mm_cpumask(mm) (&(mm)->cpu_vm_mask)
> : +
...
> It would be pretty perverse to run tsk_cpumask() against a `struct
> cpuset*', but your proposed implementation would merrily permit that
> mistake.
>
> Can we write the kernel in C please??

You mean use an inline? No, it's a bad idea for two reasons. The minor
reason is that this macro is a temporary so it makes more sense to fix the
final version.

But the major one is const correctness. Macros give a const value for
const input. We can enhance the macro to check, but that's even uglier:

static inline int check_is_task_struct(const struct task_struct *t) { }
#define tsk_cpumask(t) (sizeof(check_is_task_struct(t)), &(t)->cpu_vm_mask)

> yup, the patches are quite safe and mergeable. And if they'd been in the
> email body, Linus might have seen that and pulled them ;)

Probably not, as that's not what he complained about last time. He might have
been enlightened by the commit messages tho.

Cheers,
Rusty.
--
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/