Date: Wed, 8 Feb 2006 02:25:12 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 91364 for review Message-ID: <200602080225.k182PC1h038596@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=91364 Change 91364 by imp@imp_harmony on 2006/02/08 02:24:50 IFC @91362 Affected files ... .. //depot/projects/arm/src/sys/alpha/alpha/mp_machdep.c#3 integrate .. //depot/projects/arm/src/sys/amd64/amd64/mp_machdep.c#6 integrate .. //depot/projects/arm/src/sys/conf/files#19 integrate .. //depot/projects/arm/src/sys/dev/pccbb/pccbb.c#6 integrate .. //depot/projects/arm/src/sys/geom/eli/g_eli.c#5 integrate .. //depot/projects/arm/src/sys/i386/i386/mp_machdep.c#6 integrate .. //depot/projects/arm/src/sys/ia64/ia64/mp_machdep.c#3 integrate .. //depot/projects/arm/src/sys/kern/init_main.c#5 integrate .. //depot/projects/arm/src/sys/kern/kern_acct.c#6 integrate .. //depot/projects/arm/src/sys/kern/kern_exit.c#10 integrate .. //depot/projects/arm/src/sys/kern/kern_proc.c#6 integrate .. //depot/projects/arm/src/sys/kern/kern_resource.c#4 integrate .. //depot/projects/arm/src/sys/kern/kern_synch.c#5 integrate .. //depot/projects/arm/src/sys/kern/kern_tc.c#3 integrate .. //depot/projects/arm/src/sys/kern/subr_trap.c#3 integrate .. //depot/projects/arm/src/sys/modules/arcnet/Makefile#3 integrate .. //depot/projects/arm/src/sys/net/if_gre.c#4 integrate .. //depot/projects/arm/src/sys/net/radix.c#2 integrate .. //depot/projects/arm/src/sys/netinet/tcp_syncache.c#6 integrate .. //depot/projects/arm/src/sys/security/audit/audit.c#4 integrate .. //depot/projects/arm/src/sys/sparc64/sparc64/mp_machdep.c#3 integrate .. //depot/projects/arm/src/sys/sparc64/sparc64/tick.c#4 integrate .. //depot/projects/arm/src/sys/sys/pcpu.h#3 integrate .. //depot/projects/arm/src/sys/sys/proc.h#7 integrate .. //depot/projects/arm/src/sys/sys/systm.h#9 integrate Differences ... ==== //depot/projects/arm/src/sys/alpha/alpha/mp_machdep.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.57 2005/11/03 21:08:19 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.58 2006/02/07 21:22:01 phk Exp $"); #include "opt_kstack_pages.h" @@ -225,7 +225,7 @@ spinlock_exit(); KASSERT(curthread->td_md.md_spinlock_count == 1, ("invalid count")); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); cpu_throw(NULL, choosethread()); /* doesn't return */ ==== //depot/projects/arm/src/sys/amd64/amd64/mp_machdep.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.267 2005/12/22 22:16:05 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.268 2006/02/07 21:22:01 phk Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -582,7 +582,7 @@ spinlock_exit(); KASSERT(curthread->td_md.md_spinlock_count == 1, ("invalid count")); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); cpu_throw(NULL, choosethread()); /* doesn't return */ ==== //depot/projects/arm/src/sys/conf/files#19 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1095 2006/02/06 22:50:39 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1096 2006/02/07 18:41:56 imp Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and ==== //depot/projects/arm/src/sys/dev/pccbb/pccbb.c#6 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.138 2006/02/04 21:56:14 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.139 2006/02/07 18:38:51 imp Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -287,18 +287,26 @@ int tmp; int error; + /* + * Before we delete the children (which we have to do because + * attach doesn't check for children busses correctly), we have + * to detach the children. Even if we didn't need to delete the + * children, we have to detach them. + */ + error = bus_generic_detach(brdev); + if (error != 0) + return (error); + + /* + * Since the attach routine doesn't search for children before it + * attaches them to this device, we must delete them here in order + * for the kldload/unload case to work. If we failed to do that, then + * we'd get duplicate devices when cbb.ko was reloaded. + */ device_get_children(brdev, &devlist, &numdevs); - - error = 0; - for (tmp = 0; tmp < numdevs; tmp++) { - if (device_detach(devlist[tmp]) == 0) - device_delete_child(brdev, devlist[tmp]); - else - error++; - } + for (tmp = 0; tmp < numdevs; tmp++) + device_delete_child(brdev, devlist[tmp]); free(devlist, M_TEMP); - if (error > 0) - return (ENXIO); /* Turn off the interrupts */ cbb_set(sc, CBB_SOCKET_MASK, 0); ==== //depot/projects/arm/src/sys/geom/eli/g_eli.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli.c,v 1.17 2006/02/01 12:05:59 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli.c,v 1.18 2006/02/07 17:23:22 brueffer Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -60,15 +60,15 @@ static u_int g_eli_tries = 3; TUNABLE_INT("kern.geom.eli.tries", &g_eli_tries); SYSCTL_UINT(_kern_geom_eli, OID_AUTO, tries, CTLFLAG_RW, &g_eli_tries, 0, - "Number of tries when asking for passphrase"); + "Number of tries for entering the passphrase"); static u_int g_eli_visible_passphrase = 0; TUNABLE_INT("kern.geom.eli.visible_passphrase", &g_eli_visible_passphrase); SYSCTL_UINT(_kern_geom_eli, OID_AUTO, visible_passphrase, CTLFLAG_RW, &g_eli_visible_passphrase, 0, - "Turn on echo when entering passphrase (debug purposes only!!)"); + "Turn on echo when entering the passphrase (for debug purposes only!!)"); u_int g_eli_overwrites = 5; SYSCTL_UINT(_kern_geom_eli, OID_AUTO, overwrites, CTLFLAG_RW, &g_eli_overwrites, - 0, "Number of overwrites on-disk keys when destroying"); + 0, "Number of times on-disk keys should be overwritten when destroying them"); static u_int g_eli_threads = 0; TUNABLE_INT("kern.geom.eli.threads", &g_eli_threads); SYSCTL_UINT(_kern_geom_eli, OID_AUTO, threads, CTLFLAG_RW, &g_eli_threads, 0, @@ -121,7 +121,7 @@ break; } KASSERT(wr != NULL, ("Invalid worker (%u).", bp->bio_pflags)); - G_ELI_DEBUG(1, "Reruning crypto %s request (sid: %ju -> %ju).", + G_ELI_DEBUG(1, "Rerunning crypto %s request (sid: %ju -> %ju).", bp->bio_cmd == BIO_READ ? "READ" : "WRITE", (uintmax_t)wr->w_sid, (uintmax_t)crp->crp_sid); wr->w_sid = crp->crp_sid; @@ -767,10 +767,10 @@ if (error != 0) { free(wr, M_ELI); if (req != NULL) { - gctl_error(req, "Cannot setup crypto session " + gctl_error(req, "Cannot set up crypto session " "for %s (error=%d).", bpp->name, error); } else { - G_ELI_DEBUG(1, "Cannot setup crypto session " + G_ELI_DEBUG(1, "Cannot set up crypto session " "for %s (error=%d).", bpp->name, error); } goto failed; @@ -853,7 +853,7 @@ if (pp != NULL && (pp->acr != 0 || pp->acw != 0 || pp->ace != 0)) { if (force) { G_ELI_DEBUG(1, "Device %s is still open, so it " - "can't be definitely removed.", pp->name); + "cannot be definitely removed.", pp->name); } else { G_ELI_DEBUG(1, "Device %s is still open (r%dw%de%d).", pp->name, ==== //depot/projects/arm/src/sys/i386/i386/mp_machdep.c#6 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.261 2005/12/22 22:16:06 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.262 2006/02/07 21:22:01 phk Exp $"); #include "opt_apic.h" #include "opt_cpu.h" @@ -631,7 +631,7 @@ spinlock_exit(); KASSERT(curthread->td_md.md_spinlock_count == 1, ("invalid count")); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); cpu_throw(NULL, choosethread()); /* doesn't return */ ==== //depot/projects/arm/src/sys/ia64/ia64/mp_machdep.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/ia64/ia64/mp_machdep.c,v 1.58 2005/09/03 23:53:49 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/mp_machdep.c,v 1.59 2006/02/07 21:22:01 phk Exp $"); #include "opt_kstack_pages.h" @@ -138,7 +138,7 @@ spinlock_exit(); KASSERT(curthread->td_md.md_spinlock_count == 1, ("invalid count")); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); ia64_set_tpr(0); ==== //depot/projects/arm/src/sys/kern/init_main.c#5 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.261 2006/02/06 16:03:10 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.262 2006/02/07 21:22:01 phk Exp $"); #include "opt_init_path.h" #include "opt_mac.h" @@ -459,11 +459,10 @@ sx_slock(&allproc_lock); LIST_FOREACH(p, &allproc, p_list) { microuptime(&p->p_stats->p_start); - p->p_rux.rux_runtime.sec = 0; - p->p_rux.rux_runtime.frac = 0; + p->p_rux.rux_runtime = 0; } sx_sunlock(&allproc_lock); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); /* ==== //depot/projects/arm/src/sys/kern/kern_acct.c#6 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_acct.c,v 1.79 2006/02/07 16:04:03 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_acct.c,v 1.80 2006/02/07 18:59:47 jhb Exp $"); #include "opt_mac.h" @@ -122,8 +122,29 @@ &acctresume, 0, "percentage of free disk space above which accounting resumes"); static int acctchkfreq = 15; /* frequency (in seconds) to check space */ -SYSCTL_INT(_kern, OID_AUTO, acct_chkfreq, CTLFLAG_RW, - &acctchkfreq, 0, "frequency for checking the free space"); + +static int +sysctl_acct_chkfreq(SYSCTL_HANDLER_ARGS) +{ + int error, value; + + /* Write out the old value. */ + error = SYSCTL_OUT(req, &acctchkfreq, sizeof(int)); + if (error || req->newptr == NULL) + return (error); + + /* Read in and verify the new value. */ + error = SYSCTL_IN(req, &value, sizeof(int)); + if (error) + return (error); + if (value <= 0) + return (EINVAL); + acctchkfreq = value; + return (0); +} +SYSCTL_PROC(_kern, OID_AUTO, acct_chkfreq, CTLTYPE_INT|CTLFLAG_RW, + &acctchkfreq, 0, sysctl_acct_chkfreq, "I", + "frequency for checking the free space"); SYSCTL_INT(_kern, OID_AUTO, acct_suspended, CTLFLAG_RD, &acct_suspended, 0, "Accounting suspended or not"); ==== //depot/projects/arm/src/sys/kern/kern_exit.c#10 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.281 2006/02/06 21:56:13 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.282 2006/02/07 21:22:01 phk Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -110,7 +110,7 @@ void exit1(struct thread *td, int rv) { - struct bintime new_switchtime; + uint64_t new_switchtime; struct proc *p, *nq, *q; struct tty *tp; struct vnode *ttyvp; @@ -543,9 +543,8 @@ ruadd(p->p_ru, &p->p_rux, &p->p_stats->p_cru, &p->p_crux); /* Do the same timestamp bookkeeping that mi_switch() would do. */ - binuptime(&new_switchtime); - bintime_add(&p->p_rux.rux_runtime, &new_switchtime); - bintime_sub(&p->p_rux.rux_runtime, PCPU_PTR(switchtime)); + new_switchtime = cpu_ticks(); + p->p_rux.rux_runtime += (new_switchtime - PCPU_GET(switchtime)); PCPU_SET(switchtime, new_switchtime); PCPU_SET(switchticks, ticks); cnt.v_swtch++; ==== //depot/projects/arm/src/sys/kern/kern_proc.c#6 (text+ko) ==== @@ -27,11 +27,11 @@ * SUCH DAMAGE. * * @(#)kern_proc.c 8.7 (Berkeley) 2/14/95 - * $FreeBSD: src/sys/kern/kern_proc.c,v 1.238 2006/01/18 20:27:43 julian Exp $ + * $FreeBSD: src/sys/kern/kern_proc.c,v 1.239 2006/02/07 21:22:02 phk Exp $ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.238 2006/01/18 20:27:43 julian Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.239 2006/02/07 21:22:02 phk Exp $"); #include "opt_ktrace.h" #include "opt_kstack_pages.h" @@ -624,7 +624,6 @@ struct thread *td0; struct tty *tp; struct session *sp; - struct timeval tv; struct ucred *cred; struct sigacts *ps; @@ -695,8 +694,7 @@ kp->ki_swtime = p->p_swtime; kp->ki_pid = p->p_pid; kp->ki_nice = p->p_nice; - bintime2timeval(&p->p_rux.rux_runtime, &tv); - kp->ki_runtime = tv.tv_sec * (u_int64_t)1000000 + tv.tv_usec; + kp->ki_runtime = p->p_rux.rux_runtime * 1000000 / cpu_tickrate(); mtx_unlock_spin(&sched_lock); if ((p->p_sflag & PS_INMEM) && p->p_stats != NULL) { kp->ki_start = p->p_stats->p_start; ==== //depot/projects/arm/src/sys/kern/kern_resource.c#4 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_resource.c,v 1.152 2006/01/25 02:05:47 ups Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_resource.c,v 1.153 2006/02/07 21:22:02 phk Exp $"); #include "opt_compat.h" @@ -704,7 +704,7 @@ struct timeval *up; struct timeval *sp; { - struct bintime bt; + uint64_t bt; struct rusage_ext rux; struct thread *td; int bt_valid; @@ -712,6 +712,7 @@ PROC_LOCK_ASSERT(p, MA_OWNED); mtx_assert(&sched_lock, MA_NOTOWNED); bt_valid = 0; + bt = 0; mtx_lock_spin(&sched_lock); rux = p->p_rux; FOREACH_THREAD_IN_PROC(p, td) { @@ -725,12 +726,16 @@ KASSERT(td->td_oncpu != NOCPU, ("%s: running thread has no CPU", __func__)); if (!bt_valid) { - binuptime(&bt); + bt = cpu_ticks(); bt_valid = 1; } - bintime_add(&rux.rux_runtime, &bt); - bintime_sub(&rux.rux_runtime, - &pcpu_find(td->td_oncpu)->pc_switchtime); + /* + * XXX: Doesn't this mean that this quantum will + * XXX: get counted twice if calcru() is called + * XXX: from SIGINFO ? + */ + rux.rux_runtime += + (bt - pcpu_find(td->td_oncpu)->pc_switchtime); } } mtx_unlock_spin(&sched_lock); @@ -758,7 +763,6 @@ struct timeval *up; struct timeval *sp; { - struct timeval tv; /* {user, system, interrupt, total} {ticks, usec}; previous tu: */ u_int64_t ut, uu, st, su, it, iu, tt, tu, ptu; @@ -770,8 +774,7 @@ st = 1; tt = 1; } - bintime2timeval(&ruxp->rux_runtime, &tv); - tu = (u_int64_t)tv.tv_sec * 1000000 + tv.tv_usec; + tu = (ruxp->rux_runtime * 1000000LL) / cpu_tickrate(); ptu = ruxp->rux_uu + ruxp->rux_su + ruxp->rux_iu; if (tu < ptu) { printf( @@ -884,7 +887,7 @@ register long *ip, *ip2; register int i; - bintime_add(&rux->rux_runtime, &rux2->rux_runtime); + rux->rux_runtime += rux2->rux_runtime; rux->rux_uticks += rux2->rux_uticks; rux->rux_sticks += rux2->rux_sticks; rux->rux_iticks += rux2->rux_iticks; ==== //depot/projects/arm/src/sys/kern/kern_synch.c#5 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_synch.c,v 1.273 2005/12/29 21:15:32 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_synch.c,v 1.274 2006/02/07 21:22:02 phk Exp $"); #include "opt_ktrace.h" @@ -355,7 +355,7 @@ void mi_switch(int flags, struct thread *newtd) { - struct bintime new_switchtime; + uint64_t new_switchtime; struct thread *td; struct proc *p; @@ -384,9 +384,8 @@ * Compute the amount of time during which the current * process was running, and add that to its total so far. */ - binuptime(&new_switchtime); - bintime_add(&p->p_rux.rux_runtime, &new_switchtime); - bintime_sub(&p->p_rux.rux_runtime, PCPU_PTR(switchtime)); + new_switchtime = cpu_ticks(); + p->p_rux.rux_runtime += (new_switchtime - PCPU_GET(switchtime)); td->td_generation++; /* bump preempt-detect counter */ @@ -405,7 +404,7 @@ * it reaches the max, arrange to kill the process in ast(). */ if (p->p_cpulimit != RLIM_INFINITY && - p->p_rux.rux_runtime.sec >= p->p_cpulimit) { + p->p_rux.rux_runtime >= p->p_cpulimit * cpu_tickrate()) { p->p_sflag |= PS_XCPU; td->td_flags |= TDF_ASTPENDING; } ==== //depot/projects/arm/src/sys/kern/kern_tc.c#3 (text+ko) ==== @@ -8,7 +8,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.166 2005/09/19 22:16:31 andre Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.167 2006/02/07 21:22:02 phk Exp $"); #include "opt_ntp.h" @@ -131,6 +131,7 @@ #endif return SYSCTL_OUT(req, &boottime, sizeof(boottime)); } + /* * Return the difference between the timehands' counter value now and what * was when we copied it to the timehands' offset_count. @@ -782,3 +783,23 @@ } SYSINIT(timecounter, SI_SUB_CLOCKS, SI_ORDER_SECOND, inittimecounter, NULL) + +static +uint64_t +tc_cpu_ticks(void) +{ + static uint64_t base; + static unsigned last; + uint64_t u; + struct timecounter *tc; + + tc = timehands->th_counter; + u = tc->tc_get_timecount(tc) & tc->tc_counter_mask; + if (u < last) + base += tc->tc_counter_mask + 1; + last = u; + return (u + base); +} + +uint64_t (*cpu_ticks)(void) = tc_cpu_ticks; +uint64_t (*cpu_tickrate)(void) = tc_getfrequency; ==== //depot/projects/arm/src/sys/kern/subr_trap.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/subr_trap.c,v 1.283 2005/11/13 13:27:44 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/subr_trap.c,v 1.284 2006/02/07 21:22:02 phk Exp $"); #include "opt_ktrace.h" #include "opt_mac.h" @@ -238,7 +238,7 @@ PROC_LOCK(p); lim_rlimit(p, RLIMIT_CPU, &rlim); mtx_lock_spin(&sched_lock); - if (p->p_rux.rux_runtime.sec >= rlim.rlim_max) { + if (p->p_rux.rux_runtime >= rlim.rlim_max * cpu_tickrate()) { mtx_unlock_spin(&sched_lock); killproc(p, "exceeded maximum CPU limit"); } else { ==== //depot/projects/arm/src/sys/modules/arcnet/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/modules/arcnet/Makefile,v 1.4 2005/10/14 23:30:07 yar Exp $ +# $FreeBSD: src/sys/modules/arcnet/Makefile,v 1.5 2006/02/07 18:13:56 yar Exp $ .PATH: ${.CURDIR}/../../net @@ -17,9 +17,12 @@ arc_storelladdr .if !defined(KERNBUILDDIR) -opt_inet.h opt_inet6.h: +opt_inet.h: echo "#define INET 1" > ${.TARGET} +opt_inet6.h: + echo "#define INET6 1" > ${.TARGET} + opt_ipx.h: echo "#define IPX 1" > ${.TARGET} .endif ==== //depot/projects/arm/src/sys/net/if_gre.c#4 (text+ko) ==== @@ -612,9 +612,9 @@ error = EINVAL; break; } - sc->g_src = (satosin((struct sockadrr *)&lifr->addr))->sin_addr; + sc->g_src = (satosin(&lifr->addr))->sin_addr; sc->g_dst = - (satosin((struct sockadrr *)&lifr->dstaddr))->sin_addr; + (satosin(&lifr->dstaddr))->sin_addr; goto recompute; case SIOCDIFPHYADDR: if ((error = suser(curthread)) != 0) ==== //depot/projects/arm/src/sys/net/radix.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)radix.c 8.5 (Berkeley) 5/19/95 - * $FreeBSD: src/sys/net/radix.c,v 1.37 2005/01/07 01:45:35 imp Exp $ + * $FreeBSD: src/sys/net/radix.c,v 1.38 2006/02/07 20:25:39 qingli Exp $ */ /* @@ -1006,7 +1006,7 @@ rn = rn->rn_parent; /* if went up beyond last, stop */ - if (rn->rn_bit < lastb) { + if (rn->rn_bit <= lastb) { stopping = 1; /* printf("up too far\n"); */ /* @@ -1018,6 +1018,14 @@ */ } } + + /* + * At the top of the tree, no need to traverse the right + * half, prevent the traversal of the entire tree in the + * case of default route. + */ + if (rn->rn_parent->rn_flags & RNF_ROOT) + stopping = 1; /* Find the next *leaf* since next node might vanish, too */ for (rn = rn->rn_parent->rn_right; rn->rn_bit >= 0;) ==== //depot/projects/arm/src/sys/netinet/tcp_syncache.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/netinet/tcp_syncache.c,v 1.81 2006/01/18 18:25:03 andre Exp $ + * $FreeBSD: src/sys/netinet/tcp_syncache.c,v 1.82 2006/02/07 19:59:46 qingli Exp $ */ #include "opt_inet.h" @@ -1386,6 +1386,7 @@ * Fill in the syncache values. * XXX duplicate code from syncache_add */ + bzero(sc, sizeof(*sc)); sc->sc_ipopts = NULL; sc->sc_inc.inc_fport = inc->inc_fport; sc->sc_inc.inc_lport = inc->inc_lport; ==== //depot/projects/arm/src/sys/security/audit/audit.c#4 (text) ==== @@ -27,7 +27,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/security/audit/audit.c,v 1.5 2006/02/06 22:50:39 rwatson Exp $ + * $FreeBSD: src/sys/security/audit/audit.c,v 1.6 2006/02/07 23:44:31 rwatson Exp $ */ #include <sys/param.h> @@ -282,7 +282,9 @@ if (ret) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); ret = VOP_GETATTR(vp, &vattr, cred, td); + VOP_UNLOCK(vp, 0, td); if (ret) goto out; ==== //depot/projects/arm/src/sys/sparc64/sparc64/mp_machdep.c#3 (text+ko) ==== @@ -54,7 +54,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/mp_machdep.c,v 1.30 2005/11/03 21:08:20 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/mp_machdep.c,v 1.31 2006/02/07 21:22:02 phk Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -361,7 +361,7 @@ /* ok, now grab sched_lock and enter the scheduler */ mtx_lock_spin(&sched_lock); spinlock_exit(); - binuptime(PCPU_PTR(switchtime)); + PCPU_SET(switchtime, cpu_ticks()); PCPU_SET(switchticks, ticks); cpu_throw(NULL, choosethread()); /* doesn't return */ } ==== //depot/projects/arm/src/sys/sparc64/sparc64/tick.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/tick.c,v 1.18 2005/12/22 22:16:09 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/tick.c,v 1.19 2006/02/07 21:22:02 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -65,6 +65,20 @@ static void tick_hardclock(struct trapframe *); +static uint64_t +tick_cputicks(void) +{ + + return (rd(tick)); +} + +static uint64_t +tick_cputickrate(void) +{ + + return (tick_freq); +} + void cpu_initclocks(void) { @@ -156,6 +170,9 @@ * handled. */ tick_stop(); + + cpu_ticks = tick_cputicks; + cpu_tickrate = tick_cputickrate; } void ==== //depot/projects/arm/src/sys/sys/pcpu.h#3 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/pcpu.h,v 1.16 2005/04/26 17:07:40 jhb Exp $ + * $FreeBSD: src/sys/sys/pcpu.h,v 1.17 2006/02/07 21:22:02 phk Exp $ */ #ifndef _SYS_PCPU_H_ @@ -60,7 +60,7 @@ struct thread *pc_fpcurthread; /* Fp state owner */ struct thread *pc_deadthread; /* Zombie thread or NULL */ struct pcb *pc_curpcb; /* Current pcb */ - struct bintime pc_switchtime; + uint64_t pc_switchtime; int pc_switchticks; u_int pc_cpuid; /* This cpu number */ cpumask_t pc_cpumask; /* This cpu mask */ ==== //depot/projects/arm/src/sys/sys/proc.h#7 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)proc.h 8.15 (Berkeley) 5/19/95 - * $FreeBSD: src/sys/sys/proc.h,v 1.449 2006/02/02 00:37:05 rwatson Exp $ + * $FreeBSD: src/sys/sys/proc.h,v 1.450 2006/02/07 21:22:02 phk Exp $ */ #ifndef _SYS_PROC_H_ @@ -505,7 +505,7 @@ * Locking: (cj) means (j) for p_rux and (c) for p_crux. */ struct rusage_ext { - struct bintime rux_runtime; /* (cj) Real time. */ + u_int64_t rux_runtime; /* (cj) Real time. */ u_int64_t rux_uticks; /* (cj) Statclock hits in user mode. */ u_int64_t rux_sticks; /* (cj) Statclock hits in sys mode. */ u_int64_t rux_iticks; /* (cj) Statclock hits in intr mode. */ ==== //depot/projects/arm/src/sys/sys/systm.h#9 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)systm.h 8.7 (Berkeley) 3/29/95 - * $FreeBSD: src/sys/sys/systm.h,v 1.238 2006/02/06 10:11:59 jeff Exp $ + * $FreeBSD: src/sys/sys/systm.h,v 1.239 2006/02/07 21:22:02 phk Exp $ */ #ifndef _SYS_SYSTM_H_ @@ -238,6 +238,9 @@ int unsetenv(const char *name); int testenv(const char *name); +extern uint64_t (*cpu_ticks)(void); +extern uint64_t (*cpu_tickrate)(void); + #ifdef APM_FIXUP_CALLTODO struct timeval; void adjust_timeout_calltodo(struct timeval *time_change);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200602080225.k182PC1h038596>