-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HID: uhid: add internal message buffer
When receiving messages from the HID subsystem, we need to process them and store them in an internal buffer so user-space can read() on the char device to retrieve the messages. This adds a static buffer for 32 messages to each uhid device. Each message is dynamically allocated so the uhid_device structure does not get too big. uhid_queue() adds a message to the buffer. If the buffer is full, the message is discarded. uhid_queue_event() is an helper for messages without payload. This also adds a public header: uhid.h. It contains the declarations for the user-space API. It is built around "struct uhid_event" which contains a type field which specifies the event type and each event can then add a variable-length payload. For now, there is only a dummy event but later patches will add new event types and payloads. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
- Loading branch information
David Herrmann
authored and
Jiri Kosina
committed
Jun 18, 2012
1 parent
1ccd7a2
commit ace3d86
Showing
3 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#ifndef __UHID_H_ | ||
#define __UHID_H_ | ||
|
||
/* | ||
* User-space I/O driver support for HID subsystem | ||
* Copyright (c) 2012 David Herrmann | ||
*/ | ||
|
||
/* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the Free | ||
* Software Foundation; either version 2 of the License, or (at your option) | ||
* any later version. | ||
*/ | ||
|
||
/* | ||
* Public header for user-space communication. We try to keep every structure | ||
* aligned but to be safe we also use __attribute__((__packed__)). Therefore, | ||
* the communication should be ABI compatible even between architectures. | ||
*/ | ||
|
||
#include <linux/input.h> | ||
#include <linux/types.h> | ||
|
||
enum uhid_event_type { | ||
UHID_DUMMY, | ||
}; | ||
|
||
struct uhid_event { | ||
__u32 type; | ||
} __attribute__((__packed__)); | ||
|
||
#endif /* __UHID_H_ */ |