From ce742e02cc392aa361586ece079d55799e8dec0f Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Fri, 6 Jul 2018 22:17:34 +0100 Subject: [PATCH] input: rework the input layer concept a bit - Don't write a length byte as we only report one message per read - Handle signal exits properly - Don't clash with networking --- Kernel/devinput.c | 13 +++++++++---- Kernel/devsys.c | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Kernel/devinput.c b/Kernel/devinput.c index 3e843cc2..49831600 100644 --- a/Kernel/devinput.c +++ b/Kernel/devinput.c @@ -13,16 +13,21 @@ int inputdev_read(uint8_t flag) while(1) { - s = platform_input_read(m + 1); + s = platform_input_read(m); if (s > 0) { - *m = s; - udata.u_count = min(udata.u_count, s + 1); - return uput(m, udata.u_base, udata.u_count); + udata.u_count = min(udata.u_count, s); + if (uput(m, udata.u_base, udata.u_count)) + return -1; + return udata.u_count; } if (s == 0 && (flag & O_NDELAY)) { udata.u_error = EAGAIN; return -1; } + if (chksigs()) { + udata.u_error = EINTR; + return -1; + } if (s < 0) return -1; platform_input_wait(); diff --git a/Kernel/devsys.c b/Kernel/devsys.c index 7e330f7b..81403860 100644 --- a/Kernel/devsys.c +++ b/Kernel/devsys.c @@ -65,7 +65,7 @@ int sys_read(uint8_t minor, uint8_t rawflag, uint8_t flag) return netdev_read(flag); #endif #ifdef CONFIG_INPUT - case 65: + case 66: return inputdev_read(flag); #endif default: -- 2.34.1