[LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes

Cyril Hrubis chrubis@suse.cz
Tue Apr 8 18:17:45 CEST 2025


Removes support for obsolete UNIXes CRAY, sgi, etc.

Also removes the UCLIBC ifdefs that disabled most of the code because
aio is not supported on UCLIBC.

Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
 lib/tlibio.c | 566 ++-------------------------------------------------
 1 file changed, 14 insertions(+), 552 deletions(-)

diff --git a/lib/tlibio.c b/lib/tlibio.c
index ed82a85b4..451244525 100644
--- a/lib/tlibio.c
+++ b/lib/tlibio.c
@@ -53,15 +53,6 @@
  *  int  lio_read_buffer(int fd, int method, char *buffer, int size,
  *						char **errmsg, long wrd);
  *
- *  #ifdef CRAY
- *  int  lio_wait4asyncio(int method, int fd, struct iosw **statptr)
- *  int  lio_check_asyncio(char *io_type, int size, struct iosw *status)
- *  #endif
- *  #ifdef sgi
- *  int  lio_wait4asyncio(int method, int fd, aiocb_t *aiocbp)
- *  int  lio_check_asyncio(char *io_type, int size, aiocb_t *aiocbp, int method)
- *  #endif
- *
  *  int  lio_parse_io_arg1(char *string)
  *  void lio_help1(char *prefix);
  *
@@ -78,12 +69,9 @@
  *
  */
 
-#ifdef __linux__
-#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
-#endif
 #define _LARGEFILE64_SOURCE
-#endif
+
 #include "config.h"
 #include <stdio.h>
 #include <ctype.h>
@@ -98,20 +86,9 @@
 #include <sys/file.h>
 #include <signal.h>
 #include <stdint.h>
-#ifdef CRAY
-#include <sys/secparm.h>
-#include <sys/iosw.h>
-#include <sys/listio.h>
-#else
-/* for linux or sgi */
 #include <sys/uio.h>		/* readv(2)/writev(2) */
 #include <string.h>
-#endif
-#if defined(__linux__) || defined(__sun) || defined(__hpux) || defined(_AIX)
-#ifndef __UCLIBC__
 #include <aio.h>
-#endif
-#endif
 #include <stdlib.h>		/* atoi, abs */
 
 #include "tlibio.h"		/* defines LIO* macros */
@@ -121,15 +98,6 @@
 #define PATH_MAX	MAXPATHLEN
 #endif
 
-#if 0				/* disabled until it's needed -- roehrich 6/11/97 */
-#define BUG1_workaround	1	/* Work around a condition where aio_return gives
-				 * a value of zero but there is no errno followup
-				 * and the read/write operation actually did its
-				 * job.   spr/pv 705244
-				 */
-#endif
-
-
 /*
  * Define the structure as used in lio_parse_arg1 and lio_help1
  */
@@ -546,23 +514,11 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 	char *io_type;		/* Holds string of type of io */
 	int omethod = method;
 	int listio_cmd;		/* Holds the listio/lio_listio cmd */
-#ifdef  CRAY
-	struct listreq request;	/* Used when a listio is wanted */
-	struct iosw status, *statptr[1];
-#else
-	/* for linux or sgi */
 	struct iovec iov;	/* iovec for writev(2) */
-#endif
-#if defined (sgi)
-	aiocb_t aiocbp;		/* POSIX aio control block */
-	aiocb_t *aiolist[1];	/* list of aio control blocks for lio_listio */
-	off64_t poffset;	/* pwrite(2) offset */
-#endif
-#if defined(__linux__) && !defined(__UCLIBC__)
 	struct aiocb aiocbp;	/* POSIX aio control block */
 	struct aiocb *aiolist[1];	/* list of aio control blocks for lio_listio */
 	off64_t poffset;	/* pwrite(2) offset */
-#endif
+
 	/*
 	 * If LIO_RANDOM bit specified, get new method randomly.
 	 */
@@ -580,39 +536,23 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 		*errmsg = Errormsg;
 
 	Rec_signal = Received_signal;	/* get the current number of signals received */
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	Rec_callback = Received_callback;	/* get the current number of callbacks received */
-#endif
 
-#ifdef  CRAY
-	memset(&status, 0x00, sizeof(struct iosw));
-	memset(&request, 0x00, sizeof(struct listreq));
-	statptr[0] = &status;
-#else
-	/* for linux or sgi */
 	memset(&iov, 0x00, sizeof(struct iovec));
 	iov.iov_base = buffer;
 	iov.iov_len = size;
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
-#if defined(sgi)
-	memset(&aiocbp, 0x00, sizeof(aiocb_t));
-#else
+
 	memset(&aiocbp, 0x00, sizeof(struct aiocb));
-#endif
+
 	aiocbp.aio_fildes = fd;
 	aiocbp.aio_nbytes = size;
 	aiocbp.aio_buf = buffer;
 /*    aiocbp.aio_offset = lseek( fd, 0, SEEK_CUR ); -- set below */
 	aiocbp.aio_sigevent.sigev_notify = SIGEV_NONE;
 	aiocbp.aio_sigevent.sigev_signo = 0;
-#ifdef sgi
-	aiocbp.aio_sigevent.sigev_func = NULL;
-	aiocbp.aio_sigevent.sigev_value.sival_int = 0;
-#elif defined(__linux__) && !defined(__UCLIBC__)
 	aiocbp.aio_sigevent.sigev_notify_function = NULL;
 	aiocbp.aio_sigevent.sigev_notify_attributes = 0;
-#endif
+
 	aiolist[0] = &aiocbp;
 
 	if ((ret = lseek(fd, 0, SEEK_CUR)) == -1) {
@@ -646,13 +586,10 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 			return -errno;
 		}
 	}
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
+
 	poffset = (off64_t) ret;
