linux-user: Add support for KD...LED ioctls
authorCédric VINCENT <cedric.vincent@st.com>
Wed, 29 Jun 2011 13:09:09 +0000 (15:09 +0200)
committerRiku Voipio <riku.voipio@linaro.org>
Mon, 11 Jul 2011 13:06:16 +0000 (16:06 +0300)
DirectFB-1.0 uses at least one of the four added ioctls, and the three
others were added for completeness.  This patch was validated with the
program "setleds" and the following Makefile:

    SETLEDS_INIT  = setleds -v -num -caps -scroll
    SETLEDS_TESTS = sh -c ' \
setleds -v +num +caps +scroll; \
setleds -v -num -caps -scroll; \
setleds -v +num -caps -scroll; \
setleds -v +num +caps -scroll; \
setleds -v +num +caps +scroll; \
setleds -v -num +caps +scroll; \
setleds -v -num -caps +scroll; \
setleds -v -num -caps -scroll'

    SETLEDS_HOST = setleds
    SETLEDS_QEMU = "SETLEDS_QEMU not set"

    .PHONY: setleds_tests
    setleds_tests:
rm -f setleds.host setleds.target
$(SETLEDS_INIT:setleds=$(SETLEDS_HOST))
$(SETLEDS_TESTS:setleds=$(SETLEDS_HOST)) >> setleds.host
$(SETLEDS_INIT:setleds=$(SETLEDS_QEMU))
$(SETLEDS_TESTS:setleds=$(SETLEDS_QEMU)) >> setleds.target
cmp setleds.host setleds.target

Signed-off-by: Cédric VINCENT <cedric.vincent@st.com>
Cc: Riku Voipio <riku.voipio@iki.fi>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/ioctls.h
linux-user/syscall_defs.h

index 42b3ae3..68418e4 100644 (file)
      IOCTL(KDSKBMODE, 0, TYPE_INT)
      IOCTL(KDGKBENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbentry)))
      IOCTL(KDGKBSENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbsentry)))
+     IOCTL(KDGKBLED, 0, TYPE_INT)
+     IOCTL(KDSKBLED, 0, TYPE_INT)
+     IOCTL(KDGETLED, 0, TYPE_INT)
+     IOCTL(KDSETLED, 0, TYPE_INT)
 
      IOCTL(BLKROSET, IOC_W, MK_PTR(TYPE_INT))
      IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
index 04c268d..2b74547 100644 (file)
@@ -708,6 +708,10 @@ struct target_pollfd {
 #define TARGET_KDSKBMODE       0x4b45
 #define TARGET_KDGKBENT               0x4B46   /* gets one entry in translation table */
 #define TARGET_KDGKBSENT       0x4B48  /* gets one function key string entry */
+#define TARGET_KDGKBLED        0x4B64  /* get led flags (not lights) */
+#define TARGET_KDSKBLED        0x4B65  /* set led flags (not lights) */
+#define TARGET_KDGETLED        0x4B31  /* return current led state */
+#define TARGET_KDSETLED        0x4B32  /* set led state [lights, not flags] */
 
 #define TARGET_SIOCATMARK      0x8905