+2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ Simplify FD_SET etc. use.
+
+ * include/am_defs.h (FD_SET, FD_ISSET, FD_CLR, FD_ZERO): Provide
+ if missing.
+ (rpc_pending_now, run_rpc): Use them.
+ * configure.in: Check for fds_bits field in fd_set.
+ * amd/nfs_start.c (run_rpc): Use it.
+
2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Improve RPC XID handling.
* SUCH DAMAGE.
*
*
- * $Id: nfs_start.c,v 1.19 2003/07/30 06:56:09 ib42 Exp $
+ * $Id: nfs_start.c,v 1.20 2003/10/02 17:41:32 ro Exp $
*
*/
{
struct timeval tvv;
int nsel;
-#ifdef FD_SET
fd_set readfds;
FD_ZERO(&readfds);
FD_SET(fwd_sock, &readfds);
-#else /* not FD_SET */
- int readfds = (1 << fwd_sock);
-#endif /* not FD_SET */
tvv.tv_sec = tvv.tv_usec = 0;
nsel = select(FD_SETSIZE, &readfds, (fd_set *) 0, (fd_set *) 0, &tvv);
if (nsel < 1)
return (0);
-#ifdef FD_SET
if (FD_ISSET(fwd_sock, &readfds))
return (1);
-#else /* not FD_SET */
- if (readfds & (1 << fwd_sock))
- return (1);
-#endif /* not FD_SET */
return (0);
}
memmove(&readfds, &svc_fdset, sizeof(svc_fdset));
FD_SET(fwd_sock, &readfds);
#else /* not HAVE_SVC_GETREQSET */
-# ifdef FD_SET
fd_set readfds;
FD_ZERO(&readfds);
+# ifdef HAVE_FD_SET_FDS_BITS
readfds.fds_bits[0] = svc_fds;
+# else /* not HAVE_FD_SET_FDS_BITS */
+ readfds = svc_fds;
+# endif /* not HAVE_FD_SET_FDS_BITS */
FD_SET(fwd_sock, &readfds);
-# else /* not FD_SET */
- int readfds = svc_fds | (1 << fwd_sock);
-# endif /* not FD_SET */
#endif /* not HAVE_SVC_GETREQSET */
checkup();
* Read all pending NFS responses at once to avoid having responses
* queue up as a consequence of retransmissions.
*/
-#ifdef FD_SET
if (FD_ISSET(fwd_sock, &readfds)) {
FD_CLR(fwd_sock, &readfds);
-#else /* not FD_SET */
- if (readfds & (1 << fwd_sock)) {
- readfds &= ~(1 << fwd_sock);
-#endif /* not FD_SET */
--nsel;
do {
fwd_reply();
#ifdef HAVE_SVC_GETREQSET
svc_getreqset(&readfds);
#else /* not HAVE_SVC_GETREQSET */
-# ifdef FD_SET
+# ifdef HAVE_FD_SET_FDS_BITS
svc_getreq(readfds.fds_bits[0]);
-# else /* not FD_SET */
+# else /* not HAVE_FD_SET_FDS_BITS */
svc_getreq(readfds);
-# endif /* not FD_SET */
+# endif /* not HAVE_FD_SET_FDS_BITS */
#endif /* not HAVE_SVC_GETREQSET */
}
break;
dnl
dnl AC_CONFIG_AUX_DIR(m4)
AC_PREREQ(2.52)
-AC_REVISION($Revision: 1.62 $)
+AC_REVISION($Revision: 1.63 $)
AC_COPYRIGHT([Copyright (c) 1997-2003 Erez Zadok])
dnl find out system type
AC_MSG_NOTICE(*** SYSTEM TYPES ***)
dnl ######################################################################
AC_MSG_NOTICE(*** FIELDS WITHIN STRUCTURES ***)
+AMU_CHECK_FIELD(fd_set.fds_bits)
AMU_CHECK_FIELD(mntent_t.mnt_cnode)
AMU_CHECK_FIELD(mntent_t.mnt_ro)
AMU_CHECK_FIELD(mntent_t.mnt_time)
* SUCH DAMAGE.
*
*
- * $Id: am_defs.h,v 1.44 2003/09/26 20:15:13 ro Exp $
+ * $Id: am_defs.h,v 1.45 2003/10/02 17:41:32 ro Exp $
*
*/
# endif /* not HAVE_STRUCT_MNTTAB */
#endif /* not HAVE_STRUCT_MNTENT */
+/*
+ * Provide FD_* macros for systems that lack them.
+ */
+#ifndef FD_SET
+# define FD_SET(fd, set) (*(set) |= (1 << (fd)))
+# define FD_ISSET(fd, set) (*(set) & (1 << (fd)))
+# define FD_CLR(fd, set) (*(set) &= ~(1 << (fd)))
+# define FD_ZERO(set) (*(set) = 0)
+#endif /* not FD_SET */
+
/*
* Complete external definitions missing from some systems.