summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/trap.c6
-rw-r--r--sys/amd64/amd64/tsc.c13
-rw-r--r--sys/amd64/isa/clock.c13
-rw-r--r--sys/compat/linux/linux_misc.c10
-rw-r--r--sys/gnu/ext2fs/ext2_inode.c4
-rw-r--r--sys/gnu/ext2fs/ext2_readwrite.c2
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c2
-rw-r--r--sys/gnu/ext2fs/ext2_vnops.c10
-rw-r--r--sys/gnu/fs/ext2fs/ext2_inode.c4
-rw-r--r--sys/gnu/fs/ext2fs/ext2_readwrite.c2
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vfsops.c2
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vnops.c10
-rw-r--r--sys/i386/apm/apm.c9
-rw-r--r--sys/i386/bios/apm.c9
-rw-r--r--sys/i386/i386/symbols.raw4
-rw-r--r--sys/i386/i386/trap.c6
-rw-r--r--sys/i386/i386/tsc.c13
-rw-r--r--sys/i386/isa/clock.c13
-rw-r--r--sys/i386/isa/pcvt/pcvt_sup.c6
-rw-r--r--sys/i386/linux/linux_misc.c10
-rw-r--r--sys/isa/atrtc.c13
-rw-r--r--sys/kern/init_main.c4
-rw-r--r--sys/kern/kern_clock.c45
-rw-r--r--sys/kern/kern_ntptime.c6
-rw-r--r--sys/kern/kern_tc.c45
-rw-r--r--sys/kern/kern_threads.c7
-rw-r--r--sys/kern/kern_time.c34
-rw-r--r--sys/kern/subr_trap.c6
-rw-r--r--sys/kern/sys_generic.c28
-rw-r--r--sys/kern/sysv_msg.c10
-rw-r--r--sys/kern/sysv_sem.c6
-rw-r--r--sys/kern/sysv_shm.c10
-rw-r--r--sys/kern/tty.c6
-rw-r--r--sys/kern/vfs_aio.c7
-rw-r--r--sys/kern/vfs_export.c6
-rw-r--r--sys/kern/vfs_subr.c6
-rw-r--r--sys/net/if_atmsubr.c4
-rw-r--r--sys/net/if_ethersubr.c4
-rw-r--r--sys/net/if_fddisubr.c8
-rw-r--r--sys/net/if_ppp.c22
-rw-r--r--sys/net/if_sl.c10
-rw-r--r--sys/net/if_spppsubr.c11
-rw-r--r--sys/net/ppp_tty.c4
-rw-r--r--sys/netatalk/at_control.c8
-rw-r--r--sys/netinet/if_ether.c14
-rw-r--r--sys/netinet/in_rmx.c16
-rw-r--r--sys/netinet/ip_fw.c4
-rw-r--r--sys/netinet/ip_input.c4
-rw-r--r--sys/netipx/ipx_input.c6
-rw-r--r--sys/netkey/key.c8
-rw-r--r--sys/nfs/bootp_subr.c6
-rw-r--r--sys/nfs/nfs.h9
-rw-r--r--sys/nfs/nfs_common.c15
-rw-r--r--sys/nfs/nfs_common.h22
-rw-r--r--sys/nfs/nfs_nqlease.c16
-rw-r--r--sys/nfs/nfs_serv.c6
-rw-r--r--sys/nfs/nfs_socket.c20
-rw-r--r--sys/nfs/nfs_subs.c15
-rw-r--r--sys/nfs/nfs_syscalls.c35
-rw-r--r--sys/nfs/nfs_vfsops.c6
-rw-r--r--sys/nfs/nfs_vnops.c16
-rw-r--r--sys/nfs/nfsm_subs.h22
-rw-r--r--sys/nfs/nqnfs.h10
-rw-r--r--sys/nfsclient/bootp_subr.c6
-rw-r--r--sys/nfsclient/nfs.h9
-rw-r--r--sys/nfsclient/nfs_nfsiod.c35
-rw-r--r--sys/nfsclient/nfs_socket.c20
-rw-r--r--sys/nfsclient/nfs_subs.c15
-rw-r--r--sys/nfsclient/nfs_vfsops.c6
-rw-r--r--sys/nfsclient/nfs_vnops.c16
-rw-r--r--sys/nfsclient/nfsargs.h9
-rw-r--r--sys/nfsclient/nfsm_subs.h22
-rw-r--r--sys/nfsclient/nfsstats.h9
-rw-r--r--sys/nfsserver/nfs.h9
-rw-r--r--sys/nfsserver/nfs_serv.c6
-rw-r--r--sys/nfsserver/nfs_srvsock.c20
-rw-r--r--sys/nfsserver/nfs_srvsubs.c15
-rw-r--r--sys/nfsserver/nfs_syscalls.c35
-rw-r--r--sys/nfsserver/nfsm_subs.h22
-rw-r--r--sys/nfsserver/nfsrvstats.h9
-rw-r--r--sys/pci/ncr.c67
-rw-r--r--sys/sys/time.h5
-rw-r--r--sys/sys/timetc.h5
-rw-r--r--sys/ufs/ffs/ffs_alloc.c12
-rw-r--r--sys/ufs/ffs/ffs_inode.c27
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c6
-rw-r--r--sys/ufs/ffs/ffs_vnops.c4
-rw-r--r--sys/ufs/ufs/ufs_inode.c4
-rw-r--r--sys/ufs/ufs/ufs_lookup.c6
-rw-r--r--sys/ufs/ufs/ufs_quota.c22
-rw-r--r--sys/ufs/ufs/ufs_readwrite.c4
-rw-r--r--sys/ufs/ufs/ufs_vnops.c10
-rw-r--r--sys/vm/vm_meter.c4
-rw-r--r--sys/vm/vm_pageout.c6
94 files changed, 627 insertions, 526 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index f4475bb..e840062 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.123 1998/03/23 19:52:37 jlemon Exp $
+ * $Id: trap.c,v 1.124 1998/03/28 10:32:57 bde Exp $
*/
/*
@@ -519,11 +519,11 @@ kernel_trap:
{
static unsigned lastalert = 0;
- if(time.tv_sec - lastalert > 10)
+ if(time_second - lastalert > 10)
{
log(LOG_WARNING, "NMI: power fail\n");
sysbeep(TIMER_FREQ/880, hz);
- lastalert = time.tv_sec;
+ lastalert = time_second;
}
return;
}
diff --git a/sys/amd64/amd64/tsc.c b/sys/amd64/amd64/tsc.c
index 6588165..1df24b7 100644
--- a/sys/amd64/amd64/tsc.c
+++ b/sys/amd64/amd64/tsc.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.116 1998/03/14 03:11:50 tegge Exp $
+ * $Id: clock.c,v 1.117 1998/03/16 10:06:58 phk Exp $
*/
/*
@@ -237,12 +237,19 @@ clkintr(struct clockframe frame)
if ((timer0_prescaler_count += timer0_max_count)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
+#ifdef FIXME
+ /*
+ * XXX: This magic doesn't work, but It shouldn't be
+ * needed now anyway since we will not be able to
+ * aquire the i8254 if it is used for timecounting.
+ */
/*
* See microtime.s for this magic.
*/
time.tv_usec += (27465 * timer0_prescaler_count) >> 15;
if (time.tv_usec >= 1000000)
time.tv_usec -= 1000000;
+#endif
hardclock(&frame);
setdelayed();
timer0_max_count = hardclock_max_count;
@@ -844,7 +851,7 @@ inittodr(time_t base)
sec += tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
- y = time.tv_sec - sec;
+ y = time_second - sec;
if (y <= -2 || y >= 2) {
/* badly off, adjust it */
s = splclock();
@@ -873,7 +880,7 @@ resettodr()
return;
s = splclock();
- tm = time.tv_sec;
+ tm = time_second;
splx(s);
/* Disable RTC updates and interrupts. */
diff --git a/sys/amd64/isa/clock.c b/sys/amd64/isa/clock.c
index 6588165..1df24b7 100644
--- a/sys/amd64/isa/clock.c
+++ b/sys/amd64/isa/clock.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.116 1998/03/14 03:11:50 tegge Exp $
+ * $Id: clock.c,v 1.117 1998/03/16 10:06:58 phk Exp $
*/
/*
@@ -237,12 +237,19 @@ clkintr(struct clockframe frame)
if ((timer0_prescaler_count += timer0_max_count)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
+#ifdef FIXME
+ /*
+ * XXX: This magic doesn't work, but It shouldn't be
+ * needed now anyway since we will not be able to
+ * aquire the i8254 if it is used for timecounting.
+ */
/*
* See microtime.s for this magic.
*/
time.tv_usec += (27465 * timer0_prescaler_count) >> 15;
if (time.tv_usec >= 1000000)
time.tv_usec -= 1000000;
+#endif
hardclock(&frame);
setdelayed();
timer0_max_count = hardclock_max_count;
@@ -844,7 +851,7 @@ inittodr(time_t base)
sec += tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
- y = time.tv_sec - sec;
+ y = time_second - sec;
if (y <= -2 || y >= 2) {
/* badly off, adjust it */
s = splclock();
@@ -873,7 +880,7 @@ resettodr()
return;
s = splclock();
- tm = time.tv_sec;
+ tm = time_second;
splx(s);
/* Disable RTC updates and interrupts. */
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index d267130..2ee3cb2 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_misc.c,v 1.33 1997/11/06 19:28:58 phk Exp $
+ * $Id: linux_misc.c,v 1.34 1998/02/25 05:33:06 bde Exp $
*/
#include <sys/param.h>
@@ -73,9 +73,9 @@ linux_alarm(struct proc *p, struct linux_alarm_args *args)
it.it_value.tv_usec = 0;
it.it_interval.tv_sec = 0;
it.it_interval.tv_usec = 0;
- s = splclock();
+ s = splclock(); /* XXX Still needed ? */
old_it = p->p_realtimer;
- tv = time;
+ getmicrotime(&tv);
if (timerisset(&old_it.it_value))
if (timercmp(&old_it.it_value, &tv, <))
timerclear(&old_it.it_value);
@@ -84,10 +84,10 @@ linux_alarm(struct proc *p, struct linux_alarm_args *args)
splx(s);
if (itimerfix(&it.it_value) || itimerfix(&it.it_interval))
return EINVAL;
- s = splclock();
+ s = splclock(); /* XXX Still needed ? */
if (timerisset(&p->p_realtimer.it_value))
untimeout(realitexpire, (caddr_t)p, p->p_ithandle);
- tv = time;
+ getmicrotime(&tv);
if (timerisset(&it.it_value)) {
timevaladd(&it.it_value, &tv);
p->p_ithandle = timeout(realitexpire, (caddr_t)p, hzto(&it.it_value));
diff --git a/sys/gnu/ext2fs/ext2_inode.c b/sys/gnu/ext2fs/ext2_inode.c
index 5231fec..92ea5bf 100644
--- a/sys/gnu/ext2fs/ext2_inode.c
+++ b/sys/gnu/ext2fs/ext2_inode.c
@@ -109,7 +109,7 @@ ext2_update(vp, access, modify, waitfor)
ip->i_modrev++;
}
if (ip->i_flag & IN_CHANGE) {
- ip->i_ctime = time.tv_sec;
+ ip->i_ctime = time_second;
}
ip->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE);
fs = ip->i_e2fs;
@@ -171,7 +171,7 @@ printf("ext2_truncate called %d to %d\n", VTOI(ovp)->i_number, length);
return EFBIG;
oip = VTOI(ovp);
- gettime(&tv);
+ getmicrotime(&tv);
if (ovp->v_type == VLNK &&
oip->i_size < ovp->v_mount->mnt_maxsymlinklen) {
#if DIAGNOSTIC
diff --git a/sys/gnu/ext2fs/ext2_readwrite.c b/sys/gnu/ext2fs/ext2_readwrite.c
index 68522e5..b49666a 100644
--- a/sys/gnu/ext2fs/ext2_readwrite.c
+++ b/sys/gnu/ext2fs/ext2_readwrite.c
@@ -289,7 +289,7 @@ WRITE(ap)
uio->uio_resid = resid;
}
} else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) {
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, 1);
}
return (error);
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 635876b..9a8dad14 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -837,7 +837,7 @@ ext2_sync(mp, waitfor, cred, p)
panic("update: rofs mod");
}
fs->s_dirt = 0;
- fs->s_es->s_wtime = time.tv_sec;
+ fs->s_es->s_wtime = time_second;
allerror = ext2_sbupdate(ump, waitfor);
}
/*
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c
index bb2a373..61a0a5a 100644
--- a/sys/gnu/ext2fs/ext2_vnops.c
+++ b/sys/gnu/ext2fs/ext2_vnops.c
@@ -229,7 +229,7 @@ loop:
#endif
}
splx(s);
- gettime(&tv);
+ getmicrotime(&tv);
return (UFS_UPDATE(ap->a_vp, &tv, &tv, ap->a_waitfor == MNT_WAIT));
}
@@ -354,7 +354,7 @@ ext2_link(ap)
}
ip->i_nlink++;
ip->i_flag |= IN_CHANGE;
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, 1);
if (!error)
error = ext2_direnter(ip, tdvp, cnp);
@@ -526,7 +526,7 @@ abortit:
*/
ip->i_nlink++;
ip->i_flag |= IN_CHANGE;
- gettime(&tv);
+ getmicrotime(&tv);
if (error = UFS_UPDATE(fvp, &tv, &tv, 1)) {
VOP_UNLOCK(fvp, 0, p);
goto bad;
@@ -897,7 +897,7 @@ ext2_mkdir(ap)
ip->i_nlink = 2;
if (cnp->cn_flags & ISWHITEOUT)
ip->i_flags |= UF_OPAQUE;
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, 1);
/*
@@ -1178,7 +1178,7 @@ ext2_makeinode(mode, dvp, vpp, cnp)
/*
* Make sure inode goes to disk before directory entry.
*/
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, 1);
if (error)
goto bad;
diff --git a/sys/gnu/fs/ext2fs/ext2_inode.c b/sys/gnu/fs/ext2fs/ext2_inode.c
index 5231fec..92ea5bf 100644
--- a/sys/gnu/fs/ext2fs/ext2_inode.c
+++ b/sys/gnu/fs/ext2fs/ext2_inode.c
@@ -109,7 +109,7 @@ ext2_update(vp, access, modify, waitfor)
ip->i_modrev++;
}
if (ip->i_flag & IN_CHANGE) {
- ip->i_ctime = time.tv_sec;
+ ip->i_ctime = time_second;
}
ip->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE);
fs = ip->i_e2fs;
@@ -171,7 +171,7 @@ printf("ext2_truncate called %d to %d\n", VTOI(ovp)->i_number, length);
return EFBIG;
oip = VTOI(ovp);
- gettime(&tv);
+ getmicrotime(&tv);
if (ovp->v_type == VLNK &&
oip->i_size < ovp->v_mount->mnt_maxsymlinklen) {
#if DIAGNOSTIC
diff --git a/sys/gnu/fs/ext2fs/ext2_readwrite.c b/sys/gnu/fs/ext2fs/ext2_readwrite.c
index 68522e5..b49666a 100644
--- a/sys/gnu/fs/ext2fs/ext2_readwrite.c
+++ b/sys/gnu/fs/ext2fs/ext2_readwrite.c
@@ -289,7 +289,7 @@ WRITE(ap)
uio->uio_resid = resid;
}
} else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) {
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, 1);
}
return (error);
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c
index 635876b..9a8dad14 100644
--- a/sys/gnu/fs/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c
@@ -837,7 +837,7 @@ ext2_sync(mp, waitfor, cred, p)
panic("update: rofs mod");
}
fs->s_dirt = 0;
- fs->s_es->s_wtime = time.tv_sec;
+ fs->s_es->s_wtime = time_second;
allerror = ext2_sbupdate(ump, waitfor);
}
/*
diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c
index bb2a373..61a0a5a 100644
--- a/sys/gnu/fs/ext2fs/ext2_vnops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vnops.c
@@ -229,7 +229,7 @@ loop:
#endif
}
splx(s);
- gettime(&tv);
+ getmicrotime(&tv);
return (UFS_UPDATE(ap->a_vp, &tv, &tv, ap->a_waitfor == MNT_WAIT));
}
@@ -354,7 +354,7 @@ ext2_link(ap)
}
ip->i_nlink++;
ip->i_flag |= IN_CHANGE;
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, 1);
if (!error)
error = ext2_direnter(ip, tdvp, cnp);
@@ -526,7 +526,7 @@ abortit:
*/
ip->i_nlink++;
ip->i_flag |= IN_CHANGE;
- gettime(&tv);
+ getmicrotime(&tv);
if (error = UFS_UPDATE(fvp, &tv, &tv, 1)) {
VOP_UNLOCK(fvp, 0, p);
goto bad;
@@ -897,7 +897,7 @@ ext2_mkdir(ap)
ip->i_nlink = 2;
if (cnp->cn_flags & ISWHITEOUT)
ip->i_flags |= UF_OPAQUE;
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, 1);
/*
@@ -1178,7 +1178,7 @@ ext2_makeinode(mode, dvp, vpp, cnp)
/*
* Make sure inode goes to disk before directory entry.
*/
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, 1);
if (error)
goto bad;
diff --git a/sys/i386/apm/apm.c b/sys/i386/apm/apm.c
index 58e75b8..204a72f 100644
--- a/sys/i386/apm/apm.c
+++ b/sys/i386/apm/apm.c
@@ -15,7 +15,7 @@
*
* Sep, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm.c,v 1.68 1998/01/24 02:54:08 eivind Exp $
+ * $Id: apm.c,v 1.69 1998/02/09 06:08:06 eivind Exp $
*/
#include "opt_devfs.h"
@@ -364,9 +364,14 @@ apm_default_resume(void *arg)
pl = splsoftclock();
inittodr(0); /* adjust time to RTC */
microtime(&resume_time);
- tmp_time = time; /* because 'time' is volatile */
+ getmicrotime(&tmp_time);
timevaladd(&tmp_time, &diff_time);
+
+#ifdef FIXME
+ /* XXX THIS DOESN'T WORK!!! */
time = tmp_time;
+#endif
+
#ifdef APM_FIXUP_CALLTODO
/* Calculate the delta time suspended */
timevalsub(&resume_time, &suspend_time);
diff --git a/sys/i386/bios/apm.c b/sys/i386/bios/apm.c
index 58e75b8..204a72f 100644
--- a/sys/i386/bios/apm.c
+++ b/sys/i386/bios/apm.c
@@ -15,7 +15,7 @@
*
* Sep, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD)
*
- * $Id: apm.c,v 1.68 1998/01/24 02:54:08 eivind Exp $
+ * $Id: apm.c,v 1.69 1998/02/09 06:08:06 eivind Exp $
*/
#include "opt_devfs.h"
@@ -364,9 +364,14 @@ apm_default_resume(void *arg)
pl = splsoftclock();
inittodr(0); /* adjust time to RTC */
microtime(&resume_time);
- tmp_time = time; /* because 'time' is volatile */
+ getmicrotime(&tmp_time);
timevaladd(&tmp_time, &diff_time);
+
+#ifdef FIXME
+ /* XXX THIS DOESN'T WORK!!! */
time = tmp_time;
+#endif
+
#ifdef APM_FIXUP_CALLTODO
/* Calculate the delta time suspended */
timevalsub(&resume_time, &suspend_time);
diff --git a/sys/i386/i386/symbols.raw b/sys/i386/i386/symbols.raw
index e530aacc..bdc3b3c 100644
--- a/sys/i386/i386/symbols.raw
+++ b/sys/i386/i386/symbols.raw
@@ -1,6 +1,6 @@
# @(#)symbols.raw 7.6 (Berkeley) 5/8/91
#
-# $Id: symbols.raw,v 1.10 1997/04/16 15:09:37 ache Exp $
+# $Id: symbols.raw,v 1.11 1997/04/26 11:45:26 peter Exp $
#
@@ -72,8 +72,8 @@
#savecore
_dumpdev
_dumplo
+ _time_second
_version
- _time
_dumpsize
_panicstr
_dumpmag
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index f4475bb..e840062 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.123 1998/03/23 19:52:37 jlemon Exp $
+ * $Id: trap.c,v 1.124 1998/03/28 10:32:57 bde Exp $
*/
/*
@@ -519,11 +519,11 @@ kernel_trap:
{
static unsigned lastalert = 0;
- if(time.tv_sec - lastalert > 10)
+ if(time_second - lastalert > 10)
{
log(LOG_WARNING, "NMI: power fail\n");
sysbeep(TIMER_FREQ/880, hz);
- lastalert = time.tv_sec;
+ lastalert = time_second;
}
return;
}
diff --git a/sys/i386/i386/tsc.c b/sys/i386/i386/tsc.c
index 6588165..1df24b7 100644
--- a/sys/i386/i386/tsc.c
+++ b/sys/i386/i386/tsc.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.116 1998/03/14 03:11:50 tegge Exp $
+ * $Id: clock.c,v 1.117 1998/03/16 10:06:58 phk Exp $
*/
/*
@@ -237,12 +237,19 @@ clkintr(struct clockframe frame)
if ((timer0_prescaler_count += timer0_max_count)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
+#ifdef FIXME
+ /*
+ * XXX: This magic doesn't work, but It shouldn't be
+ * needed now anyway since we will not be able to
+ * aquire the i8254 if it is used for timecounting.
+ */
/*
* See microtime.s for this magic.
*/
time.tv_usec += (27465 * timer0_prescaler_count) >> 15;
if (time.tv_usec >= 1000000)
time.tv_usec -= 1000000;
+#endif
hardclock(&frame);
setdelayed();
timer0_max_count = hardclock_max_count;
@@ -844,7 +851,7 @@ inittodr(time_t base)
sec += tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
- y = time.tv_sec - sec;
+ y = time_second - sec;
if (y <= -2 || y >= 2) {
/* badly off, adjust it */
s = splclock();
@@ -873,7 +880,7 @@ resettodr()
return;
s = splclock();
- tm = time.tv_sec;
+ tm = time_second;
splx(s);
/* Disable RTC updates and interrupts. */
diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c
index 6588165..1df24b7 100644
--- a/sys/i386/isa/clock.c
+++ b/sys/i386/isa/clock.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.116 1998/03/14 03:11:50 tegge Exp $
+ * $Id: clock.c,v 1.117 1998/03/16 10:06:58 phk Exp $
*/
/*
@@ -237,12 +237,19 @@ clkintr(struct clockframe frame)
if ((timer0_prescaler_count += timer0_max_count)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
+#ifdef FIXME
+ /*
+ * XXX: This magic doesn't work, but It shouldn't be
+ * needed now anyway since we will not be able to
+ * aquire the i8254 if it is used for timecounting.
+ */
/*
* See microtime.s for this magic.
*/
time.tv_usec += (27465 * timer0_prescaler_count) >> 15;
if (time.tv_usec >= 1000000)
time.tv_usec -= 1000000;
+#endif
hardclock(&frame);
setdelayed();
timer0_max_count = hardclock_max_count;
@@ -844,7 +851,7 @@ inittodr(time_t base)
sec += tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
- y = time.tv_sec - sec;
+ y = time_second - sec;
if (y <= -2 || y >= 2) {
/* badly off, adjust it */
s = splclock();
@@ -873,7 +880,7 @@ resettodr()
return;
s = splclock();
- tm = time.tv_sec;
+ tm = time_second;
splx(s);
/* Disable RTC updates and interrupts. */
diff --git a/sys/i386/isa/pcvt/pcvt_sup.c b/sys/i386/isa/pcvt/pcvt_sup.c
index 24144e1..3b00191 100644
--- a/sys/i386/isa/pcvt/pcvt_sup.c
+++ b/sys/i386/isa/pcvt/pcvt_sup.c
@@ -1923,7 +1923,7 @@ getrand(void)
#endif
static unsigned long seed = 1;
register u_short res = (u_short)seed;
- seed = seed * 1103515245L + time.tv_sec;
+ seed = seed * 1103515245L + time_second;
return res;
}
@@ -2082,9 +2082,9 @@ pcvt_scrnsv_reset(void)
int reschedule = 0;
if((scrnsv_active == 1 || scrnsv_timeout) &&
- last_schedule != time.tv_sec)
+ last_schedule != time_second)
{
- last_schedule = time.tv_sec;
+ last_schedule = time_second;
reschedule = 1;
untimeout(scrnsv_timedout, NULL, scrnsv_timeout_ch);
}
diff --git a/sys/i386/linux/linux_misc.c b/sys/i386/linux/linux_misc.c
index d267130..2ee3cb2 100644
--- a/sys/i386/linux/linux_misc.c
+++ b/sys/i386/linux/linux_misc.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: linux_misc.c,v 1.33 1997/11/06 19:28:58 phk Exp $
+ * $Id: linux_misc.c,v 1.34 1998/02/25 05:33:06 bde Exp $
*/
#include <sys/param.h>
@@ -73,9 +73,9 @@ linux_alarm(struct proc *p, struct linux_alarm_args *args)
it.it_value.tv_usec = 0;
it.it_interval.tv_sec = 0;
it.it_interval.tv_usec = 0;
- s = splclock();
+ s = splclock(); /* XXX Still needed ? */
old_it = p->p_realtimer;
- tv = time;
+ getmicrotime(&tv);
if (timerisset(&old_it.it_value))
if (timercmp(&old_it.it_value, &tv, <))
timerclear(&old_it.it_value);
@@ -84,10 +84,10 @@ linux_alarm(struct proc *p, struct linux_alarm_args *args)
splx(s);
if (itimerfix(&it.it_value) || itimerfix(&it.it_interval))
return EINVAL;
- s = splclock();
+ s = splclock(); /* XXX Still needed ? */
if (timerisset(&p->p_realtimer.it_value))
untimeout(realitexpire, (caddr_t)p, p->p_ithandle);
- tv = time;
+ getmicrotime(&tv);
if (timerisset(&it.it_value)) {
timevaladd(&it.it_value, &tv);
p->p_ithandle = timeout(realitexpire, (caddr_t)p, hzto(&it.it_value));
diff --git a/sys/isa/atrtc.c b/sys/isa/atrtc.c
index 6588165..1df24b7 100644
--- a/sys/isa/atrtc.c
+++ b/sys/isa/atrtc.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
- * $Id: clock.c,v 1.116 1998/03/14 03:11:50 tegge Exp $
+ * $Id: clock.c,v 1.117 1998/03/16 10:06:58 phk Exp $
*/
/*
@@ -237,12 +237,19 @@ clkintr(struct clockframe frame)
if ((timer0_prescaler_count += timer0_max_count)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
+#ifdef FIXME
+ /*
+ * XXX: This magic doesn't work, but It shouldn't be
+ * needed now anyway since we will not be able to
+ * aquire the i8254 if it is used for timecounting.
+ */
/*
* See microtime.s for this magic.
*/
time.tv_usec += (27465 * timer0_prescaler_count) >> 15;
if (time.tv_usec >= 1000000)
time.tv_usec -= 1000000;
+#endif
hardclock(&frame);
setdelayed();
timer0_max_count = hardclock_max_count;
@@ -844,7 +851,7 @@ inittodr(time_t base)
sec += tz.tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0);
- y = time.tv_sec - sec;
+ y = time_second - sec;
if (y <= -2 || y >= 2) {
/* badly off, adjust it */
s = splclock();
@@ -873,7 +880,7 @@ resettodr()
return;
s = splclock();
- tm = time.tv_sec;
+ tm = time_second;
splx(s);
/* Disable RTC updates and interrupts. */
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index ad779c5..2372c26 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* @(#)init_main.c 8.9 (Berkeley) 1/21/94
- * $Id: init_main.c,v 1.83 1998/02/06 12:13:21 eivind Exp $
+ * $Id: init_main.c,v 1.84 1998/02/15 04:16:57 dyson Exp $
*/
#include "opt_devfs.h"
@@ -447,7 +447,7 @@ proc0_post(dummy)
* from the file system. Reset p->p_rtime as it may have been
* munched in mi_switch() after the time got set.
*/
- gettime(&boottime);
+ getmicrotime(&boottime);
proc0.p_stats->p_start = runtime = mono_time = boottime;
proc0.p_rtime.tv_sec = proc0.p_rtime.tv_usec = 0;
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c
index 84b9875..35d95bf 100644
--- a/sys/kern/kern_clock.c
+++ b/sys/kern/kern_clock.c
@@ -39,7 +39,7 @@ static volatile int print_tci = 1;
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_clock.c,v 1.58 1998/03/16 10:19:12 phk Exp $
+ * $Id: kern_clock.c,v 1.59 1998/03/26 20:51:31 phk Exp $
*/
#include <sys/param.h>
@@ -97,6 +97,8 @@ long tk_rawcc;
struct timecounter *timecounter;
+time_t time_second;
+
/*
* Clock handling routines.
*
@@ -136,7 +138,6 @@ int ticks;
static int psdiv, pscnt; /* prof => stat divider */
int psratio; /* ratio: prof / stat */
-struct timeval time;
volatile struct timeval mono_time;
/*
@@ -223,14 +224,10 @@ hardclock(frame)
}
/*
- * Compute number of hz until specified time. Used to
- * compute third argument to timeout() from an absolute time.
- * XXX this interface is often inconvenient. We often just need the
- * number of ticks in a timeval, but to use hzto() for that we have
- * to add `time' to the timeval and do everything at splclock().
+ * Compute number of ticks in the specified amount of time.
*/
int
-hzto(tv)
+tvtohz(tv)
struct timeval *tv;
{
register unsigned long ticks;
@@ -257,10 +254,8 @@ hzto(tv)
* If ints have 32 bits, then the maximum value for any timeout in
* 10ms ticks is 248 days.
*/
- s = splclock();
- sec = tv->tv_sec - time.tv_sec;
- usec = tv->tv_usec - time.tv_usec;
- splx(s);
+ sec = tv->tv_sec;
+ usec = tv->tv_usec;
if (usec < 0) {
sec--;
usec += 1000000;
@@ -271,7 +266,7 @@ hzto(tv)
sec++;
usec -= 1000000;
}
- printf("hzto: negative time difference %ld sec %ld usec\n",
+ printf("tvotohz: negative time difference %ld sec %ld usec\n",
sec, usec);
#endif
ticks = 1;
@@ -288,6 +283,24 @@ hzto(tv)
return (ticks);
}
+
+/*
+ * Compute number of hz until specified time. Used to
+ * compute third argument to timeout() from an absolute time.
+ */
+int
+hzto(tv)
+ struct timeval *tv;
+{
+ register long sec, usec;
+ struct timeval t2;
+
+ getmicrotime(&t2);
+ t2.tv_sec = tv->tv_sec - t2.tv_sec;
+ t2.tv_usec = tv->tv_usec - t2.tv_usec;
+ return (tvtohz(&t2));
+}
+
/*
* Start profiling on a process.
*
@@ -637,8 +650,7 @@ set_timecounter(struct timespec *ts)
tc->offset_nano = (u_int64_t)ts->tv_nsec << 32;
tc->offset_micro = ts->tv_nsec / 1000;
tc->offset_count = tc->get_timecount();
- time.tv_sec = tc->offset_sec;
- time.tv_usec = tc->offset_micro;
+ time_second = tc->offset_sec;
timecounter = tc;
splx(s);
}
@@ -711,8 +723,7 @@ tco_forward(void)
tc->offset_micro = (tc->offset_nano / 1000) >> 32;
- time.tv_usec = tc->offset_micro;
- time.tv_sec = tc->offset_sec;
+ time_second = tc->offset_sec;
timecounter = tc;
}
diff --git a/sys/kern/kern_ntptime.c b/sys/kern/kern_ntptime.c
index 636a5ce..e31022f 100644
--- a/sys/kern/kern_ntptime.c
+++ b/sys/kern/kern_ntptime.c
@@ -255,9 +255,9 @@ hardupdate(offset)
* multiply/divide should be replaced someday.
*/
if (time_status & STA_FREQHOLD || time_reftime == 0)
- time_reftime = time.tv_sec;
- mtemp = time.tv_sec - time_reftime;
- time_reftime = time.tv_sec;
+ time_reftime = time_second;
+ mtemp = time_second - time_reftime;
+ time_reftime = time_second;
if (time_status & STA_FLL) {
if (mtemp >= MINSEC) {
ltemp = ((time_offset / mtemp) << (SHIFT_USEC -
diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
index 84b9875..35d95bf 100644
--- a/sys/kern/kern_tc.c
+++ b/sys/kern/kern_tc.c
@@ -39,7 +39,7 @@ static volatile int print_tci = 1;
* SUCH DAMAGE.
*
* @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
- * $Id: kern_clock.c,v 1.58 1998/03/16 10:19:12 phk Exp $
+ * $Id: kern_clock.c,v 1.59 1998/03/26 20:51:31 phk Exp $
*/
#include <sys/param.h>
@@ -97,6 +97,8 @@ long tk_rawcc;
struct timecounter *timecounter;
+time_t time_second;
+
/*
* Clock handling routines.
*
@@ -136,7 +138,6 @@ int ticks;
static int psdiv, pscnt; /* prof => stat divider */
int psratio; /* ratio: prof / stat */
-struct timeval time;
volatile struct timeval mono_time;
/*
@@ -223,14 +224,10 @@ hardclock(frame)
}
/*
- * Compute number of hz until specified time. Used to
- * compute third argument to timeout() from an absolute time.
- * XXX this interface is often inconvenient. We often just need the
- * number of ticks in a timeval, but to use hzto() for that we have
- * to add `time' to the timeval and do everything at splclock().
+ * Compute number of ticks in the specified amount of time.
*/
int
-hzto(tv)
+tvtohz(tv)
struct timeval *tv;
{
register unsigned long ticks;
@@ -257,10 +254,8 @@ hzto(tv)
* If ints have 32 bits, then the maximum value for any timeout in
* 10ms ticks is 248 days.
*/
- s = splclock();
- sec = tv->tv_sec - time.tv_sec;
- usec = tv->tv_usec - time.tv_usec;
- splx(s);
+ sec = tv->tv_sec;
+ usec = tv->tv_usec;
if (usec < 0) {
sec--;
usec += 1000000;
@@ -271,7 +266,7 @@ hzto(tv)
sec++;
usec -= 1000000;
}
- printf("hzto: negative time difference %ld sec %ld usec\n",
+ printf("tvotohz: negative time difference %ld sec %ld usec\n",
sec, usec);
#endif
ticks = 1;
@@ -288,6 +283,24 @@ hzto(tv)
return (ticks);
}
+
+/*
+ * Compute number of hz until specified time. Used to
+ * compute third argument to timeout() from an absolute time.
+ */
+int
+hzto(tv)
+ struct timeval *tv;
+{
+ register long sec, usec;
+ struct timeval t2;
+
+ getmicrotime(&t2);
+ t2.tv_sec = tv->tv_sec - t2.tv_sec;
+ t2.tv_usec = tv->tv_usec - t2.tv_usec;
+ return (tvtohz(&t2));
+}
+
/*
* Start profiling on a process.
*
@@ -637,8 +650,7 @@ set_timecounter(struct timespec *ts)
tc->offset_nano = (u_int64_t)ts->tv_nsec << 32;
tc->offset_micro = ts->tv_nsec / 1000;
tc->offset_count = tc->get_timecount();
- time.tv_sec = tc->offset_sec;
- time.tv_usec = tc->offset_micro;
+ time_second = tc->offset_sec;
timecounter = tc;
splx(s);
}
@@ -711,8 +723,7 @@ tco_forward(void)
tc->offset_micro = (tc->offset_nano / 1000) >> 32;
- time.tv_usec = tc->offset_micro;
- time.tv_sec = tc->offset_sec;
+ time_second = tc->offset_sec;
timecounter = tc;
}
diff --git a/sys/kern/kern_threads.c b/sys/kern/kern_threads.c
index 27d7cec..03cc9c9 100644
--- a/sys/kern/kern_threads.c
+++ b/sys/kern/kern_threads.c
@@ -46,7 +46,7 @@
* in Germany will I accept domestic beer. This code may or may not work
* and I certainly make no claims as to its fitness for *any* purpose.
*
- * $Id: kern_threads.c,v 1.5 1997/11/07 08:52:57 phk Exp $
+ * $Id: kern_threads.c,v 1.6 1998/02/25 06:30:15 bde Exp $
*/
#include <sys/param.h>
@@ -91,10 +91,7 @@ thr_sleep(struct proc *p, struct thr_sleep_args *uap) {
p->p_wakeup = 0;
return (EINVAL);
}
- s = splclock();
- timevaladd(&atv, &time);
- timo = hzto(&atv);
- splx(s);
+ timo = tvtohz(&atv);
}
p->p_retval[0] = 0;
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c
index a1fb4e3..f0897d7 100644
--- a/sys/kern/kern_time.c
+++ b/sys/kern/kern_time.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_time.c 8.1 (Berkeley) 6/10/93
- * $Id: kern_time.c,v 1.42 1998/02/25 04:10:32 bde Exp $
+ * $Id: kern_time.c,v 1.43 1998/03/26 20:51:41 phk Exp $
*/
#include <sys/param.h>
@@ -229,10 +229,7 @@ nanosleep1(p, rqt, rmt)
atv.tv_usec = 0;
}
}
- s = splclock();
- timevaladd(&atv, &time);
- timo = hzto(&atv);
- splx(s);
+ timo = tvtohz(&atv);
p->p_sleepend = &atv;
error = tsleep(&nanowait, PWAIT | PCATCH, "nanslp", timo);
@@ -257,9 +254,7 @@ nanosleep1(p, rqt, rmt)
* problem for small timeouts, but the absolute error may
* be large for large timeouts.
*/
- s = splclock();
- utv = time;
- splx(s);
+ getmicrotime(&utv);
if (i != n) {
atv.tv_sec += (n - i - 1) * 100000000;
timevaladd(&atv, &rtv);
@@ -504,12 +499,13 @@ getitimer(p, uap)
struct proc *p;
register struct getitimer_args *uap;
{
+ struct timeval ctv;
struct itimerval aitv;
int s;
if (uap->which > ITIMER_PROF)
return (EINVAL);
- s = splclock();
+ s = splclock(); /* XXX still needed ? */
if (uap->which == ITIMER_REAL) {
/*
* Convert from absoulte to relative time in .it_value
@@ -518,11 +514,13 @@ getitimer(p, uap)
* current time and time for the timer to go off.
*/
aitv = p->p_realtimer;
- if (timerisset(&aitv.it_value))
- if (timercmp(&aitv.it_value, &time, <))
+ if (timerisset(&aitv.it_value)) {
+ getmicrotime(&ctv);
+ if (timercmp(&aitv.it_value, &ctv, <))
timerclear(&aitv.it_value);
else
- timevalsub(&aitv.it_value, &time);
+ timevalsub(&aitv.it_value, &ctv);
+ }
} else
aitv = p->p_stats->p_timer[uap->which];
splx(s);
@@ -543,6 +541,7 @@ setitimer(p, uap)
register struct setitimer_args *uap;
{
struct itimerval aitv;
+ struct timeval ctv;
register struct itimerval *itvp;
int s, error;
@@ -563,12 +562,13 @@ setitimer(p, uap)
timerclear(&aitv.it_interval);
else if (itimerfix(&aitv.it_interval))
return (EINVAL);
- s = splclock();
+ s = splclock(); /* XXX: still needed ? */
if (uap->which == ITIMER_REAL) {
if (timerisset(&p->p_realtimer.it_value))
untimeout(realitexpire, (caddr_t)p, p->p_ithandle);
if (timerisset(&aitv.it_value)) {
- timevaladd(&aitv.it_value, &time);
+ getmicrotime(&ctv);
+ timevaladd(&aitv.it_value, &ctv);
p->p_ithandle = timeout(realitexpire, (caddr_t)p,
hzto(&aitv.it_value));
}
@@ -596,6 +596,7 @@ realitexpire(arg)
void *arg;
{
register struct proc *p;
+ struct timeval ctv;
int s;
p = (struct proc *)arg;
@@ -605,10 +606,11 @@ realitexpire(arg)
return;
}
for (;;) {
- s = splclock();
+ s = splclock(); /* XXX: still neeeded ? */
timevaladd(&p->p_realtimer.it_value,
&p->p_realtimer.it_interval);
- if (timercmp(&p->p_realtimer.it_value, &time, >)) {
+ getmicrotime(&ctv);
+ if (timercmp(&p->p_realtimer.it_value, &ctv, >)) {
p->p_ithandle =
timeout(realitexpire, (caddr_t)p,
hzto(&p->p_realtimer.it_value) - 1);
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index f4475bb..e840062 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
- * $Id: trap.c,v 1.123 1998/03/23 19:52:37 jlemon Exp $
+ * $Id: trap.c,v 1.124 1998/03/28 10:32:57 bde Exp $
*/
/*
@@ -519,11 +519,11 @@ kernel_trap:
{
static unsigned lastalert = 0;
- if(time.tv_sec - lastalert > 10)
+ if(time_second - lastalert > 10)
{
log(LOG_WARNING, "NMI: power fail\n");
sysbeep(TIMER_FREQ/880, hz);
- lastalert = time.tv_sec;
+ lastalert = time_second;
}
return;
}
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 54dc0a8..c0cb690 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)sys_generic.c 8.5 (Berkeley) 1/21/94
- * $Id: sys_generic.c,v 1.32 1997/11/06 19:29:20 phk Exp $
+ * $Id: sys_generic.c,v 1.33 1997/11/23 10:30:50 bde Exp $
*/
#include "opt_ktrace.h"
@@ -539,7 +539,7 @@ select(p, uap)
fd_mask s_selbits[howmany(2048, NFDBITS)];
fd_mask *ibits[3], *obits[3], *selbits, *sbp;
struct timeval atv;
- int s, ncoll, error, timo;
+ int s, ncoll, error, timo, term;
u_int nbufbytes, ncpbytes, nfdbits;
if (uap->nd < 0)
@@ -600,12 +600,11 @@ select(p, uap)
error = EINVAL;
goto done;
}
- s = splclock();
- timevaladd(&atv, &time);
- timo = hzto(&atv);
- splx(s);
+ timo = tvtohz(&atv);
} else
timo = 0;
+ if (timo)
+ term = timo + ticks;
retry:
ncoll = nselcoll;
p->p_flag |= P_SELECT;
@@ -613,9 +612,7 @@ retry:
if (error || p->p_retval[0])
goto done;
s = splhigh();
- /* this should be timercmp(&time, &atv, >=) */
- if (uap->tv && (time.tv_sec > atv.tv_sec ||
- (time.tv_sec == atv.tv_sec && time.tv_usec >= atv.tv_usec))) {
+ if (timo && term <= ticks) {
splx(s);
goto done;
}
@@ -706,7 +703,7 @@ poll(p, uap)
caddr_t bits;
char smallbits[32 * sizeof(struct pollfd)];
struct timeval atv;
- int s, ncoll, error = 0, timo;
+ int s, ncoll, error = 0, timo, term;
size_t ni;
if (SCARG(uap, nfds) > p->p_fd->fd_nfiles) {
@@ -728,20 +725,19 @@ poll(p, uap)
error = EINVAL;
goto done;
}
- s = splclock();
- timevaladd(&atv, &time);
- timo = hzto(&atv);
- splx(s);
+ timo = tvtohz(&atv);
} else
timo = 0;
+ if (timo)
+ term = timo + ticks;
retry:
ncoll = nselcoll;
p->p_flag |= P_SELECT;
error = pollscan(p, (struct pollfd *)bits, SCARG(uap, nfds));
if (error || p->p_retval[0])
goto done;
- s = splhigh();
- if (timo && timercmp(&time, &atv, >=)) {
+ s = splhigh();
+ if (timo && term <= ticks) {
splx(s);
goto done;
}
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
index d439759..d3b8a98 100644
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_msg.c,v 1.16 1997/08/02 14:31:37 bde Exp $ */
+/* $Id: sysv_msg.c,v 1.17 1997/11/06 19:29:24 phk Exp $ */
/*
* Implementation of SVID messages
@@ -272,7 +272,7 @@ msgctl(p, uap)
msqptr->msg_perm.mode = (msqptr->msg_perm.mode & ~0777) |
(msqbuf.msg_perm.mode & 0777);
msqptr->msg_qbytes = msqbuf.msg_qbytes;
- msqptr->msg_ctime = time.tv_sec;
+ msqptr->msg_ctime = time_second;
break;
case IPC_STAT:
@@ -390,7 +390,7 @@ msgget(p, uap)
msqptr->msg_lrpid = 0;
msqptr->msg_stime = 0;
msqptr->msg_rtime = 0;
- msqptr->msg_ctime = time.tv_sec;
+ msqptr->msg_ctime = time_second;
} else {
#ifdef MSG_DEBUG_OK
printf("didn't find it and wasn't asked to create it\n");
@@ -732,7 +732,7 @@ msgsnd(p, uap)
msqptr->msg_cbytes += msghdr->msg_ts;
msqptr->msg_qnum++;
msqptr->msg_lspid = p->p_pid;
- msqptr->msg_stime = time.tv_sec;
+ msqptr->msg_stime = time_second;
wakeup((caddr_t)msqptr);
p->p_retval[0] = 0;
@@ -954,7 +954,7 @@ msgrcv(p, uap)
msqptr->msg_cbytes -= msghdr->msg_ts;
msqptr->msg_qnum--;
msqptr->msg_lrpid = p->p_pid;
- msqptr->msg_rtime = time.tv_sec;
+ msqptr->msg_rtime = time_second;
/*
* Make msgsz the actual amount that we'll be returning.
diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c
index 4894f8c..d35bbca 100644
--- a/sys/kern/sysv_sem.c
+++ b/sys/kern/sysv_sem.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_sem.c,v 1.19 1997/08/02 14:31:38 bde Exp $ */
+/* $Id: sysv_sem.c,v 1.20 1997/11/06 19:29:24 phk Exp $ */
/*
* Implementation of SVID semaphores
@@ -388,7 +388,7 @@ __semctl(p, uap)
semaptr->sem_perm.gid = sbuf.sem_perm.gid;
semaptr->sem_perm.mode = (semaptr->sem_perm.mode & ~0777) |
(sbuf.sem_perm.mode & 0777);
- semaptr->sem_ctime = time.tv_sec;
+ semaptr->sem_ctime = time_second;
break;
case IPC_STAT:
@@ -575,7 +575,7 @@ semget(p, uap)
(sema[semid].sem_perm.seq + 1) & 0x7fff;
sema[semid].sem_nsems = nsems;
sema[semid].sem_otime = 0;
- sema[semid].sem_ctime = time.tv_sec;
+ sema[semid].sem_ctime = time_second;
sema[semid].sem_base = &sem[semtot];
semtot += nsems;
bzero(sema[semid].sem_base,
diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c
index 4d05cad..a52b3d7 100644
--- a/sys/kern/sysv_shm.c
+++ b/sys/kern/sysv_shm.c
@@ -1,4 +1,4 @@
-/* $Id: sysv_shm.c,v 1.33 1997/12/16 17:40:23 eivind Exp $ */
+/* $Id: sysv_shm.c,v 1.34 1998/02/09 06:09:25 eivind Exp $ */
/* $NetBSD: sysv_shm.c,v 1.23 1994/07/04 23:25:12 glass Exp $ */
/*
@@ -170,7 +170,7 @@ shm_delete_mapping(p, shmmap_s)
if (result != KERN_SUCCESS)
return EINVAL;
shmmap_s->shmid = -1;
- shmseg->shm_dtime = time.tv_sec;
+ shmseg->shm_dtime = time_second;
if ((--shmseg->shm_nattch <= 0) &&
(shmseg->shm_perm.mode & SHMSEG_REMOVED)) {
shm_deallocate_segment(shmseg);
@@ -281,7 +281,7 @@ shmat(p, uap)
shmmap_s->va = attach_va;
shmmap_s->shmid = uap->shmid;
shmseg->shm_lpid = p->p_pid;
- shmseg->shm_atime = time.tv_sec;
+ shmseg->shm_atime = time_second;
shmseg->shm_nattch++;
p->p_retval[0] = attach_va;
return 0;
@@ -389,7 +389,7 @@ shmctl(p, uap)
shmseg->shm_perm.mode =
(shmseg->shm_perm.mode & ~ACCESSPERMS) |
(inbuf.shm_perm.mode & ACCESSPERMS);
- shmseg->shm_ctime = time.tv_sec;
+ shmseg->shm_ctime = time_second;
break;
case IPC_RMID:
error = ipcperm(cred, &shmseg->shm_perm, IPC_M);
@@ -512,7 +512,7 @@ shmget_allocate_segment(p, uap, mode)
shmseg->shm_cpid = p->p_pid;
shmseg->shm_lpid = shmseg->shm_nattch = 0;
shmseg->shm_atime = shmseg->shm_dtime = 0;
- shmseg->shm_ctime = time.tv_sec;
+ shmseg->shm_ctime = time_second;
shm_committed += btoc(size);
shm_nused++;
if (shmseg->shm_perm.mode & SHMSEG_WANTED) {
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index 64dcf31..fd57c22 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -38,7 +38,7 @@ static volatile int ttyverbose = 0;
* SUCH DAMAGE.
*
* @(#)tty.c 8.8 (Berkeley) 1/21/94
- * $Id: tty.c,v 1.100 1997/12/16 17:40:24 eivind Exp $
+ * $Id: tty.c,v 1.101 1998/03/07 15:36:21 bde Exp $
*/
/*-
@@ -1499,7 +1499,7 @@ loop:
goto sleep;
if (qp->c_cc >= m)
goto read;
- gettime(&timecopy);
+ getmicrotime(&timecopy);
if (!has_stime) {
/* first character, start timer */
has_stime = 1;
@@ -1519,7 +1519,7 @@ loop:
} else { /* m == 0 */
if (qp->c_cc > 0)
goto read;
- gettime(&timecopy);
+ getmicrotime(&timecopy);
if (!has_stime) {
has_stime = 1;
stime = timecopy;
diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c
index 247eef0..043505e 100644
--- a/sys/kern/vfs_aio.c
+++ b/sys/kern/vfs_aio.c
@@ -13,7 +13,7 @@
* bad that happens because of using this software isn't the responsibility
* of the author. This software is distributed AS-IS.
*
- * $Id: vfs_aio.c,v 1.25 1998/03/28 10:33:09 bde Exp $
+ * $Id: vfs_aio.c,v 1.26 1998/03/28 11:50:04 dufault Exp $
*/
/*
@@ -1484,10 +1484,7 @@ aio_suspend(struct proc *p, struct aio_suspend_args *uap)
TIMESPEC_TO_TIMEVAL(&atv, &ts)
if (itimerfix(&atv))
return (EINVAL);
- s = splclock();
- timevaladd(&atv, &time);
- timo = hzto(&atv);
- splx(s);
+ timo = tvtohz(&atv);
}
ki = p->p_aioinfo;
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index b507683..2ba465e 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.146 1998/03/28 12:04:32 bde Exp $
+ * $Id: vfs_subr.c,v 1.147 1998/03/28 13:24:54 bde Exp $
*/
/*
@@ -920,7 +920,7 @@ sched_sync(void)
struct proc *p = updateproc;
for (;;) {
- starttime = time.tv_sec;
+ starttime = time_second;
/*
* Push files whose dirty time has expired.
@@ -976,7 +976,7 @@ sched_sync(void)
* matter as we are just trying to generally pace the
* filesystem activity.
*/
- if (time.tv_sec == starttime)
+ if (time_second == starttime)
tsleep(&lbolt, PPAUSE, "syncer", 0);
}
}
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index b507683..2ba465e 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.146 1998/03/28 12:04:32 bde Exp $
+ * $Id: vfs_subr.c,v 1.147 1998/03/28 13:24:54 bde Exp $
*/
/*
@@ -920,7 +920,7 @@ sched_sync(void)
struct proc *p = updateproc;
for (;;) {
- starttime = time.tv_sec;
+ starttime = time_second;
/*
* Push files whose dirty time has expired.
@@ -976,7 +976,7 @@ sched_sync(void)
* matter as we are just trying to generally pace the
* filesystem activity.
*/
- if (time.tv_sec == starttime)
+ if (time_second == starttime)
tsleep(&lbolt, PPAUSE, "syncer", 0);
}
}
diff --git a/sys/net/if_atmsubr.c b/sys/net/if_atmsubr.c
index b005f80..7df2626 100644
--- a/sys/net/if_atmsubr.c
+++ b/sys/net/if_atmsubr.c
@@ -108,7 +108,7 @@ atm_output(ifp, m0, dst, rt0)
if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING))
senderr(ENETDOWN);
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
/*
* check route
@@ -263,7 +263,7 @@ atm_input(ifp, ah, m, rxhand)
m_freem(m);
return;
}
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
ifp->if_ibytes += m->m_pkthdr.len;
#if NBPFILTER > 0
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 9b64a59..3266f18 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_ethersubr.c 8.1 (Berkeley) 6/10/93
- * $Id: if_ethersubr.c,v 1.45 1998/02/20 13:11:49 bde Exp $
+ * $Id: if_ethersubr.c,v 1.46 1998/03/18 01:40:11 wollman Exp $
*/
#include "opt_atalk.h"
@@ -162,7 +162,7 @@ ether_output(ifp, m0, dst, rt0)
}
if (rt->rt_flags & RTF_REJECT)
if (rt->rt_rmx.rmx_expire == 0 ||
- time.tv_sec < rt->rt_rmx.rmx_expire)
+ time_second < rt->rt_rmx.rmx_expire)
senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH);
}
switch (dst->sa_family) {
diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c
index 8690356..5f54878 100644
--- a/sys/net/if_fddisubr.c
+++ b/sys/net/if_fddisubr.c
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* from: if_ethersubr.c,v 1.5 1994/12/13 22:31:45 wollman Exp
- * $Id: if_fddisubr.c,v 1.25 1998/01/09 00:51:55 eivind Exp $
+ * $Id: if_fddisubr.c,v 1.26 1998/02/20 13:11:49 bde Exp $
*/
#include "opt_atalk.h"
@@ -149,7 +149,7 @@ fddi_output(ifp, m0, dst, rt0)
if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING))
senderr(ENETDOWN);
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
#if !defined(__bsdi__) || _BSDI_VERSION >= 199401
if (rt = rt0) {
if ((rt->rt_flags & RTF_UP) == 0) {
@@ -170,7 +170,7 @@ fddi_output(ifp, m0, dst, rt0)
}
if (rt->rt_flags & RTF_REJECT)
if (rt->rt_rmx.rmx_expire == 0 ||
- time.tv_sec < rt->rt_rmx.rmx_expire)
+ time_second < rt->rt_rmx.rmx_expire)
senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH);
}
#endif
@@ -474,7 +474,7 @@ fddi_input(ifp, fh, m)
m_freem(m);
return;
}
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
ifp->if_ibytes += m->m_pkthdr.len + sizeof (*fh);
if (fh->fddi_dhost[0] & 1) {
if (bcmp((caddr_t)fddibroadcastaddr, (caddr_t)fh->fddi_dhost,
diff --git a/sys/net/if_ppp.c b/sys/net/if_ppp.c
index 5d24e4b..fd194e1 100644
--- a/sys/net/if_ppp.c
+++ b/sys/net/if_ppp.c
@@ -69,7 +69,7 @@
* Paul Mackerras (paulus@cs.anu.edu.au).
*/
-/* $Id: if_ppp.c,v 1.53 1998/01/08 23:41:28 eivind Exp $ */
+/* $Id: if_ppp.c,v 1.54 1998/03/22 06:51:54 peter Exp $ */
/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
/* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */
@@ -275,7 +275,7 @@ pppalloc(pid)
sc->sc_npmode[i] = NPMODE_ERROR;
sc->sc_npqueue = NULL;
sc->sc_npqtail = &sc->sc_npqueue;
- sc->sc_last_sent = sc->sc_last_recv = time.tv_sec;
+ sc->sc_last_sent = sc->sc_last_recv = time_second;
return sc;
}
@@ -511,7 +511,7 @@ pppioctl(sc, cmd, data, flag, p)
case PPPIOCGIDLE:
s = splsoftnet();
- t = time.tv_sec;
+ t = time_second;
((struct ppp_idle *)data)->xmit_idle = t - sc->sc_last_sent;
((struct ppp_idle *)data)->recv_idle = t - sc->sc_last_recv;
splx(s);
@@ -820,14 +820,14 @@ pppoutput(ifp, m0, dst, rtp)
*/
if (sc->sc_active_filt.bf_insns == 0
|| bpf_filter(sc->sc_active_filt.bf_insns, (u_char *) m0, len, 0))
- sc->sc_last_sent = time.tv_sec;
+ sc->sc_last_sent = time_second;
*mtod(m0, u_char *) = address;
#else
/*
* Update the time we sent the most recent data packet.
*/
- sc->sc_last_sent = time.tv_sec;
+ sc->sc_last_sent = time_second;
#endif /* PPP_FILTER */
}
@@ -862,7 +862,7 @@ pppoutput(ifp, m0, dst, rtp)
IF_ENQUEUE(ifq, m0);
(*sc->sc_start)(sc);
}
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
ifp->if_opackets++;
ifp->if_obytes += len;
@@ -1455,14 +1455,14 @@ ppp_inproc(sc, m)
}
if (sc->sc_active_filt.bf_insns == 0
|| bpf_filter(sc->sc_active_filt.bf_insns, (u_char *) m, ilen, 0))
- sc->sc_last_recv = time.tv_sec;
+ sc->sc_last_recv = time_second;
*mtod(m, u_char *) = adrs;
#else
/*
* Record the time that we received this packet.
*/
- sc->sc_last_recv = time.tv_sec;
+ sc->sc_last_recv = time_second;
#endif /* PPP_FILTER */
}
@@ -1490,7 +1490,7 @@ ppp_inproc(sc, m)
m->m_len -= PPP_HDRLEN;
schednetisr(NETISR_IP);
inq = &ipintrq;
- sc->sc_last_recv = time.tv_sec; /* update time of last pkt rcvd */
+ sc->sc_last_recv = time_second; /* update time of last pkt rcvd */
break;
#endif
#ifdef IPX
@@ -1509,7 +1509,7 @@ ppp_inproc(sc, m)
m->m_len -= PPP_HDRLEN;
schednetisr(NETISR_IPX);
inq = &ipxintrq;
- sc->sc_last_recv = time.tv_sec; /* update time of last pkt rcvd */
+ sc->sc_last_recv = time_second; /* update time of last pkt rcvd */
break;
#endif
@@ -1538,7 +1538,7 @@ ppp_inproc(sc, m)
splx(s);
ifp->if_ipackets++;
ifp->if_ibytes += ilen;
- gettime(&ifp->if_lastchange);
+ getmicrotime(&ifp->if_lastchange);
if (rv)
(*sc->sc_ctlp)(sc);
diff --git a/sys/net/if_sl.c b/sys/net/if_sl.c
index 5ff58ec..1b0cc01 100644
--- a/sys/net/if_sl.c
+++ b/sys/net/if_sl.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_sl.c 8.6 (Berkeley) 2/1/94
- * $Id: if_sl.c,v 1.66 1998/02/09 06:09:54 eivind Exp $
+ * $Id: if_sl.c,v 1.67 1998/02/13 12:46:14 phk Exp $
*/
/*
@@ -792,15 +792,15 @@ slinput(c, tp)
* this one is within the time limit.
*/
if (sc->sc_abortcount &&
- time.tv_sec >= sc->sc_starttime + ABT_WINDOW)
+ time_second >= sc->sc_starttime + ABT_WINDOW)
sc->sc_abortcount = 0;
/*
* If we see an abort after "idle" time, count it;
* record when the first abort escape arrived.
*/
- if (time.tv_sec >= sc->sc_lasttime + ABT_IDLE) {
+ if (time_second >= sc->sc_lasttime + ABT_IDLE) {
if (++sc->sc_abortcount == 1)
- sc->sc_starttime = time.tv_sec;
+ sc->sc_starttime = time_second;
if (sc->sc_abortcount >= ABT_COUNT) {
slclose(tp,0);
return 0;
@@ -808,7 +808,7 @@ slinput(c, tp)
}
} else
sc->sc_abortcount = 0;
- sc->sc_lasttime = time.tv_sec;
+ sc->sc_lasttime = time_second;
}
switch (c) {
diff --git a/sys/net/if_spppsubr.c b/sys/net/if_spppsubr.c
index 441eb7c..0f890cb 100644
--- a/sys/net/if_spppsubr.c
+++ b/sys/net/if_spppsubr.c
@@ -17,7 +17,7 @@
*
* From: Version 2.4, Thu Apr 30 17:17:21 MSD 1997
*
- * $Id: if_spppsubr.c,v 1.33 1998/02/28 21:01:09 phk Exp $
+ * $Id: if_spppsubr.c,v 1.34 1998/03/01 06:01:33 bde Exp $
*/
#include "opt_inet.h"
@@ -29,6 +29,7 @@
#include <sys/sockio.h>
#include <sys/socket.h>
#include <sys/syslog.h>
+#include <machine/random.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/md5.h>
@@ -989,7 +990,7 @@ sppp_cisco_input(struct sppp *sp, struct mbuf *m)
++sp->pp_loopcnt;
/* Generate new local sequence number */
- sp->pp_seq ^= time.tv_sec ^ time.tv_usec;
+ read_random((char*)&sp->pp_seq, sizeof sp->pp_seq);
break;
}
sp->pp_loopcnt = 0;
@@ -1017,7 +1018,7 @@ sppp_cisco_send(struct sppp *sp, int type, long par1, long par2)
struct ppp_header *h;
struct cisco_packet *ch;
struct mbuf *m;
- u_long t = (time.tv_sec - boottime.tv_sec) * 1000;
+ u_long t = (time_second - boottime.tv_sec) * 1000;
MGETHDR (m, M_DONTWAIT, MT_DATA);
if (! m)
@@ -2114,7 +2115,7 @@ sppp_lcp_RCN_nak(struct sppp *sp, struct lcp_header *h, int len)
if (magic == ~sp->lcp.magic) {
if (debug)
addlog("magic glitch ");
- sp->lcp.magic += time.tv_sec + time.tv_usec;
+ read_random((char*)&sp->lcp.magic, sizeof sp->lcp.magic);
} else {
sp->lcp.magic = magic;
if (debug)
@@ -2274,7 +2275,7 @@ sppp_lcp_scr(struct sppp *sp)
if (sp->lcp.opts & (1 << LCP_OPT_MAGIC)) {
if (! sp->lcp.magic)
- sp->lcp.magic = time.tv_sec + time.tv_usec;
+ read_random((char*)&sp->lcp.magic, sizeof sp->lcp.magic);
opt[i++] = LCP_OPT_MAGIC;
opt[i++] = 6;
opt[i++] = sp->lcp.magic >> 24;
diff --git a/sys/net/ppp_tty.c b/sys/net/ppp_tty.c
index 9d774e4..3a3a5da 100644
--- a/sys/net/ppp_tty.c
+++ b/sys/net/ppp_tty.c
@@ -70,7 +70,7 @@
* Paul Mackerras (paulus@cs.anu.edu.au).
*/
-/* $Id: ppp_tty.c,v 1.30 1998/02/13 12:46:15 phk Exp $ */
+/* $Id: ppp_tty.c,v 1.31 1998/03/28 10:33:12 bde Exp $ */
#include "ppp.h"
#if NPPP > 0
@@ -618,7 +618,7 @@ pppasyncstart(sc)
/* Calculate the FCS for the first mbuf's worth. */
sc->sc_outfcs = pppfcs(PPP_INITFCS, mtod(m, u_char *), m->m_len);
- gettime(&sc->sc_if.if_lastchange);
+ getmicrotime(&sc->sc_if.if_lastchange);
}
for (;;) {
diff --git a/sys/netatalk/at_control.c b/sys/netatalk/at_control.c
index 60f65ed..e15093a 100644
--- a/sys/netatalk/at_control.c
+++ b/sys/netatalk/at_control.c
@@ -446,7 +446,7 @@ at_ifinit( ifp, aa, sat )
* XXX use /dev/random?
*/
if ( nnets != 1 ) {
- net = ntohs( nr.nr_firstnet ) + time.tv_sec % ( nnets - 1 );
+ net = ntohs( nr.nr_firstnet ) + time_second % ( nnets - 1 );
} else {
net = ntohs( nr.nr_firstnet );
}
@@ -483,7 +483,7 @@ at_ifinit( ifp, aa, sat )
* XXX use /dev/random?
*/
if ( sat->sat_addr.s_node == ATADDR_ANYNODE ) {
- AA_SAT( aa )->sat_addr.s_node = time.tv_sec;
+ AA_SAT( aa )->sat_addr.s_node = time_second;
} else {
AA_SAT( aa )->sat_addr.s_node = sat->sat_addr.s_node;
}
@@ -508,7 +508,7 @@ at_ifinit( ifp, aa, sat )
* Once again, starting at the (possibly random)
* initial node address.
*/
- for ( j = 0, nodeinc = time.tv_sec | 1; j < 256;
+ for ( j = 0, nodeinc = time_second | 1; j < 256;
j++, AA_SAT( aa )->sat_addr.s_node += nodeinc ) {
if ( AA_SAT( aa )->sat_addr.s_node > 253 ||
AA_SAT( aa )->sat_addr.s_node < 1 ) {
@@ -552,7 +552,7 @@ at_ifinit( ifp, aa, sat )
break;
}
/* reset node for next network */
- AA_SAT( aa )->sat_addr.s_node = time.tv_sec;
+ AA_SAT( aa )->sat_addr.s_node = time_second;
}
/*
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 5906864..eeda5d9 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if_ether.c 8.1 (Berkeley) 6/10/93
- * $Id: if_ether.c,v 1.42 1997/12/20 00:07:11 bde Exp $
+ * $Id: if_ether.c,v 1.43 1998/01/08 23:41:43 eivind Exp $
*/
/*
@@ -130,7 +130,7 @@ arptimer(ignored_arg)
while ((ola = la) != 0) {
register struct rtentry *rt = la->la_rt;
la = la->la_le.le_next;
- if (rt->rt_expire && rt->rt_expire <= time.tv_sec)
+ if (rt->rt_expire && rt->rt_expire <= time_second)
arptfree(ola); /* timer has expired, clear */
}
splx(s);
@@ -177,7 +177,7 @@ arp_rtrequest(req, rt, sa)
gate = rt->rt_gateway;
SDL(gate)->sdl_type = rt->rt_ifp->if_type;
SDL(gate)->sdl_index = rt->rt_ifp->if_index;
- rt->rt_expire = time.tv_sec;
+ rt->rt_expire = time_second;
break;
}
/* Announce a new entry if requested. */
@@ -354,7 +354,7 @@ arpresolve(ac, rt, m, dst, desten, rt0)
* Check the address family and length is valid, the address
* is resolved; otherwise, try to resolve.
*/
- if ((rt->rt_expire == 0 || rt->rt_expire > time.tv_sec) &&
+ if ((rt->rt_expire == 0 || rt->rt_expire > time_second) &&
sdl->sdl_family == AF_LINK && sdl->sdl_alen != 0) {
bcopy(LLADDR(sdl), desten, sdl->sdl_alen);
return 1;
@@ -369,8 +369,8 @@ arpresolve(ac, rt, m, dst, desten, rt0)
la->la_hold = m;
if (rt->rt_expire) {
rt->rt_flags &= ~RTF_REJECT;
- if (la->la_asked == 0 || rt->rt_expire != time.tv_sec) {
- rt->rt_expire = time.tv_sec;
+ if (la->la_asked == 0 || rt->rt_expire != time_second) {
+ rt->rt_expire = time_second;
if (la->la_asked++ < arp_maxtries)
arprequest(ac,
&(SIN(rt->rt_ifa->ifa_addr)->sin_addr.s_addr),
@@ -501,7 +501,7 @@ in_arpinput(m)
(void)memcpy(LLADDR(sdl), ea->arp_sha, sizeof(ea->arp_sha));
sdl->sdl_alen = sizeof(ea->arp_sha);
if (rt->rt_expire)
- rt->rt_expire = time.tv_sec + arpt_keep;
+ rt->rt_expire = time_second + arpt_keep;
rt->rt_flags &= ~RTF_REJECT;
la->la_asked = 0;
if (la->la_hold) {
diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c
index b0f24d7..3af35f2 100644
--- a/sys/netinet/in_rmx.c
+++ b/sys/netinet/in_rmx.c
@@ -26,7 +26,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: in_rmx.c,v 1.32 1998/02/06 12:13:50 eivind Exp $
+ * $Id: in_rmx.c,v 1.33 1998/03/27 14:30:18 peter Exp $
*/
/*
@@ -202,7 +202,7 @@ in_clsroute(struct radix_node *rn, struct radix_node_head *head)
*/
if(rtq_reallyold != 0) {
rt->rt_flags |= RTPRF_OURS;
- rt->rt_rmx.rmx_expire = time.tv_sec + rtq_reallyold;
+ rt->rt_rmx.rmx_expire = time_second + rtq_reallyold;
} else {
rtrequest(RTM_DELETE,
(struct sockaddr *)rt_key(rt),
@@ -235,7 +235,7 @@ in_rtqkill(struct radix_node *rn, void *rock)
if(rt->rt_flags & RTPRF_OURS) {
ap->found++;
- if(ap->draining || rt->rt_rmx.rmx_expire <= time.tv_sec) {
+ if(ap->draining || rt->rt_rmx.rmx_expire <= time_second) {
if(rt->rt_refcnt > 0)
panic("rtqkill route really not free");
@@ -250,9 +250,9 @@ in_rtqkill(struct radix_node *rn, void *rock)
}
} else {
if(ap->updating
- && (rt->rt_rmx.rmx_expire - time.tv_sec
+ && (rt->rt_rmx.rmx_expire - time_second
> rtq_reallyold)) {
- rt->rt_rmx.rmx_expire = time.tv_sec
+ rt->rt_rmx.rmx_expire = time_second
+ rtq_reallyold;
}
ap->nextstop = lmin(ap->nextstop,
@@ -277,7 +277,7 @@ in_rtqtimo(void *rock)
arg.found = arg.killed = 0;
arg.rnh = rnh;
- arg.nextstop = time.tv_sec + rtq_timeout;
+ arg.nextstop = time_second + rtq_timeout;
arg.draining = arg.updating = 0;
s = splnet();
rnh->rnh_walktree(rnh, in_rtqkill, &arg);
@@ -292,14 +292,14 @@ in_rtqtimo(void *rock)
* hard.
*/
if((arg.found - arg.killed > rtq_toomany)
- && (time.tv_sec - last_adjusted_timeout >= rtq_timeout)
+ && (time_second - last_adjusted_timeout >= rtq_timeout)
&& rtq_reallyold > rtq_minreallyold) {
rtq_reallyold = 2*rtq_reallyold / 3;
if(rtq_reallyold < rtq_minreallyold) {
rtq_reallyold = rtq_minreallyold;
}
- last_adjusted_timeout = time.tv_sec;
+ last_adjusted_timeout = time_second;
#ifdef DIAGNOSTIC
log(LOG_DEBUG, "in_rtqtimo: adjusted rtq_reallyold to %d\n",
rtq_reallyold);
diff --git a/sys/netinet/ip_fw.c b/sys/netinet/ip_fw.c
index 6eac53f..07c0df0 100644
--- a/sys/netinet/ip_fw.c
+++ b/sys/netinet/ip_fw.c
@@ -12,7 +12,7 @@
*
* This software is provided ``AS IS'' without any warranties of any kind.
*
- * $Id: ip_fw.c,v 1.78 1998/02/12 00:57:04 alex Exp $
+ * $Id: ip_fw.c,v 1.79 1998/03/15 00:36:27 alex Exp $
*/
/*
@@ -561,7 +561,7 @@ got_match:
/* Update statistics */
f->fw_pcnt += 1;
f->fw_bcnt += ip->ip_len;
- f->timestamp = time.tv_sec;
+ f->timestamp = time_second;
/* Log to console if desired */
if ((f->fw_flg & IP_FW_F_PRN) && fw_verbose)
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index 1445d02..2bd19fc 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_input.c 8.2 (Berkeley) 1/4/94
- * $Id: ip_input.c,v 1.79 1998/02/26 08:31:53 dima Exp $
+ * $Id: ip_input.c,v 1.80 1998/03/21 11:34:11 peter Exp $
* $ANA: ip_input.c,v 1.5 1996/09/18 14:34:59 wollman Exp $
*/
@@ -219,7 +219,7 @@ ip_init()
maxnipq = nmbclusters/4;
- ip_id = time.tv_sec & 0xffff;
+ ip_id = time_second & 0xffff;
ipintrq.ifq_maxlen = ipqmaxlen;
#ifdef IPFIREWALL
ip_fw_init();
diff --git a/sys/netipx/ipx_input.c b/sys/netipx/ipx_input.c
index c04b420..f3b9f34 100644
--- a/sys/netipx/ipx_input.c
+++ b/sys/netipx/ipx_input.c
@@ -33,7 +33,7 @@
*
* @(#)ipx_input.c
*
- * $Id: ipx_input.c,v 1.14 1997/06/26 19:35:46 jhay Exp $
+ * $Id: ipx_input.c,v 1.15 1998/02/09 06:10:19 eivind Exp $
*/
#include <sys/param.h>
@@ -54,6 +54,8 @@
#include <netipx/ipx_pcb.h>
#include <netipx/ipx_var.h>
+#include <machine/random.h>
+
int ipxcksum = 0;
SYSCTL_INT(_net_ipx_ipx, OID_AUTO, checksum, CTLFLAG_RW,
&ipxcksum, 0, "");
@@ -105,7 +107,7 @@ ipx_init()
ipx_broadnet = *(union ipx_net *)allones;
ipx_broadhost = *(union ipx_host *)allones;
- ipx_pexseq = time.tv_usec;
+ read_random((char *)&ipx_pexseq, sizeof ipx_pexseq);
ipxintrq.ifq_maxlen = ipxqmaxlen;
ipxpcb.ipxp_next = ipxpcb.ipxp_prev = &ipxpcb;
ipxrawpcb.ipxp_next = ipxrawpcb.ipxp_prev = &ipxrawpcb;
diff --git a/sys/netkey/key.c b/sys/netkey/key.c
index 508c8de..6b0a2f1 100644
--- a/sys/netkey/key.c
+++ b/sys/netkey/key.c
@@ -1254,7 +1254,7 @@ key_getspi(type, vers, src, dst, lowval, highval, spi)
* reasons. This is another task that key_reaper can
* do once we have it coded.
*/
- secassoc->lifetime1 += time.tv_sec + maxlarvallifetime;
+ secassoc->lifetime1 += time_second + maxlarvallifetime;
if (!(keynode = key_addnode(indx, secassoc))) {
DPRINTF(IDL_ERROR,("key_getspi: can't add node\n"));
@@ -1498,7 +1498,7 @@ key_acquire(type, src, dst)
if (addrpart_equal(dst, ap->target) &&
(etype == ap->type)) {
DPRINTF(IDL_EVENT,("acquire message previously sent!\n"));
- if (ap->expiretime < time.tv_sec) {
+ if (ap->expiretime < time_second) {
DPRINTF(IDL_EVENT,("acquire message has expired!\n"));
ap->count = 0;
break;
@@ -1508,7 +1508,7 @@ key_acquire(type, src, dst)
break;
}
return(0);
- } else if (ap->expiretime < time.tv_sec) {
+ } else if (ap->expiretime < time_second) {
/*
* Since we're already looking at the list, we may as
* well delete expired entries as we scan through the list.
@@ -1594,7 +1594,7 @@ key_acquire(type, src, dst)
}
DPRINTF(IDL_GROSS_EVENT,("Updating acquire counter, expiration time\n"));
ap->count++;
- ap->expiretime = time.tv_sec + maxacquiretime;
+ ap->expiretime = time_second + maxacquiretime;
}
DPRINTF(IDL_EVENT,("key_acquire: done! success=%d\n",success));
return(success ? 0 : -1);
diff --git a/sys/nfs/bootp_subr.c b/sys/nfs/bootp_subr.c
index 1cc0ec8..2760b85 100644
--- a/sys/nfs/bootp_subr.c
+++ b/sys/nfs/bootp_subr.c
@@ -1,4 +1,4 @@
-/* $Id: bootp_subr.c,v 1.11 1998/03/14 04:13:56 tegge Exp $ */
+/* $Id: bootp_subr.c,v 1.12 1998/03/28 10:33:15 bde Exp $ */
/*
* Copyright (c) 1995 Gordon Ross, Adam Glass
@@ -769,8 +769,8 @@ bootpc_init(void)
/*
* Wait until arp entries can be handled.
*/
- while (time.tv_sec == 0)
- tsleep(&time, PZERO+8, "arpkludge", 10);
+ while (time_second == 0)
+ tsleep(&time_second, PZERO+8, "arpkludge", 10);
/*
* Find a network interface.
diff --git a/sys/nfs/nfs.h b/sys/nfs/nfs.h
index 9f057a3..8b28c00 100644
--- a/sys/nfs/nfs.h
+++ b/sys/nfs/nfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/nfs/nfs_common.c b/sys/nfs/nfs_common.c
index b75dd93..b34c874 100644
--- a/sys/nfs/nfs_common.c
+++ b/sys/nfs/nfs_common.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_subs.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_subs.c,v 1.50 1998/02/04 22:33:15 eivind Exp $
+ * $Id: nfs_subs.c,v 1.51 1998/02/06 12:13:57 eivind Exp $
*/
/*
@@ -558,6 +558,15 @@ LIST_HEAD(nfsnodehashhead, nfsnode);
int nfs_webnamei __P((struct nameidata *, struct vnode *, struct proc *));
+u_quad_t
+nfs_curusec()
+{
+ struct timeval tv;
+
+ getmicrotime(&tv);
+ return ((u_quad_t)tv.tv_sec * 1000000 + (u_quad_t)tv.tv_usec);
+}
+
/*
* Create the header for an rpc request packet
* The hsiz is the size of the rest of the nfs request header.
@@ -1348,7 +1357,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
} else
np->n_size = vap->va_size;
}
- np->n_attrstamp = time.tv_sec;
+ np->n_attrstamp = time_second;
if (vaper != NULL) {
bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
if (np->n_flag & NCHG) {
@@ -1374,7 +1383,7 @@ nfs_getattrcache(vp, vaper)
register struct nfsnode *np = VTONFS(vp);
register struct vattr *vap;
- if ((time.tv_sec - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
+ if ((time_second - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
nfsstats.attrcache_misses++;
return (ENOENT);
}
diff --git a/sys/nfs/nfs_common.h b/sys/nfs/nfs_common.h
index f8830a5..be06591 100644
--- a/sys/nfs/nfs_common.h
+++ b/sys/nfs/nfs_common.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95
- * $Id: nfsm_subs.h,v 1.13 1997/07/16 09:06:30 dfr Exp $
+ * $Id: nfsm_subs.h,v 1.14 1998/02/03 21:51:56 bde Exp $
*/
@@ -434,10 +434,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_atime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_atime.tv_sec = time.tv_sec; \
- (a)->va_atime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_atime.tv_sec = tv.tv_sec; \
+ (a)->va_atime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; \
nfsm_dissect(tl, u_long *, NFSX_UNSIGNED); \
switch (fxdr_unsigned(int, *tl)) { \
@@ -445,10 +447,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_mtime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_mtime.tv_sec = time.tv_sec; \
- (a)->va_mtime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_mtime.tv_sec = tv.tv_sec; \
+ (a)->va_mtime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; }
#endif
diff --git a/sys/nfs/nfs_nqlease.c b/sys/nfs/nfs_nqlease.c
index f4b74ca..7f4fd9f 100644
--- a/sys/nfs/nfs_nqlease.c
+++ b/sys/nfs/nfs_nqlease.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_nqlease.c 8.9 (Berkeley) 5/20/95
- * $Id: nfs_nqlease.c,v 1.31 1997/10/28 15:59:03 bde Exp $
+ * $Id: nfs_nqlease.c,v 1.32 1997/11/07 08:53:23 phk Exp $
*/
@@ -407,7 +407,7 @@ nqsrv_instimeq(lp, duration)
register struct nqlease *tlp;
time_t newexpiry;
- newexpiry = time.tv_sec + duration + nqsrv_clockskew;
+ newexpiry = time_second + duration + nqsrv_clockskew;
if (lp->lc_expiry == newexpiry)
return;
if (lp->lc_timer.cqe_next != 0) {
@@ -602,7 +602,7 @@ nqsrv_waitfor_expiry(lp)
int len, ok;
tryagain:
- if (time.tv_sec > lp->lc_expiry)
+ if (time_second > lp->lc_expiry)
return;
lph = &lp->lc_host;
lphnext = lp->lc_morehosts;
@@ -648,7 +648,7 @@ nqnfs_serverd()
for (lp = nqtimerhead.cqh_first; lp != (void *)&nqtimerhead;
lp = nextlp) {
- if (lp->lc_expiry >= time.tv_sec)
+ if (lp->lc_expiry >= time_second)
break;
nextlp = lp->lc_timer.cqe_next;
if (lp->lc_flag & LC_EXPIREDWANTED) {
@@ -883,13 +883,13 @@ nqnfs_getlease(vp, rwflag, cred, p)
nfsm_build(tl, u_long *, 2 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(rwflag);
*tl = txdr_unsigned(nmp->nm_leaseterm);
- reqtime = time.tv_sec;
+ reqtime = time_second;
nfsm_request(vp, NQNFSPROC_GETLEASE, p, cred);
np = VTONFS(vp);
nfsm_dissect(tl, u_long *, 4 * NFSX_UNSIGNED);
cachable = fxdr_unsigned(int, *tl++);
reqtime += fxdr_unsigned(int, *tl++);
- if (reqtime > time.tv_sec) {
+ if (reqtime > time_second) {
fxdr_hyper(tl, &frev);
nqnfs_clientlease(nmp, np, rwflag, cachable, reqtime, frev);
nfsm_loadattr(vp, (struct vattr *)0);
@@ -1089,7 +1089,7 @@ nqnfs_clientd(nmp, cred, ncd, flag, argp, p)
(nmp->nm_flag & NFSMNT_DISMINPROG) == 0) {
vp = NFSTOV(np);
vpid = vp->v_id;
- if (np->n_expiry < time.tv_sec) {
+ if (np->n_expiry < time_second) {
if (vget(vp, LK_EXCLUSIVE, p) == 0) {
nmp->nm_inprog = vp;
if (vpid == vp->v_id) {
@@ -1114,7 +1114,7 @@ nqnfs_clientd(nmp, cred, ncd, flag, argp, p)
vrele(vp);
nmp->nm_inprog = NULLVP;
}
- } else if ((np->n_expiry - NQ_RENEWAL) < time.tv_sec) {
+ } else if ((np->n_expiry - NQ_RENEWAL) < time_second) {
if ((np->n_flag & (NQNFSWRITE | NQNFSNONCACHE))
== NQNFSWRITE && vp->v_dirtyblkhd.lh_first &&
vget(vp, LK_EXCLUSIVE, p) == 0) {
diff --git a/sys/nfs/nfs_serv.c b/sys/nfs/nfs_serv.c
index 19d09f4..4b577cb 100644
--- a/sys/nfs/nfs_serv.c
+++ b/sys/nfs/nfs_serv.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_serv.c 8.3 (Berkeley) 1/12/94
- * $Id: nfs_serv.c,v 1.57 1998/02/06 12:13:56 eivind Exp $
+ * $Id: nfs_serv.c,v 1.58 1998/02/09 06:10:35 eivind Exp $
*/
/*
@@ -979,7 +979,7 @@ nfsrv_writegather(ndp, slp, procp, mrq)
LIST_INIT(&nfsd->nd_coalesce);
nfsd->nd_mreq = NULL;
nfsd->nd_stable = NFSV3WRITE_FILESYNC;
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
nfsd->nd_time = cur_usec +
(v3 ? nfsrvw_procrastinate_v3 : nfsrvw_procrastinate);
@@ -1095,7 +1095,7 @@ nfsmout:
* and generate the associated reply mbuf list(s).
*/
loop1:
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
s = splsoftclock();
for (nfsd = slp->ns_tq.lh_first; nfsd; nfsd = owp) {
owp = nfsd->nd_tq.le_next;
diff --git a/sys/nfs/nfs_socket.c b/sys/nfs/nfs_socket.c
index ed23c69..5c084b7 100644
--- a/sys/nfs/nfs_socket.c
+++ b/sys/nfs/nfs_socket.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_socket.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_socket.c,v 1.29 1997/10/12 20:25:44 phk Exp $
+ * $Id: nfs_socket.c,v 1.30 1997/10/28 15:59:07 bde Exp $
*/
/*
@@ -769,7 +769,7 @@ nfsmout:
rt->srtt = nmp->nm_srtt[proct[rep->r_procnum] - 1];
rt->sdrtt = nmp->nm_sdrtt[proct[rep->r_procnum] - 1];
rt->fsid = nmp->nm_mountp->mnt_stat.f_fsid;
- gettime(&rt->tstamp);
+ getmicrotime(&rt->tstamp);
if (rep->r_flags & R_TIMING)
rt->rtt = rep->r_rtt;
else
@@ -952,7 +952,7 @@ tryagain:
TAILQ_INSERT_TAIL(&nfs_reqq, rep, r_chain);
/* Get send time for nqnfs */
- reqtime = time.tv_sec;
+ reqtime = time_second;
/*
* If backing off another request or avoiding congestion, don't
@@ -1062,8 +1062,8 @@ tryagain:
error == NFSERR_TRYLATER) {
m_freem(mrep);
error = 0;
- waituntil = time.tv_sec + trylater_delay;
- while (time.tv_sec < waituntil)
+ waituntil = time_second + trylater_delay;
+ while (time_second < waituntil)
(void) tsleep((caddr_t)&lbolt,
PSOCK, "nqnfstry", 0);
trylater_delay *= nfs_backoff[trylater_cnt];
@@ -1101,7 +1101,7 @@ tryagain:
nfsm_dissect(tl, u_long *, 4*NFSX_UNSIGNED);
cachable = fxdr_unsigned(int, *tl++);
reqtime += fxdr_unsigned(int, *tl++);
- if (reqtime > time.tv_sec) {
+ if (reqtime > time_second) {
fxdr_hyper(tl, &frev);
nqnfs_clientlease(nmp, np, nqlflag,
cachable, reqtime, frev);
@@ -1395,8 +1395,8 @@ nfs_timer(arg)
/*
* Call the nqnfs server timer once a second to handle leases.
*/
- if (lasttime != time.tv_sec) {
- lasttime = time.tv_sec;
+ if (lasttime != time_second) {
+ lasttime = time_second;
nqnfs_serverd();
}
@@ -1404,7 +1404,7 @@ nfs_timer(arg)
* Scan the write gathering queues for writes that need to be
* completed now.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
for (slp = nfssvc_sockhead.tqh_first; slp != 0;
slp = slp->ns_chain.tqe_next) {
if (slp->ns_tq.lh_first && slp->ns_tq.lh_first->nd_time<=cur_usec)
@@ -2125,7 +2125,7 @@ nfs_getreq(nd, nfsd, has_header)
tvout.tv_sec = fxdr_unsigned(long, tvout.tv_sec);
tvout.tv_usec = fxdr_unsigned(long, tvout.tv_usec);
- if (nuidp->nu_expire < time.tv_sec ||
+ if (nuidp->nu_expire < time_second ||
nuidp->nu_timestamp.tv_sec > tvout.tv_sec ||
(nuidp->nu_timestamp.tv_sec == tvout.tv_sec &&
nuidp->nu_timestamp.tv_usec > tvout.tv_usec)) {
diff --git a/sys/nfs/nfs_subs.c b/sys/nfs/nfs_subs.c
index b75dd93..b34c874 100644
--- a/sys/nfs/nfs_subs.c
+++ b/sys/nfs/nfs_subs.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_subs.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_subs.c,v 1.50 1998/02/04 22:33:15 eivind Exp $
+ * $Id: nfs_subs.c,v 1.51 1998/02/06 12:13:57 eivind Exp $
*/
/*
@@ -558,6 +558,15 @@ LIST_HEAD(nfsnodehashhead, nfsnode);
int nfs_webnamei __P((struct nameidata *, struct vnode *, struct proc *));
+u_quad_t
+nfs_curusec()
+{
+ struct timeval tv;
+
+ getmicrotime(&tv);
+ return ((u_quad_t)tv.tv_sec * 1000000 + (u_quad_t)tv.tv_usec);
+}
+
/*
* Create the header for an rpc request packet
* The hsiz is the size of the rest of the nfs request header.
@@ -1348,7 +1357,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
} else
np->n_size = vap->va_size;
}
- np->n_attrstamp = time.tv_sec;
+ np->n_attrstamp = time_second;
if (vaper != NULL) {
bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
if (np->n_flag & NCHG) {
@@ -1374,7 +1383,7 @@ nfs_getattrcache(vp, vaper)
register struct nfsnode *np = VTONFS(vp);
register struct vattr *vap;
- if ((time.tv_sec - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
+ if ((time_second - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
nfsstats.attrcache_misses++;
return (ENOENT);
}
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c
index ba460fc..c2f9071 100644
--- a/sys/nfs/nfs_syscalls.c
+++ b/sys/nfs/nfs_syscalls.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_syscalls.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_syscalls.c,v 1.35 1998/02/06 12:13:57 eivind Exp $
+ * $Id: nfs_syscalls.c,v 1.36 1998/02/09 06:10:37 eivind Exp $
*/
#include <sys/param.h>
@@ -300,7 +300,7 @@ nfssvc(p, uap)
nuidp->nu_cr.cr_ngroups = NGROUPS;
nuidp->nu_cr.cr_ref = 1;
nuidp->nu_timestamp = nsd->nsd_timestamp;
- nuidp->nu_expire = time.tv_sec + nsd->nsd_ttl;
+ nuidp->nu_expire = time_second + nsd->nsd_ttl;
/*
* and save the session key in nu_key.
*/
@@ -520,8 +520,7 @@ nfssvc_nfsd(nsd, argp, p)
nfs_sndunlock(&slp->ns_solock);
}
error = nfsrv_dorec(slp, nfsd, &nd);
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
if (error && slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
error = 0;
@@ -553,7 +552,7 @@ nfssvc_nfsd(nsd, argp, p)
else
solockp = (int *)0;
if (nd) {
- gettime(&nd->nd_starttime);
+ getmicrotime(&nd->nd_starttime);
if (nd->nd_nam2)
nd->nd_nam = nd->nd_nam2;
else
@@ -583,9 +582,9 @@ nfssvc_nfsd(nsd, argp, p)
* Check for just starting up for NQNFS and send
* fake "try again later" replies to the NQNFS clients.
*/
- if (notstarted && nqnfsstarttime <= time.tv_sec) {
+ if (notstarted && nqnfsstarttime <= time_second) {
if (modify_flag) {
- nqnfsstarttime = time.tv_sec + nqsrv_writeslack;
+ nqnfsstarttime = time_second + nqsrv_writeslack;
modify_flag = 0;
} else
notstarted = 0;
@@ -718,8 +717,7 @@ nfssvc_nfsd(nsd, argp, p)
* Check to see if there are outstanding writes that
* need to be serviced.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
s = splsoftclock();
if (slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
@@ -972,7 +970,7 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
if (nuidp->nu_cr.cr_uid == cred->cr_uid)
break;
}
- if (!nuidp || nuidp->nu_expire < time.tv_sec)
+ if (!nuidp || nuidp->nu_expire < time_second)
return (EACCES);
/*
@@ -992,10 +990,10 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
*/
verfp = (u_long *)verf_str;
*verfp++ = txdr_unsigned(RPCAKN_NICKNAME);
- if (time.tv_sec > nuidp->nu_timestamp.tv_sec ||
- (time.tv_sec == nuidp->nu_timestamp.tv_sec &&
- time.tv_usec > nuidp->nu_timestamp.tv_usec))
- gettime(&nuidp->nu_timestamp);
+ if (time_second > nuidp->nu_timestamp.tv_sec ||
+ (time_second == nuidp->nu_timestamp.tv_sec &&
+ time_second > nuidp->nu_timestamp.tv_usec))
+ getmicrotime(&nuidp->nu_timestamp);
else
nuidp->nu_timestamp.tv_usec++;
ktvin.tv_sec = txdr_unsigned(nuidp->nu_timestamp.tv_sec);
@@ -1051,7 +1049,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
#endif
ktvout.tv_sec = fxdr_unsigned(long, ktvout.tv_sec);
ktvout.tv_usec = fxdr_unsigned(long, ktvout.tv_usec);
- deltasec = time.tv_sec - ktvout.tv_sec;
+ deltasec = time_second - ktvout.tv_sec;
if (deltasec < 0)
deltasec = -deltasec;
/*
@@ -1071,7 +1069,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
}
nuidp->nu_flag = 0;
nuidp->nu_cr.cr_uid = cred->cr_uid;
- nuidp->nu_expire = time.tv_sec + NFS_KERBTTL;
+ nuidp->nu_expire = time_second + NFS_KERBTTL;
nuidp->nu_timestamp = ktvout;
nuidp->nu_nickname = nick;
bcopy(key, nuidp->nu_key, sizeof (key));
@@ -1184,9 +1182,8 @@ nfsd_rt(sotype, nd, cacherep)
rt->ipadr = ((struct sockaddr_in *)nd->nd_nam)->sin_addr.s_addr;
else
rt->ipadr = INADDR_ANY;
- rt->resptime = ((time.tv_sec - nd->nd_starttime.tv_sec) * 1000000) +
- (time.tv_usec - nd->nd_starttime.tv_usec);
- gettime(&rt->tstamp);
+ rt->resptime = nfs_curusec() - (nd->nd_starttime.tv_sec * 1000000 + nd->nd_starttime.tv_usec);
+ getmicrotime(&rt->tstamp);
nfsdrt.pos = (nfsdrt.pos + 1) % NFSRTTLOGSIZ;
}
#endif /* NFS_NOSERVER */
diff --git a/sys/nfs/nfs_vfsops.c b/sys/nfs/nfs_vfsops.c
index b301b24..3af6f40 100644
--- a/sys/nfs/nfs_vfsops.c
+++ b/sys/nfs/nfs_vfsops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vfsops.c 8.12 (Berkeley) 5/20/95
- * $Id: nfs_vfsops.c,v 1.55 1998/03/01 22:46:30 msmith Exp $
+ * $Id: nfs_vfsops.c,v 1.56 1998/03/14 03:25:18 tegge Exp $
*/
#include <sys/param.h>
@@ -399,8 +399,8 @@ nfs_mountroot(mp)
* XXX time must be non-zero when we init the interface or else
* the arp code will wedge...
*/
- while (time.tv_sec == 0)
- tsleep(&time, PZERO+8, "arpkludge", 10);
+ while (time_second == 0)
+ tsleep(&time_second, PZERO+8, "arpkludge", 10);
if (nfs_diskless_valid==1)
nfs_convert_diskless();
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index 91adac5..c25fae5 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
- * $Id: nfs_vnops.c,v 1.81 1998/03/08 09:57:57 julian Exp $
+ * $Id: nfs_vnops.c,v 1.82 1998/03/28 12:04:40 bde Exp $
*/
@@ -694,7 +694,7 @@ nfs_setattrrpc(vp, vap, cred, procp)
*tl = nfs_false;
}
if (vap->va_atime.tv_sec != VNOVAL) {
- if (vap->va_atime.tv_sec != time.tv_sec) {
+ if (vap->va_atime.tv_sec != time_second) {
nfsm_build(tl, u_long *, 3 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&vap->va_atime, tl);
@@ -707,7 +707,7 @@ nfs_setattrrpc(vp, vap, cred, procp)
*tl = txdr_unsigned(NFSV3SATTRTIME_DONTCHANGE);
}
if (vap->va_mtime.tv_sec != VNOVAL) {
- if (vap->va_mtime.tv_sec != time.tv_sec) {
+ if (vap->va_mtime.tv_sec != time_second) {
nfsm_build(tl, u_long *, 3 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&vap->va_mtime, tl);
@@ -3146,7 +3146,7 @@ nfsspec_read(ap)
* Set access flag.
*/
np->n_flag |= NACC;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(spec_vnodeop_p, VOFFSET(vop_read), ap));
@@ -3171,7 +3171,7 @@ nfsspec_write(ap)
* Set update flag.
*/
np->n_flag |= NUPD;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_mtim.tv_sec = tv.tv_sec;
np->n_mtim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(spec_vnodeop_p, VOFFSET(vop_write), ap));
@@ -3229,7 +3229,7 @@ nfsfifo_read(ap)
* Set access flag.
*/
np->n_flag |= NACC;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_read), ap));
@@ -3254,7 +3254,7 @@ nfsfifo_write(ap)
* Set update flag.
*/
np->n_flag |= NUPD;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_mtim.tv_sec = tv.tv_sec;
np->n_mtim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_write), ap));
@@ -3280,7 +3280,7 @@ nfsfifo_close(ap)
struct vattr vattr;
if (np->n_flag & (NACC | NUPD)) {
- gettime(&tv);
+ getmicrotime(&tv);
if (np->n_flag & NACC) {
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
diff --git a/sys/nfs/nfsm_subs.h b/sys/nfs/nfsm_subs.h
index f8830a5..be06591 100644
--- a/sys/nfs/nfsm_subs.h
+++ b/sys/nfs/nfsm_subs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95
- * $Id: nfsm_subs.h,v 1.13 1997/07/16 09:06:30 dfr Exp $
+ * $Id: nfsm_subs.h,v 1.14 1998/02/03 21:51:56 bde Exp $
*/
@@ -434,10 +434,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_atime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_atime.tv_sec = time.tv_sec; \
- (a)->va_atime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_atime.tv_sec = tv.tv_sec; \
+ (a)->va_atime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; \
nfsm_dissect(tl, u_long *, NFSX_UNSIGNED); \
switch (fxdr_unsigned(int, *tl)) { \
@@ -445,10 +447,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_mtime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_mtime.tv_sec = time.tv_sec; \
- (a)->va_mtime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_mtime.tv_sec = tv.tv_sec; \
+ (a)->va_mtime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; }
#endif
diff --git a/sys/nfs/nqnfs.h b/sys/nfs/nqnfs.h
index 4c9108f..e6345c8 100644
--- a/sys/nfs/nqnfs.h
+++ b/sys/nfs/nqnfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nqnfs.h 8.3 (Berkeley) 3/30/95
- * $Id: nqnfs.h,v 1.13 1997/02/22 09:42:52 peter Exp $
+ * $Id: nqnfs.h,v 1.14 1997/08/16 19:16:05 wollman Exp $
*/
@@ -161,20 +161,20 @@ struct nqm {
* Client side macros that check for a valid lease.
*/
#define NQNFS_CKINVALID(v, n, f) \
- ((time.tv_sec > (n)->n_expiry && \
+ ((time_second > (n)->n_expiry && \
VFSTONFS((v)->v_mount)->nm_timeouts < VFSTONFS((v)->v_mount)->nm_deadthresh) \
|| ((f) == ND_WRITE && ((n)->n_flag & NQNFSWRITE) == 0))
#define NQNFS_CKCACHABLE(v, f) \
- ((time.tv_sec <= VTONFS(v)->n_expiry || \
+ ((time_second <= VTONFS(v)->n_expiry || \
VFSTONFS((v)->v_mount)->nm_timeouts >= VFSTONFS((v)->v_mount)->nm_deadthresh) \
&& (VTONFS(v)->n_flag & NQNFSNONCACHE) == 0 && \
((f) == ND_READ || (VTONFS(v)->n_flag & NQNFSWRITE)))
#define NQNFS_NEEDLEASE(v, p) \
- (time.tv_sec > VTONFS(v)->n_expiry ? \
+ (time_second > VTONFS(v)->n_expiry ? \
((VTONFS(v)->n_flag & NQNFSEVICTED) ? 0 : nqnfs_piggy[p]) : \
- (((time.tv_sec + NQ_RENEWAL) > VTONFS(v)->n_expiry && \
+ (((time_second + NQ_RENEWAL) > VTONFS(v)->n_expiry && \
nqnfs_piggy[p]) ? \
((VTONFS(v)->n_flag & NQNFSWRITE) ? \
ND_WRITE : nqnfs_piggy[p]) : 0))
diff --git a/sys/nfsclient/bootp_subr.c b/sys/nfsclient/bootp_subr.c
index 1cc0ec8..2760b85 100644
--- a/sys/nfsclient/bootp_subr.c
+++ b/sys/nfsclient/bootp_subr.c
@@ -1,4 +1,4 @@
-/* $Id: bootp_subr.c,v 1.11 1998/03/14 04:13:56 tegge Exp $ */
+/* $Id: bootp_subr.c,v 1.12 1998/03/28 10:33:15 bde Exp $ */
/*
* Copyright (c) 1995 Gordon Ross, Adam Glass
@@ -769,8 +769,8 @@ bootpc_init(void)
/*
* Wait until arp entries can be handled.
*/
- while (time.tv_sec == 0)
- tsleep(&time, PZERO+8, "arpkludge", 10);
+ while (time_second == 0)
+ tsleep(&time_second, PZERO+8, "arpkludge", 10);
/*
* Find a network interface.
diff --git a/sys/nfsclient/nfs.h b/sys/nfsclient/nfs.h
index 9f057a3..8b28c00 100644
--- a/sys/nfsclient/nfs.h
+++ b/sys/nfsclient/nfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/nfsclient/nfs_nfsiod.c b/sys/nfsclient/nfs_nfsiod.c
index ba460fc..c2f9071 100644
--- a/sys/nfsclient/nfs_nfsiod.c
+++ b/sys/nfsclient/nfs_nfsiod.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_syscalls.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_syscalls.c,v 1.35 1998/02/06 12:13:57 eivind Exp $
+ * $Id: nfs_syscalls.c,v 1.36 1998/02/09 06:10:37 eivind Exp $
*/
#include <sys/param.h>
@@ -300,7 +300,7 @@ nfssvc(p, uap)
nuidp->nu_cr.cr_ngroups = NGROUPS;
nuidp->nu_cr.cr_ref = 1;
nuidp->nu_timestamp = nsd->nsd_timestamp;
- nuidp->nu_expire = time.tv_sec + nsd->nsd_ttl;
+ nuidp->nu_expire = time_second + nsd->nsd_ttl;
/*
* and save the session key in nu_key.
*/
@@ -520,8 +520,7 @@ nfssvc_nfsd(nsd, argp, p)
nfs_sndunlock(&slp->ns_solock);
}
error = nfsrv_dorec(slp, nfsd, &nd);
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
if (error && slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
error = 0;
@@ -553,7 +552,7 @@ nfssvc_nfsd(nsd, argp, p)
else
solockp = (int *)0;
if (nd) {
- gettime(&nd->nd_starttime);
+ getmicrotime(&nd->nd_starttime);
if (nd->nd_nam2)
nd->nd_nam = nd->nd_nam2;
else
@@ -583,9 +582,9 @@ nfssvc_nfsd(nsd, argp, p)
* Check for just starting up for NQNFS and send
* fake "try again later" replies to the NQNFS clients.
*/
- if (notstarted && nqnfsstarttime <= time.tv_sec) {
+ if (notstarted && nqnfsstarttime <= time_second) {
if (modify_flag) {
- nqnfsstarttime = time.tv_sec + nqsrv_writeslack;
+ nqnfsstarttime = time_second + nqsrv_writeslack;
modify_flag = 0;
} else
notstarted = 0;
@@ -718,8 +717,7 @@ nfssvc_nfsd(nsd, argp, p)
* Check to see if there are outstanding writes that
* need to be serviced.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
s = splsoftclock();
if (slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
@@ -972,7 +970,7 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
if (nuidp->nu_cr.cr_uid == cred->cr_uid)
break;
}
- if (!nuidp || nuidp->nu_expire < time.tv_sec)
+ if (!nuidp || nuidp->nu_expire < time_second)
return (EACCES);
/*
@@ -992,10 +990,10 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
*/
verfp = (u_long *)verf_str;
*verfp++ = txdr_unsigned(RPCAKN_NICKNAME);
- if (time.tv_sec > nuidp->nu_timestamp.tv_sec ||
- (time.tv_sec == nuidp->nu_timestamp.tv_sec &&
- time.tv_usec > nuidp->nu_timestamp.tv_usec))
- gettime(&nuidp->nu_timestamp);
+ if (time_second > nuidp->nu_timestamp.tv_sec ||
+ (time_second == nuidp->nu_timestamp.tv_sec &&
+ time_second > nuidp->nu_timestamp.tv_usec))
+ getmicrotime(&nuidp->nu_timestamp);
else
nuidp->nu_timestamp.tv_usec++;
ktvin.tv_sec = txdr_unsigned(nuidp->nu_timestamp.tv_sec);
@@ -1051,7 +1049,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
#endif
ktvout.tv_sec = fxdr_unsigned(long, ktvout.tv_sec);
ktvout.tv_usec = fxdr_unsigned(long, ktvout.tv_usec);
- deltasec = time.tv_sec - ktvout.tv_sec;
+ deltasec = time_second - ktvout.tv_sec;
if (deltasec < 0)
deltasec = -deltasec;
/*
@@ -1071,7 +1069,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
}
nuidp->nu_flag = 0;
nuidp->nu_cr.cr_uid = cred->cr_uid;
- nuidp->nu_expire = time.tv_sec + NFS_KERBTTL;
+ nuidp->nu_expire = time_second + NFS_KERBTTL;
nuidp->nu_timestamp = ktvout;
nuidp->nu_nickname = nick;
bcopy(key, nuidp->nu_key, sizeof (key));
@@ -1184,9 +1182,8 @@ nfsd_rt(sotype, nd, cacherep)
rt->ipadr = ((struct sockaddr_in *)nd->nd_nam)->sin_addr.s_addr;
else
rt->ipadr = INADDR_ANY;
- rt->resptime = ((time.tv_sec - nd->nd_starttime.tv_sec) * 1000000) +
- (time.tv_usec - nd->nd_starttime.tv_usec);
- gettime(&rt->tstamp);
+ rt->resptime = nfs_curusec() - (nd->nd_starttime.tv_sec * 1000000 + nd->nd_starttime.tv_usec);
+ getmicrotime(&rt->tstamp);
nfsdrt.pos = (nfsdrt.pos + 1) % NFSRTTLOGSIZ;
}
#endif /* NFS_NOSERVER */
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c
index ed23c69..5c084b7 100644
--- a/sys/nfsclient/nfs_socket.c
+++ b/sys/nfsclient/nfs_socket.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_socket.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_socket.c,v 1.29 1997/10/12 20:25:44 phk Exp $
+ * $Id: nfs_socket.c,v 1.30 1997/10/28 15:59:07 bde Exp $
*/
/*
@@ -769,7 +769,7 @@ nfsmout:
rt->srtt = nmp->nm_srtt[proct[rep->r_procnum] - 1];
rt->sdrtt = nmp->nm_sdrtt[proct[rep->r_procnum] - 1];
rt->fsid = nmp->nm_mountp->mnt_stat.f_fsid;
- gettime(&rt->tstamp);
+ getmicrotime(&rt->tstamp);
if (rep->r_flags & R_TIMING)
rt->rtt = rep->r_rtt;
else
@@ -952,7 +952,7 @@ tryagain:
TAILQ_INSERT_TAIL(&nfs_reqq, rep, r_chain);
/* Get send time for nqnfs */
- reqtime = time.tv_sec;
+ reqtime = time_second;
/*
* If backing off another request or avoiding congestion, don't
@@ -1062,8 +1062,8 @@ tryagain:
error == NFSERR_TRYLATER) {
m_freem(mrep);
error = 0;
- waituntil = time.tv_sec + trylater_delay;
- while (time.tv_sec < waituntil)
+ waituntil = time_second + trylater_delay;
+ while (time_second < waituntil)
(void) tsleep((caddr_t)&lbolt,
PSOCK, "nqnfstry", 0);
trylater_delay *= nfs_backoff[trylater_cnt];
@@ -1101,7 +1101,7 @@ tryagain:
nfsm_dissect(tl, u_long *, 4*NFSX_UNSIGNED);
cachable = fxdr_unsigned(int, *tl++);
reqtime += fxdr_unsigned(int, *tl++);
- if (reqtime > time.tv_sec) {
+ if (reqtime > time_second) {
fxdr_hyper(tl, &frev);
nqnfs_clientlease(nmp, np, nqlflag,
cachable, reqtime, frev);
@@ -1395,8 +1395,8 @@ nfs_timer(arg)
/*
* Call the nqnfs server timer once a second to handle leases.
*/
- if (lasttime != time.tv_sec) {
- lasttime = time.tv_sec;
+ if (lasttime != time_second) {
+ lasttime = time_second;
nqnfs_serverd();
}
@@ -1404,7 +1404,7 @@ nfs_timer(arg)
* Scan the write gathering queues for writes that need to be
* completed now.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
for (slp = nfssvc_sockhead.tqh_first; slp != 0;
slp = slp->ns_chain.tqe_next) {
if (slp->ns_tq.lh_first && slp->ns_tq.lh_first->nd_time<=cur_usec)
@@ -2125,7 +2125,7 @@ nfs_getreq(nd, nfsd, has_header)
tvout.tv_sec = fxdr_unsigned(long, tvout.tv_sec);
tvout.tv_usec = fxdr_unsigned(long, tvout.tv_usec);
- if (nuidp->nu_expire < time.tv_sec ||
+ if (nuidp->nu_expire < time_second ||
nuidp->nu_timestamp.tv_sec > tvout.tv_sec ||
(nuidp->nu_timestamp.tv_sec == tvout.tv_sec &&
nuidp->nu_timestamp.tv_usec > tvout.tv_usec)) {
diff --git a/sys/nfsclient/nfs_subs.c b/sys/nfsclient/nfs_subs.c
index b75dd93..b34c874 100644
--- a/sys/nfsclient/nfs_subs.c
+++ b/sys/nfsclient/nfs_subs.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_subs.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_subs.c,v 1.50 1998/02/04 22:33:15 eivind Exp $
+ * $Id: nfs_subs.c,v 1.51 1998/02/06 12:13:57 eivind Exp $
*/
/*
@@ -558,6 +558,15 @@ LIST_HEAD(nfsnodehashhead, nfsnode);
int nfs_webnamei __P((struct nameidata *, struct vnode *, struct proc *));
+u_quad_t
+nfs_curusec()
+{
+ struct timeval tv;
+
+ getmicrotime(&tv);
+ return ((u_quad_t)tv.tv_sec * 1000000 + (u_quad_t)tv.tv_usec);
+}
+
/*
* Create the header for an rpc request packet
* The hsiz is the size of the rest of the nfs request header.
@@ -1348,7 +1357,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
} else
np->n_size = vap->va_size;
}
- np->n_attrstamp = time.tv_sec;
+ np->n_attrstamp = time_second;
if (vaper != NULL) {
bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
if (np->n_flag & NCHG) {
@@ -1374,7 +1383,7 @@ nfs_getattrcache(vp, vaper)
register struct nfsnode *np = VTONFS(vp);
register struct vattr *vap;
- if ((time.tv_sec - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
+ if ((time_second - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
nfsstats.attrcache_misses++;
return (ENOENT);
}
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c
index b301b24..3af6f40 100644
--- a/sys/nfsclient/nfs_vfsops.c
+++ b/sys/nfsclient/nfs_vfsops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vfsops.c 8.12 (Berkeley) 5/20/95
- * $Id: nfs_vfsops.c,v 1.55 1998/03/01 22:46:30 msmith Exp $
+ * $Id: nfs_vfsops.c,v 1.56 1998/03/14 03:25:18 tegge Exp $
*/
#include <sys/param.h>
@@ -399,8 +399,8 @@ nfs_mountroot(mp)
* XXX time must be non-zero when we init the interface or else
* the arp code will wedge...
*/
- while (time.tv_sec == 0)
- tsleep(&time, PZERO+8, "arpkludge", 10);
+ while (time_second == 0)
+ tsleep(&time_second, PZERO+8, "arpkludge", 10);
if (nfs_diskless_valid==1)
nfs_convert_diskless();
diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c
index 91adac5..c25fae5 100644
--- a/sys/nfsclient/nfs_vnops.c
+++ b/sys/nfsclient/nfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
- * $Id: nfs_vnops.c,v 1.81 1998/03/08 09:57:57 julian Exp $
+ * $Id: nfs_vnops.c,v 1.82 1998/03/28 12:04:40 bde Exp $
*/
@@ -694,7 +694,7 @@ nfs_setattrrpc(vp, vap, cred, procp)
*tl = nfs_false;
}
if (vap->va_atime.tv_sec != VNOVAL) {
- if (vap->va_atime.tv_sec != time.tv_sec) {
+ if (vap->va_atime.tv_sec != time_second) {
nfsm_build(tl, u_long *, 3 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&vap->va_atime, tl);
@@ -707,7 +707,7 @@ nfs_setattrrpc(vp, vap, cred, procp)
*tl = txdr_unsigned(NFSV3SATTRTIME_DONTCHANGE);
}
if (vap->va_mtime.tv_sec != VNOVAL) {
- if (vap->va_mtime.tv_sec != time.tv_sec) {
+ if (vap->va_mtime.tv_sec != time_second) {
nfsm_build(tl, u_long *, 3 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&vap->va_mtime, tl);
@@ -3146,7 +3146,7 @@ nfsspec_read(ap)
* Set access flag.
*/
np->n_flag |= NACC;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(spec_vnodeop_p, VOFFSET(vop_read), ap));
@@ -3171,7 +3171,7 @@ nfsspec_write(ap)
* Set update flag.
*/
np->n_flag |= NUPD;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_mtim.tv_sec = tv.tv_sec;
np->n_mtim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(spec_vnodeop_p, VOFFSET(vop_write), ap));
@@ -3229,7 +3229,7 @@ nfsfifo_read(ap)
* Set access flag.
*/
np->n_flag |= NACC;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_read), ap));
@@ -3254,7 +3254,7 @@ nfsfifo_write(ap)
* Set update flag.
*/
np->n_flag |= NUPD;
- gettime(&tv);
+ getmicrotime(&tv);
np->n_mtim.tv_sec = tv.tv_sec;
np->n_mtim.tv_nsec = tv.tv_usec * 1000;
return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_write), ap));
@@ -3280,7 +3280,7 @@ nfsfifo_close(ap)
struct vattr vattr;
if (np->n_flag & (NACC | NUPD)) {
- gettime(&tv);
+ getmicrotime(&tv);
if (np->n_flag & NACC) {
np->n_atim.tv_sec = tv.tv_sec;
np->n_atim.tv_nsec = tv.tv_usec * 1000;
diff --git a/sys/nfsclient/nfsargs.h b/sys/nfsclient/nfsargs.h
index 9f057a3..8b28c00 100644
--- a/sys/nfsclient/nfsargs.h
+++ b/sys/nfsclient/nfsargs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/nfsclient/nfsm_subs.h b/sys/nfsclient/nfsm_subs.h
index f8830a5..be06591 100644
--- a/sys/nfsclient/nfsm_subs.h
+++ b/sys/nfsclient/nfsm_subs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95
- * $Id: nfsm_subs.h,v 1.13 1997/07/16 09:06:30 dfr Exp $
+ * $Id: nfsm_subs.h,v 1.14 1998/02/03 21:51:56 bde Exp $
*/
@@ -434,10 +434,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_atime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_atime.tv_sec = time.tv_sec; \
- (a)->va_atime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_atime.tv_sec = tv.tv_sec; \
+ (a)->va_atime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; \
nfsm_dissect(tl, u_long *, NFSX_UNSIGNED); \
switch (fxdr_unsigned(int, *tl)) { \
@@ -445,10 +447,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_mtime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_mtime.tv_sec = time.tv_sec; \
- (a)->va_mtime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_mtime.tv_sec = tv.tv_sec; \
+ (a)->va_mtime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; }
#endif
diff --git a/sys/nfsclient/nfsstats.h b/sys/nfsclient/nfsstats.h
index 9f057a3..8b28c00 100644
--- a/sys/nfsclient/nfsstats.h
+++ b/sys/nfsclient/nfsstats.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/nfsserver/nfs.h b/sys/nfsserver/nfs.h
index 9f057a3..8b28c00 100644
--- a/sys/nfsserver/nfs.h
+++ b/sys/nfsserver/nfs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c
index 19d09f4..4b577cb 100644
--- a/sys/nfsserver/nfs_serv.c
+++ b/sys/nfsserver/nfs_serv.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_serv.c 8.3 (Berkeley) 1/12/94
- * $Id: nfs_serv.c,v 1.57 1998/02/06 12:13:56 eivind Exp $
+ * $Id: nfs_serv.c,v 1.58 1998/02/09 06:10:35 eivind Exp $
*/
/*
@@ -979,7 +979,7 @@ nfsrv_writegather(ndp, slp, procp, mrq)
LIST_INIT(&nfsd->nd_coalesce);
nfsd->nd_mreq = NULL;
nfsd->nd_stable = NFSV3WRITE_FILESYNC;
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
nfsd->nd_time = cur_usec +
(v3 ? nfsrvw_procrastinate_v3 : nfsrvw_procrastinate);
@@ -1095,7 +1095,7 @@ nfsmout:
* and generate the associated reply mbuf list(s).
*/
loop1:
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
s = splsoftclock();
for (nfsd = slp->ns_tq.lh_first; nfsd; nfsd = owp) {
owp = nfsd->nd_tq.le_next;
diff --git a/sys/nfsserver/nfs_srvsock.c b/sys/nfsserver/nfs_srvsock.c
index ed23c69..5c084b7 100644
--- a/sys/nfsserver/nfs_srvsock.c
+++ b/sys/nfsserver/nfs_srvsock.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_socket.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_socket.c,v 1.29 1997/10/12 20:25:44 phk Exp $
+ * $Id: nfs_socket.c,v 1.30 1997/10/28 15:59:07 bde Exp $
*/
/*
@@ -769,7 +769,7 @@ nfsmout:
rt->srtt = nmp->nm_srtt[proct[rep->r_procnum] - 1];
rt->sdrtt = nmp->nm_sdrtt[proct[rep->r_procnum] - 1];
rt->fsid = nmp->nm_mountp->mnt_stat.f_fsid;
- gettime(&rt->tstamp);
+ getmicrotime(&rt->tstamp);
if (rep->r_flags & R_TIMING)
rt->rtt = rep->r_rtt;
else
@@ -952,7 +952,7 @@ tryagain:
TAILQ_INSERT_TAIL(&nfs_reqq, rep, r_chain);
/* Get send time for nqnfs */
- reqtime = time.tv_sec;
+ reqtime = time_second;
/*
* If backing off another request or avoiding congestion, don't
@@ -1062,8 +1062,8 @@ tryagain:
error == NFSERR_TRYLATER) {
m_freem(mrep);
error = 0;
- waituntil = time.tv_sec + trylater_delay;
- while (time.tv_sec < waituntil)
+ waituntil = time_second + trylater_delay;
+ while (time_second < waituntil)
(void) tsleep((caddr_t)&lbolt,
PSOCK, "nqnfstry", 0);
trylater_delay *= nfs_backoff[trylater_cnt];
@@ -1101,7 +1101,7 @@ tryagain:
nfsm_dissect(tl, u_long *, 4*NFSX_UNSIGNED);
cachable = fxdr_unsigned(int, *tl++);
reqtime += fxdr_unsigned(int, *tl++);
- if (reqtime > time.tv_sec) {
+ if (reqtime > time_second) {
fxdr_hyper(tl, &frev);
nqnfs_clientlease(nmp, np, nqlflag,
cachable, reqtime, frev);
@@ -1395,8 +1395,8 @@ nfs_timer(arg)
/*
* Call the nqnfs server timer once a second to handle leases.
*/
- if (lasttime != time.tv_sec) {
- lasttime = time.tv_sec;
+ if (lasttime != time_second) {
+ lasttime = time_second;
nqnfs_serverd();
}
@@ -1404,7 +1404,7 @@ nfs_timer(arg)
* Scan the write gathering queues for writes that need to be
* completed now.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 + (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
for (slp = nfssvc_sockhead.tqh_first; slp != 0;
slp = slp->ns_chain.tqe_next) {
if (slp->ns_tq.lh_first && slp->ns_tq.lh_first->nd_time<=cur_usec)
@@ -2125,7 +2125,7 @@ nfs_getreq(nd, nfsd, has_header)
tvout.tv_sec = fxdr_unsigned(long, tvout.tv_sec);
tvout.tv_usec = fxdr_unsigned(long, tvout.tv_usec);
- if (nuidp->nu_expire < time.tv_sec ||
+ if (nuidp->nu_expire < time_second ||
nuidp->nu_timestamp.tv_sec > tvout.tv_sec ||
(nuidp->nu_timestamp.tv_sec == tvout.tv_sec &&
nuidp->nu_timestamp.tv_usec > tvout.tv_usec)) {
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index b75dd93..b34c874 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_subs.c 8.3 (Berkeley) 1/4/94
- * $Id: nfs_subs.c,v 1.50 1998/02/04 22:33:15 eivind Exp $
+ * $Id: nfs_subs.c,v 1.51 1998/02/06 12:13:57 eivind Exp $
*/
/*
@@ -558,6 +558,15 @@ LIST_HEAD(nfsnodehashhead, nfsnode);
int nfs_webnamei __P((struct nameidata *, struct vnode *, struct proc *));
+u_quad_t
+nfs_curusec()
+{
+ struct timeval tv;
+
+ getmicrotime(&tv);
+ return ((u_quad_t)tv.tv_sec * 1000000 + (u_quad_t)tv.tv_usec);
+}
+
/*
* Create the header for an rpc request packet
* The hsiz is the size of the rest of the nfs request header.
@@ -1348,7 +1357,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
} else
np->n_size = vap->va_size;
}
- np->n_attrstamp = time.tv_sec;
+ np->n_attrstamp = time_second;
if (vaper != NULL) {
bcopy((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
if (np->n_flag & NCHG) {
@@ -1374,7 +1383,7 @@ nfs_getattrcache(vp, vaper)
register struct nfsnode *np = VTONFS(vp);
register struct vattr *vap;
- if ((time.tv_sec - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
+ if ((time_second - np->n_attrstamp) >= NFS_ATTRTIMEO(np)) {
nfsstats.attrcache_misses++;
return (ENOENT);
}
diff --git a/sys/nfsserver/nfs_syscalls.c b/sys/nfsserver/nfs_syscalls.c
index ba460fc..c2f9071 100644
--- a/sys/nfsserver/nfs_syscalls.c
+++ b/sys/nfsserver/nfs_syscalls.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_syscalls.c 8.5 (Berkeley) 3/30/95
- * $Id: nfs_syscalls.c,v 1.35 1998/02/06 12:13:57 eivind Exp $
+ * $Id: nfs_syscalls.c,v 1.36 1998/02/09 06:10:37 eivind Exp $
*/
#include <sys/param.h>
@@ -300,7 +300,7 @@ nfssvc(p, uap)
nuidp->nu_cr.cr_ngroups = NGROUPS;
nuidp->nu_cr.cr_ref = 1;
nuidp->nu_timestamp = nsd->nsd_timestamp;
- nuidp->nu_expire = time.tv_sec + nsd->nsd_ttl;
+ nuidp->nu_expire = time_second + nsd->nsd_ttl;
/*
* and save the session key in nu_key.
*/
@@ -520,8 +520,7 @@ nfssvc_nfsd(nsd, argp, p)
nfs_sndunlock(&slp->ns_solock);
}
error = nfsrv_dorec(slp, nfsd, &nd);
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
if (error && slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
error = 0;
@@ -553,7 +552,7 @@ nfssvc_nfsd(nsd, argp, p)
else
solockp = (int *)0;
if (nd) {
- gettime(&nd->nd_starttime);
+ getmicrotime(&nd->nd_starttime);
if (nd->nd_nam2)
nd->nd_nam = nd->nd_nam2;
else
@@ -583,9 +582,9 @@ nfssvc_nfsd(nsd, argp, p)
* Check for just starting up for NQNFS and send
* fake "try again later" replies to the NQNFS clients.
*/
- if (notstarted && nqnfsstarttime <= time.tv_sec) {
+ if (notstarted && nqnfsstarttime <= time_second) {
if (modify_flag) {
- nqnfsstarttime = time.tv_sec + nqsrv_writeslack;
+ nqnfsstarttime = time_second + nqsrv_writeslack;
modify_flag = 0;
} else
notstarted = 0;
@@ -718,8 +717,7 @@ nfssvc_nfsd(nsd, argp, p)
* Check to see if there are outstanding writes that
* need to be serviced.
*/
- cur_usec = (u_quad_t)time.tv_sec * 1000000 +
- (u_quad_t)time.tv_usec;
+ cur_usec = nfs_curusec();
s = splsoftclock();
if (slp->ns_tq.lh_first &&
slp->ns_tq.lh_first->nd_time <= cur_usec) {
@@ -972,7 +970,7 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
if (nuidp->nu_cr.cr_uid == cred->cr_uid)
break;
}
- if (!nuidp || nuidp->nu_expire < time.tv_sec)
+ if (!nuidp || nuidp->nu_expire < time_second)
return (EACCES);
/*
@@ -992,10 +990,10 @@ nfs_getnickauth(nmp, cred, auth_str, auth_len, verf_str, verf_len)
*/
verfp = (u_long *)verf_str;
*verfp++ = txdr_unsigned(RPCAKN_NICKNAME);
- if (time.tv_sec > nuidp->nu_timestamp.tv_sec ||
- (time.tv_sec == nuidp->nu_timestamp.tv_sec &&
- time.tv_usec > nuidp->nu_timestamp.tv_usec))
- gettime(&nuidp->nu_timestamp);
+ if (time_second > nuidp->nu_timestamp.tv_sec ||
+ (time_second == nuidp->nu_timestamp.tv_sec &&
+ time_second > nuidp->nu_timestamp.tv_usec))
+ getmicrotime(&nuidp->nu_timestamp);
else
nuidp->nu_timestamp.tv_usec++;
ktvin.tv_sec = txdr_unsigned(nuidp->nu_timestamp.tv_sec);
@@ -1051,7 +1049,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
#endif
ktvout.tv_sec = fxdr_unsigned(long, ktvout.tv_sec);
ktvout.tv_usec = fxdr_unsigned(long, ktvout.tv_usec);
- deltasec = time.tv_sec - ktvout.tv_sec;
+ deltasec = time_second - ktvout.tv_sec;
if (deltasec < 0)
deltasec = -deltasec;
/*
@@ -1071,7 +1069,7 @@ nfs_savenickauth(nmp, cred, len, key, mdp, dposp, mrep)
}
nuidp->nu_flag = 0;
nuidp->nu_cr.cr_uid = cred->cr_uid;
- nuidp->nu_expire = time.tv_sec + NFS_KERBTTL;
+ nuidp->nu_expire = time_second + NFS_KERBTTL;
nuidp->nu_timestamp = ktvout;
nuidp->nu_nickname = nick;
bcopy(key, nuidp->nu_key, sizeof (key));
@@ -1184,9 +1182,8 @@ nfsd_rt(sotype, nd, cacherep)
rt->ipadr = ((struct sockaddr_in *)nd->nd_nam)->sin_addr.s_addr;
else
rt->ipadr = INADDR_ANY;
- rt->resptime = ((time.tv_sec - nd->nd_starttime.tv_sec) * 1000000) +
- (time.tv_usec - nd->nd_starttime.tv_usec);
- gettime(&rt->tstamp);
+ rt->resptime = nfs_curusec() - (nd->nd_starttime.tv_sec * 1000000 + nd->nd_starttime.tv_usec);
+ getmicrotime(&rt->tstamp);
nfsdrt.pos = (nfsdrt.pos + 1) % NFSRTTLOGSIZ;
}
#endif /* NFS_NOSERVER */
diff --git a/sys/nfsserver/nfsm_subs.h b/sys/nfsserver/nfsm_subs.h
index f8830a5..be06591 100644
--- a/sys/nfsserver/nfsm_subs.h
+++ b/sys/nfsserver/nfsm_subs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95
- * $Id: nfsm_subs.h,v 1.13 1997/07/16 09:06:30 dfr Exp $
+ * $Id: nfsm_subs.h,v 1.14 1998/02/03 21:51:56 bde Exp $
*/
@@ -434,10 +434,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_atime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_atime.tv_sec = time.tv_sec; \
- (a)->va_atime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_atime.tv_sec = tv.tv_sec; \
+ (a)->va_atime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; \
nfsm_dissect(tl, u_long *, NFSX_UNSIGNED); \
switch (fxdr_unsigned(int, *tl)) { \
@@ -445,10 +447,12 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid,
nfsm_dissect(tl, u_long *, 2 * NFSX_UNSIGNED); \
fxdr_nfsv3time(tl, &(a)->va_mtime); \
break; \
- case NFSV3SATTRTIME_TOSERVER: \
- (a)->va_mtime.tv_sec = time.tv_sec; \
- (a)->va_mtime.tv_nsec = time.tv_usec * 1000; \
- break; \
+ case NFSV3SATTRTIME_TOSERVER: { \
+ struct timeval tv; \
+ getmicrotime(&tv); \
+ (a)->va_mtime.tv_sec = tv.tv_sec; \
+ (a)->va_mtime.tv_nsec = tv.tv_usec * 1000; \
+ break; } \
}; }
#endif
diff --git a/sys/nfsserver/nfsrvstats.h b/sys/nfsserver/nfsrvstats.h
index 9f057a3..8b28c00 100644
--- a/sys/nfsserver/nfsrvstats.h
+++ b/sys/nfsserver/nfsrvstats.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs.h 8.4 (Berkeley) 5/1/95
- * $Id: nfs.h,v 1.32 1997/10/12 20:25:38 phk Exp $
+ * $Id: nfs.h,v 1.33 1998/02/01 21:23:29 bde Exp $
*/
#ifndef _NFS_NFS_H_
@@ -108,9 +108,9 @@
*/
#define NFS_ATTRTIMEO(np) \
((((np)->n_flag & NMODIFIED) || \
- (time.tv_sec - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
- ((time.tv_sec - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
- (time.tv_sec - (np)->n_mtime) / 10))
+ (time_second - (np)->n_mtime) / 10 < NFS_MINATTRTIMO) ? NFS_MINATTRTIMO : \
+ ((time_second - (np)->n_mtime) / 10 > NFS_MAXATTRTIMO ? NFS_MAXATTRTIMO : \
+ (time_second - (np)->n_mtime) / 10))
/*
* Expected allocation sizes for major data structures. If the actual size
@@ -571,6 +571,7 @@ extern int nfs_debug;
#endif
+u_quad_t nfs_curusec __P((void));
int nfs_init __P((struct vfsconf *vfsp));
int nfs_reply __P((struct nfsreq *));
int nfs_getreq __P((struct nfsrv_descript *,struct nfsd *,int));
diff --git a/sys/pci/ncr.c b/sys/pci/ncr.c
index 9a95889..88ae79e 100644
--- a/sys/pci/ncr.c
+++ b/sys/pci/ncr.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: ncr.c,v 1.114 1998/02/04 03:47:16 eivind Exp $
+** $Id: ncr.c,v 1.115 1998/02/09 06:10:56 eivind Exp $
**
** Device driver for the NCR 53C810 PCI-SCSI-Controller.
**
@@ -498,14 +498,14 @@ struct usrcmd {
*/
struct tstamp {
- struct timeval start;
- struct timeval end;
- struct timeval select;
- struct timeval command;
- struct timeval data;
- struct timeval status;
- struct timeval disconnect;
- struct timeval reselect;
+ int start;
+ int end;
+ int select;
+ int command;
+ int data;
+ int status;
+ int disconnect;
+ int reselect;
};
/*
@@ -1287,7 +1287,7 @@ struct scripth {
#ifdef KERNEL
static void ncr_alloc_ccb (ncb_p np, u_long target, u_long lun);
static void ncr_complete (ncb_p np, ccb_p cp);
-static int ncr_delta (struct timeval * from, struct timeval * to);
+static int ncr_delta (int * from, int * to);
static void ncr_exception (ncb_p np);
static void ncr_free_ccb (ncb_p np, ccb_p cp, int flags);
static void ncr_selectclock (ncb_p np, u_char scntl3);
@@ -1342,7 +1342,7 @@ static void ncr_attach (pcici_t tag, int unit);
static char ident[] =
- "\n$Id: ncr.c,v 1.114 1998/02/04 03:47:16 eivind Exp $\n";
+ "\n$Id: ncr.c,v 1.115 1998/02/09 06:10:56 eivind Exp $\n";
static const u_long ncr_version = NCR_VERSION * 11
+ (u_long) sizeof (struct ncb) * 7
@@ -1471,8 +1471,8 @@ static char *ncr_name (ncb_p np)
#define FADDR(label,ofs)(RELOC_REGISTER | ((REG(label))+(ofs)))
#define KVAR(which) (RELOC_KVAR | (which))
-#define KVAR_TIME_TV_SEC (0)
-#define KVAR_TIME (1)
+#define KVAR_SECOND (0)
+#define KVAR_TICKS (1)
#define KVAR_NCR_CACHE (2)
#define SCRIPT_KVAR_FIRST (0)
@@ -1483,7 +1483,7 @@ static char *ncr_name (ncb_p np)
* THESE MUST ALL BE ALIGNED TO A 4-BYTE BOUNDARY.
*/
static void *script_kvars[] =
- { &time.tv_sec, &time, &ncr_cache };
+ { &time_second, &ticks, &ncr_cache };
static struct script script0 = {
/*--------------------------< START >-----------------------*/ {
@@ -1491,7 +1491,7 @@ static struct script script0 = {
** Claim to be still alive ...
*/
SCR_COPY (sizeof (((struct ncb *)0)->heartbeat)),
- KVAR (KVAR_TIME_TV_SEC),
+ KVAR (KVAR_SECOND),
NADDR (heartbeat),
/*
** Make data structure address invalid.
@@ -1710,7 +1710,7 @@ static struct script script0 = {
** Set a time stamp for this selection
*/
SCR_COPY (sizeof (struct timeval)),
- KVAR (KVAR_TIME),
+ KVAR (KVAR_TICKS),
NADDR (header.stamp.select),
/*
** load the savep (saved pointer) into
@@ -1892,7 +1892,7 @@ static struct script script0 = {
** ... set a timestamp ...
*/
SCR_COPY (sizeof (struct timeval)),
- KVAR (KVAR_TIME),
+ KVAR (KVAR_TICKS),
NADDR (header.stamp.command),
/*
** ... and send the command
@@ -1914,7 +1914,7 @@ static struct script script0 = {
** set the timestamp.
*/
SCR_COPY (sizeof (struct timeval)),
- KVAR (KVAR_TIME),
+ KVAR (KVAR_TICKS),
NADDR (header.stamp.status),
/*
** If this is a GETCC transfer,
@@ -2219,7 +2219,7 @@ static struct script script0 = {
** and count the disconnects.
*/
SCR_COPY (sizeof (struct timeval)),
- KVAR (KVAR_TIME),
+ KVAR (KVAR_TICKS),
NADDR (header.stamp.disconnect),
SCR_COPY (4),
NADDR (disc_phys),
@@ -2462,7 +2462,7 @@ static struct script script0 = {
** SCR_JUMP ^ IFFALSE (WHEN (SCR_DATA_IN)),
** PADDR (no_data),
** SCR_COPY (sizeof (struct timeval)),
-** KVAR (KVAR_TIME),
+** KVAR (KVAR_TICKS),
** NADDR (header.stamp.data),
** SCR_MOVE_TBL ^ SCR_DATA_IN,
** offsetof (struct dsb, data[ 0]),
@@ -2489,7 +2489,7 @@ static struct script script0 = {
** SCR_JUMP ^ IFFALSE (WHEN (SCR_DATA_OUT)),
** PADDR (no_data),
** SCR_COPY (sizeof (struct timeval)),
-** KVAR (KVAR_TIME),
+** KVAR (KVAR_TICKS),
** NADDR (header.stamp.data),
** SCR_MOVE_TBL ^ SCR_DATA_OUT,
** offsetof (struct dsb, data[ 0]),
@@ -3058,7 +3058,7 @@ void ncr_script_fill (struct script * scr, struct scripth * scrh)
*p++ =SCR_JUMP ^ IFFALSE (WHEN (SCR_DATA_IN));
*p++ =PADDR (no_data);
*p++ =SCR_COPY (sizeof (struct timeval));
- *p++ =(ncrcmd) KVAR (KVAR_TIME);
+ *p++ =(ncrcmd) KVAR (KVAR_TICKS);
*p++ =NADDR (header.stamp.data);
*p++ =SCR_MOVE_TBL ^ SCR_DATA_IN;
*p++ =offsetof (struct dsb, data[ 0]);
@@ -3082,7 +3082,7 @@ void ncr_script_fill (struct script * scr, struct scripth * scrh)
*p++ =SCR_JUMP ^ IFFALSE (WHEN (SCR_DATA_OUT));
*p++ =PADDR (no_data);
*p++ =SCR_COPY (sizeof (struct timeval));
- *p++ =(ncrcmd) KVAR (KVAR_TIME);
+ *p++ =(ncrcmd) KVAR (KVAR_TICKS);
*p++ =NADDR (header.stamp.data);
*p++ =SCR_MOVE_TBL ^ SCR_DATA_OUT;
*p++ =offsetof (struct dsb, data[ 0]);
@@ -4180,7 +4180,7 @@ static int32_t ncr_start (struct scsi_xfer * xp)
*/
bzero (&cp->phys.header.stamp, sizeof (struct tstamp));
- gettime(&cp->phys.header.stamp.start);
+ cp->phys.header.stamp.start = ticks;
/*----------------------------------------------------
**
@@ -4475,7 +4475,7 @@ static int32_t ncr_start (struct scsi_xfer * xp)
*/
cp->jump_ccb.l_cmd = (SCR_JUMP ^ IFFALSE (DATA (cp->tag)));
- cp->tlimit = time.tv_sec + xp->timeout / 1000 + 2;
+ cp->tlimit = time_second + xp->timeout / 1000 + 2;
cp->magic = CCB_MAGIC;
/*
@@ -5443,7 +5443,7 @@ static void ncr_usercmd (ncb_p np)
static void ncr_timeout (void *arg)
{
ncb_p np = arg;
- u_long thistime = time.tv_sec;
+ u_long thistime = time_second;
u_long step = np->ticks;
u_long count = 0;
long signed t;
@@ -5760,9 +5760,9 @@ void ncr_exception (ncb_p np)
**========================================
*/
- if (time.tv_sec - np->regtime.tv_sec>10) {
+ if (time_second - np->regtime.tv_sec>10) {
int i;
- gettime(&np->regtime);
+ getmicrotime(&np->regtime);
for (i=0; i<sizeof(np->regdump); i++)
((char*)&np->regdump)[i] = INB_OFF(i);
np->regdump.nc_dstat = dstat;
@@ -7326,12 +7326,11 @@ static int ncr_snooptest (struct ncb* np)
** Compute the difference in milliseconds.
**/
-static int ncr_delta (struct timeval * from, struct timeval * to)
+static int ncr_delta (int *from, int *to)
{
- if (!from->tv_sec) return (-1);
- if (!to ->tv_sec) return (-2);
- return ( (to->tv_sec - from->tv_sec - 2)*1000+
- +(to->tv_usec - from->tv_usec + 2000000)/1000);
+ if (!from) return (-1);
+ if (!to) return (-2);
+ return ((to - from) * 1000 / hz);
}
#define PROFILE cp->phys.header.stamp
@@ -7340,7 +7339,7 @@ static void ncb_profile (ncb_p np, ccb_p cp)
int co, da, st, en, di, se, post,work,disc;
u_long diff;
- gettime(&PROFILE.end);
+ PROFILE.end = ticks;
st = ncr_delta (&PROFILE.start,&PROFILE.status);
if (st<0) return; /* status not reached */
diff --git a/sys/sys/time.h b/sys/sys/time.h
index e06ea26..30b1b4c 100644
--- a/sys/sys/time.h
+++ b/sys/sys/time.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
- * $Id: time.h,v 1.20 1998/03/04 10:26:44 dufault Exp $
+ * $Id: time.h,v 1.21 1998/03/26 20:53:36 phk Exp $
*/
#ifndef _SYS_TIME_H_
@@ -221,11 +221,11 @@ struct clockinfo {
#ifdef KERNEL
extern struct timecounter *timecounter;
+extern time_t time_second;
void forward_timecounter __P((void));
void getmicrotime __P((struct timeval *tv));
void getnanotime __P((struct timespec *tv));
-#define gettime(xxx) getmicrotime(xxx) /* XXX be compatible */
void init_timecounter __P((struct timecounter *tc));
int itimerfix __P((struct timeval *tv));
int itimerdecr __P((struct itimerval *itp, int usec));
@@ -235,6 +235,7 @@ void second_overflow __P((u_int32_t *psec));
void set_timecounter __P((struct timespec *ts));
void timevaladd __P((struct timeval *, struct timeval *));
void timevalsub __P((struct timeval *, struct timeval *));
+int tvtohz __P((struct timeval *));
#else /* !KERNEL */
#include <time.h>
diff --git a/sys/sys/timetc.h b/sys/sys/timetc.h
index e06ea26..30b1b4c 100644
--- a/sys/sys/timetc.h
+++ b/sys/sys/timetc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
- * $Id: time.h,v 1.20 1998/03/04 10:26:44 dufault Exp $
+ * $Id: time.h,v 1.21 1998/03/26 20:53:36 phk Exp $
*/
#ifndef _SYS_TIME_H_
@@ -221,11 +221,11 @@ struct clockinfo {
#ifdef KERNEL
extern struct timecounter *timecounter;
+extern time_t time_second;
void forward_timecounter __P((void));
void getmicrotime __P((struct timeval *tv));
void getnanotime __P((struct timespec *tv));
-#define gettime(xxx) getmicrotime(xxx) /* XXX be compatible */
void init_timecounter __P((struct timecounter *tc));
int itimerfix __P((struct timeval *tv));
int itimerdecr __P((struct itimerval *itp, int usec));
@@ -235,6 +235,7 @@ void second_overflow __P((u_int32_t *psec));
void set_timecounter __P((struct timespec *ts));
void timevaladd __P((struct timeval *, struct timeval *));
void timevalsub __P((struct timeval *, struct timeval *));
+int tvtohz __P((struct timeval *));
#else /* !KERNEL */
#include <time.h>
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c
index 8eab25a..f0e69b6 100644
--- a/sys/ufs/ffs/ffs_alloc.c
+++ b/sys/ufs/ffs/ffs_alloc.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_alloc.c 8.18 (Berkeley) 5/26/95
- * $Id: ffs_alloc.c,v 1.47 1998/02/06 12:14:13 eivind Exp $
+ * $Id: ffs_alloc.c,v 1.48 1998/03/08 09:58:42 julian Exp $
*/
#include "opt_quota.h"
@@ -837,7 +837,7 @@ ffs_fragextend(ip, cg, bprev, osize, nsize)
brelse(bp);
return (0);
}
- cgp->cg_time = time.tv_sec;
+ cgp->cg_time = time_second;
bno = dtogd(fs, bprev);
for (i = numfrags(fs, osize); i < frags; i++)
if (isclr(cg_blksfree(cgp), bno + i)) {
@@ -904,7 +904,7 @@ ffs_alloccg(ip, cg, bpref, size)
brelse(bp);
return (0);
}
- cgp->cg_time = time.tv_sec;
+ cgp->cg_time = time_second;
if (size == fs->fs_bsize) {
bno = ffs_alloccgblk(ip, bp, bpref);
bdwrite(bp);
@@ -1230,7 +1230,7 @@ ffs_nodealloccg(ip, cg, ipref, mode)
brelse(bp);
return (0);
}
- cgp->cg_time = time.tv_sec;
+ cgp->cg_time = time_second;
if (ipref) {
ipref %= fs->fs_ipg;
if (isclr(cg_inosused(cgp), ipref))
@@ -1322,7 +1322,7 @@ ffs_blkfree(ip, bno, size)
brelse(bp);
return;
}
- cgp->cg_time = time.tv_sec;
+ cgp->cg_time = time_second;
bno = dtogd(fs, bno);
if (size == fs->fs_bsize) {
blkno = fragstoblks(fs, bno);
@@ -1483,7 +1483,7 @@ ffs_vfree( pvp, ino, mode)
brelse(bp);
return (0);
}
- cgp->cg_time = time.tv_sec;
+ cgp->cg_time = time_second;
ino %= fs->fs_ipg;
if (isclr(cg_inosused(cgp), ino)) {
printf("dev = 0x%lx, ino = %ld, fs = %s\n",
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index 3fd93dd..dc3f070 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_inode.c 8.13 (Berkeley) 4/21/95
- * $Id: ffs_inode.c,v 1.38 1998/03/19 22:49:42 dyson Exp $
+ * $Id: ffs_inode.c,v 1.39 1998/03/26 20:53:49 phk Exp $
*/
#include "opt_quota.h"
@@ -79,7 +79,6 @@ ffs_update(vp, access, modify, waitfor)
struct buf *bp;
struct inode *ip;
int error;
- time_t tv_sec;
ip = VTOI(vp);
if (vp->v_mount->mnt_flag & MNT_RDONLY) {
@@ -92,29 +91,17 @@ ffs_update(vp, access, modify, waitfor)
(waitfor != MNT_WAIT))
return (0);
/*
- * Use a copy of the current time to get consistent timestamps
- * (a_access and a_modify are sometimes aliases for &time).
- *
- * XXX in 2.0, a_access and a_modify are often pointers to the
- * same copy of `time'. This is not as good. Some callers forget
- * to make a copy; others make a copy too early (before the i/o
- * has completed)...
- *
- * XXX there should be a function or macro for reading the time
- * (e.g., some machines may require splclock()).
- * XXX there are: they're called get{micro|nano}time
+ * XXX: Some callers make a copy too early (before the i/o has
+ * completed)...
*/
- tv_sec = time.tv_sec;
if (ip->i_flag & IN_ACCESS)
- ip->i_atime =
- (access == &time ? tv_sec : access->tv_sec);
+ ip->i_atime = access->tv_sec;
if (ip->i_flag & IN_UPDATE) {
- ip->i_mtime =
- (modify == &time ? tv_sec : modify->tv_sec);
+ ip->i_mtime = modify->tv_sec;
ip->i_modrev++;
}
if (ip->i_flag & IN_CHANGE)
- ip->i_ctime = tv_sec;
+ ip->i_ctime = time_second;
ip->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE);
fs = ip->i_fs;
/*
@@ -184,7 +171,7 @@ ffs_truncate(vp, length, flags, cred, p)
return (EINVAL);
if (length > fs->fs_maxfilesize)
return (EFBIG);
- gettime(&tv);
+ getmicrotime(&tv);
if (ovp->v_type == VLNK &&
(oip->i_size < ovp->v_mount->mnt_maxsymlinklen || oip->i_din.di_blocks == 0)) {
#ifdef DIAGNOSTIC
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 96ef5bb..9b4753c 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vfsops.c 8.31 (Berkeley) 5/20/95
- * $Id: ffs_vfsops.c,v 1.76 1998/03/08 09:59:06 julian Exp $
+ * $Id: ffs_vfsops.c,v 1.77 1998/03/27 14:20:57 peter Exp $
*/
#include "opt_quota.h"
@@ -967,7 +967,7 @@ loop:
} else {
simple_unlock(&mntvnode_slock);
simple_unlock(&vp->v_interlock);
- gettime(&tv);
+ getmicrotime(&tv);
/* UFS_UPDATE(vp, &tv, &tv, waitfor == MNT_WAIT); */
UFS_UPDATE(vp, &tv, &tv, 0);
simple_lock(&mntvnode_slock);
@@ -1247,7 +1247,7 @@ ffs_sbupdate(mp, waitfor)
return (allerror);
bp = getblk(mp->um_devvp, SBLOCK, (int)fs->fs_sbsize, 0, 0);
fs->fs_fmod = 0;
- fs->fs_time = time.tv_sec;
+ fs->fs_time = time_second;
bcopy((caddr_t)fs, bp->b_data, (u_int)fs->fs_sbsize);
/* Restore compatibility to old file systems. XXX */
dfs = (struct fs *)bp->b_data; /* XXX */
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 9e42e63..e7127f5 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95
- * $Id: ffs_vnops.c,v 1.46 1998/03/21 05:16:09 dyson Exp $
+ * $Id: ffs_vnops.c,v 1.47 1998/03/28 10:33:26 bde Exp $
*/
#include <sys/param.h>
@@ -253,7 +253,7 @@ loop2:
#endif
}
}
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(ap->a_vp, &tv, &tv, (ap->a_waitfor == MNT_WAIT));
if (error)
return (error);
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c
index ebba152..f63c08a 100644
--- a/sys/ufs/ufs/ufs_inode.c
+++ b/sys/ufs/ufs/ufs_inode.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_inode.c 8.9 (Berkeley) 5/14/95
- * $Id: ufs_inode.c,v 1.20 1997/10/16 20:32:39 phk Exp $
+ * $Id: ufs_inode.c,v 1.21 1997/12/02 11:43:45 bde Exp $
*/
#include "opt_quota.h"
@@ -90,7 +90,7 @@ ufs_inactive(ap)
UFS_VFREE(vp, ip->i_number, mode);
}
if (ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) {
- gettime(&tv);
+ getmicrotime(&tv);
UFS_UPDATE(vp, &tv, &tv, 0);
}
out:
diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c
index 2e7d9d9..bde8e66 100644
--- a/sys/ufs/ufs/ufs_lookup.c
+++ b/sys/ufs/ufs/ufs_lookup.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_lookup.c 8.15 (Berkeley) 6/16/95
- * $Id: ufs_lookup.c,v 1.21 1998/02/06 12:14:18 eivind Exp $
+ * $Id: ufs_lookup.c,v 1.22 1998/03/08 09:59:29 julian Exp $
*/
#include <sys/param.h>
@@ -670,6 +670,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp)
struct direct *ep, *nep;
int error, ret, blkoff, loc, spacefree, flags;
char *dirbuf;
+ struct timeval tv;
p = curproc; /* XXX */
cr = p->p_ucred;
@@ -721,7 +722,8 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp)
} else {
error = VOP_BWRITE(bp);
}
- ret = UFS_UPDATE(dvp, &time, &time, !DOINGSOFTDEP(dvp));
+ getmicrotime(&tv);
+ ret = UFS_UPDATE(dvp, &tv, &tv, !DOINGSOFTDEP(dvp));
if (error == 0)
return (ret);
return (error);
diff --git a/sys/ufs/ufs/ufs_quota.c b/sys/ufs/ufs/ufs_quota.c
index 2eae865..d3b7d66 100644
--- a/sys/ufs/ufs/ufs_quota.c
+++ b/sys/ufs/ufs/ufs_quota.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_quota.c 8.5 (Berkeley) 5/20/95
- * $Id: ufs_quota.c,v 1.19 1998/02/09 06:11:12 eivind Exp $
+ * $Id: ufs_quota.c,v 1.20 1998/03/08 09:59:33 julian Exp $
*/
#include <sys/param.h>
@@ -201,7 +201,7 @@ chkdqchg(ip, change, cred, type)
*/
if (ncurblocks >= dq->dq_bsoftlimit && dq->dq_bsoftlimit) {
if (dq->dq_curblocks < dq->dq_bsoftlimit) {
- dq->dq_btime = time.tv_sec +
+ dq->dq_btime = time_second +
VFSTOUFS(ITOV(ip)->v_mount)->um_btime[type];
if (ip->i_uid == cred->cr_uid)
uprintf("\n%s: warning, %s %s\n",
@@ -209,7 +209,7 @@ chkdqchg(ip, change, cred, type)
quotatypes[type], "disk quota exceeded");
return (0);
}
- if (time.tv_sec > dq->dq_btime) {
+ if (time_second > dq->dq_btime) {
if ((dq->dq_flags & DQ_BLKS) == 0 &&
ip->i_uid == cred->cr_uid) {
uprintf("\n%s: write failed, %s %s\n",
@@ -317,7 +317,7 @@ chkiqchg(ip, change, cred, type)
*/
if (ncurinodes >= dq->dq_isoftlimit && dq->dq_isoftlimit) {
if (dq->dq_curinodes < dq->dq_isoftlimit) {
- dq->dq_itime = time.tv_sec +
+ dq->dq_itime = time_second +
VFSTOUFS(ITOV(ip)->v_mount)->um_itime[type];
if (ip->i_uid == cred->cr_uid)
uprintf("\n%s: warning, %s %s\n",
@@ -325,7 +325,7 @@ chkiqchg(ip, change, cred, type)
quotatypes[type], "inode quota exceeded");
return (0);
}
- if (time.tv_sec > dq->dq_itime) {
+ if (time_second > dq->dq_itime) {
if ((dq->dq_flags & DQ_INODS) == 0 &&
ip->i_uid == cred->cr_uid) {
uprintf("\n%s: write failed, %s %s\n",
@@ -559,11 +559,11 @@ setquota(mp, id, type, addr)
if (newlim.dqb_bsoftlimit &&
dq->dq_curblocks >= newlim.dqb_bsoftlimit &&
(dq->dq_bsoftlimit == 0 || dq->dq_curblocks < dq->dq_bsoftlimit))
- newlim.dqb_btime = time.tv_sec + ump->um_btime[type];
+ newlim.dqb_btime = time_second + ump->um_btime[type];
if (newlim.dqb_isoftlimit &&
dq->dq_curinodes >= newlim.dqb_isoftlimit &&
(dq->dq_isoftlimit == 0 || dq->dq_curinodes < dq->dq_isoftlimit))
- newlim.dqb_itime = time.tv_sec + ump->um_itime[type];
+ newlim.dqb_itime = time_second + ump->um_itime[type];
dq->dq_dqb = newlim;
if (dq->dq_curblocks < dq->dq_bsoftlimit)
dq->dq_flags &= ~DQ_BLKS;
@@ -612,10 +612,10 @@ setuse(mp, id, type, addr)
*/
if (dq->dq_bsoftlimit && dq->dq_curblocks < dq->dq_bsoftlimit &&
usage.dqb_curblocks >= dq->dq_bsoftlimit)
- dq->dq_btime = time.tv_sec + ump->um_btime[type];
+ dq->dq_btime = time_second + ump->um_btime[type];
if (dq->dq_isoftlimit && dq->dq_curinodes < dq->dq_isoftlimit &&
usage.dqb_curinodes >= dq->dq_isoftlimit)
- dq->dq_itime = time.tv_sec + ump->um_itime[type];
+ dq->dq_itime = time_second + ump->um_itime[type];
dq->dq_curblocks = usage.dqb_curblocks;
dq->dq_curinodes = usage.dqb_curinodes;
if (dq->dq_curblocks < dq->dq_bsoftlimit)
@@ -821,9 +821,9 @@ dqget(vp, id, ump, type, dqp)
dq->dq_flags |= DQ_FAKE;
if (dq->dq_id != 0) {
if (dq->dq_btime == 0)
- dq->dq_btime = time.tv_sec + ump->um_btime[type];
+ dq->dq_btime = time_second + ump->um_btime[type];
if (dq->dq_itime == 0)
- dq->dq_itime = time.tv_sec + ump->um_itime[type];
+ dq->dq_itime = time_second + ump->um_itime[type];
}
*dqp = dq;
return (0);
diff --git a/sys/ufs/ufs/ufs_readwrite.c b/sys/ufs/ufs/ufs_readwrite.c
index c9d4a28..be530dc 100644
--- a/sys/ufs/ufs/ufs_readwrite.c
+++ b/sys/ufs/ufs/ufs_readwrite.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_readwrite.c 8.11 (Berkeley) 5/8/95
- * $Id: ufs_readwrite.c,v 1.45 1998/03/08 09:59:39 julian Exp $
+ * $Id: ufs_readwrite.c,v 1.46 1998/03/09 22:12:52 dyson Exp $
*/
#define BLKSIZE(a, b, c) blksize(a, b, c)
@@ -390,7 +390,7 @@ WRITE(ap)
uio->uio_resid = resid;
}
} else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) {
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, 1);
}
if (!error)
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index b922ba7..30042b7 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95
- * $Id: ufs_vnops.c,v 1.79 1998/03/08 09:59:44 julian Exp $
+ * $Id: ufs_vnops.c,v 1.80 1998/03/26 20:54:05 phk Exp $
*/
#include "opt_quota.h"
@@ -752,7 +752,7 @@ ufs_link(ap)
ip->i_flag |= IN_CHANGE;
if (DOINGSOFTDEP(vp))
softdep_increase_linkcnt(ip);
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(vp, &tv, &tv, !DOINGSOFTDEP(vp));
if (!error) {
ufs_makedirentry(ip, cnp, &newdir);
@@ -1012,7 +1012,7 @@ abortit:
ip->i_flag |= IN_CHANGE;
if (DOINGSOFTDEP(fvp))
softdep_increase_linkcnt(ip);
- gettime(&tv);
+ getmicrotime(&tv);
if (error = UFS_UPDATE(fvp, &tv, &tv, !DOINGSOFTDEP(fvp))) {
VOP_UNLOCK(fvp, 0, p);
goto bad;
@@ -1368,7 +1368,7 @@ ufs_mkdir(ap)
dp->i_flag |= IN_CHANGE;
if (DOINGSOFTDEP(dvp))
softdep_increase_linkcnt(dp);
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, !DOINGSOFTDEP(dvp));
if (error)
goto bad;
@@ -2118,7 +2118,7 @@ ufs_makeinode(mode, dvp, vpp, cnp)
/*
* Make sure inode goes to disk before directory entry.
*/
- gettime(&tv);
+ getmicrotime(&tv);
error = UFS_UPDATE(tvp, &tv, &tv, !DOINGSOFTDEP(tvp));
if (error)
goto bad;
diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c
index 08ab104..6ef1c6d 100644
--- a/sys/vm/vm_meter.c
+++ b/sys/vm/vm_meter.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)vm_meter.c 8.4 (Berkeley) 1/4/94
- * $Id: vm_meter.c,v 1.23 1997/11/24 15:15:33 bde Exp $
+ * $Id: vm_meter.c,v 1.24 1998/03/28 10:33:27 bde Exp $
*/
#include <sys/param.h>
@@ -97,7 +97,7 @@ void
vmmeter()
{
- if (time.tv_sec % 5 == 0)
+ if (time_second % 5 == 0)
loadav(&averunnable);
if (proc0.p_slptime > maxslp / 2)
wakeup(&proc0);
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index f4387fc..1e51f0a 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -65,7 +65,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_pageout.c,v 1.119 1998/03/08 18:19:17 dyson Exp $
+ * $Id: vm_pageout.c,v 1.120 1998/03/16 01:55:58 dyson Exp $
*/
/*
@@ -963,10 +963,10 @@ rescan0:
*/
if (vm_swap_idle_enabled) {
static long lsec;
- if (time.tv_sec != lsec) {
+ if (time_second != lsec) {
vm_pageout_req_swapout |= VM_SWAP_IDLE;
vm_req_vmdaemon();
- lsec = time.tv_sec;
+ lsec = time_second;
}
}
#endif
OpenPOWER on IntegriCloud