[Libsysio-commit] RedStorm: libsysio/src Makefile.am dev.c getdirentries.c lseek.c mknod.c stat.c st
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2003-05-12 11:48:49
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1:/tmp/cvs-serv27060/src Modified Files: Tag: RedStorm Makefile.am dev.c getdirentries.c lseek.c mknod.c stat.c stat64.c statvfs.c statvfs64.c Log Message: Modifications for the Cray RedStorm compute node operating system. This is a BSD-based libc. Index: Makefile.am =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/Makefile.am,v retrieving revision 1.5 retrieving revision 1.5.6.1 diff -u -w -b -B -p -r1.5 -r1.5.6.1 --- Makefile.am 24 Mar 2003 22:09:06 -0000 1.5 +++ Makefile.am 12 May 2003 11:48:45 -0000 1.5.6.1 @@ -3,6 +3,6 @@ lib_LIBRARIES = libsysio.a libsysio_a_SOURCES = chdir.c chmod.c chown.c dev.c dup.c fcntl.c file.c fs.c \ fsync.c getdirentries.c init.c inode.c ioctl.c ioctx.c iowait.c \ lseek.c mkdir.c mknod.c mount.c namei.c open.c read.c rmdir.c stat.c \ - stat64.c statvfs.c symlink.c truncate.c unlink.c write.c + stat64.c symlink.c truncate.c unlink.c write.c include $(top_srcdir)/Rules.make Index: dev.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/dev.c,v retrieving revision 1.2 retrieving revision 1.2.6.1 diff -u -w -b -B -p -r1.2 -r1.2.6.1 --- dev.c 24 Mar 2003 22:09:06 -0000 1.2 +++ dev.c 12 May 2003 11:48:45 -0000 1.2.6.1 @@ -72,7 +72,9 @@ const struct inode_ops _sysio_nodev_ops _sysio_nodev_inop_datasync, _sysio_nodev_inop_ioctl, _sysio_nodev_inop_mknod, +#ifdef _HAVE_STATVFS _sysio_nodev_inop_statvfs, +#endif _sysio_nodev_inop_gone }; Index: getdirentries.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/getdirentries.c,v retrieving revision 1.1 retrieving revision 1.1.10.1 diff -u -w -b -B -p -r1.1 -r1.1.10.1 --- getdirentries.c 9 Mar 2003 13:53:53 -0000 1.1 +++ getdirentries.c 12 May 2003 11:48:45 -0000 1.1.10.1 @@ -1,4 +1,4 @@ -#ifdef __GNUC__ +#ifdef __GLIBC__ #include <alloca.h> #else #include <stdlib.h> @@ -20,7 +20,10 @@ #endif ssize_t -getdirentries64(int fd, char *buf, size_t nbytes, off64_t * __restrict basep) +getdirentries64(int fd, + char *buf, + size_t nbytes, + _SYSIO_OFF_T * __restrict basep) { struct file *fil; ssize_t cc; @@ -56,33 +59,59 @@ getdirentries64(int fd, char *buf, size_ #define _namlen(dp) (strlen((dp)->d_name)) #endif +#ifndef _rndup +#define _rndup(n, boundary) \ + ((((n) + (boundary) - 1 ) / (boundary)) * (boundary)) +#endif + +#if !(defined(BSD) || defined(REDSTORM)) ssize_t -getdirentries(int fd, char *buf, size_t nbytes, off_t * __restrict basep) +getdirentries(int fd, + char *buf, + size_t nbytes, + off_t * __restrict basep) +#else +int +getdirentries(int fd, + char *buf, + int nbytes, + long * __restrict basep) +#endif { size_t inbytes; void *ibuf; - off64_t ibase; + _SYSIO_OFF_T ibase; ssize_t cc; struct dirent *dp, *nxtdp; - struct dirent64 *od64p, *d64p; +#if defined(BSD) || defined(REDSTORM) + int off; +#endif + struct intnl_dirent *od64p, *d64p; size_t n; size_t reclen; char *cp; #define _dbaselen ((size_t )&((struct dirent *)0)->d_name[0]) -#ifdef __GNUC__ +#ifdef __GLIBC__ #define _dreclen(namlen) \ ((_dbaselen + (namlen) + __alignof__ (struct dirent)) & \ ~(__alignof__ (struct dirent) - 1)) #define _fast_alloc(n) alloca(n) #define _fast_free(p) -#else /* !defined(__GNUC__) */ -#define _dreclen(namelen) \ - (_rndup(_dbaselen + (namlen) + 1, sizeof(unsigned long long)) +#else /* !defined(__GLIBC__) */ +#define _dreclen(namlen) \ + _rndup(_dbaselen + (namlen) + 1, sizeof(int)) #define _fast_alloc(n) malloc(n) #define _fast_free(p) free(p) #endif +#if defined(BSD) || defined(REDSTORM) + if (nbytes < 0) { + errno = -EINVAL; + return -1; + } +#endif + inbytes = nbytes; if (inbytes > 8 * 1024) { /* @@ -110,6 +139,9 @@ getdirentries(int fd, char *buf, size_t goto out; } +#if defined(BSD) || defined(REDSTORM) + off = *basep; +#endif od64p = NULL; d64p = ibuf; for (;;) { @@ -121,14 +153,22 @@ getdirentries(int fd, char *buf, size_t n = strlen(d64p->d_name); #endif reclen = _dreclen(n); - if (reclen >= nbytes) + if (reclen >= (unsigned )nbytes) break; dp->d_ino = (ino_t )d64p->d_ino; +#if !(defined(BSD) || defined(REDSTORM)) dp->d_off = (off_t )d64p->d_off; +#endif if ((sizeof(dp->d_ino) != sizeof(d64p->d_ino) && - dp->d_ino != d64p->d_ino) && + dp->d_ino != d64p->d_ino) + || +#if !(defined(BSD) || defined(REDSTORM)) (sizeof(dp->d_off) != sizeof(d64p->d_off) && - dp->d_off != d64p->d_off)) { + dp->d_off != d64p->d_off) +#else + (off + (int )reclen < off) +#endif + ) { cc = -EOVERFLOW; break; } @@ -142,6 +182,9 @@ getdirentries(int fd, char *buf, size_t od64p = d64p; d64p = (void *)d64p + d64p->d_reclen; nbytes -= reclen; +#if defined(BSD) || defined(REDSTORM) + off += reclen; +#endif dp = nxtdp; } @@ -154,10 +197,15 @@ out: } cc = (char *)dp - buf; if (cc) - *basep = od64p->d_off; + *basep = +#if !(defined(BSD) || defined(REDSTORM)) + od64p->d_off; +#else + off; +#endif return cc; -#ifdef __GNUC__ +#ifdef __GLIBC__ #undef _fast_alloc #undef _fast_free #endif Index: lseek.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/lseek.c,v retrieving revision 1.4 retrieving revision 1.4.4.1 diff -u -w -b -B -p -r1.4 -r1.4.4.1 --- lseek.c 27 Apr 2003 13:20:01 -0000 1.4 +++ lseek.c 12 May 2003 11:48:45 -0000 1.4.4.1 @@ -53,8 +53,8 @@ #include "sysio-symbols.h" -static off64_t -_sysio_lseek(int fd, off64_t offset, int whence) +static _SYSIO_OFF_T +_sysio_lseek(int fd, _SYSIO_OFF_T offset, int whence) { int err; struct file *fil; Index: mknod.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/mknod.c,v retrieving revision 1.3 retrieving revision 1.3.6.1 diff -u -w -b -B -p -r1.3 -r1.3.6.1 --- mknod.c 26 Mar 2003 00:06:05 -0000 1.3 +++ mknod.c 12 May 2003 11:48:45 -0000 1.3.6.1 @@ -62,6 +62,10 @@ #undef mknod #undef __xmknod +#if defined(BSD) || defined(REDSTORM) +#define _MKNOD_VER 0 +#endif + int __xmknod(int __ver, const char *path, mode_t mode, dev_t *dev) { Index: stat.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/stat.c,v retrieving revision 1.3 retrieving revision 1.3.6.1 diff -u -w -b -B -p -r1.3 -r1.3.6.1 --- stat.c 24 Mar 2003 22:09:07 -0000 1.3 +++ stat.c 12 May 2003 11:48:45 -0000 1.3.6.1 @@ -62,7 +62,11 @@ #undef __xstat #undef __lxstat -#if !(defined(__GNUC__) && __GNUC__ >= 2) +#if !defined(_STAT_VER) +#define _STAT_VER 0 +#endif + +#if !(defined(__GLIBC__) && __GLIBC__ >= 2) #warning Check assumptions here about stat/stat64 sizes and offsets #endif Index: stat64.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/stat64.c,v retrieving revision 1.3 retrieving revision 1.3.6.1 diff -u -w -b -B -p -r1.3 -r1.3.6.1 --- stat64.c 24 Mar 2003 22:09:07 -0000 1.3 +++ stat64.c 12 May 2003 11:48:45 -0000 1.3.6.1 @@ -41,6 +41,8 @@ * le...@sa... */ +#ifdef _LARGFILE64_SOURCE + #include <errno.h> #include <assert.h> #include <sys/types.h> @@ -164,3 +166,4 @@ lstat64(const char *filename, struct sta return __lxstat64(_STAT_VER, filename, buf); } +#endif /* defined(_LARGEFILE64_SOURCE) */ Index: statvfs.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/statvfs.c,v retrieving revision 1.3 retrieving revision 1.3.6.1 diff -u -w -b -B -p -r1.3 -r1.3.6.1 --- statvfs.c 24 Mar 2003 22:09:07 -0000 1.3 +++ statvfs.c 12 May 2003 11:48:45 -0000 1.3.6.1 @@ -41,6 +41,8 @@ * le...@sa... */ +#if !(defined(BSD) || defined(REDSTORM)) + #include <unistd.h> #include <errno.h> #include <assert.h> @@ -136,3 +138,4 @@ err: out: return err; } +#endif /* if !(defined(BSD) || defined(REDSTORM)) */ Index: statvfs64.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/statvfs64.c,v retrieving revision 1.3 retrieving revision 1.3.6.1 diff -u -w -b -B -p -r1.3 -r1.3.6.1 --- statvfs64.c 24 Mar 2003 22:09:07 -0000 1.3 +++ statvfs64.c 12 May 2003 11:48:45 -0000 1.3.6.1 @@ -41,6 +41,7 @@ * le...@sa... */ +#if !(defined(BSD) || defined(REDSTORM)) #include <unistd.h> #include <errno.h> #include <assert.h> @@ -93,3 +94,4 @@ out: } return err; } +#endif /* if !(defined(BSD) || defined(REDSTORM)) */ |