All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
@ 2025-04-08 16:17 Cyril Hrubis
  2025-04-08 17:51 ` Andrea Cervesato via ltp
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Cyril Hrubis @ 2025-04-08 16:17 UTC (permalink / raw)
  To: ltp

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


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-08 16:17 [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes Cyril Hrubis
@ 2025-04-08 17:51 ` Andrea Cervesato via ltp
  2025-04-29  8:43 ` Petr Vorel
  2025-04-30 12:42 ` Avinesh Kumar
  2 siblings, 0 replies; 8+ messages in thread
From: Andrea Cervesato via ltp @ 2025-04-08 17:51 UTC (permalink / raw)
  To: Cyril Hrubis, ltp

Hi Cyril,

this was something I was about to do with grofiles.c refactoring, but 
since it's pending for a year now and I can't find energies to put hands 
in that "mud", it's good to start from something.
Thanks for the patch.

Acked-by: Andrea Cervesato <andrea.cervesato@suse.com>

On 4/8/25 18:17, Cyril Hrubis wrote:
> 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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-08 16:17 [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes Cyril Hrubis
  2025-04-08 17:51 ` Andrea Cervesato via ltp
@ 2025-04-29  8:43 ` Petr Vorel
  2025-04-29  8:46   ` Andrea Cervesato via ltp
  2025-04-30 12:42 ` Avinesh Kumar
  2 siblings, 1 reply; 8+ messages in thread
From: Petr Vorel @ 2025-04-29  8:43 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: ltp

Hi Cyril,

> 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.

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Great work, thanks!
Removing unused code is always useful.

Code is really old and would deserve refactoring.

Kind regards,
Petr

tlibio.c: In function ‘lio_write_buffer’:
tlibio.c:617:17: warning: ‘sigset’ is deprecated: Use the signal and sigprocmask functions instead [-Wdeprecated-declarations]
  617 |                 sigset(sig, lio_async_signal_handler);
      |                 ^~~~~~
In file included from /usr/include/x86_64-linux-gnu/sys/param.h:28,
                 from tlibio.c:83:
/usr/include/signal.h:367:23: note: declared here
  367 | extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW
      |                       ^~~~~~
tlibio.c:698:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  698 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:705:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  705 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:725:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  725 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:732:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  732 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:759:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  759 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:766:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
  766 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:507:22: warning: unused parameter ‘wrd’ [-Wunused-parameter]
  507 |                 long wrd)       /* to allow future features, use zero for now */
      |                 ~~~~~^~~
tlibio.c: In function ‘lio_read_buffer’:
tlibio.c:999:17: warning: ‘sigset’ is deprecated: Use the signal and sigprocmask functions instead [-Wdeprecated-declarations]
  999 |                 sigset(sig, lio_async_signal_handler);
      |                 ^~~~~~
/usr/include/signal.h:367:23: note: declared here
  367 | extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW
      |                       ^~~~~~
tlibio.c:1080:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1080 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:1087:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1087 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:1107:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1107 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:1114:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1114 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:1141:25: warning: ‘sighold’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1141 |                         sighold(sig);
      |                         ^~~~~~~
/usr/include/signal.h:355:12: note: declared here
  355 | extern int sighold (int __sig) __THROW
      |            ^~~~~~~
tlibio.c:1148:33: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1148 |                                 sigrelse(sig);
      |                                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:888:22: warning: unused parameter ‘wrd’ [-Wunused-parameter]
  888 |                 long wrd)       /* to allow future features, use zero for now */
      |                 ~~~~~^~~
tlibio.c: In function ‘lio_check_asyncio’:
tlibio.c:1249:17: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1249 |                 sigrelse(aiocbp->aio_sigevent.sigev_signo);
      |                 ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c: In function ‘lio_wait4asyncio’:
tlibio.c:1389:25: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1389 |                         sigrelse(aiocbp->aio_sigevent.sigev_signo);
      |                         ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
tlibio.c:1397:25: warning: ‘sigrelse’ is deprecated: Use the sigprocmask function instead [-Wdeprecated-declarations]
 1397 |                         sigrelse(aiocbp->aio_sigevent.sigev_signo);
      |                         ^~~~~~~~
/usr/include/signal.h:359:12: note: declared here
  359 | extern int sigrelse (int __sig) __THROW
      |            ^~~~~~~~
CC lib/tlibio.o
AR libltp.a
RANLIB libltp.a

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-29  8:43 ` Petr Vorel
@ 2025-04-29  8:46   ` Andrea Cervesato via ltp
  2025-04-29 11:39     ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Andrea Cervesato via ltp @ 2025-04-29  8:46 UTC (permalink / raw)
  To: Petr Vorel, Cyril Hrubis; +Cc: ltp

Hi Petr!

On 4/29/25 10:43, Petr Vorel wrote:
> Code is really old and would deserve refactoring.
I started to refactor growfiles.c as I mentioned in the previous 
comment, but it's quite a thing.
Hopefully we will do it one day, since it's an important test for the 
whole LTP suite.

I'm going to merge this patch. Thanks for the review.

