Re: [PATCH v3] Input: Add EVIOC mechanism for MT slots
From: Henrik Rydberg <hidden>
Date: 2012-02-05 19:39:21
Also in:
lkml
quoted
Besides leaving a possible giant stack crash in your code, it assumes memory is somehow magically allocated. Not good practise in low-level programming. You wouldn't use a template this way, would you?No, which is why I think this interface is bad. I should be able to dynamically set the size of the array, but it's not possible with this interface.
It is possible (using num_slots == 0 or creating your own struct), but not ideal, granted. The patch serves the purpose of definining the binary interface, the rest is up to userland.
I think the implementation is fine in terms of how the plumbing works. I
just don't think this macro should be included. Make the user create the
struct themselves:
In linux/input.h:
struct input_mt_request {
__u32 code;
__s32 values[];
};The above (the first) version is not ideal either, since it cannot be used as it is.
It could be argued that we should leave the macro around for people who want to statically define the size of the request, but I think that is leading them down the wrong path. It's easier, but it will lead to broken code if you pick the wrong size.
Rather than creating both a suboptimal static and a suboptimal dynamic version, removing the struct altogether is tempting. All that is really needed is a clear definition of the binary interface. The rest can easily be set up in userland, using whatever method is preferred. Thanks. Henrik