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