Kind regards,
Andrea Cervesato


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-29  8:46   ` Andrea Cervesato via ltp
@ 2025-04-29 11:39     ` Cyril Hrubis
  0 siblings, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2025-04-29 11:39 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: ltp

Hi!
Patch pushed, thanks for the reviews.

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-08 16:17 [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes Cyril Hrubis
  2025-04-08 17:51 ` Andrea Cervesato via ltp
  2025-04-29  8:43 ` Petr Vorel
@ 2025-04-30 12:42 ` Avinesh Kumar
  2025-04-30 13:08   ` Avinesh Kumar
  2025-04-30 13:33   ` Cyril Hrubis
  2 siblings, 2 replies; 8+ messages in thread
From: Avinesh Kumar @ 2025-04-30 12:42 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: ltp

Hi,

This is causing a regression in growfiles tests 
(all variants of gf01, gf13, gf15 and gf18 in
fs/doio/growfiles.c and fs/fs_readonly/test_robind.sh)

./growfiles -W gf01 -b -e 1 -u -i 0 -L 20 -w -C 1 -l -I r -T 10 -f glseek20 -S 2 -d /var/tmp/
DEBUG tlibio.c/1187: No I/O method chosen
growfiles(gf01): 140867 growfiles.c/2602: 1 CW 
growfiles(gf01): 140867 growfiles.c/1765: 1 Hit max errors value of 1
gf01        1  TFAIL  :  growfiles.c:134: Test failed



Thanks,
Avinesh



-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-30 12:42 ` Avinesh Kumar
@ 2025-04-30 13:08   ` Avinesh Kumar
  2025-04-30 13:33   ` Cyril Hrubis
  1 sibling, 0 replies; 8+ messages in thread
From: Avinesh Kumar @ 2025-04-30 13:08 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: ltp

On Wednesday, April 30, 2025 2:42:06 PM CEST Avinesh Kumar wrote:
> Hi,
> 
> This is causing a regression in growfiles tests 
> (all variants of gf01, gf13, gf15 and gf18 in
> fs/doio/growfiles.c and fs/fs_readonly/test_robind.sh)
> 
> ./growfiles -W gf01 -b -e 1 -u -i 0 -L 20 -w -C 1 -l -I r -T 10 -f glseek20 -S 2 -d /var/tmp/
> DEBUG tlibio.c/1187: No I/O method chosen
> growfiles(gf01): 140867 growfiles.c/2602: 1 CW 
> growfiles(gf01): 140867 growfiles.c/1765: 1 Hit max errors value of 1
> gf01        1  TFAIL  :  growfiles.c:134: Test failed
> 

./growfiles -W gf01 -b -e 10 -u -i 0 -L 20 -w -C 1 -l -I r -T 10 -f glseek20 -S 2 -d /var/tmp/
...
...
growfiles(gf01): 141102 growfiles.c/2050: 30 
DEBUG tlibio.c/1187: No I/O method chosen
growfiles(gf01): 141102 growfiles.c/2602: 31 CW 
growfiles(gf01): 141102 growfiles.c/1765: 31 Hit max errors value of 10
gf01        1  TFAIL  :  growfiles.c:134: Test failed



We hit the issue even on increasing max error value to any number.

> 
> 
> Thanks,
> Avinesh
> 
> 
> 
> 





-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes
  2025-04-30 12:42 ` Avinesh Kumar
  2025-04-30 13:08   ` Avinesh Kumar
@ 2025-04-30 13:33   ` Cyril Hrubis
  1 sibling, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2025-04-30 13:33 UTC (permalink / raw)
  To: Avinesh Kumar; +Cc: ltp

Hi!
> This is causing a regression in growfiles tests 
> (all variants of gf01, gf13, gf15 and gf18 in
> fs/doio/growfiles.c and fs/fs_readonly/test_robind.sh)
> 
> ./growfiles -W gf01 -b -e 1 -u -i 0 -L 20 -w -C 1 -l -I r -T 10 -f glseek20 -S 2 -d /var/tmp/
> DEBUG tlibio.c/1187: No I/O method chosen
> growfiles(gf01): 140867 growfiles.c/2602: 1 CW 
> growfiles(gf01): 140867 growfiles.c/1765: 1 Hit max errors value of 1
> gf01        1  TFAIL  :  growfiles.c:134: Test failed

Found it, there was single "#ifndef CRAY" in the tlibio.c library that
got mistakenly removed with the "#ifdef CRAY" macros. I will send a fix
ASAP.

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-04-30 13:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-08 16:17 [LTP] [PATCH] lib/tlibio: Get rid of support for old UNIXes Cyril Hrubis
2025-04-08 17:51 ` Andrea Cervesato via ltp
2025-04-29  8:43 ` Petr Vorel
2025-04-29  8:46   ` Andrea Cervesato via ltp
2025-04-29 11:39     ` Cyril Hrubis
2025-04-30 12:42 ` Avinesh Kumar
2025-04-30 13:08   ` Avinesh Kumar
2025-04-30 13:33   ` Cyril Hrubis

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.