* backend/umax_pp_low.c: added O_NONBLOCK to flags when opening ppdev

character device, to get around hangs with 2.4.19 linux kernels in
	  pure EPP mode.
DEVEL_2_0_BRANCH-1
Stéphane Voltz 2002-10-23 05:55:14 +00:00
rodzic 50314950bd
commit aadf66461f
2 zmienionych plików z 18 dodań i 12 usunięć

Wyświetl plik

@ -1,3 +1,9 @@
2002-10-23 Stéphane Voltz <svoltz@wanadoo.fr>
* backend/umax_pp_low.c: added O_NONBLOCK to flags when opening ppdev
character device, to get around hangs with 2.4.19 linux kernels in
pure EPP mode.
2002-10-20 Henning Meier-Geinitz <henning@meier-geinitz.de> 2002-10-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
* README.linux: Added comment about DEC cc on Linux Alpha. * README.linux: Added comment about DEC cc on Linux Alpha.

Wyświetl plik

@ -433,7 +433,7 @@ sanei_umax_pp_InitPort (int port, char *name)
{ {
/* ppdev opening and configuration */ /* ppdev opening and configuration */
found = 0; found = 0;
fd = open (name, O_RDWR | O_NOCTTY); fd = open (name, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd < 0) if (fd < 0)
{ {
switch (errno) switch (errno)
@ -609,11 +609,11 @@ sanei_umax_pp_InitPort (int port, char *name)
#ifdef HAVE_IOPERM #ifdef HAVE_IOPERM
if (port < 0x400) if (port < 0x400)
{ {
if (ioperm (port, 8, 1) != 0) if (ioperm (port, 8, 1) != 0)
{ {
DBG (1, "ioperm could not gain access to 0x%X\n", port); DBG (1, "ioperm could not gain access to 0x%X\n", port);
return (0); return (0);
} }
} }
/* ECP i/o range */ /* ECP i/o range */
if (iopl (3) != 0) if (iopl (3) != 0)
@ -675,14 +675,14 @@ Outb (int port, int value)
case 2: case 2:
if (val & 0x20) if (val & 0x20)
{ {
rc = ioctl (fd, PPDATADIR, &val); rc = ioctl (fd, PPDATADIR, &val);
if (rc) if (rc)
DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n", DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n",
strerror (errno), __FILE__, __LINE__); strerror (errno), __FILE__, __LINE__);
} }
else else
{ {
rc = ioctl (fd, PPWCONTROL, &val); rc = ioctl (fd, PPWCONTROL, &val);
if (rc) if (rc)
DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n", DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n",
strerror (errno), __FILE__, __LINE__); strerror (errno), __FILE__, __LINE__);
@ -7791,7 +7791,7 @@ sanei_umax_pp_StartScan (int x, int y, int width, int height, int dpi,
0x41, 0xA0, 0x0A, 0x8B, 0x49, 0x2A, 0xE9, 0x68, 0xDF, 0x33, 0x1A, 0x00, 0x41, 0xA0, 0x0A, 0x8B, 0x49, 0x2A, 0xE9, 0x68, 0xDF, 0x33, 0x1A, 0x00,
-1 -1
}; };
#define UMAX_PP_DANGEROUS_EXPERIMENT 666
#ifdef UMAX_PP_DANGEROUS_EXPERIMENT #ifdef UMAX_PP_DANGEROUS_EXPERIMENT
FILE *f = NULL; FILE *f = NULL;
char line[1024], *ptr; char line[1024], *ptr;
@ -8204,9 +8204,9 @@ sanei_umax_pp_StartScan (int x, int y, int width, int height, int dpi,
for (i = 0; (i < max) && ((ptr - line) < strlen (line)); i++) for (i = 0; (i < max) && ((ptr - line) < strlen (line)); i++)
{ {
if (ptr[0] != '-') if (ptr[0] != '-')
{ {
sscanf (ptr, "%X", base + i); sscanf (ptr, "%X", base + i);
} }
ptr += 3; ptr += 3;
} }
} }