-#endif
 	aiocbp.aio_offset = ret;
 
-#endif
-
 	/*
 	 * If the LIO_USE_SIGNAL bit is not set, only use the signal
 	 * if the LIO_WAIT_SIGPAUSE or the LIO_WAIT_SIGACTIVE bits are bit.
@@ -663,10 +600,8 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 
 		sig = 0;	/* ignore signal parameter */
 	}
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	if (sig && (method & LIO_WAIT_CBTYPES))
 		sig = 0;	/* ignore signal parameter */
-#endif
 
 	/*
 	 * only setup signal hander if sig was specified and
@@ -677,26 +612,10 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 	 */
 
 	if (sig && (method & LIO_WAIT_SIGTYPES)) {
-#ifdef CRAY
-		sigctl(SCTL_REG, sig, lio_async_signal_handler);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		aiocbp.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
 		aiocbp.aio_sigevent.sigev_signo = sig;
 		sigset(sig, lio_async_signal_handler);
-#endif /* sgi */
-	}
-#if defined(sgi)
-	else if (method & LIO_WAIT_CBTYPES) {
-		/* sival_int just has to be something that I can use
-		 * to identify the callback, and "size" happens to be handy...
-		 */
-		aiocbp.aio_sigevent.sigev_notify = SIGEV_CALLBACK;
-		aiocbp.aio_sigevent.sigev_func = lio_async_callback_handler;
-		aiocbp.aio_sigevent.sigev_value.sival_int = size;
 	}
