aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/evdev/evdev_private.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2018-11-04 15:49:06 +0000
committerDimitry Andric <dim@FreeBSD.org>2018-11-04 15:49:06 +0000
commit2a22df74e9fceaffd62ee437de08383d6cf8cfe0 (patch)
treed4887f0719a9a8b98c787012703fa65e21554dc8 /sys/dev/evdev/evdev_private.h
parent689486003b2d4637b61b61d5a30bf98fb11ddc16 (diff)
parent6d080f8660b370f83eb10a840b6d14b6dd84a1de (diff)
Notes
Diffstat (limited to 'sys/dev/evdev/evdev_private.h')
-rw-r--r--sys/dev/evdev/evdev_private.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/dev/evdev/evdev_private.h b/sys/dev/evdev/evdev_private.h
index 05206a9d09bd..71bdecaa57be 100644
--- a/sys/dev/evdev/evdev_private.h
+++ b/sys/dev/evdev/evdev_private.h
@@ -117,6 +117,10 @@ struct evdev_dev
bitstr_t bit_decl(ev_sw_states, SW_CNT);
bool ev_report_opened;
+ /* KDB state: */
+ bool ev_kdb_active;
+ bitstr_t bit_decl(ev_kdb_led_states, LED_CNT);
+
/* Multitouch protocol type B state: */
struct evdev_mt * ev_mt;
@@ -132,9 +136,14 @@ struct evdev_dev
LIST_HEAD(, evdev_client) ev_clients;
};
+#define SYSTEM_CONSOLE_LOCK &Giant
+
#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)
+#define EVDEV_LOCK_ASSERT(evdev) do { \
+ if ((evdev)->ev_lock != SYSTEM_CONSOLE_LOCK) \
+ mtx_assert((evdev)->ev_lock, MA_OWNED); \
+} while (0)
#define EVDEV_ENTER(evdev) do { \
if ((evdev)->ev_lock_type == EV_LOCK_INTERNAL) \
EVDEV_LOCK(evdev); \
@@ -185,6 +194,7 @@ int evdev_cdev_destroy(struct evdev_dev *);
bool evdev_event_supported(struct evdev_dev *, uint16_t);
void evdev_set_abs_bit(struct evdev_dev *, uint16_t);
void evdev_set_absinfo(struct evdev_dev *, uint16_t, struct input_absinfo *);
+void evdev_restore_after_kdb(struct evdev_dev *);
/* Client interface: */
int evdev_register_client(struct evdev_dev *, struct evdev_client *);