From owner-p4-projects@FreeBSD.ORG Sun Mar 23 20:51:08 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5EEE41065673; Sun, 23 Mar 2008 20:51:08 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1CCD4106564A for ; Sun, 23 Mar 2008 20:51:08 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 053128FC18 for ; Sun, 23 Mar 2008 20:51:08 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m2NKp7Kr022014 for ; Sun, 23 Mar 2008 20:51:07 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m2NKp7vd022012 for perforce@freebsd.org; Sun, 23 Mar 2008 20:51:07 GMT (envelope-from jb@freebsd.org) Date: Sun, 23 Mar 2008 20:51:07 GMT Message-Id: <200803232051.m2NKp7vd022012@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 138388 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Mar 2008 20:51:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=138388 Change 138388 by jb@jb_freebsd1 on 2008/03/23 20:50:44 IFC Affected files ... .. //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#60 integrate .. //depot/projects/dtrace/doc/share/pgpkeys/keramida.key#4 integrate .. //depot/projects/dtrace/doc/share/sgml/man-refs.ent#27 integrate .. //depot/projects/dtrace/src/bin/sh/options.c#5 integrate .. //depot/projects/dtrace/src/include/pthread.h#5 integrate .. //depot/projects/dtrace/src/include/time.h#6 integrate .. //depot/projects/dtrace/src/lib/libthr/pthread.map#13 integrate .. //depot/projects/dtrace/src/lib/libthr/thread/Makefile.inc#8 integrate .. //depot/projects/dtrace/src/lib/libthr/thread/thr_getcpuclockid.c#1 branch .. //depot/projects/dtrace/src/lib/libthread_db/Makefile#7 integrate .. //depot/projects/dtrace/src/lib/libthread_db/kse.h#1 branch .. //depot/projects/dtrace/src/lib/libthread_db/libc_r_db.c#4 integrate .. //depot/projects/dtrace/src/lib/libthread_db/libpthread_db.c#5 integrate .. //depot/projects/dtrace/src/lib/libthread_db/libthr_db.c#5 integrate .. //depot/projects/dtrace/src/lib/libthread_db/thread_db.c#5 integrate .. //depot/projects/dtrace/src/release/doc/en_US.ISO8859-1/relnotes/article.sgml#19 integrate .. //depot/projects/dtrace/src/sbin/bsdlabel/bsdlabel.c#6 integrate .. //depot/projects/dtrace/src/sbin/dhclient/dhclient.c#8 integrate .. //depot/projects/dtrace/src/sbin/route/route.c#6 integrate .. //depot/projects/dtrace/src/sys/amd64/amd64/pmap.c#35 integrate .. //depot/projects/dtrace/src/sys/arm/arm/elf_trampoline.c#11 integrate .. //depot/projects/dtrace/src/sys/arm/conf/AVILA.hints#2 integrate .. //depot/projects/dtrace/src/sys/arm/xscale/ixp425/if_npe.c#6 integrate .. //depot/projects/dtrace/src/sys/dev/ath/if_ath.c#18 integrate .. //depot/projects/dtrace/src/sys/dev/fxp/if_fxp.c#11 integrate .. //depot/projects/dtrace/src/sys/dev/mfi/mfi.c#14 integrate .. //depot/projects/dtrace/src/sys/dev/re/if_re.c#17 integrate .. //depot/projects/dtrace/src/sys/fs/msdosfs/msdosfs_vfsops.c#20 integrate .. //depot/projects/dtrace/src/sys/geom/geom.h#9 integrate .. //depot/projects/dtrace/src/sys/geom/geom_subr.c#7 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part.c#6 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part.h#5 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part_apm.c#3 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part_bsd.c#4 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part_gpt.c#4 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part_mbr.c#3 integrate .. //depot/projects/dtrace/src/sys/geom/part/g_part_vtoc8.c#2 integrate .. //depot/projects/dtrace/src/sys/i386/i386/pmap.c#30 integrate .. //depot/projects/dtrace/src/sys/kern/kern_exit.c#21 integrate .. //depot/projects/dtrace/src/sys/kern/kern_thr.c#23 integrate .. //depot/projects/dtrace/src/sys/kern/kern_timeout.c#10 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_bio.c#23 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_cluster.c#7 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_default.c#11 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_mount.c#28 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_subr.c#33 integrate .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/Makefile#2 integrate .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/geom_part_apm/Makefile#1 branch .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/geom_part_bsd/Makefile#1 branch .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/geom_part_gpt/Makefile#1 branch .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/geom_part_mbr/Makefile#1 branch .. //depot/projects/dtrace/src/sys/modules/geom/geom_part/geom_part_vtoc8/Makefile#1 branch .. //depot/projects/dtrace/src/sys/nfs4client/nfs4_vfsops.c#12 integrate .. //depot/projects/dtrace/src/sys/nfs4client/nfs4_vnops.c#11 integrate .. //depot/projects/dtrace/src/sys/nfsclient/nfs_subs.c#14 integrate .. //depot/projects/dtrace/src/sys/nfsclient/nfs_vfsops.c#18 integrate .. //depot/projects/dtrace/src/sys/nfsclient/nfs_vnops.c#15 integrate .. //depot/projects/dtrace/src/sys/nfsserver/nfs_serv.c#11 integrate .. //depot/projects/dtrace/src/sys/pci/if_rlreg.h#13 integrate .. //depot/projects/dtrace/src/sys/sys/buf.h#12 integrate .. //depot/projects/dtrace/src/sys/sys/bufobj.h#8 integrate .. //depot/projects/dtrace/src/sys/sys/vnode.h#13 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_inode.c#7 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_rawread.c#8 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_softdep.c#17 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_vfsops.c#22 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_vnops.c#17 integrate .. //depot/projects/dtrace/src/tools/regression/bin/sh/builtins/getopts1.0#1 branch .. //depot/projects/dtrace/src/tools/regression/bin/sh/builtins/getopts1.0.stdout#1 branch .. //depot/projects/dtrace/src/tools/tools/net80211/wlanwatch/wlanwatch.c#5 integrate .. //depot/projects/dtrace/src/usr.sbin/freebsd-update/freebsd-update.sh#9 integrate .. //depot/projects/dtrace/www/en/gnome/docs/bugging.sgml#7 integrate .. //depot/projects/dtrace/www/en/gnome/docs/example-Makefile.sgml#8 integrate .. //depot/projects/dtrace/www/en/gnome/docs/faq2.sgml#16 integrate .. //depot/projects/dtrace/www/en/projects/ideas/ideas.xml#13 integrate Differences ... ==== //depot/projects/dtrace/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml#60 (text+ko) ==== @@ -1,7 +1,7 @@ 800025 + + + 8.0-CURRENT after changing the priority parameter + to cv_broadcastpri such that 0 means no priority. + + 800026 + ==== //depot/projects/dtrace/doc/share/pgpkeys/keramida.key#4 (text+ko) ==== @@ -1,4 +1,4 @@ - + @@ -9,6 +9,7 @@ uid Giorgos Keramidas uid Giorgos Keramidas uid Giorgos Keramidas +uid Giorgos Keramidas sub 1024g/50FDBAD1 2001-09-21 ]]> ==== //depot/projects/dtrace/doc/share/sgml/man-refs.ent#27 (text+ko) ==== @@ -20,7 +20,7 @@ lexicographical order by the entity (i.e., the dots used in place of special characters should not be expanded when comparing). - $FreeBSD: doc/share/sgml/man-refs.ent,v 1.452 2008/03/15 06:55:16 bmah Exp $ + $FreeBSD: doc/share/sgml/man-refs.ent,v 1.453 2008/03/22 17:46:11 bmah Exp $ --> @@ -3296,6 +3296,7 @@ + @@ -3743,6 +3744,7 @@ + ==== //depot/projects/dtrace/src/bin/sh/options.c#5 (text+ko) ==== @@ -36,7 +36,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/sh/options.c,v 1.25 2006/04/09 12:20:42 stefanf Exp $"); +__FBSDID("$FreeBSD: src/bin/sh/options.c,v 1.26 2008/03/22 14:06:01 stefanf Exp $"); #include #include @@ -383,7 +383,7 @@ } ap2 = shellparam.p; while ((*ap2++ = *ap1++) != NULL); - shellparam.optnext = NULL; + shellparam.reset = 1; INTON; return 0; } @@ -405,6 +405,7 @@ if (*argptr != NULL) { setparam(argptr); } + shellparam.reset = 1; INTON; return 0; } @@ -414,7 +415,6 @@ getoptsreset(const char *value) { if (number(value) == 1) { - shellparam.optnext = NULL; shellparam.reset = 1; } } ==== //depot/projects/dtrace/src/include/pthread.h#5 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/include/pthread.h,v 1.41 2007/10/29 21:01:47 kris Exp $ + * $FreeBSD: src/include/pthread.h,v 1.42 2008/03/22 09:59:20 davidxu Exp $ */ #ifndef _PTHREAD_H_ #define _PTHREAD_H_ @@ -185,6 +185,7 @@ int pthread_equal(pthread_t, pthread_t); void pthread_exit(void *) __dead2; void *pthread_getspecific(pthread_key_t); +int pthread_getcpuclockid(pthread_t, clockid_t *); int pthread_join(pthread_t, void **); int pthread_key_create(pthread_key_t *, void (*) (void *)); ==== //depot/projects/dtrace/src/include/time.h#6 (text+ko) ==== @@ -39,7 +39,7 @@ */ /* - * $FreeBSD: src/include/time.h,v 1.34 2006/04/15 03:08:55 jb Exp $ + * $FreeBSD: src/include/time.h,v 1.35 2008/03/22 09:59:20 davidxu Exp $ */ #ifndef _TIME_H_ @@ -108,6 +108,7 @@ #define CLOCK_MONOTONIC_PRECISE 11 /* FreeBSD-specific. */ #define CLOCK_MONOTONIC_FAST 12 /* FreeBSD-specific. */ #define CLOCK_SECOND 13 /* FreeBSD-specific. */ +#define CLOCK_THREAD_CPUTIME_ID 14 #endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */ #if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 ==== //depot/projects/dtrace/src/lib/libthr/pthread.map#13 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/lib/libthr/pthread.map,v 1.28 2008/03/05 06:56:35 davidxu Exp $ + * $FreeBSD: src/lib/libthr/pthread.map,v 1.29 2008/03/22 09:59:20 davidxu Exp $ */ /* @@ -271,6 +271,7 @@ _pthread_exit; _pthread_getaffinity_np; _pthread_getconcurrency; + _pthread_getcpuclockid; _pthread_getprio; _pthread_getschedparam; _pthread_getspecific; @@ -395,6 +396,7 @@ pthread_attr_getaffinity_np; pthread_attr_setaffinity_np; pthread_getaffinity_np; + pthread_getcpuclockid; pthread_setaffinity_np; pthread_mutex_getspinloops_np; pthread_mutex_getyieldloops_np; ==== //depot/projects/dtrace/src/lib/libthr/thread/Makefile.inc#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libthr/thread/Makefile.inc,v 1.17 2008/03/03 09:16:29 davidxu Exp $ +# $FreeBSD: src/lib/libthr/thread/Makefile.inc,v 1.18 2008/03/22 09:59:20 davidxu Exp $ # thr sources .PATH: ${.CURDIR}/thread @@ -20,6 +20,7 @@ thr_exit.c \ thr_fork.c \ thr_getprio.c \ + thr_getcpuclockid.c \ thr_getschedparam.c \ thr_info.c \ thr_init.c \ ==== //depot/projects/dtrace/src/lib/libthread_db/Makefile#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libthread_db/Makefile,v 1.11 2008/03/12 09:49:39 jeff Exp $ +# $FreeBSD: src/lib/libthread_db/Makefile,v 1.12 2008/03/23 09:38:11 jeff Exp $ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH} @@ -6,6 +6,7 @@ SHLIB_MAJOR= 3 SRCS= thread_db.c SRCS+= libpthread_md.c +SRCS+= libpthread_db.c SRCS+= libthr_db.c INCS= thread_db.h WARNS?= 1 ==== //depot/projects/dtrace/src/lib/libthread_db/libc_r_db.c#4 (text+ko) ==== @@ -25,9 +25,10 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libthread_db/libc_r_db.c,v 1.3 2005/05/31 09:43:03 dfr Exp $"); +__FBSDID("$FreeBSD: src/lib/libthread_db/libc_r_db.c,v 1.4 2008/03/22 05:40:44 davidxu Exp $"); #include +#include #include #include #include @@ -346,3 +347,5 @@ .to_thr_setxmmregs = libc_r_db_thr_setxmmregs, #endif }; + +DATA_SET(__ta_ops, libc_r_db_ops); ==== //depot/projects/dtrace/src/lib/libthread_db/libpthread_db.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libthread_db/libpthread_db.c,v 1.14 2006/05/17 05:12:42 davidxu Exp $"); +__FBSDID("$FreeBSD: src/lib/libthread_db/libpthread_db.c,v 1.16 2008/03/23 09:38:11 jeff Exp $"); #include #include @@ -33,12 +33,13 @@ #include #include #include -#include +#include #include #include #include #include "libpthread_db.h" +#include "kse.h" #define P2T(c) ps2td(c) @@ -1147,3 +1148,5 @@ .to_thr_setxmmregs = pt_thr_setxmmregs, #endif }; + +DATA_SET(__ta_ops, libpthread_db_ops); ==== //depot/projects/dtrace/src/lib/libthread_db/libthr_db.c#5 (text+ko) ==== @@ -26,13 +26,14 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libthread_db/libthr_db.c,v 1.12 2006/05/17 05:14:45 davidxu Exp $"); +__FBSDID("$FreeBSD: src/lib/libthread_db/libthr_db.c,v 1.13 2008/03/22 05:40:44 davidxu Exp $"); #include #include #include #include #include +#include #include #include #include @@ -791,3 +792,5 @@ .to_thr_setxmmregs = pt_thr_setxmmregs, #endif }; + +DATA_SET(__ta_ops, libthr_db_ops); ==== //depot/projects/dtrace/src/lib/libthread_db/thread_db.c#5 (text+ko) ==== @@ -25,12 +25,14 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libthread_db/thread_db.c,v 1.4 2006/10/20 14:15:42 davidxu Exp $"); +__FBSDID("$FreeBSD: src/lib/libthread_db/thread_db.c,v 1.5 2008/03/22 05:40:44 davidxu Exp $"); #include #include #include #include +#include +#include #include "thread_db_int.h" @@ -41,24 +43,20 @@ static TAILQ_HEAD(, td_thragent) proclist = TAILQ_HEAD_INITIALIZER(proclist); -extern struct ta_ops libpthread_db_ops; -extern struct ta_ops libthr_db_ops; +SET_DECLARE(__ta_ops, struct ta_ops); -static struct ta_ops *ops[] = { - &libpthread_db_ops, - &libthr_db_ops, -}; - td_err_e td_init(void) { td_err_e ret, tmp; + struct ta_ops *ops_p, **ops_pp; size_t i; ret = 0; - for (i = 0; i < sizeof(ops)/sizeof(ops[0]); i++) { - if (ops[i]->to_init != NULL) { - tmp = ops[i]->to_init(); + SET_FOREACH(ops_pp, __ta_ops) { + ops_p = *ops_pp; + if (ops_p->to_init != NULL) { + tmp = ops_p->to_init(); if (tmp != TD_OK) ret = tmp; } @@ -107,11 +105,13 @@ td_ta_new(struct ps_prochandle *ph, td_thragent_t **pta) { size_t i; + struct ta_ops *ops_p, **ops_pp; - for (i = 0; i < sizeof(ops)/sizeof(ops[0]); ++i) { - if (ops[i]->to_ta_new(ph, pta) == TD_OK) { + SET_FOREACH(ops_pp, __ta_ops) { + ops_p = *ops_pp; + if (ops_p->to_ta_new(ph, pta) == TD_OK) { TAILQ_INSERT_HEAD(&proclist, *pta, ta_next); - (*pta)->ta_ops = ops[i]; + (*pta)->ta_ops = ops_p; return (TD_OK); } } ==== //depot/projects/dtrace/src/release/doc/en_US.ISO8859-1/relnotes/article.sgml#19 (text+ko) ==== @@ -20,7 +20,7 @@ The &os; Project - $FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/article.sgml,v 1.1080 2008/03/15 07:06:12 bmah Exp $ + $FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/article.sgml,v 1.1081 2008/03/23 04:12:07 bmah Exp $ 2000 @@ -167,6 +167,14 @@ synchronized source code. More information can be found in the &man.textdump.4; manual page. + Kernel support for M:N threading has been removed. While + the KSE (Kernel Scheduled Entities) project was quite successful + in bringing threading to FreeBSD, the M:N approach taken by the + kse library was never developed to its full potential. + Backwards compatibility for applications using KSE threading + will be provided via &man.libmap.conf.5; for dynamically linked + binaries. + Boot Loader Changes @@ -187,7 +195,12 @@ Hardware Support - + The &man.cmx.4; driver, a driver for Omnikey CardMan 4040 + PCMCIA smartcard readers, has been added. + + The &man.uslcom.4; driver, a driver for Silicon + Laboratories CP2101/CP2102-based USB serial adapters, has been + imported from OpenBSD. Multimedia Support @@ -199,6 +212,18 @@ Network Interface Support + The &man.sf.4; driver has been overhauled to improve its + performance and to add support for checksum offloading. It + should also work on all architectures. + + The &man.re.4; driver has been overhauled to fix a + number of issues. This driver now has Wake On LAN (WOL) + support. + + The &man.vr.4; driver has been overhauled to fix a + number of outstanding issues. It also now works on all + architectures. + [&arch.amd64;, &arch.i386;] The &man.wpi.4; driver has been added to support the Intel 3945 Wireless LAN Controller. @@ -209,21 +234,31 @@ Network Protocols - + A bug in TCP options padding, where the wrong padding + bytes were used, has been fixed. Disks and Storage - + The &man.ata.4; driver now supports a spindown command for + disks; after a configurable amount of time, if no requests + have been received for a disk, the disk will be spun down + until the next request. The &man.atacontrol.8; utility now + supports a spindown command to configure + this feature. + + The &man.hptrr.4; driver has been updated to version 1.2 + from Highpoint. File Systems - + A problem with using &man.mmap.2; on ZFS filesystems has + been fixed. @@ -235,6 +270,26 @@ based on libarchive, have replaced the GNU Binutils versions of these utilities. + &man.chflags.1; now supports a flag for + verbose output and a flag to ignore errors + with the same semantics as (for example) + &man.chmod.1;. &merged; + + For compatiblity with other implementations, &man.cp.1; now + supports a flag, which is equivalent to + specifying the flags. + + &man.find.1; has been enhanced by the addition of a number + of primaries that were present in GNU find but not &os; + &man.find.1;. + + The &man.split.1; utility now supports a + flag to split a file into a certain number of chunks. + + The &man.tar.1; utility now supports a + flag to enable &man.compress.1;-style + compression/decompression. + &man.traceroute.8; now has the ability to print the AS number for each hop with the new switch; a new option allows selecting a particular @@ -261,8 +316,11 @@ awk has been updated from 1 May 2007 release to the 23 October 2007 release. &merged; + bzip2 has been updated from 1.0.4 + to 1.0.5. + CVS has been updated from 1.11.17 - to 1.11.22. + to a post-1.11.22 snapshot from 10 March 2008. IPFilter has been updated from 4.1.23 to 4.1.28. ==== //depot/projects/dtrace/src/sbin/bsdlabel/bsdlabel.c#6 (text+ko) ==== @@ -53,7 +53,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/sbin/bsdlabel/bsdlabel.c,v 1.113 2007/12/09 22:58:49 marcel Exp $"); +__FBSDID("$FreeBSD: src/sbin/bsdlabel/bsdlabel.c,v 1.114 2008/03/23 03:01:10 rodrigc Exp $"); #include #include @@ -463,7 +463,6 @@ /* * Fetch disklabel for disk. - * Use ioctl to get label unless -r flag is given. */ static int readlabel(int flag) ==== //depot/projects/dtrace/src/sbin/dhclient/dhclient.c#8 (text+ko) ==== @@ -54,7 +54,7 @@ */ #include -__FBSDID("$FreeBSD: src/sbin/dhclient/dhclient.c,v 1.21 2007/02/09 17:50:26 emaste Exp $"); +__FBSDID("$FreeBSD: src/sbin/dhclient/dhclient.c,v 1.23 2008/03/22 16:24:02 sam Exp $"); #include "dhcpd.h" #include "privsep.h" @@ -176,8 +176,30 @@ return (NULL); } + struct iaddr defaddr = { 4 }; +uint8_t curbssid[6]; +static void +disassoc(void *arg) +{ + struct interface_info *ifi = arg; + + /* + * Clear existing state. + */ + if (ifi->client->active != NULL) { + script_init("EXPIRE", NULL); + script_write_params("old_", + ifi->client->active); + if (ifi->client->alias) + script_write_params("alias_", + ifi->client->alias); + script_go(); + } + ifi->client->state = S_INIT; +} + /* ARGSUSED */ void routehandler(struct protocol *p) @@ -187,6 +209,7 @@ struct if_msghdr *ifm; struct ifa_msghdr *ifam; struct if_announcemsghdr *ifan; + struct ieee80211_join_event *jev; struct client_lease *l; time_t t = time(NULL); struct sockaddr *sa; @@ -255,24 +278,17 @@ switch (ifan->ifan_what) { case RTM_IEEE80211_ASSOC: case RTM_IEEE80211_REASSOC: - state_reboot(ifi); - break; - case RTM_IEEE80211_DISASSOC: /* - * Clear existing state; transition to the init - * state and then wait for either a link down - * notification or an associate event. + * Use assoc/reassoc event to kick state machine + * in case we roam. Otherwise fall back to the + * normal state machine just like a wired network. */ - if (ifi->client->active != NULL) { - script_init("EXPIRE", NULL); - script_write_params("old_", - ifi->client->active); - if (ifi->client->alias) - script_write_params("alias_", - ifi->client->alias); - script_go(); + jev = (struct ieee80211_join_event *) &ifan[1]; + if (memcmp(curbssid, jev->iev_addr, 6)) { + disassoc(ifi); + state_reboot(ifi); } - ifi->client->state = S_INIT; + memcpy(curbssid, jev->iev_addr, 6); break; } break; @@ -300,7 +316,7 @@ /* Initially, log errors to stderr as well as to syslogd. */ openlog(__progname, LOG_PID | LOG_NDELAY, DHCPD_LOG_FACILITY); - setlogmask(LOG_UPTO(LOG_INFO)); + setlogmask(LOG_UPTO(LOG_DEBUG)); while ((ch = getopt(argc, argv, "bc:dl:qu")) != -1) switch (ch) { ==== //depot/projects/dtrace/src/sbin/route/route.c#6 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)route.c 8.6 (Berkeley) 4/28/95"; #endif static const char rcsid[] = - "$FreeBSD: src/sbin/route/route.c,v 1.83 2007/11/04 11:12:40 mtm Exp $"; + "$FreeBSD: src/sbin/route/route.c,v 1.84 2008/03/22 12:50:43 remko Exp $"; #endif /* not lint */ #include @@ -748,7 +748,7 @@ break; } if (*cmd == 'g') - exit(0); + exit(ret != 0); if (!qflag) { oerrno = errno; (void) printf("%s %s %s", cmd, ishost? "host" : "net", dest); ==== //depot/projects/dtrace/src/sys/amd64/amd64/pmap.c#35 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.606 2008/03/04 18:50:15 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.608 2008/03/23 20:38:01 alc Exp $"); /* * Manages physical address maps. @@ -1861,12 +1861,8 @@ ("pmap_collect: wired pte %#lx", tpte)); if (tpte & PG_A) vm_page_flag_set(m, PG_REFERENCED); - if (tpte & PG_M) { - KASSERT((tpte & PG_RW), - ("pmap_collect: modified page not writable: va: %#lx, pte: %#lx", - va, tpte)); + if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - } free = NULL; pmap_unuse_pt(pmap, va, *pde, &free); pmap_invalidate_page(pmap, va); @@ -2311,12 +2307,8 @@ eva = sva + NBPDR; for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_FRAME); va < eva; va += PAGE_SIZE, m++) { - if (oldpde & PG_M) { - KASSERT((oldpde & PG_RW) != 0, - ("pmap_remove_pde: modified 2mpage not writable: va: %#lx, pde: %#lx", - va, oldpde)); + if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - } if (oldpde & PG_A) vm_page_flag_set(m, PG_REFERENCED); if (TAILQ_EMPTY(&m->md.pv_list) && @@ -2364,12 +2356,8 @@ pmap->pm_stats.resident_count -= 1; if (oldpte & PG_MANAGED) { m = PHYS_TO_VM_PAGE(oldpte & PG_FRAME); - if (oldpte & PG_M) { - KASSERT((oldpte & PG_RW), - ("pmap_remove_pte: modified page not writable: va: %#lx, pte: %#lx", - va, oldpte)); + if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - } if (oldpte & PG_A) vm_page_flag_set(m, PG_REFERENCED); pmap_remove_entry(pmap, m, va); @@ -2444,12 +2432,16 @@ pml4e = pmap_pml4e(pmap, sva); if ((*pml4e & PG_V) == 0) { va_next = (sva + NBPML4) & ~PML4MASK; + if (va_next < sva) + va_next = eva; continue; } pdpe = pmap_pml4e_to_pdpe(pml4e, sva); if ((*pdpe & PG_V) == 0) { va_next = (sva + NBPDP) & ~PDPMASK; + if (va_next < sva) + va_next = eva; continue; } @@ -2457,6 +2449,8 @@ * Calculate index for next page table. */ va_next = (sva + NBPDR) & ~PDRMASK; + if (va_next < sva) + va_next = eva; pde = pmap_pdpe_to_pde(pdpe, sva); ptpaddr = *pde; @@ -2575,12 +2569,8 @@ /* * Update the vm_page_t clean and reference bits. */ - if (tpte & PG_M) { - KASSERT((tpte & PG_RW), - ("pmap_remove_all: modified page not writable: va: %#lx, pte: %#lx", - pv->pv_va, tpte)); + if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - } free = NULL; pmap_unuse_pt(pmap, pv->pv_va, *pde, &free); pmap_invalidate_page(pmap, pv->pv_va); @@ -2621,7 +2611,7 @@ * page mapping with a stored page table page has PG_A * set. */ - if ((oldpde & PG_M) != 0) + if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); } } @@ -2672,16 +2662,22 @@ pml4e = pmap_pml4e(pmap, sva); if ((*pml4e & PG_V) == 0) { va_next = (sva + NBPML4) & ~PML4MASK; + if (va_next < sva) + va_next = eva; continue; } pdpe = pmap_pml4e_to_pdpe(pml4e, sva); if ((*pdpe & PG_V) == 0) { va_next = (sva + NBPDP) & ~PDPMASK; + if (va_next < sva) + va_next = eva; continue; } va_next = (sva + NBPDR) & ~PDRMASK; + if (va_next < sva) + va_next = eva; pde = pmap_pdpe_to_pde(pdpe, sva); ptpaddr = *pde; @@ -2733,7 +2729,7 @@ vm_page_flag_set(m, PG_REFERENCED); pbits &= ~PG_A; } - if ((pbits & PG_M) != 0) { + if ((pbits & (PG_M | PG_RW)) == (PG_M | PG_RW)) { if (m == NULL) m = PHYS_TO_VM_PAGE(pbits & PG_FRAME); @@ -2806,12 +2802,15 @@ return; } if ((oldpte & (PG_M | PG_RW)) == PG_RW) { + /* + * When PG_M is already clear, PG_RW can be cleared + * without a TLB invalidation. + */ if (!atomic_cmpset_long(pte, oldpte, oldpte & ~PG_RW)) goto retry; oldpte &= ~PG_RW; oldpteva = (oldpte & PG_FRAME & PDRMASK) | (va & ~PDRMASK); - pmap_invalidate_page(pmap, oldpteva); CTR2(KTR_PMAP, "pmap_promote_pde: protect for va %#lx" " in pmap %p", oldpteva, pmap); } @@ -3023,10 +3022,7 @@ PG_NX) == 0 && (newpte & PG_NX))) invlva = TRUE; } - if (origpte & PG_M) { - KASSERT((origpte & PG_RW), - ("pmap_enter: modified page not writable: va: %#lx, pte: %#lx", - va, origpte)); + if ((origpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { if ((origpte & PG_MANAGED) != 0) vm_page_dirty(om); if ((newpte & PG_RW) == 0) @@ -3084,7 +3080,7 @@ newpde |= PG_MANAGED; >>> TRUNCATED FOR MAIL (1000 lines) <<<