-#endif
-#if defined(__linux__) && !defined(__UCLIBC__)
 	else if (method & LIO_WAIT_CBTYPES) {
 		/* sival_int just has to be something that I can use
 		 * to identify the callback, and "size" happens to be handy...
@@ -707,7 +626,7 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 		aiocbp.aio_sigevent.sigev_notify_attributes =
 		    (void *)(uintptr_t) size;
 	}
-#endif
+
 	/*
 	 * Determine the system call that will be called and produce
 	 * the string of the system call and place it in Lio_SysCall.
@@ -765,27 +684,6 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 	}
 
 	else if (method & LIO_IO_ASYNC) {
-#ifdef CRAY
-		sprintf(Lio_SysCall,
-			"writea(%d, buf, %d, &status, %d)", fd, size, sig);
-		io_type = "writea";
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if ((ret = writea(fd, buffer, size, &status, sig)) == -1) {
-			sprintf(Errormsg,
-				"%s/%d writea(%d, buf, %d, &stat, %d) ret:-1, errno=%d %s",
-				__FILE__, __LINE__,
-				fd, size, sig, errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		sprintf(Lio_SysCall,
 			"aio_write(fildes=%d, buf, nbytes=%d, signo=%d)", fd,
 			size, sig);
@@ -807,53 +705,9 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 				sigrelse(sig);
 			return -errno;
 		}
-#endif
 	}
 	/* LIO_IO_ASYNC */
 	else if (method & LIO_IO_SLISTIO) {
-#ifdef CRAY
-		request.li_opcode = LO_WRITE;
-		request.li_fildes = fd;
-		request.li_buf = buffer;
-		request.li_nbyte = size;
-		request.li_status = &status;
-		request.li_signo = sig;
-		request.li_nstride = 0;
-		request.li_filstride = 0;
-		request.li_memstride = 0;
-
-		listio_cmd = LC_WAIT;
-		io_type = "listio(2) sync write";
-
-		sprintf(Lio_SysCall,
-			"listio(LC_WAIT, &req, 1) LO_WRITE, fd:%d, nbyte:%d",
-			fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if (listio(listio_cmd, &request, 1) == -1) {
-			sprintf(Errormsg,
-				"%s/%d %s failed, fd:%d, nbyte:%d errno=%d %s",
-				__FILE__, __LINE__, Lio_SysCall, fd, size,
-				errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-
-		if (Debug_level > 1)
-			printf("DEBUG %s/%d: %s did not return -1\n",
-			       __FILE__, __LINE__, Lio_SysCall);
-
-		ret = lio_check_asyncio(io_type, size, &status);
-		return ret;
-
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
-
 		aiocbp.aio_lio_opcode = LIO_WRITE;
 		listio_cmd = LIO_WAIT;
 		io_type = "lio_listio(3) sync write";
@@ -885,44 +739,9 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 
 		ret = lio_check_asyncio(io_type, size, &aiocbp, method);
 		return ret;
-#endif
 	}
 	/* LIO_IO_SLISTIO */
 	else if (method & LIO_IO_ALISTIO) {
-#ifdef CRAY
-		request.li_opcode = LO_WRITE;
-		request.li_fildes = fd;
-		request.li_buf = buffer;
-		request.li_nbyte = size;
-		request.li_status = &status;
-		request.li_signo = sig;
-		request.li_nstride = 0;
-		request.li_filstride = 0;
-		request.li_memstride = 0;
-
-		listio_cmd = LC_START;
-		io_type = "listio(2) async write";
-
-		sprintf(Lio_SysCall,
-			"listio(LC_START, &req, 1) LO_WRITE, fd:%d, nbyte:%d",
-			fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if (listio(listio_cmd, &request, 1) == -1) {
-			sprintf(Errormsg,
-				"%s/%d %s failed, fd:%d, nbyte:%d errno=%d %s",
-				__FILE__, __LINE__, Lio_SysCall, fd, size,
-				errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-#endif
-#if defined (sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		aiocbp.aio_lio_opcode = LIO_WRITE;
 		listio_cmd = LIO_NOWAIT;
 		io_type = "lio_listio(3) async write";
@@ -947,41 +766,8 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 				sigrelse(sig);
 			return -errno;
 		}
-#endif
 	}
 	/* LIO_IO_ALISTIO */
-#ifndef CRAY
-	else if (method & LIO_IO_SYNCV) {
-		io_type = "writev(2)";
-
-		sprintf(Lio_SysCall, "writev(%d, &iov, 1) nbyte:%d", fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-		if ((ret = writev(fd, &iov, 1)) == -1) {
-			sprintf(Errormsg,
-				"%s/%d writev(%d, iov, 1) nbyte:%d ret:-1, errno=%d %s",
-				__FILE__, __LINE__, fd, size, errno,
-				strerror(errno));
-			return -errno;
-		}
-
-		if (ret != size) {
-			sprintf(Errormsg,
-				"%s/%d writev(%d, iov, 1) nbyte:%d returned=%d",
-				__FILE__, __LINE__, fd, size, ret);
-		} else if (Debug_level > 1)
-			printf
-			    ("DEBUG %s/%d: writev completed without error (ret %d)\n",
-			     __FILE__, __LINE__, ret);
-
-		return ret;
-	}			/* LIO_IO_SYNCV */
-#endif
-
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	else if (method & LIO_IO_SYNCP) {
 		io_type = "pwrite(2)";
 
@@ -1013,8 +799,6 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 
 		return ret;
 	}			/* LIO_IO_SYNCP */
-#endif
-
 	else {
 		printf("DEBUG %s/%d: No I/O method chosen\n", __FILE__,
 		       __LINE__);
@@ -1024,12 +808,7 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 	/*
 	 * wait for async io to complete.
 	 */
-#ifdef CRAY
-	ret = lio_wait4asyncio(method, fd, statptr);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	ret = lio_wait4asyncio(method, fd, &aiocbp);
-#endif
 
 	/*
 	 * If there was an error waiting for async i/o to complete,
@@ -1055,12 +834,7 @@ int lio_write_buffer(int fd,		/* open file descriptor */
 	 * have been updated but the actual i/o size if returned.
 	 */
 
-#ifdef CRAY
-	ret = lio_check_asyncio(io_type, size, &status);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	ret = lio_check_asyncio(io_type, size, &aiocbp, method);
-#endif
 
 	return ret;
 }				/* end of lio_write_buffer */
@@ -1121,23 +895,10 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 	char *io_type;		/* Holds string of type of io */
 	int listio_cmd;		/* Holds the listio/lio_listio cmd */
 	int omethod = method;
-#ifdef  CRAY
-	struct listreq request;	/* Used when a listio is wanted */
-	struct iosw status, *statptr[1];
-#else
-	/* for linux or sgi */
 	struct iovec iov;	/* iovec for readv(2) */
-#endif
-#ifdef sgi
-	aiocb_t aiocbp;		/* POSIX aio control block */
-	aiocb_t *aiolist[1];	/* list of aio control blocks for lio_listio */
-	off64_t poffset;	/* pread(2) offset */
-#endif
-#if defined (__linux__) && !defined(__UCLIBC__)
 	struct aiocb aiocbp;	/* POSIX aio control block */
 	struct aiocb *aiolist[1];	/* list of aio control blocks for lio_listio */
 	off64_t poffset;	/* pread(2) offset */
-#endif
 
 	/*
 	 * If LIO_RANDOM bit specified, get new method randomly.
@@ -1156,39 +917,24 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 		*errmsg = Errormsg;
 
 	Rec_signal = Received_signal;	/* get the current number of signals received */
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	Rec_callback = Received_callback;	/* get the current number of callbacks received */
-#endif
 
-#ifdef  CRAY
-	memset(&status, 0x00, sizeof(struct iosw));
-	memset(&request, 0x00, sizeof(struct listreq));
-	statptr[0] = &status;
-#else
-	/* for linux or sgi */
 	memset(&iov, 0x00, sizeof(struct iovec));
 	iov.iov_base = buffer;
 	iov.iov_len = size;
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
-#if defined(sgi)
-	memset(&aiocbp, 0x00, sizeof(aiocb_t));
-#else
+
 	memset(&aiocbp, 0x00, sizeof(struct aiocb));
-#endif
+
 	aiocbp.aio_fildes = fd;
 	aiocbp.aio_nbytes = size;
 	aiocbp.aio_buf = buffer;
 /*    aiocbp.aio_offset = lseek( fd, 0, SEEK_CUR ); -- set below */
 	aiocbp.aio_sigevent.sigev_notify = SIGEV_NONE;
 	aiocbp.aio_sigevent.sigev_signo = 0;
-#ifdef sgi
-	aiocbp.aio_sigevent.sigev_func = NULL;
-	aiocbp.aio_sigevent.sigev_value.sival_int = 0;
-#elif defined(__linux__) && !defined(__UCLIBC__)
+
 	aiocbp.aio_sigevent.sigev_notify_function = NULL;
 	aiocbp.aio_sigevent.sigev_notify_attributes = 0;
-#endif
+
 	aiolist[0] = &aiocbp;
 
 	if ((ret = lseek(fd, 0, SEEK_CUR)) == -1) {
@@ -1222,13 +968,9 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 			return -errno;
 		}
 	}
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	poffset = (off64_t) ret;
-#endif
 	aiocbp.aio_offset = ret;
 
-#endif
-
 	/*
 	 * If the LIO_USE_SIGNAL bit is not set, only use the signal
 	 * if the LIO_WAIT_SIGPAUSE or the LIO_WAIT_SIGACTIVE bits are set.
@@ -1239,10 +981,9 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 
 		sig = 0;	/* ignore signal parameter */
 	}
-#if defined(sgi) || (defined(__linux__)&& !defined(__UCLIBC__))
+
 	if (sig && (method & LIO_WAIT_CBTYPES))
 		sig = 0;	/* ignore signal parameter */
-#endif
 
 	/*
 	 * only setup signal hander if sig was specified and
@@ -1253,27 +994,10 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 	 */
 
 	if (sig && (method & LIO_WAIT_SIGTYPES)) {
-#ifdef CRAY
-		sigctl(SCTL_REG, sig, lio_async_signal_handler);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		aiocbp.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
 		aiocbp.aio_sigevent.sigev_signo = sig;
 		sigset(sig, lio_async_signal_handler);
-#endif /* CRAY */
-	}
-#if defined(sgi)
-	else if (method & LIO_WAIT_CBTYPES) {
-		aiocbp.aio_sigevent.sigev_notify = SIGEV_CALLBACK;
-		aiocbp.aio_sigevent.sigev_func = lio_async_callback_handler;
-		/* sival_int just has to be something that I can use
-		 * to identify the callback, and "size" happens to be handy...
-		 */
-		aiocbp.aio_sigevent.sigev_value.sival_int = size;
-	}
-#endif
-#if defined(__linux__) && !defined(__UCLIBC__)
-	else if (method & LIO_WAIT_CBTYPES) {
+	} else if (method & LIO_WAIT_CBTYPES) {
 		aiocbp.aio_sigevent.sigev_notify = SIGEV_THREAD;
 		aiocbp.aio_sigevent.sigev_notify_function =
 		    lio_async_callback_handler;
@@ -1283,7 +1007,6 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 		aiocbp.aio_sigevent.sigev_notify_attributes =
 		    (void *)(uintptr_t) size;
 	}
-#endif
 
 	/*
 	 * Determine the system call that will be called and produce
@@ -1342,30 +1065,7 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 			wait4sync_io(fd, 1);
 		}
 
-	}
-
-	else if (method & LIO_IO_ASYNC) {
-#ifdef CRAY
-		sprintf(Lio_SysCall,
-			"reada(%d, buf, %d, &status, %d)", fd, size, sig);
-		io_type = "reada";
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if ((ret = reada(fd, buffer, size, &status, sig)) == -1) {
-			sprintf(Errormsg,
-				"%s/%d reada(%d, buf, %d, &stat, %d) ret:-1, errno=%d %s",
-				__FILE__, __LINE__,
-				fd, size, sig, errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
+	} else if (method & LIO_IO_ASYNC) {
 		sprintf(Lio_SysCall,
 			"aio_read(fildes=%d, buf, nbytes=%d, signo=%d)", fd,
 			size, sig);
@@ -1387,51 +1087,9 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 				sigrelse(sig);
 			return -errno;
 		}
-#endif
 	}
 	/* LIO_IO_ASYNC */
 	else if (method & LIO_IO_SLISTIO) {
-#ifdef CRAY
-		request.li_opcode = LO_READ;
-		request.li_fildes = fd;
-		request.li_buf = buffer;
-		request.li_nbyte = size;
-		request.li_status = &status;
-		request.li_signo = sig;
-		request.li_nstride = 0;
-		request.li_filstride = 0;
-		request.li_memstride = 0;
-
-		listio_cmd = LC_WAIT;
-		io_type = "listio(2) sync read";
-
-		sprintf(Lio_SysCall,
-			"listio(LC_WAIT, &req, 1) LO_READ, fd:%d, nbyte:%d",
-			fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if (listio(listio_cmd, &request, 1) == -1) {
-			sprintf(Errormsg,
-				"%s/%d %s failed, fd:%d, nbyte:%d errno=%d %s",
-				__FILE__, __LINE__, Lio_SysCall, fd, size,
-				errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-
-		if (Debug_level > 1)
-			printf("DEBUG %s/%d: %s did not return -1\n",
-			       __FILE__, __LINE__, Lio_SysCall);
-
-		ret = lio_check_asyncio(io_type, size, &status);
-		return ret;
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		aiocbp.aio_lio_opcode = LIO_READ;
 		listio_cmd = LIO_WAIT;
 		io_type = "lio_listio(3) sync read";
@@ -1463,44 +1121,9 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 
 		ret = lio_check_asyncio(io_type, size, &aiocbp, method);
 		return ret;
-#endif
 	}
 	/* LIO_IO_SLISTIO */
 	else if (method & LIO_IO_ALISTIO) {
-#ifdef CRAY
-		request.li_opcode = LO_READ;
-		request.li_fildes = fd;
-		request.li_buf = buffer;
-		request.li_nbyte = size;
-		request.li_status = &status;
-		request.li_signo = sig;
-		request.li_nstride = 0;
-		request.li_filstride = 0;
-		request.li_memstride = 0;
-
-		listio_cmd = LC_START;
-		io_type = "listio(2) async read";
-
-		sprintf(Lio_SysCall,
-			"listio(LC_START, &req, 1) LO_READ, fd:%d, nbyte:%d",
-			fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-
-		sigoff();
-		if (listio(listio_cmd, &request, 1) == -1) {
-			sprintf(Errormsg,
-				"%s/%d %s failed, fd:%d, nbyte:%d errno=%d %s",
-				__FILE__, __LINE__, Lio_SysCall, fd, size,
-				errno, strerror(errno));
-			sigon();
-			return -errno;
-		}
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 		aiocbp.aio_lio_opcode = LIO_READ;
 		listio_cmd = LIO_NOWAIT;
 		io_type = "lio_listio(3) async read";
@@ -1525,41 +1148,8 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 				sigrelse(sig);
 			return -errno;
 		}
-#endif
 	}
 	/* LIO_IO_ALISTIO */
-#ifndef CRAY
-	else if (method & LIO_IO_SYNCV) {
-		io_type = "readv(2)";
-
-		sprintf(Lio_SysCall, "readv(%d, &iov, 1) nbyte:%d", fd, size);
-
-		if (Debug_level) {
-			printf("DEBUG %s/%d: %s\n", __FILE__, __LINE__,
-			       Lio_SysCall);
-		}
-		if ((ret = readv(fd, &iov, 1)) == -1) {
-			sprintf(Errormsg,
-				"%s/%d readv(%d, iov, 1) nbyte:%d ret:-1, errno=%d %s",
-				__FILE__, __LINE__, fd, size, errno,
-				strerror(errno));
-			return -errno;
-		}
-
-		if (ret != size) {
-			sprintf(Errormsg,
-				"%s/%d readv(%d, iov, 1) nbyte:%d returned=%d",
-				__FILE__, __LINE__, fd, size, ret);
-		} else if (Debug_level > 1)
-			printf
-			    ("DEBUG %s/%d: readv completed without error (ret %d)\n",
-			     __FILE__, __LINE__, ret);
-
-		return ret;
-	}			/* LIO_IO_SYNCV */
-#endif
-
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	else if (method & LIO_IO_SYNCP) {
 		io_type = "pread(2)";
 
@@ -1591,7 +1181,6 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 
 		return ret;
 	}			/* LIO_IO_SYNCP */
-#endif
 
 	else {
 		printf("DEBUG %s/%d: No I/O method chosen\n", __FILE__,
@@ -1603,12 +1192,7 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 	 * wait for async io to complete.
 	 * Note: Sync io should have returned prior to getting here.
 	 */
-#ifdef CRAY
-	ret = lio_wait4asyncio(method, fd, statptr);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	ret = lio_wait4asyncio(method, fd, &aiocbp);
-#endif
 
 	/*
 	 * If there was an error waiting for async i/o to complete,
@@ -1634,12 +1218,7 @@ int lio_read_buffer(int fd,	/* open file descriptor */
 	 * have been updated but the actual i/o size if returned.
 	 */
 
-#ifdef CRAY
-	ret = lio_check_asyncio(io_type, size, &status);
-#endif
-#if defined(sgi) || (defined(__linux__) && !defined(__UCLIBC__))
 	ret = lio_check_asyncio(io_type, size, &aiocbp, method);
-#endif
 
 	return ret;
 }				/* end of lio_read_buffer */
@@ -1656,37 +1235,9 @@ int lio_read_buffer(int fd,	/* open file descriptor */
  *
  * (rrl 04/96)
  ***********************************************************************/
-#ifdef CRAY
-int lio_check_asyncio(char *io_type, int size, struct iosw *status)
-#elif defined(sgi)
-int lio_check_asyncio(char *io_type, int size, aiocb_t * aiocbp, int method)
-#elif defined(__linux__) && !defined(__UCLIBC__)
 int lio_check_asyncio(char *io_type, int size, struct aiocb *aiocbp, int method)
 {
 	int ret;
-
-#ifdef CRAY
-	if (status->sw_error) {
-		sprintf(Errormsg,
-			"%s/%d %s, sw_error set = %d %s, sw_count = %d",
-			__FILE__, __LINE__, io_type,
-			status->sw_error, strerror(status->sw_error),
-			status->sw_count);
-		return -status->sw_error;
-	} else if (status->sw_count != size) {
-		sprintf(Errormsg,
-			"%s/%d %s, sw_count not as expected(%d), but actual:%d",
-			__FILE__, __LINE__, io_type, size, status->sw_count);
-	} else if (Debug_level > 1) {
-		printf
-		    ("DEBUG %s/%d: %s completed without error (sw_error == 0, sw_count == %d)\n",
-		     __FILE__, __LINE__, io_type, status->sw_count);
-	}
-
-	return status->sw_count;
-
-#else
-
 	int cnt = 1;
 
 	/* The I/O may have been synchronous with signal completion.  It doesn't
@@ -1710,10 +1261,6 @@ int lio_check_asyncio(char *io_type, int size, struct aiocb *aiocbp, int method)
 			(aiocbp->aio_sigevent.sigev_notify ==
 			 SIGEV_SIGNAL ? "signal" : aiocbp->aio_sigevent.
 			 sigev_notify == SIGEV_NONE ? "none" :
-#ifdef SIGEV_CALLBACK
-			 aiocbp->aio_sigevent.sigev_notify ==
-			 SIGEV_CALLBACK ? "callback" :
-#endif
 			 aiocbp->aio_sigevent.sigev_notify ==
 			 SIGEV_THREAD ? "thread" : "unknown"));
 		return -ret;
@@ -1731,18 +1278,6 @@ int lio_check_asyncio(char *io_type, int size, struct aiocb *aiocbp, int method)
 		sprintf(Errormsg,
 			"%s/%d %s, aio_return not as expected(%d), but actual:%d",
 			__FILE__, __LINE__, io_type, size, ret);
-
-#ifdef BUG1_workaround
-		if (ret == 0) {
-			ret = size;
-			if (Debug_level > 1) {
-				printf
-				    ("WARN %s/%d: %s completed with bug1_workaround (aio_error == 0, aio_return now == %d)\n",
-				     __FILE__, __LINE__, io_type, ret);
-			}
-		}
-#endif /* BUG1_workaround */
-
 	} else if (Debug_level > 1) {
 		printf
 		    ("DEBUG %s/%d: %s completed without error (aio_error == 0, aio_return == %d)\n",
@@ -1751,9 +1286,7 @@ int lio_check_asyncio(char *io_type, int size, struct aiocb *aiocbp, int method)
 
 	return ret;
 
-#endif
 }				/* end of lio_check_asyncio */
-#endif
 
 /***********************************************************************
  *
@@ -1773,45 +1306,20 @@ int lio_check_asyncio(char *io_type, int size, struct aiocb *aiocbp, int method)
  *
  * (rrl 04/96)
  ***********************************************************************/
-#ifdef CRAY
-int lio_wait4asyncio(int method, int fd, struct iosw **statptr)
-#elif defined(sgi)
-int lio_wait4asyncio(int method, int fd, aiocb_t * aiocbp)
-#elif defined(__linux__) && !defined(__UCLIBC__)
 int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 {
 	int cnt;
-#ifdef sgi
-	int ret;
-	const aiocb_t *aioary[1];
-#endif
-#if defined(__linux__)&& !defined(__UCLIBC__)
 	int ret;
 	const struct aiocb *aioary[1];
-#endif
 
 	if ((method & LIO_WAIT_RECALL)
-#if defined(sgi) || (defined(__linux__)&& !defined(__UCLIBC__))
 	    || (method & LIO_WAIT_CBSUSPEND)
 	    || (method & LIO_WAIT_SIGSUSPEND)
-#endif
 	    || ((method & LIO_WAIT_TYPES) == 0)) {
 		/*
 		 * If method has LIO_WAIT_RECALL bit set or method does
 		 * not have any wait method bits set (default), use recall/aio_suspend.
 		 */
-#ifdef CRAY
-		if (Debug_level > 2)
-			printf("DEBUG %s/%d: wait method : recall\n", __FILE__,
-			       __LINE__);
-		sigon();
-		if (recall(fd, 1, statptr)) {
-			sprintf(Errormsg,
-				"%s/%d recall(%d, 1, stat) failed, errno:%d %s",
-				__FILE__, __LINE__, fd, errno, strerror(errno));
-			return -errno;
-		}
-#else
 		if (Debug_level > 2)
 			printf
 			    ("DEBUG %s/%d: wait method : aio_suspend, sigev_notify=%s\n",
@@ -1819,10 +1327,6 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 			     (aiocbp->aio_sigevent.sigev_notify ==
 			      SIGEV_SIGNAL ? "signal" : aiocbp->aio_sigevent.
 			      sigev_notify == SIGEV_NONE ? "none" :
-#ifdef SIGEV_CALLBACK
-			      aiocbp->aio_sigevent.sigev_notify ==
-			      SIGEV_CALLBACK ? "callback" :
-#endif
 			      aiocbp->aio_sigevent.sigev_notify ==
 			      SIGEV_THREAD ? "thread" : "unknown"));
 
@@ -1843,10 +1347,6 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 					 SIGEV_SIGNAL ? "signal" : aiocbp->
 					 aio_sigevent.sigev_notify ==
 					 SIGEV_NONE ? "none" :
-#ifdef SIGEV_CALLBACK
-					 aiocbp->aio_sigevent.sigev_notify ==
-					 SIGEV_CALLBACK ? "callback" :
-#endif
 					 aiocbp->aio_sigevent.sigev_notify ==
 					 SIGEV_THREAD ? "thread" : "unknown"));
 				return -errno;
@@ -1857,24 +1357,10 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 				__FILE__, __LINE__, fd, errno, strerror(errno));
 			return -errno;
 		}
-#endif
-
 	} else if (method & LIO_WAIT_ACTIVE) {
 		if (Debug_level > 2)
 			printf("DEBUG %s/%d: wait method : active\n", __FILE__,
 			       __LINE__);
-#ifdef CRAY
-		sigon();
-		/*
-		 * loop until sw_flag, sw_count or sw_error field elements
-		 * change to non-zero.
-		 */
-		cnt = 0;
-		while ((*statptr)->sw_flag == 0 &&
-		       (*statptr)->sw_count == 0 && (*statptr)->sw_error == 0) {
-			cnt++;
-		}
-#else
 		/* loop while aio_error() returns EINPROGRESS */
 		cnt = 0;
 		while (1) {
@@ -1885,7 +1371,6 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 			++cnt;
 		}
 
-#endif
 		if (Debug_level > 5 && cnt && (cnt % 50) == 0)
 			printf("DEBUG %s/%d: wait active cnt = %d\n",
 			       __FILE__, __LINE__, cnt);
@@ -1894,25 +1379,12 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 		if (Debug_level > 2)
 			printf("DEBUG %s/%d: wait method : sigpause\n",
 			       __FILE__, __LINE__);
-#ifdef sgi
-		/* note: don't do the sigon() for CRAY in this case.  why? -- roehrich 6/11/97 */
-		if (aiocbp->aio_sigevent.sigev_notify == SIGEV_SIGNAL)
-			sigrelse(aiocbp->aio_sigevent.sigev_signo);
-		else {
-			printf("DEBUG %s/%d: sigev_notify != SIGEV_SIGNAL\n",
-			       __FILE__, __LINE__);
-			return -1;
-		}
-#endif
 		pause();
 
 	} else if (method & LIO_WAIT_SIGACTIVE) {
 		if (Debug_level > 2)
 			printf("DEBUG %s/%d: wait method : sigactive\n",
 			       __FILE__, __LINE__);
-#ifdef CRAY
-		sigon();
-#else
 		if (aiocbp->aio_sigevent.sigev_notify == SIGEV_SIGNAL)
 			sigrelse(aiocbp->aio_sigevent.sigev_signo);
 		else {
@@ -1920,14 +1392,9 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 			       __FILE__, __LINE__);
 			return -1;
 		}
-#endif
 		/* loop waiting for signal */
 		while (Received_signal == Rec_signal) {
-#ifdef CRAY
-			sigon();
-#else
 			sigrelse(aiocbp->aio_sigevent.sigev_signo);
-#endif
 		}
 
 	} else if (method & LIO_WAIT_NONE) {
@@ -1944,10 +1411,6 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 		sprintf(Errormsg,
 			"%s/%d LIO_WAIT_NONE was selected (this is broken)\n",
 			__FILE__, __LINE__);
-#ifdef CRAY
-		sigon();
-#endif
-/*        return 1;*/
 		return -1;
 	} else {
 		if (Debug_level > 2)
@@ -1960,7 +1423,6 @@ int lio_wait4asyncio(int method, int fd, struct aiocb *aiocbp)
 
 }				/* end of lio_wait4asyncio */
 
-#endif /* ifndef linux */
 #endif
 
 #if UNIT_TEST
-- 
2.49.0



More information about the ltp mailing list