[PATCH 05/11] Modify FREEBSD USB keyboard drivers for use in RTEMS

Kevin Kirspel kevin-kirspel at idexx.com
Mon May 15 17:26:32 UTC 2017


---
 freebsd/sys/dev/usb/input/ukbd.c            | 6 ++++++
 rtemsbsd/include/rtems/bsd/local/opt_kbd.h  | 1 +
 rtemsbsd/include/rtems/bsd/local/opt_ukbd.h | 1 +
 3 files changed, 8 insertions(+)
 create mode 100644 rtemsbsd/include/rtems/bsd/local/opt_kbd.h
 create mode 100644 rtemsbsd/include/rtems/bsd/local/opt_ukbd.h

diff --git a/freebsd/sys/dev/usb/input/ukbd.c b/freebsd/sys/dev/usb/input/ukbd.c
index 5c6f558..2d64ae2 100644
--- a/freebsd/sys/dev/usb/input/ukbd.c
+++ b/freebsd/sys/dev/usb/input/ukbd.c
@@ -447,7 +447,11 @@ ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait)
 			 * Give USB threads a chance to run.  Note that
 			 * kern_yield performs DROP_GIANT + PICKUP_GIANT.
 			 */
+#ifndef __rtems__
 			kern_yield(PRI_UNCHANGED);
+#else /* __rtems__ */
+			sched_yield();
+#endif /* __rtems__ */
 			if (!wait)
 				break;
 		}
@@ -1994,8 +1998,10 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
 	/*
 	 * XXX Check if someone is calling us from a critical section:
 	 */
+#ifndef __rtems__
 	if (curthread->td_critnest != 0)
 		return (EDEADLK);
+#endif /* __rtems__ */
 
 	/*
 	 * XXX KDGKBSTATE, KDSKBSTATE and KDSETLED can be called from any
diff --git a/rtemsbsd/include/rtems/bsd/local/opt_kbd.h b/rtemsbsd/include/rtems/bsd/local/opt_kbd.h
new file mode 100644
index 0000000..a068675
--- /dev/null
+++ b/rtemsbsd/include/rtems/bsd/local/opt_kbd.h
@@ -0,0 +1 @@
+#define KBD_INSTALL_CDEV 1
diff --git a/rtemsbsd/include/rtems/bsd/local/opt_ukbd.h b/rtemsbsd/include/rtems/bsd/local/opt_ukbd.h
new file mode 100644
index 0000000..936ffd8
--- /dev/null
+++ b/rtemsbsd/include/rtems/bsd/local/opt_ukbd.h
@@ -0,0 +1 @@
+/* EMPTY */
-- 
1.9.1



More information about the devel mailing list