From 7b5386ff6eb0a651cec293ceaae8f2f727afafe1 Mon Sep 17 00:00:00 2001 From: Thierry HUCHARD Date: Wed, 15 Dec 2021 22:36:54 +0200 Subject: [PATCH] Factoring of umax_pp_low functions concerning sys/io.h to sanei lib --- backend/Makefile.am | 3 + backend/umax_pp_low.c | 378 +--------------------------------- include/Makefile.am | 9 +- include/sane/sanei_directio.h | 71 +++++++ sanei/Makefile.am | 2 +- sanei/sanei_directio.c | 367 +++++++++++++++++++++++++++++++++ 6 files changed, 448 insertions(+), 382 deletions(-) create mode 100644 include/sane/sanei_directio.h create mode 100644 sanei/sanei_directio.c diff --git a/backend/Makefile.am b/backend/Makefile.am index e56e7f1f7..ea82c1011 100644 --- a/backend/Makefile.am +++ b/backend/Makefile.am @@ -1903,6 +1903,7 @@ libsane_umax_pp_la_LIBADD = $(COMMON_LIBS) \ ../sanei/sanei_init_debug.lo \ ../sanei/sanei_constrain_value.lo \ ../sanei/sanei_config.lo \ + ../sanei/sanei_directio.lo \ sane_strstatus.lo \ $(MATH_LIB) EXTRA_DIST += umax_pp.conf.in @@ -2001,6 +2002,7 @@ PRELOADABLE_BACKENDS_LIBS = \ ../sanei/sanei_tcp.lo \ ../sanei/sanei_udp.lo \ ../sanei/sanei_magic.lo \ + ../sanei/sanei_directio.lo \ $(LIBV4L_LIBS) $(MATH_LIB) \ $(IEEE1284_LIBS) \ $(TIFF_LIBS) \ @@ -2035,6 +2037,7 @@ PRELOADABLE_BACKENDS_DEPS = ../sanei/sanei_config2.lo \ ../sanei/sanei_tcp.lo \ ../sanei/sanei_udp.lo \ ../sanei/sanei_magic.lo \ + ../sanei/sanei_directio.lo \ $(SANEI_SANEI_JPEG_LO) endif nodist_libsane_la_SOURCES = dll-s.c diff --git a/backend/umax_pp_low.c b/backend/umax_pp_low.c index 35cefa959..d1f3c16de 100644 --- a/backend/umax_pp_low.c +++ b/backend/umax_pp_low.c @@ -53,9 +53,7 @@ #ifdef HAVE_SYS_TYPES_H #include #endif -#ifdef HAVE_SYS_IO_H -#include -#endif +#include "../include/sane/sanei_directio.h" #ifdef HAVE_UNISTD_H #include #endif @@ -85,380 +83,6 @@ #include #endif -/*************************************************/ -/* here we define sanei_inb/sanei_outb based on */ -/* OS dependent inb/outb definitions */ -/* SANE_INB is defined whenever a valid inb/outb */ -/* definition has been found */ -/* once all these work, it might be moved to */ -/* sanei_pio.c */ -/*************************************************/ - -#ifdef ENABLE_PARPORT_DIRECTIO - -#if (! defined SANE_INB ) && ( defined HAVE_SYS_HW_H ) /* OS/2 EMX case */ -#define SANE_INB 1 -static int -sanei_ioperm (int start, int length, int enable) -{ - if (enable) - return _portaccess (port, port + length - 1); - return 0; -} - -static unsigned char -sanei_inb (unsigned int port) -{ - return _inp8 (port) & 0xFF; -} - -static void -sanei_outb (unsigned int port, unsigned char value) -{ - _outp8 (port, value); -} - -static void -sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) -{ - _inps8 (port, (unsigned char *) addr, count); -} - -static void -sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) -{ - _inps32 (port, (unsigned long *) addr, count); -} - -static void -sanei_outsb (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - _outps8 (port, (unsigned char *) addr, count); -} - -static void -sanei_outsl (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - _outps32 (port, (unsigned long *) addr, count); -} -#endif /* OS/2 EMX case */ - - - -#if (! defined SANE_INB ) && ( defined HAVE_MACHINE_CPUFUNC_H ) /* FreeBSD case */ -#define SANE_INB 2 -static int -sanei_ioperm (int start, int length, int enable) -{ -#ifdef HAVE_I386_SET_IOPERM - return i386_set_ioperm (start, length, enable); -#else - int fd = 0; - - /* makes compilers happy */ - start = length + enable; - fd = open ("/dev/io", O_RDONLY); - if (fd > 0) - return 0; - return -1; -#endif -} - -static unsigned char -sanei_inb (unsigned int port) -{ - return inb (port); -} - -static void -sanei_outb (unsigned int port, unsigned char value) -{ - outb (port, value); -} - -static void -sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) -{ - insb (port, addr, count); -} - -static void -sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) -{ - insl (port, addr, count); -} - -static void -sanei_outsb (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - outsb (port, addr, count); -} - -static void -sanei_outsl (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - outsl (port, addr, count); -} -#endif /* FreeBSD case */ - - -/* linux GCC on i386 */ -#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( defined __i386__ ) -#define SANE_INB 3 - -static int -sanei_ioperm (int start, int length, int enable) -{ -#ifdef HAVE_IOPERM - return ioperm (start, length, enable); -#else - /* linux without ioperm ? hum ... */ - /* makes compilers happy */ - start = length + enable; - return 0; -#endif -} - -static unsigned char -sanei_inb (unsigned int port) -{ - return inb (port); -} - -static void -sanei_outb (unsigned int port, unsigned char value) -{ - outb (value, port); -} - -static void -sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) -{ - insb (port, addr, count); -} - -static void -sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) -{ - insl (port, addr, count); -} - -static void -sanei_outsb (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - outsb (port, addr, count); -} - -static void -sanei_outsl (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - /* oddly, 32 bit I/O are done with outsw instead of the expected outsl */ - outsw (port, addr, count); -} -#endif /* linux GCC on i386 */ - - -/* linux GCC non i386 */ -#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( ! defined __i386__ ) -#define SANE_INB 4 -static int -sanei_ioperm (int start, int length, int enable) -{ -#ifdef HAVE_IOPERM - return ioperm (start, length, enable); -#else - /* linux without ioperm ? hum ... */ - /* makes compilers happy */ - start = length + enable; - return 0; -#endif -} - -static unsigned char -sanei_inb (unsigned int port) -{ - return inb (port); -} - -static void -sanei_outb (unsigned int port, unsigned char value) -{ - outb (value, port); -} - -static void -sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) -{ - unsigned int i; - - for (i = 0; i < count; i++) - addr[i] = sanei_inb (port); -} - -static void -sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) -{ - unsigned int i; - - for (i = 0; i < count * 4; i++) - addr[i] = sanei_inb (port); -} - -static void -sanei_outsb (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - unsigned int i; - - for (i = 0; i < count; i++) - sanei_outb (port, addr[i]); -} - -static void -sanei_outsl (unsigned int port, const unsigned char *addr, - unsigned long count) -{ - unsigned int i; - - for (i = 0; i < count * 4; i++) - sanei_outb (port, addr[i]); -} -#endif /* linux GCC non i386 */ - - -/* ICC on i386 */ -#if ( ! defined SANE_INB ) && ( defined __INTEL_COMPILER ) && ( defined __i386__ ) -#define SANE_INB 5 -static int -sanei_ioperm (int start, int length, int enable) -{ -#ifdef HAVE_IOPERM - return ioperm (start, length, enable); -#else - /* ICC without ioperm() ... */ - /* makes compilers happy */ - start = length + enable; - return 0; -#endif -} -static unsigned char -sanei_inb (unsigned int port) -{ - unsigned char ret; - - __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port)); - return ret; -} - -static void -sanei_outb (unsigned int port, unsigned char value) -{ - __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port)); -} - -static void -sanei_insb (unsigned int port, void *addr, unsigned long count) -{ - __asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port), - "0" (addr), "1" (count)); -} - -static void -sanei_insl (unsigned int port, void *addr, unsigned long count) -{ - __asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port), - "0" (addr), "1" (count)); -} - -static void -sanei_outsb (unsigned int port, const void *addr, unsigned long count) -{ - __asm__ __volatile__ ("rep ; outsb":"=S" (addr), "=c" (count):"d" (port), - "0" (addr), "1" (count)); -} - -static void -sanei_outsl (unsigned int port, const void *addr, unsigned long count) -{ - __asm__ __volatile__ ("rep ; outsl":"=S" (addr), "=c" (count):"d" (port), - "0" (addr), "1" (count)); -} - -#endif /* ICC on i386 */ - -/* direct io requested, but no valid inb/oub */ -#if ( ! defined SANE_INB) && ( defined ENABLE_PARPORT_DIRECTIO ) -#warning "ENABLE_PARPORT_DIRECTIO cannot be used du to lack of inb/out definition" -#undef ENABLE_PARPORT_DIRECTIO -#endif - -#endif /* ENABLE_PARPORT_DIRECTIO */ -/* - * no inb/outb without --enable-parport-directio * - */ -#ifndef ENABLE_PARPORT_DIRECTIO -#define SANE_INB 0 -static int -sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length, - __sane_unused__ int enable) -{ - /* returns failure */ - return -1; -} - -static unsigned char -sanei_inb (__sane_unused__ unsigned int port) -{ - return 255; -} - -static void -sanei_outb (__sane_unused__ unsigned int port, - __sane_unused__ unsigned char value) -{ -} - -static void -sanei_insb (__sane_unused__ unsigned int port, - __sane_unused__ unsigned char *addr, - __sane_unused__ unsigned long count) -{ -} - -static void -sanei_insl (__sane_unused__ unsigned int port, - __sane_unused__ unsigned char *addr, - __sane_unused__ unsigned long count) -{ -} - -static void -sanei_outsb (__sane_unused__ unsigned int port, - __sane_unused__ const unsigned char *addr, - __sane_unused__ unsigned long count) -{ -} - -static void -sanei_outsl (__sane_unused__ unsigned int port, - __sane_unused__ const unsigned char *addr, - __sane_unused__ unsigned long count) -{ -} -#endif /* ENABLE_PARPORT_DIRECTIO is not defined */ - -/* we need either direct io or ppdev */ -#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H && ! defined HAVE_DEV_PPBUS_PPI_H -#define IO_SUPPORT_MISSING -#endif - - #include "umax_pp_low.h" #ifdef DMALLOC diff --git a/include/Makefile.am b/include/Makefile.am index c949491d5..f807e615c 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -11,8 +11,9 @@ EXTRA_DIST = lalloca.h lassert.h lgetopt.h md5.h font_6x11.h EXTRA_DIST += sane/config.h.in sane/sanei.h sane/sanei_ab306.h \ sane/sanei_access.h sane/sanei_auth.h sane/sanei_backend.h \ sane/sanei_cderror.h sane/sanei_codec_ascii.h sane/sanei_codec_bin.h \ - sane/sanei_config.h sane/sanei_debug.h sane/sanei_jinclude.h \ - sane/sanei_jpeg.h sane/sanei_lm983x.h sane/sanei_net.h sane/sanei_pa4s2.h \ - sane/sanei_pio.h sane/sanei_pp.h sane/sanei_pv8630.h sane/sanei_scsi.h \ - sane/sanei_tcp.h sane/sanei_thread.h sane/sanei_udp.h sane/sanei_usb.h \ + sane/sanei_config.h sane/sanei_debug.h sane/sanei_directio.h \ + sane/sanei_jinclude.h sane/sanei_jpeg.h sane/sanei_lm983x.h \ + sane/sanei_net.h sane/sanei_pa4s2.h sane/sanei_pio.h sane/sanei_pp.h \ + sane/sanei_pv8630.h sane/sanei_scsi.h sane/sanei_tcp.h \ + sane/sanei_thread.h sane/sanei_udp.h sane/sanei_usb.h \ sane/sanei_wire.h sane/sanei_magic.h sane/sanei_ir.h diff --git a/include/sane/sanei_directio.h b/include/sane/sanei_directio.h new file mode 100644 index 000000000..944605d1d --- /dev/null +++ b/include/sane/sanei_directio.h @@ -0,0 +1,71 @@ +#ifndef __SANEI_DIRECTIO_H__ +#define __SANEI_DIRECTIO_H__ + +#ifdef HAVE_SYS_IO_H +#include +#endif + +#ifdef ENABLE_PARPORT_DIRECTIO + +#if (! defined SANE_INB ) && ( defined HAVE_SYS_HW_H ) /* OS/2 EMX case */ +#define SANE_INB 1 +#endif /* OS/2 EMX case */ + + + +#if (! defined SANE_INB ) && ( defined HAVE_MACHINE_CPUFUNC_H ) /* FreeBSD case */ +#define SANE_INB 2 +#endif /* FreeBSD case */ + + +/* linux GCC on i386 */ +#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( defined __i386__ ) +#define SANE_INB 3 +#endif /* linux GCC on i386 */ + + +/* linux GCC non i386 */ +#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( ! defined __i386__ ) +#define SANE_INB 4 +#endif /* linux GCC non i386 */ + + +/* ICC on i386 */ +#if ( ! defined SANE_INB ) && ( defined __INTEL_COMPILER ) && ( defined __i386__ ) +#define SANE_INB 5 +#endif /* ICC on i386 */ + +/* direct io requested, but no valid inb/oub */ +#if ( ! defined SANE_INB) && ( defined ENABLE_PARPORT_DIRECTIO ) +#warning "ENABLE_PARPORT_DIRECTIO cannot be used du to lack of inb/out definition" +#undef ENABLE_PARPORT_DIRECTIO +#endif + +#endif /* ENABLE_PARPORT_DIRECTIO */ + +/* + * no inb/outb without --enable-parport-directio * + */ +#ifndef ENABLE_PARPORT_DIRECTIO +#define SANE_INB 0 +#endif /* ENABLE_PARPORT_DIRECTIO is not defined */ + +/* we need either direct io or ppdev */ +#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H && ! defined HAVE_DEV_PPBUS_PPI_H +#define IO_SUPPORT_MISSING +#endif + + +extern int sanei_ioperm (int start, int length, int enable); +extern unsigned char sanei_inb (unsigned int port); +extern void sanei_outb (unsigned int port, unsigned char value); +extern void sanei_insb (unsigned int port, unsigned char *addr, + unsigned long count); +extern void sanei_insl (unsigned int port, unsigned char *addr, + unsigned long count); +extern void sanei_outsb (unsigned int port, const unsigned char *addr, + unsigned long count); +extern void sanei_outsl (unsigned int port, const unsigned char *addr, + unsigned long count); + +#endif // __SANEI_DIRECTIO_H__ diff --git a/sanei/Makefile.am b/sanei/Makefile.am index 46d3ff476..30b9781ee 100644 --- a/sanei/Makefile.am +++ b/sanei/Makefile.am @@ -9,7 +9,7 @@ AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include \ noinst_LTLIBRARIES = libsanei.la -libsanei_la_SOURCES = sanei_ab306.c sanei_constrain_value.c \ +libsanei_la_SOURCES = sanei_directio.c sanei_ab306.c sanei_constrain_value.c \ sanei_init_debug.c sanei_net.c sanei_wire.c sanei_codec_ascii.c \ sanei_codec_bin.c sanei_scsi.c sanei_config.c sanei_config2.c \ sanei_pio.c sanei_pa4s2.c sanei_auth.c sanei_usb.c sanei_thread.c \ diff --git a/sanei/sanei_directio.c b/sanei/sanei_directio.c new file mode 100644 index 000000000..c95bb97fb --- /dev/null +++ b/sanei/sanei_directio.c @@ -0,0 +1,367 @@ +/*************************************************/ +/* here we define sanei_inb/sanei_outb based on */ +/* OS dependent inb/outb definitions */ +/* SANE_INB is defined whenever a valid inb/outb */ +/* definition has been found */ +/*************************************************/ + +#include "../include/sane/config.h" + +#include +#include +#include + +#include + +#include "../include/sane/sane.h" +#include "../include/sane/sanei.h" +#include "../include/sane/sanei_directio.h" + +#ifdef ENABLE_PARPORT_DIRECTIO + +#define TEST_SANE_INB(val) ( SANE_INB == val ) + +#if ( TEST_SANE_INB(1) ) /* OS/2 EMX case */ +int +sanei_ioperm (int start, int length, int enable) +{ + if (enable) + return _portaccess (port, port + length - 1); + return 0; +} + +unsigned char +sanei_inb (unsigned int port) +{ + return _inp8 (port) & 0xFF; +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ + _outp8 (port, value); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ + _inps8 (port, (unsigned char *) addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ + _inps32 (port, (unsigned long *) addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + _outps8 (port, (unsigned char *) addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + _outps32 (port, (unsigned long *) addr, count); +} +#endif /* OS/2 EMX case */ + + + +#if ( TEST_SANE_INB(2) ) /* FreeBSD case */ +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_I386_SET_IOPERM + return i386_set_ioperm (start, length, enable); +#else + int fd = 0; + + /* makes compilers happy */ + start = length + enable; + fd = open ("/dev/io", O_RDONLY); + if (fd > 0) + return 0; + return -1; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ + return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ + outb (port, value); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ + insb (port, addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ + insl (port, addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + outsb (port, addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + outsl (port, addr, count); +} +#endif /* FreeBSD case */ + + +/* linux GCC on i386 */ +#if ( TEST_SANE_INB(3) ) /* FreeBSD case */ + +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM + return ioperm (start, length, enable); +#else + /* linux without ioperm ? hum ... */ + /* makes compilers happy */ + start = length + enable; + return 0; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ + return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ + outb (value, port); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ + insb (port, addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ + insl (port, addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + outsb (port, addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + /* oddly, 32 bit I/O are done with outsw instead of the expected outsl */ + outsw (port, addr, count); +} +#endif /* linux GCC on i386 */ + + +/* linux GCC non i386 */ +#if ( TEST_SANE_INB(4) ) +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM + return ioperm (start, length, enable); +#else + /* linux without ioperm ? hum ... */ + /* makes compilers happy */ + start = length + enable; + return 0; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ + return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ + outb (value, port); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ + unsigned int i; + + for (i = 0; i < count; i++) + addr[i] = sanei_inb (port); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ + unsigned int i; + + for (i = 0; i < count * 4; i++) + addr[i] = sanei_inb (port); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + unsigned int i; + + for (i = 0; i < count; i++) + sanei_outb (port, addr[i]); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, + unsigned long count) +{ + unsigned int i; + + for (i = 0; i < count * 4; i++) + sanei_outb (port, addr[i]); +} +#endif /* linux GCC non i386 */ + + +/* ICC on i386 */ +#if ( TEST_SANE_INB(5) ) +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM + return ioperm (start, length, enable); +#else + /* ICC without ioperm() ... */ + /* makes compilers happy */ + start = length + enable; + return 0; +#endif +} +unsigned char +sanei_inb (unsigned int port) +{ + unsigned char ret; + + __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port)); + return ret; +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ + __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port)); +} + +void +sanei_insb (unsigned int port, void *addr, unsigned long count) +{ + __asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port), + "0" (addr), "1" (count)); +} + +void +sanei_insl (unsigned int port, void *addr, unsigned long count) +{ + __asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port), + "0" (addr), "1" (count)); +} + +void +sanei_outsb (unsigned int port, const void *addr, unsigned long count) +{ + __asm__ __volatile__ ("rep ; outsb":"=S" (addr), "=c" (count):"d" (port), + "0" (addr), "1" (count)); +} + +void +sanei_outsl (unsigned int port, const void *addr, unsigned long count) +{ + __asm__ __volatile__ ("rep ; outsl":"=S" (addr), "=c" (count):"d" (port), + "0" (addr), "1" (count)); +} + +#endif /* ICC on i386 */ + +#endif /* ENABLE_PARPORT_DIRECTIO */ +/* + * no inb/outb without --enable-parport-directio * + */ +#ifndef ENABLE_PARPORT_DIRECTIO +int +sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length, + __sane_unused__ int enable) +{ + /* returns failure */ + return -1; +} + +unsigned char +sanei_inb (__sane_unused__ unsigned int port) +{ + return 255; +} + +void +sanei_outb (__sane_unused__ unsigned int port, + __sane_unused__ unsigned char value) +{ +} + +void +sanei_insb (__sane_unused__ unsigned int port, + __sane_unused__ unsigned char *addr, + __sane_unused__ unsigned long count) +{ +} + +void +sanei_insl (__sane_unused__ unsigned int port, + __sane_unused__ unsigned char *addr, + __sane_unused__ unsigned long count) +{ +} + +void +sanei_outsb (__sane_unused__ unsigned int port, + __sane_unused__ const unsigned char *addr, + __sane_unused__ unsigned long count) +{ +} + +void +sanei_outsl (__sane_unused__ unsigned int port, + __sane_unused__ const unsigned char *addr, + __sane_unused__ unsigned long count) +{ +} +#endif /* ENABLE_PARPORT_DIRECTIO is not defined */