summaryrefslogtreecommitdiffstats
path: root/sys/dev/evdev/evdev_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/evdev/evdev_private.h')
-rw-r--r--sys/dev/evdev/evdev_private.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/dev/evdev/evdev_private.h b/sys/dev/evdev/evdev_private.h
index 8e44ae5..b3de1bf 100644
--- a/sys/dev/evdev/evdev_private.h
+++ b/sys/dev/evdev/evdev_private.h
@@ -71,6 +71,12 @@ enum evdev_clock_id
EV_CLOCK_BOOTTIME /* monotonic, suspend-awared */
};
+enum evdev_lock_type
+{
+ EV_LOCK_INTERNAL = 0, /* Internal evdev mutex */
+ EV_LOCK_MTX, /* Driver`s mutex */
+};
+
struct evdev_dev
{
char ev_name[NAMELEN];
@@ -78,6 +84,8 @@ struct evdev_dev
char ev_serial[NAMELEN];
struct cdev * ev_cdev;
int ev_unit;
+ enum evdev_lock_type ev_lock_type;
+ struct mtx * ev_lock;
struct mtx ev_mtx;
struct input_id ev_id;
struct evdev_client * ev_grabber;
@@ -116,16 +124,16 @@ struct evdev_dev
uint64_t ev_report_count;
/* Parent driver callbacks: */
- struct evdev_methods * ev_methods;
+ const struct evdev_methods * ev_methods;
void * ev_softc;
LIST_ENTRY(evdev_dev) ev_link;
LIST_HEAD(, evdev_client) ev_clients;
};
-#define EVDEV_LOCK(evdev) mtx_lock(&(evdev)->ev_mtx)
-#define EVDEV_UNLOCK(evdev) mtx_unlock(&(evdev)->ev_mtx)
-#define EVDEV_LOCK_ASSERT(evdev) mtx_assert(&(evdev)->ev_mtx, MA_OWNED)
+#define EVDEV_LOCK(evdev) mtx_lock((evdev)->ev_lock)
+#define EVDEV_UNLOCK(evdev) mtx_unlock((evdev)->ev_lock)
+#define EVDEV_LOCK_ASSERT(evdev) mtx_assert((evdev)->ev_lock, MA_OWNED)
struct evdev_client
{
@@ -184,6 +192,7 @@ void evdev_set_last_mt_slot(struct evdev_dev *, int32_t);
int32_t evdev_get_mt_value(struct evdev_dev *, int32_t, int16_t);
void evdev_set_mt_value(struct evdev_dev *, int32_t, int16_t, int32_t);
void evdev_send_mt_compat(struct evdev_dev *);
+void evdev_send_mt_autorel(struct evdev_dev *);
/* Utility functions: */
void evdev_client_dumpqueue(struct evdev_client *);
OpenPOWER on IntegriCloud