Thread (9 messages) 9 messages, 3 authors, 2012-02-06

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help