]> git.corax.cc Git - corax/commitdiff
sys/io: Make _handle_msg() handle CXIO_READ and CXIO_WRITE requests
authorMatthias Kruk <m@m10k.eu>
Sat, 15 Aug 2020 06:24:43 +0000 (15:24 +0900)
committerMatthias Kruk <m@m10k.eu>
Sat, 15 Aug 2020 06:24:43 +0000 (15:24 +0900)
sys/io/Makefile
sys/io/main.c

index 2b000672b621f6768e320d3c3d007fadcbe26d0d..d722073bf52f57690fc249e08bb51ac323e2a305 100644 (file)
@@ -1,4 +1,4 @@
-OBJECTS = main.o proc.o file.o filedesc.o pipe.o
+OBJECTS = main.o proc.o file.o filedesc.o pipe.o read.o write.o
 OUTPUT = io
 MODULE = io.ko
 
index ab19875b4f72bd589bbf21c068f15bd578d5bcee..3e2b2fb99ebab8e8513c803fd63cb26e6d913dc0 100644 (file)
@@ -6,15 +6,31 @@
 #include <string.h>
 #include "pipe.h"
 
-static int _handle_msg(struct cxmsg *msg)
+ssize_t sys_read(const pid_t, struct cxio_read*);
+ssize_t sys_write(const pid_t, struct cxio_write*);
+
+static void _handle_msg(struct cxmsg *msg)
 {
-       int ret_val;
        char str[128];
        int len;
 
        switch(msg->cm_type) {
        case CXIO_READ:
+               memset(str, 0, sizeof(str));
+               len = snprintf(str, sizeof(str), "CXIO_READ from pid %u\n", msg->cm_src);
+               debug(str, len);
+
+               sys_read(msg->cm_src, (struct cxio_read*)msg->cm_data);
+               break;
+
        case CXIO_WRITE:
+               memset(str, 0, sizeof(str));
+               len = snprintf(str, sizeof(str), "CXIO_WRITE from pid %u\n", msg->cm_src);
+               debug(str, len);
+
+               sys_write(msg->cm_src, (struct cxio_write*)msg->cm_data);
+               break;
+
        case CXIO_OPEN:
        case CXIO_CLOSE:
        default:
@@ -22,20 +38,18 @@ static int _handle_msg(struct cxmsg *msg)
                len = snprintf(str, sizeof(str), "Unhandled message TYPE=0x%x SRC=%u\n",
                               msg->cm_type, msg->cm_src);
                debug(str, len);
-
-               ret_val = -ENOSYS;
                break;
 
        case CXIO_PIPE:
-               sys_pipe(msg->cm_src, (struct cxio_pipe*)msg->cm_data);
                memset(str, 0, sizeof(str));
-               len = snprintf(str, sizeof(str), "CXIO_PIPE from %u\n", msg->cm_src);
+               len = snprintf(str, sizeof(str), "CXIO_PIPE from pid %u\n", msg->cm_src);
                debug(str, len);
-               ret_val = -ENOSYS;
+
+               sys_pipe(msg->cm_src, (struct cxio_pipe*)msg->cm_data);
                break;
        }
 
-       return(ret_val);
+       return;
 }
 
 int main(int argc, char *argv[])