[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)) */
|