From f56b66b49b5a1e02b72bc7aa70f151f88b99c707 Mon Sep 17 00:00:00 2001 From: Brett Gordon Date: Fri, 3 Jun 2016 09:07:24 -0400 Subject: [PATCH] coco3: add ioctl for dw_transaction. --- Kernel/dev/devdw.c | 14 ++++++++++++++ Kernel/dev/devdw.h | 1 + Kernel/platform-coco3/devices.c | 2 +- Library/libs/Makefile.6809 | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Kernel/dev/devdw.c b/Kernel/dev/devdw.c index c83e37a2..4ddca244 100644 --- a/Kernel/dev/devdw.c +++ b/Kernel/dev/devdw.c @@ -2,6 +2,7 @@ #include #include #include +#include #define DW_READ 0 #define DW_WRITE 1 @@ -106,3 +107,16 @@ int dw_write(uint8_t minor, uint8_t rawflag, uint8_t flag) return dw_transfer(minor, false, rawflag); } +int dw_ioctl(uint8_t minor, uarg_t request, char *data) +{ + struct dw_trans s; + used( minor ); + + if( request != DRIVEWIREC_TRANS ) + return -1; + if( uget( data, &s, sizeof(struct dw_trans) ) ) + return -1; + + return dw_transaction( s.sbuf, s.sbufz, s.rbuf, s.rbufz, 1 ); + +} diff --git a/Kernel/dev/devdw.h b/Kernel/dev/devdw.h index 3ec0a00e..5ef7275e 100644 --- a/Kernel/dev/devdw.h +++ b/Kernel/dev/devdw.h @@ -5,6 +5,7 @@ int dw_read(uint8_t minor, uint8_t rawflag, uint8_t flag); int dw_write(uint8_t minor, uint8_t rawflag, uint8_t flag); int dw_open(uint8_t minor, uint16_t flag); +int dw_ioctl(uint8_t minor, uarg_t request, char *data); /* low level interface */ uint8_t dw_reset(void); diff --git a/Kernel/platform-coco3/devices.c b/Kernel/platform-coco3/devices.c index 5923b2d1..1d5ae7aa 100644 --- a/Kernel/platform-coco3/devices.c +++ b/Kernel/platform-coco3/devices.c @@ -29,7 +29,7 @@ struct devsw dev_tab[] = /* The device driver switch table */ { nxio_open, no_close, no_rdwr, no_rdwr, no_ioctl }, { nxio_open, no_close, no_rdwr, no_rdwr, no_ioctl }, /* /dev/dw Drivewire */ - { dw_open, no_close, dw_read, dw_write, no_ioctl }, + { dw_open, no_close, dw_read, dw_write, dw_ioctl }, }; bool validdev(uint16_t dev) diff --git a/Library/libs/Makefile.6809 b/Library/libs/Makefile.6809 index 81d3964f..878e22c2 100644 --- a/Library/libs/Makefile.6809 +++ b/Library/libs/Makefile.6809 @@ -8,7 +8,7 @@ CC_OPT = -c -Os -I../include -I../include/6502 CC_NOOPT = $(CC_OPT) ASM_OPT = -o # copied in from kernel tree -KRN_HEADERS = userstructs.h +KRN_HEADERS = userstructs.h drivewire.h KRN_HEADERS_SRC = $(addprefix ../../Kernel/include/,$(KRN_HEADERS)) KRN_HEADERS_COPY = $(addprefix ../include/sys/,$(KRN_HEADERS)) SRC_CRT0 = crt0_$(PLATFORM).s crt0nostdio_$(PLATFORM).s -- 2.34.1