From kensmith at FreeBSD.org Fri May 1 02:16:07 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Fri May 1 02:16:14 2009 Subject: svn commit: r191712 - stable/7 Message-ID: <200905010216.n412G57S028976@svn.freebsd.org> Author: kensmith Date: Fri May 1 02:16:05 2009 New Revision: 191712 URL: http://svn.freebsd.org/changeset/base/191712 Log: Predict announcement day for 7.2-RELEASE. Approved by: re (implicit) Modified: stable/7/UPDATING Modified: stable/7/UPDATING ============================================================================== --- stable/7/UPDATING Thu Apr 30 22:43:21 2009 (r191711) +++ stable/7/UPDATING Fri May 1 02:16:05 2009 (r191712) @@ -8,6 +8,9 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20090504: + FreeBSD 7.2-RELEASE + 20090326: Following bug-fixes to TCP connection state flags, netstat, systat, and sockstat will need to be rebuilt in order to properly print From kensmith at FreeBSD.org Fri May 1 02:17:09 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Fri May 1 02:17:15 2009 Subject: svn commit: r191713 - releng/7.2 Message-ID: <200905010217.n412H8kF029032@svn.freebsd.org> Author: kensmith Date: Fri May 1 02:17:08 2009 New Revision: 191713 URL: http://svn.freebsd.org/changeset/base/191713 Log: Predict announcement day for 7.2-RELEASE. Approved by: re (implicit) Modified: releng/7.2/UPDATING Modified: releng/7.2/UPDATING ============================================================================== --- releng/7.2/UPDATING Fri May 1 02:16:05 2009 (r191712) +++ releng/7.2/UPDATING Fri May 1 02:17:08 2009 (r191713) @@ -8,6 +8,9 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20090504: + FreeBSD 7.2-RELEASE + 20090422: FreeBSD-SA-09:07.libc, FreeBSD-SA-09:08.openssl Don't leak information via uninitialized space in db(3) records. [09:07] From kensmith at FreeBSD.org Fri May 1 02:18:55 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Fri May 1 02:19:09 2009 Subject: svn commit: r191714 - releng/7.2/sys/conf Message-ID: <200905010218.n412Issr029096@svn.freebsd.org> Author: kensmith Date: Fri May 1 02:18:54 2009 New Revision: 191714 URL: http://svn.freebsd.org/changeset/base/191714 Log: Get ready for 7.2-RELEASE builds. Approved by: re (implicit) Modified: releng/7.2/sys/conf/newvers.sh Modified: releng/7.2/sys/conf/newvers.sh ============================================================================== --- releng/7.2/sys/conf/newvers.sh Fri May 1 02:17:08 2009 (r191713) +++ releng/7.2/sys/conf/newvers.sh Fri May 1 02:18:54 2009 (r191714) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="7.2" -BRANCH="RC2" +BRANCH="RELEASE" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi From kensmith at FreeBSD.org Fri May 1 02:51:59 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Fri May 1 02:52:09 2009 Subject: svn commit: r191715 - release/7.2.0 Message-ID: <200905010251.n412pwY0029711@svn.freebsd.org> Author: kensmith Date: Fri May 1 02:51:58 2009 New Revision: 191715 URL: http://svn.freebsd.org/changeset/base/191715 Log: Copy releng/7.2 to release/7.2.0 for FreeBSD 7.2-RELEASE. Approved by: re (implicit) Added: release/7.2.0/ - copied from r191714, releng/7.2/ From yongari at FreeBSD.org Fri May 1 03:24:03 2009 From: yongari at FreeBSD.org (Pyun YongHyeon) Date: Fri May 1 03:24:10 2009 Subject: svn commit: r191716 - head/sys/dev/sk Message-ID: <200905010324.n413O3o0030668@svn.freebsd.org> Author: yongari Date: Fri May 1 03:24:03 2009 New Revision: 191716 URL: http://svn.freebsd.org/changeset/base/191716 Log: Separate multicast filtering of SysKonnect GENESIS and Marvell Yukon from common multicast handling code. Yukon uses hash-based multicast filtering(big endian form) but GENESIS uses perfect multicast filtering as well as hash-based one(little endian form). Due to the differences of multicast filtering there is no much sense to have a common code. o Remove sk_setmulti() and introduce sk_rxfilter_yukon(), sk_rxfilter_yukon() that handles multicast filtering setup. o Have sk_rxfilter_{yukon, genesis} handle promiscuous mode and nuke sk_setpromisc(). This simplifies ioctl handler as well as giving a chance to check validity of Rx control register of Yukon. o Don't reinitialize controller when IFF_ALLMULTI flags is changed. o Nuke sk_gmchash(), it's not needed anymore. o Always reconfigure Rx control register whenever a new multicast filtering condition is changed. This fixes multicast filtering setup on Yukon. PR: kern/134051 Modified: head/sys/dev/sk/if_sk.c Modified: head/sys/dev/sk/if_sk.c ============================================================================== --- head/sys/dev/sk/if_sk.c Fri May 1 02:51:58 2009 (r191715) +++ head/sys/dev/sk/if_sk.c Fri May 1 03:24:03 2009 (r191716) @@ -255,10 +255,10 @@ static int sk_marv_miibus_writereg(struc static void sk_marv_miibus_statchg(struct sk_if_softc *); static uint32_t sk_xmchash(const uint8_t *); -static uint32_t sk_gmchash(const uint8_t *); static void sk_setfilt(struct sk_if_softc *, u_int16_t *, int); -static void sk_setmulti(struct sk_if_softc *); -static void sk_setpromisc(struct sk_if_softc *); +static void sk_rxfilter(struct sk_if_softc *); +static void sk_rxfilter_genesis(struct sk_if_softc *); +static void sk_rxfilter_yukon(struct sk_if_softc *); static int sysctl_int_range(SYSCTL_HANDLER_ARGS, int low, int high); static int sysctl_hw_sk_int_mod(SYSCTL_HANDLER_ARGS); @@ -697,19 +697,6 @@ sk_xmchash(addr) return (~crc & ((1 << HASH_BITS) - 1)); } -/* gmchash is just a big endian crc */ -static u_int32_t -sk_gmchash(addr) - const uint8_t *addr; -{ - uint32_t crc; - - /* Compute CRC for the address value. */ - crc = ether_crc32_be(addr, ETHER_ADDR_LEN); - - return (crc & ((1 << HASH_BITS) - 1)); -} - static void sk_setfilt(sc_if, addr, slot) struct sk_if_softc *sc_if; @@ -728,12 +715,26 @@ sk_setfilt(sc_if, addr, slot) } static void -sk_setmulti(sc_if) +sk_rxfilter(sc_if) + struct sk_if_softc *sc_if; +{ + struct sk_softc *sc; + + SK_IF_LOCK_ASSERT(sc_if); + + sc = sc_if->sk_softc; + if (sc->sk_type == SK_GENESIS) + sk_rxfilter_genesis(sc_if); + else + sk_rxfilter_yukon(sc_if); +} + +static void +sk_rxfilter_genesis(sc_if) struct sk_if_softc *sc_if; { - struct sk_softc *sc = sc_if->sk_softc; struct ifnet *ifp = sc_if->sk_ifp; - u_int32_t hashes[2] = { 0, 0 }; + u_int32_t hashes[2] = { 0, 0 }, mode; int h = 0, i; struct ifmultiaddr *ifma; u_int16_t dummy[] = { 0, 0, 0 }; @@ -741,124 +742,96 @@ sk_setmulti(sc_if) SK_IF_LOCK_ASSERT(sc_if); - /* First, zot all the existing filters. */ - switch(sc->sk_type) { - case SK_GENESIS: - for (i = 1; i < XM_RXFILT_MAX; i++) - sk_setfilt(sc_if, dummy, i); - - SK_XM_WRITE_4(sc_if, XM_MAR0, 0); - SK_XM_WRITE_4(sc_if, XM_MAR2, 0); - break; - case SK_YUKON: - case SK_YUKON_LITE: - case SK_YUKON_LP: - SK_YU_WRITE_2(sc_if, YUKON_MCAH1, 0); - SK_YU_WRITE_2(sc_if, YUKON_MCAH2, 0); - SK_YU_WRITE_2(sc_if, YUKON_MCAH3, 0); - SK_YU_WRITE_2(sc_if, YUKON_MCAH4, 0); - break; - } + mode = SK_XM_READ_4(sc_if, XM_MODE); + mode &= ~(XM_MODE_RX_PROMISC | XM_MODE_RX_USE_HASH | + XM_MODE_RX_USE_PERFECT); + /* First, zot all the existing perfect filters. */ + for (i = 1; i < XM_RXFILT_MAX; i++) + sk_setfilt(sc_if, dummy, i); /* Now program new ones. */ if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) { + if (ifp->if_flags & IFF_ALLMULTI) + mode |= XM_MODE_RX_USE_HASH; + if (ifp->if_flags & IFF_PROMISC) + mode |= XM_MODE_RX_PROMISC; hashes[0] = 0xFFFFFFFF; hashes[1] = 0xFFFFFFFF; } else { i = 1; IF_ADDR_LOCK(ifp); - TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead, ifma_link) { + TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead, + ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; /* * Program the first XM_RXFILT_MAX multicast groups - * into the perfect filter. For all others, - * use the hash table. + * into the perfect filter. */ - if (sc->sk_type == SK_GENESIS && i < XM_RXFILT_MAX) { - bcopy(LLADDR( - (struct sockaddr_dl *)ifma->ifma_addr), - maddr, ETHER_ADDR_LEN); + bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr), + maddr, ETHER_ADDR_LEN); + if (i < XM_RXFILT_MAX) { sk_setfilt(sc_if, maddr, i); + mode |= XM_MODE_RX_USE_PERFECT; i++; continue; } - - switch(sc->sk_type) { - case SK_GENESIS: - bcopy(LLADDR( - (struct sockaddr_dl *)ifma->ifma_addr), - maddr, ETHER_ADDR_LEN); - h = sk_xmchash((const uint8_t *)maddr); - break; - case SK_YUKON: - case SK_YUKON_LITE: - case SK_YUKON_LP: - bcopy(LLADDR( - (struct sockaddr_dl *)ifma->ifma_addr), - maddr, ETHER_ADDR_LEN); - h = sk_gmchash((const uint8_t *)maddr); - break; - } + h = sk_xmchash((const uint8_t *)maddr); if (h < 32) hashes[0] |= (1 << h); else hashes[1] |= (1 << (h - 32)); + mode |= XM_MODE_RX_USE_HASH; } IF_ADDR_UNLOCK(ifp); } - switch(sc->sk_type) { - case SK_GENESIS: - SK_XM_SETBIT_4(sc_if, XM_MODE, XM_MODE_RX_USE_HASH| - XM_MODE_RX_USE_PERFECT); - SK_XM_WRITE_4(sc_if, XM_MAR0, hashes[0]); - SK_XM_WRITE_4(sc_if, XM_MAR2, hashes[1]); - break; - case SK_YUKON: - case SK_YUKON_LITE: - case SK_YUKON_LP: - SK_YU_WRITE_2(sc_if, YUKON_MCAH1, hashes[0] & 0xffff); - SK_YU_WRITE_2(sc_if, YUKON_MCAH2, (hashes[0] >> 16) & 0xffff); - SK_YU_WRITE_2(sc_if, YUKON_MCAH3, hashes[1] & 0xffff); - SK_YU_WRITE_2(sc_if, YUKON_MCAH4, (hashes[1] >> 16) & 0xffff); - break; - } - - return; + SK_XM_WRITE_4(sc_if, XM_MODE, mode); + SK_XM_WRITE_4(sc_if, XM_MAR0, hashes[0]); + SK_XM_WRITE_4(sc_if, XM_MAR2, hashes[1]); } static void -sk_setpromisc(sc_if) +sk_rxfilter_yukon(sc_if) struct sk_if_softc *sc_if; { - struct sk_softc *sc = sc_if->sk_softc; - struct ifnet *ifp = sc_if->sk_ifp; + struct ifnet *ifp; + u_int32_t crc, hashes[2] = { 0, 0 }, mode; + struct ifmultiaddr *ifma; SK_IF_LOCK_ASSERT(sc_if); - switch(sc->sk_type) { - case SK_GENESIS: - if (ifp->if_flags & IFF_PROMISC) { - SK_XM_SETBIT_4(sc_if, XM_MODE, XM_MODE_RX_PROMISC); - } else { - SK_XM_CLRBIT_4(sc_if, XM_MODE, XM_MODE_RX_PROMISC); - } - break; - case SK_YUKON: - case SK_YUKON_LITE: - case SK_YUKON_LP: - if (ifp->if_flags & IFF_PROMISC) { - SK_YU_CLRBIT_2(sc_if, YUKON_RCR, - YU_RCR_UFLEN | YU_RCR_MUFLEN); - } else { - SK_YU_SETBIT_2(sc_if, YUKON_RCR, - YU_RCR_UFLEN | YU_RCR_MUFLEN); + ifp = sc_if->sk_ifp; + mode = SK_YU_READ_2(sc_if, YUKON_RCR); + if (ifp->if_flags & IFF_PROMISC) + mode &= ~(YU_RCR_UFLEN | YU_RCR_MUFLEN); + else if (ifp->if_flags & IFF_ALLMULTI) { + mode |= YU_RCR_UFLEN | YU_RCR_MUFLEN; + hashes[0] = 0xFFFFFFFF; + hashes[1] = 0xFFFFFFFF; + } else { + mode |= YU_RCR_UFLEN; + IF_ADDR_LOCK(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + crc = ether_crc32_be(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN); + /* Just want the 6 least significant bits. */ + crc &= 0x3f; + /* Set the corresponding bit in the hash table. */ + hashes[crc >> 5] |= 1 << (crc & 0x1f); } - break; + IF_ADDR_UNLOCK(ifp); + if (hashes[0] != 0 || hashes[1] != 0) + mode |= YU_RCR_MUFLEN; } - return; + SK_YU_WRITE_2(sc_if, YUKON_MCAH1, hashes[0] & 0xffff); + SK_YU_WRITE_2(sc_if, YUKON_MCAH2, (hashes[0] >> 16) & 0xffff); + SK_YU_WRITE_2(sc_if, YUKON_MCAH3, hashes[1] & 0xffff); + SK_YU_WRITE_2(sc_if, YUKON_MCAH4, (hashes[1] >> 16) & 0xffff); + SK_YU_WRITE_2(sc_if, YUKON_RCR, mode); } static int @@ -1166,10 +1139,8 @@ sk_ioctl(ifp, command, data) if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { if ((ifp->if_flags ^ sc_if->sk_if_flags) - & IFF_PROMISC) { - sk_setpromisc(sc_if); - sk_setmulti(sc_if); - } + & (IFF_PROMISC | IFF_ALLMULTI)) + sk_rxfilter(sc_if); } else sk_init_locked(sc_if); } else { @@ -1183,7 +1154,7 @@ sk_ioctl(ifp, command, data) case SIOCDELMULTI: SK_IF_LOCK(sc_if); if (ifp->if_drv_flags & IFF_DRV_RUNNING) - sk_setmulti(sc_if); + sk_rxfilter(sc_if); SK_IF_UNLOCK(sc_if); break; case SIOCGIFMEDIA: @@ -3302,11 +3273,8 @@ sk_init_xmac(sc_if) */ SK_XM_WRITE_2(sc_if, XM_TX_REQTHRESH, SK_XM_TX_FIFOTHRESH); - /* Set promiscuous mode */ - sk_setpromisc(sc_if); - - /* Set multicast filter */ - sk_setmulti(sc_if); + /* Set Rx filter */ + sk_rxfilter_genesis(sc_if); /* Clear and enable interrupts */ SK_XM_READ_2(sc_if, XM_ISR); @@ -3447,11 +3415,8 @@ sk_init_yukon(sc_if) SK_YU_WRITE_2(sc_if, YUKON_SAL2 + i * 4, reg); } - /* Set promiscuous mode */ - sk_setpromisc(sc_if); - - /* Set multicast filter */ - sk_setmulti(sc_if); + /* Set Rx filter */ + sk_rxfilter_yukon(sc_if); /* enable interrupt mask for counter overflows */ SK_YU_WRITE_2(sc_if, YUKON_TIMR, 0); From mav at FreeBSD.org Fri May 1 08:03:47 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Fri May 1 08:03:59 2009 Subject: svn commit: r191717 - head/sys/dev/ata Message-ID: <200905010803.n4183kGE036016@svn.freebsd.org> Author: mav Date: Fri May 1 08:03:46 2009 New Revision: 191717 URL: http://svn.freebsd.org/changeset/base/191717 Log: Improve kernel dumping reliability for busy ATA channels: - Generate fake channel interrupts even if channel busy with previous request to let it finish. Without this, dumping requests were just queued and never processed. - Drop pre-dump requests queue on dumping. ATA code, working in dumping (interruptless) mode, unable to handle long request queue. Actually, to get coherent dump we anyway should do as few unrelated actions as possible. Modified: head/sys/dev/ata/ata-all.h head/sys/dev/ata/ata-disk.c head/sys/dev/ata/ata-queue.c Modified: head/sys/dev/ata/ata-all.h ============================================================================== --- head/sys/dev/ata/ata-all.h Fri May 1 03:24:03 2009 (r191716) +++ head/sys/dev/ata/ata-all.h Fri May 1 08:03:46 2009 (r191717) @@ -584,6 +584,7 @@ void ata_finish(struct ata_request *requ void ata_timeout(struct ata_request *); void ata_catch_inflight(device_t dev); void ata_fail_requests(device_t dev); +void ata_drop_requests(device_t dev); char *ata_cmd2str(struct ata_request *request); /* ata-lowlevel.c: */ Modified: head/sys/dev/ata/ata-disk.c ============================================================================== --- head/sys/dev/ata/ata-disk.c Fri May 1 03:24:03 2009 (r191716) +++ head/sys/dev/ata/ata-disk.c Fri May 1 08:03:46 2009 (r191717) @@ -346,15 +346,23 @@ ad_dump(void *arg, void *virtual, vm_off off_t offset, size_t length) { struct disk *dp = arg; + device_t dev = dp->d_drv1; struct bio bp; + /* XXX: Drop pre-dump request queue. Long request queue processing + * causes stack overflow in ATA working in dumping (interruptless) mode. + * Conter-XXX: To make dump coherent we should avoid doing anything + * else while dumping. + */ + ata_drop_requests(dev); + /* length zero is special and really means flush buffers to media */ if (!length) { - struct ata_device *atadev = device_get_softc(dp->d_drv1); + struct ata_device *atadev = device_get_softc(dev); int error = 0; if (atadev->param.support.command2 & ATA_SUPPORT_FLUSHCACHE) - error = ata_controlcmd(dp->d_drv1, ATA_FLUSHCACHE, 0, 0, 0); + error = ata_controlcmd(dev, ATA_FLUSHCACHE, 0, 0, 0); return error; } Modified: head/sys/dev/ata/ata-queue.c ============================================================================== --- head/sys/dev/ata/ata-queue.c Fri May 1 03:24:03 2009 (r191716) +++ head/sys/dev/ata/ata-queue.c Fri May 1 08:03:46 2009 (r191717) @@ -218,20 +218,17 @@ ata_start(device_t dev) ata_finish(request); return; } - if (dumping) { - mtx_unlock(&ch->state_mtx); - mtx_unlock(&ch->queue_mtx); - while (ch->running) { - ata_interrupt(ch); - DELAY(10); - } - return; - } } mtx_unlock(&ch->state_mtx); } } mtx_unlock(&ch->queue_mtx); + if (dumping) { + while (ch->running) { + ata_interrupt(ch); + DELAY(10); + } + } } void @@ -560,6 +557,24 @@ ata_fail_requests(device_t dev) } } +/* + * Rudely drop all requests queued to the channel of specified device. + * XXX: The requests are leaked, use only in fatal case. + */ +void +ata_drop_requests(device_t dev) +{ + struct ata_channel *ch = device_get_softc(device_get_parent(dev)); + struct ata_request *request, *tmp; + + mtx_lock(&ch->queue_mtx); + TAILQ_FOREACH_SAFE(request, &ch->ata_queue, chain, tmp) { + TAILQ_REMOVE(&ch->ata_queue, request, chain); + request->result = ENXIO; + } + mtx_unlock(&ch->queue_mtx); +} + static u_int64_t ata_get_lba(struct ata_request *request) { From phk at phk.freebsd.dk Fri May 1 08:15:38 2009 From: phk at phk.freebsd.dk (Poul-Henning Kamp) Date: Fri May 1 08:15:45 2009 Subject: svn commit: r191717 - head/sys/dev/ata In-Reply-To: Your message of "Fri, 01 May 2009 08:03:46 GMT." <200905010803.n4183kGE036016@svn.freebsd.org> Message-ID: <48416.1241165732@critter.freebsd.dk> In message <200905010803.n4183kGE036016@svn.freebsd.org>, Alexander Motin write s: > - Drop pre-dump requests queue on dumping. ATA code, working in dumping > (interruptless) mode, unable to handle long request queue. Actually, to get > coherent dump we anyway should do as few unrelated actions as possible. It seems a wrong tradeoff to me, to favour dump fidelity over filesystem coherence. Poul-Henning -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From mav at FreeBSD.org Fri May 1 08:32:08 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Fri May 1 08:32:19 2009 Subject: svn commit: r191717 - head/sys/dev/ata In-Reply-To: <48416.1241165732@critter.freebsd.dk> References: <48416.1241165732@critter.freebsd.dk> Message-ID: <49FAB383.2010904@FreeBSD.org> Poul-Henning Kamp wrote: > In message <200905010803.n4183kGE036016@svn.freebsd.org>, Alexander Motin write > s: > >> - Drop pre-dump requests queue on dumping. ATA code, working in dumping >> (interruptless) mode, unable to handle long request queue. Actually, to get >> coherent dump we anyway should do as few unrelated actions as possible. > > It seems a wrong tradeoff to me, to favour dump fidelity over filesystem > coherence. When dump is disabled, queued requests are trashed anyway. Dump does not make the things worse then they are. It just does it's duty as good as possible and as simple as possible. There is no any warranty that completing all queued requests will make filesystem more coherent, it easily can happen opposite. Also, as soon as current system state is known to be invalid (as kernel has just panicked), it could be safer do not try to make any excessive movements. -- Alexander Motin From bms at FreeBSD.org Fri May 1 11:05:26 2009 From: bms at FreeBSD.org (Bruce M Simpson) Date: Fri May 1 11:05:32 2009 Subject: svn commit: r191718 - head/sys/netinet6 Message-ID: <200905011105.n41B5OUY041307@svn.freebsd.org> Author: bms Date: Fri May 1 11:05:24 2009 New Revision: 191718 URL: http://svn.freebsd.org/changeset/base/191718 Log: Limit scope of acquisition of INP_RLOCK for multicast input filter to the scope of its use, even though this may thrash the lock if the INP is referenced for other purposes. Tested by: David Wolfskill Modified: head/sys/netinet6/udp6_usrreq.c Modified: head/sys/netinet6/udp6_usrreq.c ============================================================================== --- head/sys/netinet6/udp6_usrreq.c Fri May 1 08:03:46 2009 (r191717) +++ head/sys/netinet6/udp6_usrreq.c Fri May 1 11:05:24 2009 (r191718) @@ -279,8 +279,6 @@ udp6_input(struct mbuf **mp, int *offp, continue; } - INP_RLOCK(inp); - /* * Handle socket delivery policy for any-source * and source-specific multicast. [RFC3678] @@ -290,6 +288,8 @@ udp6_input(struct mbuf **mp, int *offp, struct sockaddr_in6 mcaddr; int blocked; + INP_RLOCK(inp); + bzero(&mcaddr, sizeof(struct sockaddr_in6)); mcaddr.sin6_len = sizeof(struct sockaddr_in6); mcaddr.sin6_family = AF_INET6; @@ -304,9 +304,11 @@ udp6_input(struct mbuf **mp, int *offp, if (blocked == MCAST_NOTSMEMBER || blocked == MCAST_MUTED) UDPSTAT_INC(udps_filtermcast); - INP_RUNLOCK(inp); + INP_RUNLOCK(inp); /* XXX */ continue; } + + INP_RUNLOCK(inp); } if (last != NULL) { struct mbuf *n; @@ -423,8 +425,6 @@ udp6_input(struct mbuf **mp, int *offp, return (IPPROTO_DONE); badheadlocked: - if (inp) - INP_RUNLOCK(inp); INP_INFO_RUNLOCK(&V_udbinfo); badunlocked: if (m) From dchagin at FreeBSD.org Fri May 1 15:36:04 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Fri May 1 15:36:16 2009 Subject: svn commit: r191719 - in head/sys: amd64/linux32 compat/linux i386/linux Message-ID: <200905011536.n41Fa2fY046452@svn.freebsd.org> Author: dchagin Date: Fri May 1 15:36:02 2009 New Revision: 191719 URL: http://svn.freebsd.org/changeset/base/191719 Log: Reimplement futexes. Old implemention used Giant to protect the kernel data structures, but at the same time called malloc(M_WAITOK), that could cause the calling thread to sleep and lost Giant protection. User-visible result was the missed wakeup. New implementation uses one sx lock per futex. The sx protects the futex structures and allows to sleep while copyin or copyout are performed. Unlike linux, we return EINVAL when FUTEX_CMP_REQUEUE operation is requested and either caller specified futexes are equial or second futex already exists. This is acceptable since the situation can only occur from the application error, and glibc falls back to old FUTEX_WAKE operation when FUTEX_CMP_REQUEUE returns an error. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_futex.c head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Fri May 1 11:05:24 2009 (r191718) +++ head/sys/amd64/linux32/linux32_sysvec.c Fri May 1 15:36:02 2009 (r191719) @@ -128,7 +128,7 @@ static void exec_linux_setregs(struct th static void linux32_fixlimit(struct rlimit *rl, int which); extern LIST_HEAD(futex_list, futex) futex_list; -extern struct sx futex_sx; +extern struct mtx futex_mtx; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; @@ -1117,7 +1117,7 @@ linux_elf_modevent(module_t mod, int typ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF); sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); - sx_init(&futex_sx, "futex protection lock"); + mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, @@ -1149,7 +1149,7 @@ linux_elf_modevent(module_t mod, int typ linux_device_unregister_handler(*ldhp); mtx_destroy(&emul_lock); sx_destroy(&emul_shared_lock); - sx_destroy(&futex_sx); + mtx_destroy(&futex_mtx); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Fri May 1 11:05:24 2009 (r191718) +++ head/sys/compat/linux/linux_futex.c Fri May 1 15:36:02 2009 (r191719) @@ -62,419 +62,284 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex. #include #include +MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes"); +MALLOC_DEFINE(M_FUTEX_WP, "futex wp", "Linux futexes wp"); + struct futex; struct waiting_proc { - struct thread *wp_t; - struct futex *wp_new_futex; + uint32_t wp_flags; + struct futex *wp_futex; TAILQ_ENTRY(waiting_proc) wp_list; }; + struct futex { - void *f_uaddr; - int f_refcount; + struct sx f_lck; + uint32_t *f_uaddr; + uint32_t f_refcount; LIST_ENTRY(futex) f_list; TAILQ_HEAD(lf_waiting_proc, waiting_proc) f_waiting_proc; }; LIST_HEAD(futex_list, futex) futex_list; -struct sx futex_sx; /* this protects the LIST of futexes */ - -#define FUTEX_LOCK sx_xlock(&futex_sx) -#define FUTEX_UNLOCK sx_xunlock(&futex_sx) -#define FUTEX_LOCKED 1 -#define FUTEX_UNLOCKED 0 - -#define FUTEX_SYSTEM_LOCK mtx_lock(&Giant) -#define FUTEX_SYSTEM_UNLOCK mtx_unlock(&Giant) - -static struct futex *futex_get(void *, int); -static void futex_put(struct futex *); -static int futex_sleep(struct futex *, struct thread *, unsigned long); -static int futex_wake(struct futex *, int, struct futex *, int); -static int futex_atomic_op(struct thread *td, int encoded_op, caddr_t uaddr); +#define FUTEX_LOCK(f) sx_xlock(&(f)->f_lck) +#define FUTEX_UNLOCK(f) sx_xunlock(&(f)->f_lck) +#define FUTEX_INIT(f) sx_init_flags(&(f)->f_lck, "ftlk", 0) +#define FUTEX_DESTROY(f) sx_destroy(&(f)->f_lck) +#define FUTEX_ASSERT_LOCKED(f) sx_assert(&(f)->f_lck, SA_XLOCKED) + +struct mtx futex_mtx; /* protects the futex list */ +#define FUTEXES_LOCK mtx_lock(&futex_mtx) +#define FUTEXES_UNLOCK mtx_unlock(&futex_mtx) + +/* flags for futex_get() */ +#define FUTEX_CREATE_WP 0x1 /* create waiting_proc */ +#define FUTEX_DONTCREATE 0x2 /* don't create futex if not exists */ +#define FUTEX_DONTEXISTS 0x4 /* return EINVAL if futex exists */ + +/* wp_flags */ +#define FUTEX_WP_REQUEUED 0x1 /* wp requeued - wp moved from wp_list + * of futex where thread sleep to wp_list + * of another futex. + */ +#define FUTEX_WP_REMOVED 0x2 /* wp is woken up and removed from futex + * wp_list to prevent double wakeup. + */ /* support.s */ -int futex_xchgl(int oparg, caddr_t uaddr, int *oldval); -int futex_addl(int oparg, caddr_t uaddr, int *oldval); -int futex_orl(int oparg, caddr_t uaddr, int *oldval); -int futex_andl(int oparg, caddr_t uaddr, int *oldval); -int futex_xorl(int oparg, caddr_t uaddr, int *oldval); +int futex_xchgl(int oparg, uint32_t *uaddr, int *oldval); +int futex_addl(int oparg, uint32_t *uaddr, int *oldval); +int futex_orl(int oparg, uint32_t *uaddr, int *oldval); +int futex_andl(int oparg, uint32_t *uaddr, int *oldval); +int futex_xorl(int oparg, uint32_t *uaddr, int *oldval); -int -linux_sys_futex(struct thread *td, struct linux_sys_futex_args *args) +static void +futex_put(struct futex *f, struct waiting_proc *wp) { - int val; - int ret; - struct l_timespec timeout = {0, 0}; - int error = 0; - struct futex *f; - struct futex *newf; - int timeout_hz; - struct timeval tv = {0, 0}; - struct futex *f2; - int op_ret; - struct linux_emuldata *em; - -#ifdef DEBUG - if (ldebug(sys_futex)) - printf(ARGS(futex, "%p, %i, %i, *, %p, %i"), args->uaddr, args->op, - args->val, args->uaddr2, args->val3); -#endif - - /* - * Our implementation provides only privates futexes. Most of the apps - * should use private futexes but don't claim so. Therefore we treat - * all futexes as private by clearing the FUTEX_PRIVATE_FLAG. It works - * in most cases (ie. when futexes are not shared on file descriptor - * or between different processes.). - */ - args->op = (args->op & ~LINUX_FUTEX_PRIVATE_FLAG); - switch (args->op) { - case LINUX_FUTEX_WAIT: - FUTEX_SYSTEM_LOCK; - - if ((error = copyin(args->uaddr, - &val, sizeof(val))) != 0) { - FUTEX_SYSTEM_UNLOCK; - return error; - } - - if (val != args->val) { - FUTEX_SYSTEM_UNLOCK; - return EWOULDBLOCK; - } - - if (args->timeout != NULL) { - if ((error = copyin(args->timeout, - &timeout, sizeof(timeout))) != 0) { - FUTEX_SYSTEM_UNLOCK; - return error; - } - } - -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAIT %d: val = %d, uaddr = %p, " - "*uaddr = %d, timeout = %d.%09lu\n", - td->td_proc->p_pid, args->val, - args->uaddr, val, timeout.tv_sec, - (unsigned long)timeout.tv_nsec); -#endif - tv.tv_usec = timeout.tv_sec * 1000000 + timeout.tv_nsec / 1000; - timeout_hz = tvtohz(&tv); - - if (timeout.tv_sec == 0 && timeout.tv_nsec == 0) - timeout_hz = 0; - /* - * If the user process requests a non null timeout, - * make sure we do not turn it into an infinite - * timeout because timeout_hz gets null. - * - * We use a minimal timeout of 1/hz. Maybe it would - * make sense to just return ETIMEDOUT without sleeping. - */ - if (((timeout.tv_sec != 0) || (timeout.tv_nsec != 0)) && - (timeout_hz == 0)) - timeout_hz = 1; - - - f = futex_get(args->uaddr, FUTEX_UNLOCKED); - ret = futex_sleep(f, td, timeout_hz); - futex_put(f); - -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAIT %d: uaddr = %p, " - "ret = %d\n", td->td_proc->p_pid, args->uaddr, ret); -#endif - - FUTEX_SYSTEM_UNLOCK; - switch (ret) { - case EWOULDBLOCK: /* timeout */ - return ETIMEDOUT; - break; - case EINTR: /* signal */ - return EINTR; - break; - case 0: /* FUTEX_WAKE received */ -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAIT %d: uaddr = %p, " - "got FUTEX_WAKE\n", - td->td_proc->p_pid, args->uaddr); -#endif - return 0; - break; - default: -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAIT: unexpected ret = %d\n", - ret); -#endif - break; - } - - /* NOTREACHED */ - break; - - case LINUX_FUTEX_WAKE: - FUTEX_SYSTEM_LOCK; - - /* - * XXX: Linux is able to cope with different addresses - * corresponding to the same mapped memory in the sleeping - * and waker process(es). - */ -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAKE %d: uaddr = %p, val = %d\n", - td->td_proc->p_pid, args->uaddr, args->val); -#endif - f = futex_get(args->uaddr, FUTEX_UNLOCKED); - td->td_retval[0] = futex_wake(f, args->val, NULL, 0); - futex_put(f); - - FUTEX_SYSTEM_UNLOCK; - break; - - case LINUX_FUTEX_CMP_REQUEUE: - FUTEX_SYSTEM_LOCK; + FUTEX_ASSERT_LOCKED(f); + if (wp != NULL) { + if ((wp->wp_flags & FUTEX_WP_REMOVED) == 0) + TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list); + free(wp, M_FUTEX_WP); + } - if ((error = copyin(args->uaddr, - &val, sizeof(val))) != 0) { - FUTEX_SYSTEM_UNLOCK; - return error; - } + FUTEXES_LOCK; + if (--f->f_refcount == 0) { + LIST_REMOVE(f, f_list); + FUTEXES_UNLOCK; + FUTEX_UNLOCK(f); - if (val != args->val3) { - FUTEX_SYSTEM_UNLOCK; - return EAGAIN; - } + FUTEX_DESTROY(f); + free(f, M_FUTEX); + return; + } - f = futex_get(args->uaddr, FUTEX_UNLOCKED); - newf = futex_get(args->uaddr2, FUTEX_UNLOCKED); - td->td_retval[0] = futex_wake(f, args->val, newf, - (int)(unsigned long)args->timeout); - futex_put(f); - futex_put(newf); + FUTEXES_UNLOCK; + FUTEX_UNLOCK(f); +} - FUTEX_SYSTEM_UNLOCK; - break; +static int +futex_get0(uint32_t *uaddr, struct futex **newf, uint32_t flags) +{ + struct futex *f, *tmpf; - case LINUX_FUTEX_WAKE_OP: - FUTEX_SYSTEM_LOCK; -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX_WAKE_OP: %d: uaddr = %p, op = %d, " - "val = %x, uaddr2 = %p, val3 = %x\n", - td->td_proc->p_pid, args->uaddr, args->op, - args->val, args->uaddr2, args->val3); -#endif - f = futex_get(args->uaddr, FUTEX_UNLOCKED); - f2 = futex_get(args->uaddr2, FUTEX_UNLOCKED); + *newf = tmpf = NULL; - /* - * This function returns positive number as results and - * negative as errors - */ - op_ret = futex_atomic_op(td, args->val3, args->uaddr2); -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("futex_atomic_op ret %d\n", op_ret); -#endif - if (op_ret < 0) { - /* XXX: We don't handle the EFAULT yet. */ - if (op_ret != -EFAULT) { - futex_put(f); - futex_put(f2); - FUTEX_SYSTEM_UNLOCK; - return (-op_ret); +retry: + FUTEXES_LOCK; + LIST_FOREACH(f, &futex_list, f_list) { + if (f->f_uaddr == uaddr) { + if (tmpf != NULL) { + FUTEX_UNLOCK(tmpf); + FUTEX_DESTROY(tmpf); + free(tmpf, M_FUTEX); + } + if (flags & FUTEX_DONTEXISTS) { + FUTEXES_UNLOCK; + return (EINVAL); } - futex_put(f); - futex_put(f2); - - FUTEX_SYSTEM_UNLOCK; - return (EFAULT); - } - - ret = futex_wake(f, args->val, NULL, 0); - futex_put(f); - if (op_ret > 0) { - op_ret = 0; /* - * Linux abuses the address of the timespec parameter - * as the number of retries. + * Increment refcount of the found futex to + * prevent it from deallocation before FUTEX_LOCK() */ - op_ret += futex_wake(f2, - (int)(unsigned long)args->timeout, NULL, 0); - ret += op_ret; - } - futex_put(f2); - td->td_retval[0] = ret; - - FUTEX_SYSTEM_UNLOCK; - break; - - case LINUX_FUTEX_LOCK_PI: - /* not yet implemented */ - return (ENOSYS); + ++f->f_refcount; + FUTEXES_UNLOCK; - case LINUX_FUTEX_UNLOCK_PI: - /* not yet implemented */ - return (ENOSYS); + FUTEX_LOCK(f); + *newf = f; + return (0); + } + } - case LINUX_FUTEX_TRYLOCK_PI: - /* not yet implemented */ - return (ENOSYS); + if (flags & FUTEX_DONTCREATE) { + FUTEXES_UNLOCK; + return (0); + } - case LINUX_FUTEX_REQUEUE: + if (tmpf == NULL) { + FUTEXES_UNLOCK; + tmpf = malloc(sizeof(*tmpf), M_FUTEX, M_WAITOK | M_ZERO); + tmpf->f_uaddr = uaddr; + tmpf->f_refcount = 1; + FUTEX_INIT(tmpf); + TAILQ_INIT(&tmpf->f_waiting_proc); /* - * Glibc does not use this operation since Jun 2004 (2.3.3), - * as it is racy and replaced by FUTEX_CMP_REQUEUE operation. - * Glibc versions prior to 2.3.3 fall back to FUTEX_WAKE when - * FUTEX_REQUEUE returned EINVAL. + * Lock the new futex before an insert into the futex_list + * to prevent futex usage by other. */ - em = em_find(td->td_proc, EMUL_DONTLOCK); - if (em->used_requeue == 0) { - printf("linux(%s (%d)) sys_futex: " - "unsupported futex_requeue op\n", - td->td_proc->p_comm, td->td_proc->p_pid); - em->used_requeue = 1; - } - return (EINVAL); - - default: - printf("linux_sys_futex: unknown op %d\n", - args->op); - return (ENOSYS); + FUTEX_LOCK(tmpf); + goto retry; } + + LIST_INSERT_HEAD(&futex_list, tmpf, f_list); + FUTEXES_UNLOCK; + + *newf = tmpf; return (0); } -static struct futex * -futex_get(void *uaddr, int locked) +static int +futex_get(uint32_t *uaddr, struct waiting_proc **wp, struct futex **f, + uint32_t flags) { - struct futex *f; + int error; - if (locked == FUTEX_UNLOCKED) - FUTEX_LOCK; - LIST_FOREACH(f, &futex_list, f_list) { - if (f->f_uaddr == uaddr) { - f->f_refcount++; - if (locked == FUTEX_UNLOCKED) - FUTEX_UNLOCK; - return f; - } + if (flags & FUTEX_CREATE_WP) { + *wp = malloc(sizeof(struct waiting_proc), M_FUTEX_WP, M_WAITOK); + (*wp)->wp_flags = 0; + } + error = futex_get0(uaddr, f, flags); + if (error) { + if (flags & FUTEX_CREATE_WP) + free(*wp, M_FUTEX_WP); + return (error); + } + if (flags & FUTEX_CREATE_WP) { + TAILQ_INSERT_HEAD(&(*f)->f_waiting_proc, *wp, wp_list); + (*wp)->wp_futex = *f; } - f = malloc(sizeof(*f), M_LINUX, M_WAITOK); - f->f_uaddr = uaddr; - f->f_refcount = 1; - TAILQ_INIT(&f->f_waiting_proc); - LIST_INSERT_HEAD(&futex_list, f, f_list); - if (locked == FUTEX_UNLOCKED) - FUTEX_UNLOCK; - - return f; + return (error); } -static void -futex_put(f) - struct futex *f; +static int +futex_sleep(struct futex *f, struct waiting_proc *wp, unsigned long timeout) { - FUTEX_LOCK; - f->f_refcount--; - if (f->f_refcount == 0) { - LIST_REMOVE(f, f_list); - free(f, M_LINUX); + int error; + + FUTEX_ASSERT_LOCKED(f); + error = sx_sleep(wp, &f->f_lck, PCATCH, "futex", timeout); + if (wp->wp_flags & FUTEX_WP_REQUEUED) { + KASSERT(f != wp->wp_futex, ("futex != wp_futex")); + futex_put(f, NULL); + f = wp->wp_futex; + FUTEX_LOCK(f); } - FUTEX_UNLOCK; - return; + futex_put(f, wp); + return (error); } static int -futex_sleep(struct futex *f, struct thread *td, unsigned long timeout) +futex_wake(struct futex *f, int n) { - struct waiting_proc *wp; - int ret; - - wp = malloc(sizeof(*wp), M_LINUX, M_WAITOK); - wp->wp_t = td; - wp->wp_new_futex = NULL; - FUTEX_LOCK; - TAILQ_INSERT_TAIL(&f->f_waiting_proc, wp, wp_list); - FUTEX_UNLOCK; - -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX --> %d tlseep timeout = %ld\n", - td->td_proc->p_pid, timeout); -#endif - ret = tsleep(wp, PCATCH | PZERO, "linuxfutex", timeout); -#ifdef DEBUG - if (ldebug(sys_futex)) - printf("FUTEX -> %d tsleep returns %d\n", - td->td_proc->p_pid, ret); -#endif + struct waiting_proc *wp, *wpt; + int count = 0; - FUTEX_LOCK; - TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list); - FUTEX_UNLOCK; - - /* if we got woken up in futex_wake */ - if ((ret == 0) && (wp->wp_new_futex != NULL)) { - /* suspend us on the new futex */ - ret = futex_sleep(wp->wp_new_futex, td, timeout); - /* and release the old one */ - futex_put(wp->wp_new_futex); + FUTEX_ASSERT_LOCKED(f); + TAILQ_FOREACH_SAFE(wp, &f->f_waiting_proc, wp_list, wpt) { + wp->wp_flags |= FUTEX_WP_REMOVED; + TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list); + wakeup_one(wp); + if (++count == n) + break; } - free(wp, M_LINUX); - - return ret; + return (count); } static int -futex_wake(struct futex *f, int n, struct futex *newf, int n2) +futex_requeue(struct futex *f, int n, struct futex *f2, int n2) { - struct waiting_proc *wp; - int count; + struct waiting_proc *wp, *wpt; + int count = 0; - /* - * Linux is very strange it wakes up N threads for - * all operations BUT requeue ones where its N+1 - * mimic this. - */ - count = newf ? 0 : 1; + FUTEX_ASSERT_LOCKED(f); + FUTEX_ASSERT_LOCKED(f2); - FUTEX_LOCK; - TAILQ_FOREACH(wp, &f->f_waiting_proc, wp_list) { - if (count <= n) { + TAILQ_FOREACH_SAFE(wp, &f->f_waiting_proc, wp_list, wpt) { + if (++count <= n) { + wp->wp_flags |= FUTEX_WP_REMOVED; + TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list); wakeup_one(wp); - count++; } else { - if (newf != NULL) { - /* futex_put called after tsleep */ - wp->wp_new_futex = futex_get(newf->f_uaddr, - FUTEX_LOCKED); - wakeup_one(wp); - if (count - n >= n2) - break; - } + wp->wp_flags |= FUTEX_WP_REQUEUED; + /* Move wp to wp_list of f2 futex */ + TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list); + TAILQ_INSERT_HEAD(&f2->f_waiting_proc, wp, wp_list); + + /* + * Thread which sleeps on wp after waking should + * acquire f2 lock, so increment refcount of f2 to + * prevent it from premature deallocation. + */ + wp->wp_futex = f2; + FUTEXES_LOCK; + ++f2->f_refcount; + FUTEXES_UNLOCK; + if (count - n >= n2) + break; } } - FUTEX_UNLOCK; - return count; + return (count); +} + +static int +futex_wait(struct futex *f, struct waiting_proc *wp, struct l_timespec *ts) +{ + struct l_timespec timeout = {0, 0}; + struct timeval tv = {0, 0}; + int timeout_hz; + int error; + + if (ts != NULL) { + error = copyin(ts, &timeout, sizeof(timeout)); + if (error) + return (error); + } + + tv.tv_usec = timeout.tv_sec * 1000000 + timeout.tv_nsec / 1000; + timeout_hz = tvtohz(&tv); + + if (timeout.tv_sec == 0 && timeout.tv_nsec == 0) + timeout_hz = 0; + + /* + * If the user process requests a non null timeout, + * make sure we do not turn it into an infinite + * timeout because timeout_hz gets null. + * + * We use a minimal timeout of 1/hz. Maybe it would + * make sense to just return ETIMEDOUT without sleeping. + */ + if (((timeout.tv_sec != 0) || (timeout.tv_nsec != 0)) && + (timeout_hz == 0)) + timeout_hz = 1; + + error = futex_sleep(f, wp, timeout_hz); + if (error == EWOULDBLOCK) + error = ETIMEDOUT; + + return (error); } static int -futex_atomic_op(struct thread *td, int encoded_op, caddr_t uaddr) +futex_atomic_op(struct thread *td, int encoded_op, uint32_t *uaddr) { int op = (encoded_op >> 28) & 7; int cmp = (encoded_op >> 24) & 15; @@ -536,14 +401,237 @@ futex_atomic_op(struct thread *td, int e } int +linux_sys_futex(struct thread *td, struct linux_sys_futex_args *args) +{ + int op_ret, val, ret, nrwake; + struct linux_emuldata *em; + struct waiting_proc *wp; + struct futex *f, *f2; + int error = 0; + + /* + * Our implementation provides only privates futexes. Most of the apps + * should use private futexes but don't claim so. Therefore we treat + * all futexes as private by clearing the FUTEX_PRIVATE_FLAG. It works + * in most cases (ie. when futexes are not shared on file descriptor + * or between different processes.). + */ + args->op = (args->op & ~LINUX_FUTEX_PRIVATE_FLAG); + + switch (args->op) { + case LINUX_FUTEX_WAIT: + +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_wait val %d uaddr %p"), + args->val, args->uaddr); +#endif + error = futex_get(args->uaddr, &wp, &f, FUTEX_CREATE_WP); + if (error) + return (error); + error = copyin(args->uaddr, &val, sizeof(val)); + if (error) { + futex_put(f, wp); + return (error); + } + if (val != args->val) { +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_wait uaddr %p WHOOPS %d != %d"), + args->uaddr, args->val, val); +#endif + futex_put(f, wp); + return (EWOULDBLOCK); + } + + error = futex_wait(f, wp, args->timeout); + break; + + case LINUX_FUTEX_WAKE: + + /* + * XXX: Linux is able to cope with different addresses + * corresponding to the same mapped memory in the sleeping + * and waker process(es). + */ +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_wake val %d uaddr %p"), + args->val, args->uaddr); +#endif + error = futex_get(args->uaddr, NULL, &f, FUTEX_DONTCREATE); + if (error) + return (error); + if (f == NULL) { + td->td_retval[0] = 0; + return (error);; + } + td->td_retval[0] = futex_wake(f, args->val); + futex_put(f, NULL); + break; + + case LINUX_FUTEX_CMP_REQUEUE: + +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_cmp_requeue uaddr %p " + "val %d val3 %d uaddr2 %p val2 %d"), + args->uaddr, args->val, args->val3, args->uaddr2, + (int)(unsigned long)args->timeout); +#endif + + /* + * Linux allows this, we would not, it is an incorrect + * usage of declared ABI, so return EINVAL. + */ + if (args->uaddr == args->uaddr2) + return (EINVAL); + error = futex_get0(args->uaddr, &f, 0); + if (error) + return (error); + + /* + * To avoid deadlocks return EINVAL if second futex + * exists at this time. Otherwise create the new futex + * and ignore false positive LOR which thus happens. + * + * Glibc fall back to FUTEX_WAKE in case of any error + * returned by FUTEX_CMP_REQUEUE. + */ + error = futex_get0(args->uaddr2, &f2, FUTEX_DONTEXISTS); + if (error) { + futex_put(f, NULL); + return (error); + } + error = copyin(args->uaddr, &val, sizeof(val)); + if (error) { + futex_put(f2, NULL); + futex_put(f, NULL); + return (error); + } + if (val != args->val3) { +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_cmp_requeue WHOOPS" + " VAL %d != UVAL %d"), args->val, val); +#endif + futex_put(f2, NULL); + futex_put(f, NULL); + return (EAGAIN); + } + + nrwake = (int)(unsigned long)args->timeout; + td->td_retval[0] = futex_requeue(f, args->val, f2, nrwake); + futex_put(f2, NULL); + futex_put(f, NULL); + break; + + case LINUX_FUTEX_WAKE_OP: + +#ifdef DEBUG + if (ldebug(sys_futex)) + printf(ARGS(sys_futex, "futex_wake_op " + "uaddr %p op %d val %x uaddr2 %p val3 %x"), + args->uaddr, args->op, args->val, + args->uaddr2, args->val3); +#endif + error = futex_get0(args->uaddr, &f, 0); + if (error) + return (error); + if (args->uaddr != args->uaddr2) + error = futex_get0(args->uaddr2, &f2, 0); + if (error) { + futex_put(f, NULL); + return (error); + } + + /* + * This function returns positive number as results and + * negative as errors + */ + op_ret = futex_atomic_op(td, args->val3, args->uaddr2); + + if (op_ret < 0) { + /* XXX: We don't handle the EFAULT yet. */ + if (op_ret != -EFAULT) { + if (f2 != NULL) + futex_put(f2, NULL); + futex_put(f, NULL); + return (-op_ret); + } + if (f2 != NULL) + futex_put(f2, NULL); + futex_put(f, NULL); + return (EFAULT); + } + + ret = futex_wake(f, args->val); + + if (op_ret > 0) { + op_ret = 0; + nrwake = (int)(unsigned long)args->timeout; + + if (f2 != NULL) + op_ret += futex_wake(f2, nrwake); + else + op_ret += futex_wake(f, nrwake); + ret += op_ret; + + } + if (f2 != NULL) + futex_put(f2, NULL); + futex_put(f, NULL); + td->td_retval[0] = ret; + break; + + case LINUX_FUTEX_LOCK_PI: + /* not yet implemented */ + return (ENOSYS); + + case LINUX_FUTEX_UNLOCK_PI: + /* not yet implemented */ + return (ENOSYS); + + case LINUX_FUTEX_TRYLOCK_PI: + /* not yet implemented */ + return (ENOSYS); + + case LINUX_FUTEX_REQUEUE: + + /* + * Glibc does not use this operation since version 2.3.3, + * as it is racy and replaced by FUTEX_CMP_REQUEUE operation. + * Glibc versions prior to 2.3.3 fall back to FUTEX_WAKE when + * FUTEX_REQUEUE returned EINVAL. + */ + em = em_find(td->td_proc, EMUL_DONTLOCK); + if (em->used_requeue == 0) { + printf("linux(%s (%d)) sys_futex: " + "unsupported futex_requeue op\n", + td->td_proc->p_comm, td->td_proc->p_pid); + em->used_requeue = 1; + } + return (EINVAL); + + default: + printf("linux_sys_futex: unknown op %d\n", args->op); + return (ENOSYS); + } + + return (error); +} + +int linux_set_robust_list(struct thread *td, struct linux_set_robust_list_args *args) { struct linux_emuldata *em; -#ifdef DEBUG +#ifdef DEBUG if (ldebug(set_robust_list)) - printf(ARGS(set_robust_list, "")); + printf(ARGS(set_robust_list, "head %p len %d"), + args->head, args->len); #endif + if (args->len != sizeof(struct linux_robust_list_head)) return (EINVAL); @@ -598,16 +686,16 @@ linux_get_robust_list(struct thread *td, } static int -handle_futex_death(void *uaddr, pid_t pid, int pi) +handle_futex_death(struct proc *p, uint32_t *uaddr, int pi) { - int uval, nval, mval; + uint32_t uval, nval, mval; struct futex *f; + int error; retry: if (copyin(uaddr, &uval, 4)) return (EFAULT); - - if ((uval & FUTEX_TID_MASK) == pid) { + if ((uval & FUTEX_TID_MASK) == p->p_pid) { mval = (uval & FUTEX_WAITERS) | FUTEX_OWNER_DIED; nval = casuword32(uaddr, uval, mval); @@ -618,8 +706,14 @@ retry: goto retry; if (!pi && (uval & FUTEX_WAITERS)) { - f = futex_get(uaddr, FUTEX_UNLOCKED); - futex_wake(f, 1, NULL, 0); + error = futex_get(uaddr, NULL, &f, + FUTEX_DONTCREATE); + if (error) + return (error); + if (f != NULL) { + futex_wake(f, 1); + futex_put(f, NULL); + } } } @@ -671,10 +765,8 @@ release_futexes(struct proc *p) rc = fetch_robust_entry(&next_entry, PTRIN(&entry->next), &next_pi); if (entry != pending) - if (handle_futex_death((char *)entry + futex_offset, - p->p_pid, pi)) + if (handle_futex_death(p, (uint32_t *)entry + futex_offset, pi)) return; - if (rc) return; @@ -688,6 +780,5 @@ release_futexes(struct proc *p) } if (pending) - handle_futex_death((char *) pending + futex_offset, - p->p_pid, pip); + handle_futex_death(p, (uint32_t *)pending + futex_offset, pip); } Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Fri May 1 11:05:24 2009 (r191718) +++ head/sys/i386/linux/linux_sysvec.c Fri May 1 15:36:02 2009 (r191719) @@ -112,7 +112,7 @@ static int linux_szplatform; const char *linux_platform; extern LIST_HEAD(futex_list, futex) futex_list; -extern struct sx futex_sx; +extern struct mtx futex_mtx; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; @@ -1083,7 +1083,7 @@ linux_elf_modevent(module_t mod, int typ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF); sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); - sx_init(&futex_sx, "futex protection lock"); + mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail, @@ -1116,7 +1116,7 @@ linux_elf_modevent(module_t mod, int typ linux_device_unregister_handler(*ldhp); mtx_destroy(&emul_lock); sx_destroy(&emul_shared_lock); - sx_destroy(&futex_sx); + mtx_destroy(&futex_mtx); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); From mav at FreeBSD.org Fri May 1 17:05:50 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Fri May 1 17:06:07 2009 Subject: svn commit: r191720 - in head/sys: amd64/amd64 i386/i386 Message-ID: <200905011705.n41H5nVm048230@svn.freebsd.org> Author: mav Date: Fri May 1 17:05:49 2009 New Revision: 191720 URL: http://svn.freebsd.org/changeset/base/191720 Log: Use value -1 instead of 0 for marking unused APIC vectors. This fixes IRQ0 routing on LAPIC-enabled systems. Add hint.apic.0.clock tunable. Setting it 0 disables using LAPIC timers as hard-/stat-/profclock sources falling back to using i8254 and rtc timers. On modern CPUs LAPIC is a part of CPU core which is shutting down when CPU enters C3 or deeper power state. It makes no problems for interrupt processing, as chipset wakes up CPU on interrupt triggering. But entering C3 state kills LAPIC timer and freezes system time, making C3 and deeper states practically unusable. Using i8254 timer allows to avoid this problem. By using i8254 timer my T7700 C2D CPU with UP kernel successfully enters C3 state, saving more then a Watt of total idle power (>10%) in addition to all other power-saving techniques. This technique is not working for SMP yet, as only one CPU receives timer interrupts. But I think that problem could be fixed by forwarding interrupts to other CPUs with IPI. Modified: head/sys/amd64/amd64/local_apic.c head/sys/i386/i386/local_apic.c Modified: head/sys/amd64/amd64/local_apic.c ============================================================================== --- head/sys/amd64/amd64/local_apic.c Fri May 1 15:36:02 2009 (r191719) +++ head/sys/amd64/amd64/local_apic.c Fri May 1 17:05:49 2009 (r191720) @@ -112,7 +112,7 @@ struct lapic { u_long la_stat_ticks; u_long la_prof_ticks; /* Include IDT_SYSCALL to make indexing easier. */ - u_int la_ioint_irqs[APIC_NUM_IOINTS + 1]; + int la_ioint_irqs[APIC_NUM_IOINTS + 1]; } static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -254,6 +254,8 @@ lapic_create(u_int apic_id, int boot_cpu lapics[apic_id].la_lvts[i] = lvts[i]; lapics[apic_id].la_lvts[i].lvt_active = 0; } + for (i = 0; i <= APIC_NUM_IOINTS; i++) + lapics[apic_id].la_ioint_irqs[i] = -1; lapics[apic_id].la_ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; lapics[apic_id].la_ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = IRQ_TIMER; @@ -363,11 +365,15 @@ int lapic_setup_clock(void) { u_long value; + int i; /* Can't drive the timer without a local APIC. */ if (lapic == NULL) return (0); + if (resource_int_value("apic", 0, "clock", &i) == 0 && i == 0) + return (0); + /* Start off with a divisor of 2 (power on reset default). */ lapic_timer_divisor = 2; @@ -807,7 +813,7 @@ apic_alloc_vector(u_int apic_id, u_int i */ mtx_lock_spin(&icu_lock); for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { - if (lapics[apic_id].la_ioint_irqs[vector] != 0) + if (lapics[apic_id].la_ioint_irqs[vector] != -1) continue; lapics[apic_id].la_ioint_irqs[vector] = irq; mtx_unlock_spin(&icu_lock); @@ -847,7 +853,7 @@ apic_alloc_vectors(u_int apic_id, u_int for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { /* Vector is in use, end run. */ - if (lapics[apic_id].la_ioint_irqs[vector] != 0) { + if (lapics[apic_id].la_ioint_irqs[vector] != -1) { run = 0; first = 0; continue; @@ -932,7 +938,7 @@ apic_free_vector(u_int apic_id, u_int ve sched_bind(td, apic_cpuid(apic_id)); thread_unlock(td); mtx_lock_spin(&icu_lock); - lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = 0; + lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = -1; mtx_unlock_spin(&icu_lock); thread_lock(td); sched_unbind(td); @@ -974,7 +980,7 @@ DB_SHOW_COMMAND(apic, db_show_apic) db_printf("Interrupts bound to lapic %u\n", apic_id); for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { irq = lapics[apic_id].la_ioint_irqs[i]; - if (irq == 0 || irq == IRQ_SYSCALL) + if (irq == -1 || irq == IRQ_SYSCALL) continue; db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) Modified: head/sys/i386/i386/local_apic.c ============================================================================== --- head/sys/i386/i386/local_apic.c Fri May 1 15:36:02 2009 (r191719) +++ head/sys/i386/i386/local_apic.c Fri May 1 17:05:49 2009 (r191720) @@ -112,7 +112,7 @@ struct lapic { u_long la_stat_ticks; u_long la_prof_ticks; /* Include IDT_SYSCALL to make indexing easier. */ - u_int la_ioint_irqs[APIC_NUM_IOINTS + 1]; + int la_ioint_irqs[APIC_NUM_IOINTS + 1]; } static lapics[MAX_APIC_ID + 1]; /* XXX: should thermal be an NMI? */ @@ -256,6 +256,8 @@ lapic_create(u_int apic_id, int boot_cpu lapics[apic_id].la_lvts[i] = lvts[i]; lapics[apic_id].la_lvts[i].lvt_active = 0; } + for (i = 0; i <= APIC_NUM_IOINTS; i++) + lapics[apic_id].la_ioint_irqs[i] = -1; lapics[apic_id].la_ioint_irqs[IDT_SYSCALL - APIC_IO_INTS] = IRQ_SYSCALL; lapics[apic_id].la_ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] = IRQ_TIMER; @@ -365,11 +367,15 @@ int lapic_setup_clock(void) { u_long value; + int i; /* Can't drive the timer without a local APIC. */ if (lapic == NULL) return (0); + if (resource_int_value("apic", 0, "clock", &i) == 0 && i == 0) + return (0); + /* Start off with a divisor of 2 (power on reset default). */ lapic_timer_divisor = 2; @@ -809,7 +815,7 @@ apic_alloc_vector(u_int apic_id, u_int i */ mtx_lock_spin(&icu_lock); for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { - if (lapics[apic_id].la_ioint_irqs[vector] != 0) + if (lapics[apic_id].la_ioint_irqs[vector] != -1) continue; lapics[apic_id].la_ioint_irqs[vector] = irq; mtx_unlock_spin(&icu_lock); @@ -849,7 +855,7 @@ apic_alloc_vectors(u_int apic_id, u_int for (vector = 0; vector < APIC_NUM_IOINTS; vector++) { /* Vector is in use, end run. */ - if (lapics[apic_id].la_ioint_irqs[vector] != 0) { + if (lapics[apic_id].la_ioint_irqs[vector] != -1) { run = 0; first = 0; continue; @@ -936,7 +942,7 @@ apic_free_vector(u_int apic_id, u_int ve sched_bind(td, apic_cpuid(apic_id)); thread_unlock(td); mtx_lock_spin(&icu_lock); - lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = 0; + lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = -1; mtx_unlock_spin(&icu_lock); thread_lock(td); sched_unbind(td); @@ -978,7 +984,7 @@ DB_SHOW_COMMAND(apic, db_show_apic) db_printf("Interrupts bound to lapic %u\n", apic_id); for (i = 0; i < APIC_NUM_IOINTS + 1 && !db_pager_quit; i++) { irq = lapics[apic_id].la_ioint_irqs[i]; - if (irq == 0 || irq == IRQ_SYSCALL) + if (irq == -1 || irq == IRQ_SYSCALL) continue; db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) From sam at FreeBSD.org Fri May 1 17:15:30 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 17:15:41 2009 Subject: svn commit: r191722 - head/sys/modules Message-ID: <200905011715.n41HFTRK048514@svn.freebsd.org> Author: sam Date: Fri May 1 17:15:29 2009 New Revision: 191722 URL: http://svn.freebsd.org/changeset/base/191722 Log: add ralfw Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Fri May 1 17:12:10 2009 (r191721) +++ head/sys/modules/Makefile Fri May 1 17:15:29 2009 (r191722) @@ -218,6 +218,7 @@ SUBDIR= ${_3dfx} \ ${_pst} \ puc \ ral \ + ralfw \ ${_random} \ rc4 \ ${_rdma} \ From sam at FreeBSD.org Fri May 1 17:16:34 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 17:16:41 2009 Subject: svn commit: r191723 - head/sys/conf Message-ID: <200905011716.n41HGXNj048579@svn.freebsd.org> Author: sam Date: Fri May 1 17:16:33 2009 New Revision: 191723 URL: http://svn.freebsd.org/changeset/base/191723 Log: add uath Modified: head/sys/conf/files Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Fri May 1 17:15:29 2009 (r191722) +++ head/sys/conf/files Fri May 1 17:16:33 2009 (r191723) @@ -1604,6 +1604,7 @@ dev/usb/net/usb_ethernet.c \ # USB WLAN drivers # dev/usb/wlan/if_rum.c optional rum +dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_ural.c optional ural dev/usb/wlan/if_zyd.c optional zyd # From sam at FreeBSD.org Fri May 1 17:17:07 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 17:17:13 2009 Subject: svn commit: r191724 - head/sys/conf Message-ID: <200905011717.n41HH6qG048628@svn.freebsd.org> Author: sam Date: Fri May 1 17:17:06 2009 New Revision: 191724 URL: http://svn.freebsd.org/changeset/base/191724 Log: add uath; sort usb wireless drivers Modified: head/sys/conf/NOTES Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Fri May 1 17:16:33 2009 (r191723) +++ head/sys/conf/NOTES Fri May 1 17:17:06 2009 (r191724) @@ -2474,14 +2474,17 @@ device rue device udav # -# ZyDas ZD1211/ZD1211B wireless ethernet driver -device zyd +# Ralink Technology RT2501USB/RT2601USB wireless driver +device rum +# +# Atheros AR5523 wireless driver +device uath # -# Ralink Technology RT2500USB chispet driver +# Ralink Technology RT2500USB wireless driver device ural # -# Ralink Technology RT2501USB/RT2601USB chispet driver -device rum +# ZyDas ZD1211/ZD1211B wireless driver +device zyd # # debugging options for the USB subsystem From sam at FreeBSD.org Fri May 1 17:18:46 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 17:18:52 2009 Subject: svn commit: r191725 - head/sys/conf Message-ID: <200905011718.n41HIkRI048692@svn.freebsd.org> Author: sam Date: Fri May 1 17:18:45 2009 New Revision: 191725 URL: http://svn.freebsd.org/changeset/base/191725 Log: add more tdma fixed rate defaults Modified: head/sys/conf/options Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Fri May 1 17:17:06 2009 (r191724) +++ head/sys/conf/options Fri May 1 17:18:45 2009 (r191725) @@ -800,6 +800,11 @@ TDMA_BINTVAL_DEFAULT opt_tdma.h TDMA_TXRATE_11B_DEFAULT opt_tdma.h TDMA_TXRATE_11G_DEFAULT opt_tdma.h TDMA_TXRATE_11A_DEFAULT opt_tdma.h +TDMA_TXRATE_TURBO_DEFAULT opt_tdma.h +TDMA_TXRATE_HALF_DEFAULT opt_tdma.h +TDMA_TXRATE_QUARTER_DEFAULT opt_tdma.h +TDMA_TXRATE_11NA_DEFAULT opt_tdma.h +TDMA_TXRATE_11NG_DEFAULT opt_tdma.h # Virtualize the network stack VIMAGE opt_global.h From sam at FreeBSD.org Fri May 1 17:20:17 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 17:20:29 2009 Subject: svn commit: r191726 - in head/sys: amd64/conf i386/conf pc98/conf Message-ID: <200905011720.n41HKG0p048780@svn.freebsd.org> Author: sam Date: Fri May 1 17:20:16 2009 New Revision: 191726 URL: http://svn.freebsd.org/changeset/base/191726 Log: o add uath o sort usb wireless drivers Modified: head/sys/amd64/conf/GENERIC head/sys/i386/conf/GENERIC head/sys/pc98/conf/GENERIC Modified: head/sys/amd64/conf/GENERIC ============================================================================== --- head/sys/amd64/conf/GENERIC Fri May 1 17:18:45 2009 (r191725) +++ head/sys/amd64/conf/GENERIC Fri May 1 17:20:16 2009 (r191726) @@ -292,8 +292,10 @@ device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse -device ural # Ralink Technology RT2500USB wireless NICs device rum # Ralink Technology RT2501USB wireless NICs +device uath # Atheros AR5523 wireless NICs +device ural # Ralink Technology RT2500USB wireless NICs +device zyd # ZyDAS zb1211/zb1211b wireless NICs device urio # Diamond Rio 500 MP3 player # USB Serial devices device uark # Technologies ARK3116 based serial adapters Modified: head/sys/i386/conf/GENERIC ============================================================================== --- head/sys/i386/conf/GENERIC Fri May 1 17:18:45 2009 (r191725) +++ head/sys/i386/conf/GENERIC Fri May 1 17:20:16 2009 (r191726) @@ -305,8 +305,9 @@ device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse -device ural # Ralink Technology RT2500USB wireless NICs device rum # Ralink Technology RT2501USB wireless NICs +device ural # Ralink Technology RT2500USB wireless NICs +device uath # Atheros AR5523 wireless NICs device zyd # ZyDAS zb1211/zb1211b wireless NICs device urio # Diamond Rio 500 MP3 player # USB Serial devices Modified: head/sys/pc98/conf/GENERIC ============================================================================== --- head/sys/pc98/conf/GENERIC Fri May 1 17:18:45 2009 (r191725) +++ head/sys/pc98/conf/GENERIC Fri May 1 17:20:16 2009 (r191726) @@ -261,8 +261,9 @@ device bpf # Berkeley packet filter #device ulpt # Printer #device umass # Disks/Mass storage - Requires scbus and da #device ums # Mouse -#device ural # Ralink Technology RT2500USB wireless NICs #device rum # Ralink Technology RT2501USB wireless NICs +#device uath # Atheros AR5523 wireless NICs +#device ural # Ralink Technology RT2500USB wireless NICs #device zyd # ZyDAS zb1211/zb1211b wireless NICs #device urio # Diamond Rio 500 MP3 player # USB Serial devices From thompsa at FreeBSD.org Fri May 1 19:46:43 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Fri May 1 19:46:50 2009 Subject: svn commit: r191729 - head/sys/net Message-ID: <200905011946.n41Jkhpu051686@svn.freebsd.org> Author: thompsa Date: Fri May 1 19:46:42 2009 New Revision: 191729 URL: http://svn.freebsd.org/changeset/base/191729 Log: Reorder the bridge add and delete routines to avoid calling ifpromisc() with the bridge lock held. Modified: head/sys/net/if_bridge.c Modified: head/sys/net/if_bridge.c ============================================================================== --- head/sys/net/if_bridge.c Fri May 1 19:05:07 2009 (r191728) +++ head/sys/net/if_bridge.c Fri May 1 19:46:42 2009 (r191729) @@ -893,29 +893,6 @@ bridge_delete_member(struct bridge_softc BRIDGE_LOCK_ASSERT(sc); - if (!gone) { - switch (ifs->if_type) { - case IFT_ETHER: - case IFT_L2VLAN: - /* - * Take the interface out of promiscuous mode. - */ - (void) ifpromisc(ifs, 0); - break; - - case IFT_GIF: - break; - - default: -#ifdef DIAGNOSTIC - panic("bridge_delete_member: impossible"); -#endif - break; - } - /* reneable any interface capabilities */ - bridge_set_ifcap(sc, bif, bif->bif_savedcaps); - } - if (bif->bif_flags & IFBIF_STP) bstp_disable(&bif->bif_stp); @@ -948,6 +925,28 @@ bridge_delete_member(struct bridge_softc ("%s: %d bridge routes referenced", __func__, bif->bif_addrcnt)); BRIDGE_UNLOCK(sc); + if (!gone) { + switch (ifs->if_type) { + case IFT_ETHER: + case IFT_L2VLAN: + /* + * Take the interface out of promiscuous mode. + */ + (void) ifpromisc(ifs, 0); + break; + + case IFT_GIF: + break; + + default: +#ifdef DIAGNOSTIC + panic("bridge_delete_member: impossible"); +#endif + break; + } + /* reneable any interface capabilities */ + bridge_set_ifcap(sc, bif, bif->bif_savedcaps); + } bstp_destroy(&bif->bif_stp); /* prepare to free */ BRIDGE_LOCK(sc); free(bif, M_DEVBUF); @@ -1017,17 +1016,9 @@ bridge_ioctl_add(struct bridge_softc *sc switch (ifs->if_type) { case IFT_ETHER: case IFT_L2VLAN: - /* - * Place the interface into promiscuous mode. - */ - error = ifpromisc(ifs, 1); - if (error) - goto out; - break; - case IFT_GIF: + /* permitted interface types */ break; - default: error = EINVAL; goto out; @@ -1055,6 +1046,20 @@ bridge_ioctl_add(struct bridge_softc *sc /* Set interface capabilities to the intersection set of all members */ bridge_mutecaps(sc); + + switch (ifs->if_type) { + case IFT_ETHER: + case IFT_L2VLAN: + /* + * Place the interface into promiscuous mode. + */ + BRIDGE_UNLOCK(sc); + error = ifpromisc(ifs, 1); + BRIDGE_LOCK(sc); + break; + } + if (error) + bridge_delete_member(sc, bif, 0); out: if (error) { if (bif != NULL) From mav at FreeBSD.org Fri May 1 20:53:39 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Fri May 1 20:53:57 2009 Subject: svn commit: r191730 - in head/sys: amd64/amd64 i386/i386 Message-ID: <200905012053.n41KrcdL052976@svn.freebsd.org> Author: mav Date: Fri May 1 20:53:37 2009 New Revision: 191730 URL: http://svn.freebsd.org/changeset/base/191730 Log: Small addition to r191720. Restore previous behaviour for the case of unknown interrupt. Invocation of IRQ -1 crashes my system on resume. Returning 0, as it was, is not perfect also, but at least not so dangerous. Modified: head/sys/amd64/amd64/local_apic.c head/sys/i386/i386/local_apic.c Modified: head/sys/amd64/amd64/local_apic.c ============================================================================== --- head/sys/amd64/amd64/local_apic.c Fri May 1 19:46:42 2009 (r191729) +++ head/sys/amd64/amd64/local_apic.c Fri May 1 20:53:37 2009 (r191730) @@ -950,11 +950,15 @@ apic_free_vector(u_int apic_id, u_int ve u_int apic_idt_to_irq(u_int apic_id, u_int vector) { + int irq; KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); - return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]); + irq = lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]; + if (irq < 0) + irq = 0; + return (irq); } #ifdef DDB Modified: head/sys/i386/i386/local_apic.c ============================================================================== --- head/sys/i386/i386/local_apic.c Fri May 1 19:46:42 2009 (r191729) +++ head/sys/i386/i386/local_apic.c Fri May 1 20:53:37 2009 (r191730) @@ -954,11 +954,15 @@ apic_free_vector(u_int apic_id, u_int ve u_int apic_idt_to_irq(u_int apic_id, u_int vector) { + int irq; KASSERT(vector >= APIC_IO_INTS && vector != IDT_SYSCALL && vector <= APIC_IO_INTS + APIC_NUM_IOINTS, ("Vector %u does not map to an IRQ line", vector)); - return (lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]); + irq = lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]; + if (irq < 0) + irq = 0; + return (irq); } #ifdef DDB From rwatson at FreeBSD.org Fri May 1 21:05:42 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Fri May 1 21:05:55 2009 Subject: svn commit: r191731 - head/sys/security/mac Message-ID: <200905012105.n41L5eAP053273@svn.freebsd.org> Author: rwatson Date: Fri May 1 21:05:40 2009 New Revision: 191731 URL: http://svn.freebsd.org/changeset/base/191731 Log: Rename MAC Framework-internal macros used to invoke policy entry points: MAC_BOOLEAN -> MAC_POLICY_BOOLEAN MAC_BOOLEAN_NOSLEEP -> MAC_POLICY_BOOLEANN_NOSLEEP MAC_CHECK -> MAC_POLICY_CHECK MAC_CHECK_NOSLEEP -> MAC_POLICY_CHECK_NOSLEEP MAC_EXTERNALIZE -> MAC_POLICY_EXTERNALIZE MAC_GRANT -> MAC_POLICY_GRANT MAC_GRANT_NOSLEEP -> MAC_POLICY_GRANT_NOSLEEP MAC_INTERNALIZE -> MAC_POLICY_INTERNALIZE MAC_PERFORM -> MAC_POLICY_PERFORM_CHECK MAC_PERFORM_NOSLEEP -> MAC_POLICY_PERFORM_NOSLEEP This frees up those macro names for use in wrapping calls into the MAC Framework from the remainder of the kernel. Obtained from: TrustedBSD Project Modified: head/sys/security/mac/mac_atalk.c head/sys/security/mac/mac_audit.c head/sys/security/mac/mac_cred.c head/sys/security/mac/mac_inet.c head/sys/security/mac/mac_inet6.c head/sys/security/mac/mac_internal.h head/sys/security/mac/mac_net.c head/sys/security/mac/mac_pipe.c head/sys/security/mac/mac_posix_sem.c head/sys/security/mac/mac_posix_shm.c head/sys/security/mac/mac_priv.c head/sys/security/mac/mac_process.c head/sys/security/mac/mac_socket.c head/sys/security/mac/mac_system.c head/sys/security/mac/mac_sysv_msg.c head/sys/security/mac/mac_sysv_sem.c head/sys/security/mac/mac_sysv_shm.c head/sys/security/mac/mac_vfs.c Modified: head/sys/security/mac/mac_atalk.c ============================================================================== --- head/sys/security/mac/mac_atalk.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_atalk.c Fri May 1 21:05:40 2009 (r191731) @@ -64,7 +64,7 @@ mac_netatalk_aarp_send(struct ifnet *ifp mlabel = mac_mbuf_to_label(m); MAC_IFNET_LOCK(ifp); - MAC_PERFORM_NOSLEEP(netatalk_aarp_send, ifp, ifp->if_label, m, + MAC_POLICY_PERFORM_NOSLEEP(netatalk_aarp_send, ifp, ifp->if_label, m, mlabel); MAC_IFNET_UNLOCK(ifp); } Modified: head/sys/security/mac/mac_audit.c ============================================================================== --- head/sys/security/mac/mac_audit.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_audit.c Fri May 1 21:05:40 2009 (r191731) @@ -66,7 +66,7 @@ mac_cred_check_setaudit(struct ucred *cr { int error; - MAC_CHECK_NOSLEEP(cred_check_setaudit, cred, ai); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setaudit, cred, ai); MAC_CHECK_PROBE2(cred_check_setaudit, error, cred, ai); return (error); @@ -80,7 +80,7 @@ mac_cred_check_setaudit_addr(struct ucre { int error; - MAC_CHECK_NOSLEEP(cred_check_setaudit_addr, cred, aia); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setaudit_addr, cred, aia); MAC_CHECK_PROBE2(cred_check_setaudit_addr, error, cred, aia); return (error); @@ -93,7 +93,7 @@ mac_cred_check_setauid(struct ucred *cre { int error; - MAC_CHECK_NOSLEEP(cred_check_setauid, cred, auid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setauid, cred, auid); MAC_CHECK_PROBE2(cred_check_setauid, error, cred, auid); return (error); @@ -107,7 +107,7 @@ mac_system_check_audit(struct ucred *cre { int error; - MAC_CHECK_NOSLEEP(system_check_audit, cred, record, length); + MAC_POLICY_CHECK_NOSLEEP(system_check_audit, cred, record, length); MAC_CHECK_PROBE3(system_check_audit, error, cred, record, length); return (error); @@ -125,7 +125,7 @@ mac_system_check_auditctl(struct ucred * ASSERT_VOP_LOCKED(vp, "mac_system_check_auditctl"); vl = (vp != NULL) ? vp->v_label : NULL; - MAC_CHECK(system_check_auditctl, cred, vp, vl); + MAC_POLICY_CHECK(system_check_auditctl, cred, vp, vl); MAC_CHECK_PROBE2(system_check_auditctl, error, cred, vp); return (error); @@ -138,7 +138,7 @@ mac_system_check_auditon(struct ucred *c { int error; - MAC_CHECK_NOSLEEP(system_check_auditon, cred, cmd); + MAC_POLICY_CHECK_NOSLEEP(system_check_auditon, cred, cmd); MAC_CHECK_PROBE2(system_check_auditon, error, cred, cmd); return (error); Modified: head/sys/security/mac/mac_cred.c ============================================================================== --- head/sys/security/mac/mac_cred.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_cred.c Fri May 1 21:05:40 2009 (r191731) @@ -82,7 +82,7 @@ mac_cred_label_alloc(void) struct label *label; label = mac_labelzone_alloc(M_WAITOK); - MAC_PERFORM(cred_init_label, label); + MAC_POLICY_PERFORM(cred_init_label, label); return (label); } @@ -100,7 +100,7 @@ void mac_cred_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(cred_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(cred_destroy_label, label); mac_labelzone_free(label); } @@ -127,7 +127,7 @@ void mac_cred_associate_nfsd(struct ucred *cred) { - MAC_PERFORM_NOSLEEP(cred_associate_nfsd, cred); + MAC_POLICY_PERFORM_NOSLEEP(cred_associate_nfsd, cred); } /* @@ -138,7 +138,7 @@ void mac_cred_create_swapper(struct ucred *cred) { - MAC_PERFORM_NOSLEEP(cred_create_swapper, cred); + MAC_POLICY_PERFORM_NOSLEEP(cred_create_swapper, cred); } /* @@ -149,7 +149,7 @@ void mac_cred_create_init(struct ucred *cred) { - MAC_PERFORM_NOSLEEP(cred_create_init, cred); + MAC_POLICY_PERFORM_NOSLEEP(cred_create_init, cred); } int @@ -158,7 +158,7 @@ mac_cred_externalize_label(struct label { int error; - MAC_EXTERNALIZE(cred, label, elements, outbuf, outbuflen); + MAC_POLICY_EXTERNALIZE(cred, label, elements, outbuf, outbuflen); return (error); } @@ -168,7 +168,7 @@ mac_cred_internalize_label(struct label { int error; - MAC_INTERNALIZE(cred, label, string); + MAC_POLICY_INTERNALIZE(cred, label, string); return (error); } @@ -182,7 +182,8 @@ void mac_cred_copy(struct ucred *src, struct ucred *dest) { - MAC_PERFORM_NOSLEEP(cred_copy_label, src->cr_label, dest->cr_label); + MAC_POLICY_PERFORM_NOSLEEP(cred_copy_label, src->cr_label, + dest->cr_label); } /* @@ -194,7 +195,7 @@ void mac_cred_relabel(struct ucred *cred, struct label *newlabel) { - MAC_PERFORM_NOSLEEP(cred_relabel, cred, newlabel); + MAC_POLICY_PERFORM_NOSLEEP(cred_relabel, cred, newlabel); } MAC_CHECK_PROBE_DEFINE2(cred_check_relabel, "struct ucred *", @@ -205,7 +206,7 @@ mac_cred_check_relabel(struct ucred *cre { int error; - MAC_CHECK_NOSLEEP(cred_check_relabel, cred, newlabel); + MAC_POLICY_CHECK_NOSLEEP(cred_check_relabel, cred, newlabel); MAC_CHECK_PROBE2(cred_check_relabel, error, cred, newlabel); return (error); @@ -218,7 +219,7 @@ mac_cred_check_setuid(struct ucred *cred { int error; - MAC_CHECK_NOSLEEP(cred_check_setuid, cred, uid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setuid, cred, uid); MAC_CHECK_PROBE2(cred_check_setuid, error, cred, uid); return (error); @@ -231,7 +232,7 @@ mac_cred_check_seteuid(struct ucred *cre { int error; - MAC_CHECK_NOSLEEP(cred_check_seteuid, cred, euid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_seteuid, cred, euid); MAC_CHECK_PROBE2(cred_check_seteuid, error, cred, euid); return (error); @@ -244,7 +245,7 @@ mac_cred_check_setgid(struct ucred *cred { int error; - MAC_CHECK_NOSLEEP(cred_check_setgid, cred, gid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setgid, cred, gid); MAC_CHECK_PROBE2(cred_check_setgid, error, cred, gid); return (error); @@ -257,7 +258,7 @@ mac_cred_check_setegid(struct ucred *cre { int error; - MAC_CHECK_NOSLEEP(cred_check_setegid, cred, egid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setegid, cred, egid); MAC_CHECK_PROBE2(cred_check_setegid, error, cred, egid); return (error); @@ -271,7 +272,7 @@ mac_cred_check_setgroups(struct ucred *c { int error; - MAC_CHECK_NOSLEEP(cred_check_setgroups, cred, ngroups, gidset); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setgroups, cred, ngroups, gidset); MAC_CHECK_PROBE3(cred_check_setgroups, error, cred, ngroups, gidset); return (error); @@ -285,7 +286,7 @@ mac_cred_check_setreuid(struct ucred *cr { int error; - MAC_CHECK_NOSLEEP(cred_check_setreuid, cred, ruid, euid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setreuid, cred, ruid, euid); MAC_CHECK_PROBE3(cred_check_setreuid, error, cred, ruid, euid); return (error); @@ -299,7 +300,7 @@ mac_cred_check_setregid(struct ucred *cr { int error; - MAC_CHECK_NOSLEEP(cred_check_setregid, cred, rgid, egid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setregid, cred, rgid, egid); MAC_CHECK_PROBE3(cred_check_setregid, error, cred, rgid, egid); return (error); @@ -314,7 +315,7 @@ mac_cred_check_setresuid(struct ucred *c { int error; - MAC_CHECK_NOSLEEP(cred_check_setresuid, cred, ruid, euid, suid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setresuid, cred, ruid, euid, suid); MAC_CHECK_PROBE4(cred_check_setresuid, error, cred, ruid, euid, suid); @@ -330,7 +331,7 @@ mac_cred_check_setresgid(struct ucred *c { int error; - MAC_CHECK_NOSLEEP(cred_check_setresgid, cred, rgid, egid, sgid); + MAC_POLICY_CHECK_NOSLEEP(cred_check_setresgid, cred, rgid, egid, sgid); MAC_CHECK_PROBE4(cred_check_setresgid, error, cred, rgid, egid, sgid); @@ -345,7 +346,7 @@ mac_cred_check_visible(struct ucred *cr1 { int error; - MAC_CHECK_NOSLEEP(cred_check_visible, cr1, cr2); + MAC_POLICY_CHECK_NOSLEEP(cred_check_visible, cr1, cr2); MAC_CHECK_PROBE2(cred_check_visible, error, cr1, cr2); return (error); Modified: head/sys/security/mac/mac_inet.c ============================================================================== --- head/sys/security/mac/mac_inet.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_inet.c Fri May 1 21:05:40 2009 (r191731) @@ -85,11 +85,11 @@ mac_inpcb_label_alloc(int flag) if (label == NULL) return (NULL); if (flag & M_WAITOK) - MAC_CHECK(inpcb_init_label, label, flag); + MAC_POLICY_CHECK(inpcb_init_label, label, flag); else - MAC_CHECK_NOSLEEP(inpcb_init_label, label, flag); + MAC_POLICY_CHECK_NOSLEEP(inpcb_init_label, label, flag); if (error) { - MAC_PERFORM_NOSLEEP(inpcb_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(inpcb_destroy_label, label); mac_labelzone_free(label); return (NULL); } @@ -120,11 +120,11 @@ mac_ipq_label_alloc(int flag) return (NULL); if (flag & M_WAITOK) - MAC_CHECK(ipq_init_label, label, flag); + MAC_POLICY_CHECK(ipq_init_label, label, flag); else - MAC_CHECK_NOSLEEP(ipq_init_label, label, flag); + MAC_POLICY_CHECK_NOSLEEP(ipq_init_label, label, flag); if (error) { - MAC_PERFORM_NOSLEEP(ipq_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(ipq_destroy_label, label); mac_labelzone_free(label); return (NULL); } @@ -148,7 +148,7 @@ static void mac_inpcb_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(inpcb_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(inpcb_destroy_label, label); mac_labelzone_free(label); } @@ -166,7 +166,7 @@ static void mac_ipq_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(ipq_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(ipq_destroy_label, label); mac_labelzone_free(label); } @@ -184,7 +184,7 @@ void mac_inpcb_create(struct socket *so, struct inpcb *inp) { - MAC_PERFORM_NOSLEEP(inpcb_create, so, so->so_label, inp, + MAC_POLICY_PERFORM_NOSLEEP(inpcb_create, so, so->so_label, inp, inp->inp_label); } @@ -195,7 +195,8 @@ mac_ipq_reassemble(struct ipq *q, struct label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ipq_reassemble, q, q->ipq_label, m, label); + MAC_POLICY_PERFORM_NOSLEEP(ipq_reassemble, q, q->ipq_label, m, + label); } void @@ -206,7 +207,8 @@ mac_netinet_fragment(struct mbuf *m, str mlabel = mac_mbuf_to_label(m); fraglabel = mac_mbuf_to_label(frag); - MAC_PERFORM_NOSLEEP(netinet_fragment, m, mlabel, frag, fraglabel); + MAC_POLICY_PERFORM_NOSLEEP(netinet_fragment, m, mlabel, frag, + fraglabel); } void @@ -216,7 +218,7 @@ mac_ipq_create(struct mbuf *m, struct ip label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ipq_create, m, label, q, q->ipq_label); + MAC_POLICY_PERFORM_NOSLEEP(ipq_create, m, label, q, q->ipq_label); } void @@ -227,7 +229,7 @@ mac_inpcb_create_mbuf(struct inpcb *inp, INP_LOCK_ASSERT(inp); mlabel = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(inpcb_create_mbuf, inp, inp->inp_label, m, + MAC_POLICY_PERFORM_NOSLEEP(inpcb_create_mbuf, inp, inp->inp_label, m, mlabel); } @@ -240,7 +242,7 @@ mac_ipq_match(struct mbuf *m, struct ipq label = mac_mbuf_to_label(m); result = 1; - MAC_BOOLEAN_NOSLEEP(ipq_match, &&, m, label, q, q->ipq_label); + MAC_POLICY_BOOLEAN_NOSLEEP(ipq_match, &&, m, label, q, q->ipq_label); return (result); } @@ -253,7 +255,8 @@ mac_netinet_arp_send(struct ifnet *ifp, mlabel = mac_mbuf_to_label(m); MAC_IFNET_LOCK(ifp); - MAC_PERFORM_NOSLEEP(netinet_arp_send, ifp, ifp->if_label, m, mlabel); + MAC_POLICY_PERFORM_NOSLEEP(netinet_arp_send, ifp, ifp->if_label, m, + mlabel); MAC_IFNET_UNLOCK(ifp); } @@ -265,8 +268,8 @@ mac_netinet_icmp_reply(struct mbuf *mrec mrecvlabel = mac_mbuf_to_label(mrecv); msendlabel = mac_mbuf_to_label(msend); - MAC_PERFORM_NOSLEEP(netinet_icmp_reply, mrecv, mrecvlabel, msend, - msendlabel); + MAC_POLICY_PERFORM_NOSLEEP(netinet_icmp_reply, mrecv, mrecvlabel, + msend, msendlabel); } void @@ -276,7 +279,7 @@ mac_netinet_icmp_replyinplace(struct mbu label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(netinet_icmp_replyinplace, m, label); + MAC_POLICY_PERFORM_NOSLEEP(netinet_icmp_replyinplace, m, label); } void @@ -287,7 +290,7 @@ mac_netinet_igmp_send(struct ifnet *ifp, mlabel = mac_mbuf_to_label(m); MAC_IFNET_LOCK(ifp); - MAC_PERFORM_NOSLEEP(netinet_igmp_send, ifp, ifp->if_label, m, + MAC_POLICY_PERFORM_NOSLEEP(netinet_igmp_send, ifp, ifp->if_label, m, mlabel); MAC_IFNET_UNLOCK(ifp); } @@ -299,7 +302,7 @@ mac_netinet_tcp_reply(struct mbuf *m) label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(netinet_tcp_reply, m, label); + MAC_POLICY_PERFORM_NOSLEEP(netinet_tcp_reply, m, label); } void @@ -309,7 +312,7 @@ mac_ipq_update(struct mbuf *m, struct ip label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ipq_update, m, label, q, q->ipq_label); + MAC_POLICY_PERFORM_NOSLEEP(ipq_update, m, label, q, q->ipq_label); } MAC_CHECK_PROBE_DEFINE2(inpcb_check_deliver, "struct inpcb *", @@ -325,7 +328,7 @@ mac_inpcb_check_deliver(struct inpcb *in label = mac_mbuf_to_label(m); - MAC_CHECK_NOSLEEP(inpcb_check_deliver, inp, inp->inp_label, m, + MAC_POLICY_CHECK_NOSLEEP(inpcb_check_deliver, inp, inp->inp_label, m, label); MAC_CHECK_PROBE2(inpcb_check_deliver, error, inp, m); @@ -342,7 +345,8 @@ mac_inpcb_check_visible(struct ucred *cr INP_LOCK_ASSERT(inp); - MAC_CHECK_NOSLEEP(inpcb_check_visible, cred, inp, inp->inp_label); + MAC_POLICY_CHECK_NOSLEEP(inpcb_check_visible, cred, inp, + inp->inp_label); MAC_CHECK_PROBE2(inpcb_check_visible, error, cred, inp); return (error); @@ -355,7 +359,7 @@ mac_inpcb_sosetlabel(struct socket *so, INP_WLOCK_ASSERT(inp); SOCK_LOCK_ASSERT(so); - MAC_PERFORM_NOSLEEP(inpcb_sosetlabel, so, so->so_label, inp, + MAC_POLICY_PERFORM_NOSLEEP(inpcb_sosetlabel, so, so->so_label, inp, inp->inp_label); } @@ -370,8 +374,8 @@ mac_netinet_firewall_reply(struct mbuf * mrecvlabel = mac_mbuf_to_label(mrecv); msendlabel = mac_mbuf_to_label(msend); - MAC_PERFORM_NOSLEEP(netinet_firewall_reply, mrecv, mrecvlabel, msend, - msendlabel); + MAC_POLICY_PERFORM_NOSLEEP(netinet_firewall_reply, mrecv, mrecvlabel, + msend, msendlabel); } void @@ -383,7 +387,7 @@ mac_netinet_firewall_send(struct mbuf *m label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(netinet_firewall_send, m, label); + MAC_POLICY_PERFORM_NOSLEEP(netinet_firewall_send, m, label); } /* @@ -400,7 +404,7 @@ mac_syncache_destroy(struct label **labe { if (*label != NULL) { - MAC_PERFORM_NOSLEEP(syncache_destroy_label, *label); + MAC_POLICY_PERFORM_NOSLEEP(syncache_destroy_label, *label); mac_labelzone_free(*label); *label = NULL; } @@ -422,9 +426,11 @@ mac_syncache_init(struct label **label) * MAC_PERFORM so we can propagate allocation failures back * to the syncache code. */ - MAC_CHECK_NOSLEEP(syncache_init_label, *label, M_NOWAIT); + MAC_POLICY_CHECK_NOSLEEP(syncache_init_label, *label, + M_NOWAIT); if (error) { - MAC_PERFORM_NOSLEEP(syncache_destroy_label, *label); + MAC_POLICY_PERFORM_NOSLEEP(syncache_destroy_label, + *label); mac_labelzone_free(*label); } return (error); @@ -439,7 +445,7 @@ mac_syncache_create(struct label *label, INP_WLOCK_ASSERT(inp); - MAC_PERFORM_NOSLEEP(syncache_create, label, inp); + MAC_POLICY_PERFORM_NOSLEEP(syncache_create, label, inp); } void @@ -451,5 +457,6 @@ mac_syncache_create_mbuf(struct label *s mlabel = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(syncache_create_mbuf, sc_label, m, mlabel); + MAC_POLICY_PERFORM_NOSLEEP(syncache_create_mbuf, sc_label, m, + mlabel); } Modified: head/sys/security/mac/mac_inet6.c ============================================================================== --- head/sys/security/mac/mac_inet6.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_inet6.c Fri May 1 21:05:40 2009 (r191731) @@ -71,11 +71,11 @@ mac_ip6q_label_alloc(int flag) return (NULL); if (flag & M_WAITOK) - MAC_CHECK(ip6q_init_label, label, flag); + MAC_POLICY_CHECK(ip6q_init_label, label, flag); else - MAC_CHECK_NOSLEEP(ip6q_init_label, label, flag); + MAC_POLICY_CHECK_NOSLEEP(ip6q_init_label, label, flag); if (error) { - MAC_PERFORM_NOSLEEP(ip6q_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(ip6q_destroy_label, label); mac_labelzone_free(label); return (NULL); } @@ -99,7 +99,7 @@ static void mac_ip6q_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(ip6q_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(ip6q_destroy_label, label); mac_labelzone_free(label); } @@ -120,7 +120,8 @@ mac_ip6q_reassemble(struct ip6q *q6, str label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ip6q_reassemble, q6, q6->ip6q_label, m, label); + MAC_POLICY_PERFORM_NOSLEEP(ip6q_reassemble, q6, q6->ip6q_label, m, + label); } void @@ -130,7 +131,8 @@ mac_ip6q_create(struct mbuf *m, struct i label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ip6q_create, m, label, q6, q6->ip6q_label); + MAC_POLICY_PERFORM_NOSLEEP(ip6q_create, m, label, q6, + q6->ip6q_label); } int @@ -142,7 +144,8 @@ mac_ip6q_match(struct mbuf *m, struct ip label = mac_mbuf_to_label(m); result = 1; - MAC_BOOLEAN_NOSLEEP(ip6q_match, &&, m, label, q6, q6->ip6q_label); + MAC_POLICY_BOOLEAN_NOSLEEP(ip6q_match, &&, m, label, q6, + q6->ip6q_label); return (result); } @@ -154,7 +157,8 @@ mac_ip6q_update(struct mbuf *m, struct i label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(ip6q_update, m, label, q6, q6->ip6q_label); + MAC_POLICY_PERFORM_NOSLEEP(ip6q_update, m, label, q6, + q6->ip6q_label); } void @@ -164,6 +168,6 @@ mac_netinet6_nd6_send(struct ifnet *ifp, mlabel = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(netinet6_nd6_send, ifp, ifp->if_label, m, + MAC_POLICY_PERFORM_NOSLEEP(netinet6_nd6_send, ifp, ifp->if_label, m, mlabel); } Modified: head/sys/security/mac/mac_internal.h ============================================================================== --- head/sys/security/mac/mac_internal.h Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_internal.h Fri May 1 21:05:40 2009 (r191731) @@ -257,11 +257,11 @@ int vn_setlabel(struct vnode *vp, struct * specific entry point. They come in two forms: one which permits policies * to sleep/block, and another that does not. * - * MAC_CHECK performs the designated check by walking the policy module list - * and checking with each as to how it feels about the request. Note that it - * returns its value via 'error' in the scope of the caller. + * MAC_POLICY_CHECK performs the designated check by walking the policy + * module list and checking with each as to how it feels about the request. + * Note that it returns its value via 'error' in the scope of the caller. */ -#define MAC_CHECK(check, args...) do { \ +#define MAC_POLICY_CHECK(check, args...) do { \ struct mac_policy_conf *mpc; \ \ error = 0; \ @@ -283,7 +283,7 @@ int vn_setlabel(struct vnode *vp, struct } \ } while (0) -#define MAC_CHECK_NOSLEEP(check, args...) do { \ +#define MAC_POLICY_CHECK_NOSLEEP(check, args...) do { \ struct mac_policy_conf *mpc; \ \ error = 0; \ @@ -306,13 +306,13 @@ int vn_setlabel(struct vnode *vp, struct } while (0) /* - * MAC_GRANT performs the designated check by walking the policy module list - * and checking with each as to how it feels about the request. Unlike - * MAC_CHECK, it grants if any policies return '0', and otherwise returns - * EPERM. Note that it returns its value via 'error' in the scope of the - * caller. + * MAC_POLICY_GRANT performs the designated check by walking the policy + * module list and checking with each as to how it feels about the request. + * Unlike MAC_POLICY_CHECK, it grants if any policies return '0', and + * otherwise returns EPERM. Note that it returns its value via 'error' in + * the scope of the caller. */ -#define MAC_GRANT_NOSLEEP(check, args...) do { \ +#define MAC_POLICY_GRANT_NOSLEEP(check, args...) do { \ struct mac_policy_conf *mpc; \ \ error = EPERM; \ @@ -336,13 +336,13 @@ int vn_setlabel(struct vnode *vp, struct } while (0) /* - * MAC_BOOLEAN performs the designated boolean composition by walking the - * module list, invoking each instance of the operation, and combining the - * results using the passed C operator. Note that it returns its value via - * 'result' in the scope of the caller, which should be initialized by the - * caller in a meaningful way to get a meaningful result. + * MAC_POLICY_BOOLEAN performs the designated boolean composition by walking + * the module list, invoking each instance of the operation, and combining + * the results using the passed C operator. Note that it returns its value + * via 'result' in the scope of the caller, which should be initialized by + * the caller in a meaningful way to get a meaningful result. */ -#define MAC_BOOLEAN(operation, composition, args...) do { \ +#define MAC_POLICY_BOOLEAN(operation, composition, args...) do { \ struct mac_policy_conf *mpc; \ \ LIST_FOREACH(mpc, &mac_static_policy_list, mpc_list) { \ @@ -362,7 +362,7 @@ int vn_setlabel(struct vnode *vp, struct } \ } while (0) -#define MAC_BOOLEAN_NOSLEEP(operation, composition, args...) do { \ +#define MAC_POLICY_BOOLEAN_NOSLEEP(operation, composition, args...) do {\ struct mac_policy_conf *mpc; \ \ LIST_FOREACH(mpc, &mac_static_policy_list, mpc_list) { \ @@ -383,13 +383,13 @@ int vn_setlabel(struct vnode *vp, struct } while (0) /* - * MAC_EXTERNALIZE queries each policy to see if it can generate an + * MAC_POLICY_EXTERNALIZE queries each policy to see if it can generate an * externalized version of a label element by name. Policies declare whether * they have matched a particular element name, parsed from the string by - * MAC_EXTERNALIZE, and an error is returned if any element is matched by no - * policy. + * MAC_POLICY_EXTERNALIZE, and an error is returned if any element is matched + * by no policy. */ -#define MAC_EXTERNALIZE(type, label, elementlist, outbuf, \ +#define MAC_POLICY_EXTERNALIZE(type, label, elementlist, outbuf, \ outbuflen) do { \ int claimed, first, ignorenotfound, savedlen; \ char *element_name, *element_temp; \ @@ -415,7 +415,7 @@ int vn_setlabel(struct vnode *vp, struct break; \ } \ claimed = 0; \ - MAC_CHECK(type ## _externalize_label, label, \ + MAC_POLICY_CHECK(type ## _externalize_label, label, \ element_name, &sb, &claimed); \ if (error) \ break; \ @@ -433,11 +433,11 @@ int vn_setlabel(struct vnode *vp, struct } while (0) /* - * MAC_INTERNALIZE presents parsed element names and data to each policy to - * see if any is willing to claim it and internalize the label data. If no - * policies match, an error is returned. + * MAC_POLICY_INTERNALIZE presents parsed element names and data to each + * policy to see if any is willing to claim it and internalize the label + * data. If no policies match, an error is returned. */ -#define MAC_INTERNALIZE(type, label, instring) do { \ +#define MAC_POLICY_INTERNALIZE(type, label, instring) do { \ char *element, *element_name, *element_data; \ int claimed; \ \ @@ -451,7 +451,7 @@ int vn_setlabel(struct vnode *vp, struct break; \ } \ claimed = 0; \ - MAC_CHECK(type ## _internalize_label, label, \ + MAC_POLICY_CHECK(type ## _internalize_label, label, \ element_name, element_data, &claimed); \ if (error) \ break; \ @@ -464,10 +464,10 @@ int vn_setlabel(struct vnode *vp, struct } while (0) /* - * MAC_PERFORM performs the designated operation by walking the policy module - * list and invoking that operation for each policy. + * MAC_POLICY_PERFORM performs the designated operation by walking the policy + * module list and invoking that operation for each policy. */ -#define MAC_PERFORM(operation, args...) do { \ +#define MAC_POLICY_PERFORM(operation, args...) do { \ struct mac_policy_conf *mpc; \ \ LIST_FOREACH(mpc, &mac_static_policy_list, mpc_list) { \ @@ -484,7 +484,7 @@ int vn_setlabel(struct vnode *vp, struct } \ } while (0) -#define MAC_PERFORM_NOSLEEP(operation, args...) do { \ +#define MAC_POLICY_PERFORM_NOSLEEP(operation, args...) do { \ struct mac_policy_conf *mpc; \ \ LIST_FOREACH(mpc, &mac_static_policy_list, mpc_list) { \ Modified: head/sys/security/mac/mac_net.c ============================================================================== --- head/sys/security/mac/mac_net.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_net.c Fri May 1 21:05:40 2009 (r191731) @@ -110,7 +110,7 @@ mac_bpfdesc_label_alloc(void) struct label *label; label = mac_labelzone_alloc(M_WAITOK); - MAC_PERFORM(bpfdesc_init_label, label); + MAC_POLICY_PERFORM(bpfdesc_init_label, label); return (label); } @@ -130,7 +130,7 @@ mac_ifnet_label_alloc(void) struct label *label; label = mac_labelzone_alloc(M_WAITOK); - MAC_PERFORM(ifnet_init_label, label); + MAC_POLICY_PERFORM(ifnet_init_label, label); return (label); } @@ -154,11 +154,11 @@ mac_mbuf_tag_init(struct m_tag *tag, int mac_init_label(label); if (flag & M_WAITOK) - MAC_CHECK(mbuf_init_label, label, flag); + MAC_POLICY_CHECK(mbuf_init_label, label, flag); else - MAC_CHECK_NOSLEEP(mbuf_init_label, label, flag); + MAC_POLICY_CHECK_NOSLEEP(mbuf_init_label, label, flag); if (error) { - MAC_PERFORM_NOSLEEP(mbuf_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(mbuf_destroy_label, label); mac_destroy_label(label); } return (error); @@ -191,7 +191,7 @@ static void mac_bpfdesc_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(bpfdesc_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(bpfdesc_destroy_label, label); mac_labelzone_free(label); } @@ -209,7 +209,7 @@ static void mac_ifnet_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(ifnet_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(ifnet_destroy_label, label); mac_labelzone_free(label); } @@ -230,7 +230,7 @@ mac_mbuf_tag_destroy(struct m_tag *tag) label = (struct label *)(tag+1); - MAC_PERFORM_NOSLEEP(mbuf_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(mbuf_destroy_label, label); mac_destroy_label(label); } @@ -250,7 +250,7 @@ mac_mbuf_tag_copy(struct m_tag *src, str * mac_mbuf_tag_init() is called on the target tag in m_tag_copy(), * so we don't need to call it here. */ - MAC_PERFORM_NOSLEEP(mbuf_copy_label, src_label, dest_label); + MAC_POLICY_PERFORM_NOSLEEP(mbuf_copy_label, src_label, dest_label); } void @@ -261,14 +261,14 @@ mac_mbuf_copy(struct mbuf *m_from, struc src_label = mac_mbuf_to_label(m_from); dest_label = mac_mbuf_to_label(m_to); - MAC_PERFORM_NOSLEEP(mbuf_copy_label, src_label, dest_label); + MAC_POLICY_PERFORM_NOSLEEP(mbuf_copy_label, src_label, dest_label); } static void mac_ifnet_copy_label(struct label *src, struct label *dest) { - MAC_PERFORM_NOSLEEP(ifnet_copy_label, src, dest); + MAC_POLICY_PERFORM_NOSLEEP(ifnet_copy_label, src, dest); } static int @@ -277,7 +277,7 @@ mac_ifnet_externalize_label(struct label { int error; - MAC_EXTERNALIZE(ifnet, label, elements, outbuf, outbuflen); + MAC_POLICY_EXTERNALIZE(ifnet, label, elements, outbuf, outbuflen); return (error); } @@ -287,7 +287,7 @@ mac_ifnet_internalize_label(struct label { int error; - MAC_INTERNALIZE(ifnet, label, string); + MAC_POLICY_INTERNALIZE(ifnet, label, string); return (error); } @@ -297,7 +297,7 @@ mac_ifnet_create(struct ifnet *ifp) { MAC_IFNET_LOCK(ifp); - MAC_PERFORM_NOSLEEP(ifnet_create, ifp, ifp->if_label); + MAC_POLICY_PERFORM_NOSLEEP(ifnet_create, ifp, ifp->if_label); MAC_IFNET_UNLOCK(ifp); } @@ -305,7 +305,7 @@ void mac_bpfdesc_create(struct ucred *cred, struct bpf_d *d) { - MAC_PERFORM_NOSLEEP(bpfdesc_create, cred, d, d->bd_label); + MAC_POLICY_PERFORM_NOSLEEP(bpfdesc_create, cred, d, d->bd_label); } void @@ -317,7 +317,8 @@ mac_bpfdesc_create_mbuf(struct bpf_d *d, label = mac_mbuf_to_label(m); - MAC_PERFORM_NOSLEEP(bpfdesc_create_mbuf, d, d->bd_label, m, label); + MAC_POLICY_PERFORM_NOSLEEP(bpfdesc_create_mbuf, d, d->bd_label, m, + label); } void @@ -328,7 +329,8 @@ mac_ifnet_create_mbuf(struct ifnet *ifp, label = mac_mbuf_to_label(m); MAC_IFNET_LOCK(ifp); - MAC_PERFORM_NOSLEEP(ifnet_create_mbuf, ifp, ifp->if_label, m, label); + MAC_POLICY_PERFORM_NOSLEEP(ifnet_create_mbuf, ifp, ifp->if_label, m, + label); MAC_IFNET_UNLOCK(ifp); } @@ -343,7 +345,7 @@ mac_bpfdesc_check_receive(struct bpf_d * BPFD_LOCK_ASSERT(d); MAC_IFNET_LOCK(ifp); - MAC_CHECK_NOSLEEP(bpfdesc_check_receive, d, d->bd_label, ifp, + MAC_POLICY_CHECK_NOSLEEP(bpfdesc_check_receive, d, d->bd_label, ifp, ifp->if_label); MAC_CHECK_PROBE2(bpfdesc_check_receive, error, d, ifp); MAC_IFNET_UNLOCK(ifp); @@ -365,7 +367,7 @@ mac_ifnet_check_transmit(struct ifnet *i label = mac_mbuf_to_label(m); MAC_IFNET_LOCK(ifp); - MAC_CHECK_NOSLEEP(ifnet_check_transmit, ifp, ifp->if_label, m, + MAC_POLICY_CHECK_NOSLEEP(ifnet_check_transmit, ifp, ifp->if_label, m, label); MAC_CHECK_PROBE2(ifnet_check_transmit, error, ifp, m); MAC_IFNET_UNLOCK(ifp); @@ -463,15 +465,15 @@ mac_ifnet_ioctl_set(struct ucred *cred, } MAC_IFNET_LOCK(ifp); - MAC_CHECK_NOSLEEP(ifnet_check_relabel, cred, ifp, ifp->if_label, - intlabel); + MAC_POLICY_CHECK_NOSLEEP(ifnet_check_relabel, cred, ifp, + ifp->if_label, intlabel); if (error) { MAC_IFNET_UNLOCK(ifp); mac_ifnet_label_free(intlabel); return (error); } - MAC_PERFORM_NOSLEEP(ifnet_relabel, cred, ifp, ifp->if_label, + MAC_POLICY_PERFORM_NOSLEEP(ifnet_relabel, cred, ifp, ifp->if_label, intlabel); MAC_IFNET_UNLOCK(ifp); Modified: head/sys/security/mac/mac_pipe.c ============================================================================== --- head/sys/security/mac/mac_pipe.c Fri May 1 20:53:37 2009 (r191730) +++ head/sys/security/mac/mac_pipe.c Fri May 1 21:05:40 2009 (r191731) @@ -66,7 +66,7 @@ mac_pipe_label_alloc(void) struct label *label; label = mac_labelzone_alloc(M_WAITOK); - MAC_PERFORM(pipe_init_label, label); + MAC_POLICY_PERFORM(pipe_init_label, label); return (label); } @@ -84,7 +84,7 @@ void mac_pipe_label_free(struct label *label) { - MAC_PERFORM_NOSLEEP(pipe_destroy_label, label); + MAC_POLICY_PERFORM_NOSLEEP(pipe_destroy_label, label); mac_labelzone_free(label); } @@ -102,7 +102,7 @@ void mac_pipe_copy_label(struct label *src, struct label *dest) { - MAC_PERFORM_NOSLEEP(pipe_copy_label, src, dest); + MAC_POLICY_PERFORM_NOSLEEP(pipe_copy_label, src, dest); } int @@ -111,7 +111,7 @@ mac_pipe_externalize_label(struct label { int error; - MAC_EXTERNALIZE(pipe, label, elements, outbuf, outbuflen); + MAC_POLICY_EXTERNALIZE(pipe, label, elements, outbuf, outbuflen); return (error); } @@ -121,7 +121,7 @@ mac_pipe_internalize_label(struct label { int error; - MAC_INTERNALIZE(pipe, label, string); + MAC_POLICY_INTERNALIZE(pipe, label, string); return (error); } @@ -130,7 +130,7 @@ void mac_pipe_create(struct ucred *cred, struct pipepair *pp) { - MAC_PERFORM_NOSLEEP(pipe_create, cred, pp, pp->pp_label); + MAC_POLICY_PERFORM_NOSLEEP(pipe_create, cred, pp, pp->pp_label); } static void @@ -138,7 +138,8 @@ mac_pipe_relabel(struct ucred *cred, str struct label *newlabel) { - MAC_PERFORM_NOSLEEP(pipe_relabel, cred, pp, pp->pp_label, newlabel); + MAC_POLICY_PERFORM_NOSLEEP(pipe_relabel, cred, pp, pp->pp_label, + newlabel); } MAC_CHECK_PROBE_DEFINE4(pipe_check_ioctl, "struct ucred *", @@ -152,8 +153,8 @@ mac_pipe_check_ioctl(struct ucred *cred, mtx_assert(&pp->pp_mtx, MA_OWNED); - MAC_CHECK_NOSLEEP(pipe_check_ioctl, cred, pp, pp->pp_label, cmd, - data); + MAC_POLICY_CHECK_NOSLEEP(pipe_check_ioctl, cred, pp, pp->pp_label, + cmd, data); MAC_CHECK_PROBE4(pipe_check_ioctl, error, cred, pp, cmd, data); return (error); @@ -169,7 +170,7 @@ mac_pipe_check_poll(struct ucred *cred, mtx_assert(&pp->pp_mtx, MA_OWNED); - MAC_CHECK_NOSLEEP(pipe_check_poll, cred, pp, pp->pp_label); + MAC_POLICY_CHECK_NOSLEEP(pipe_check_poll, cred, pp, pp->pp_label); MAC_CHECK_PROBE2(pipe_check_poll, error, cred, pp); return (error); @@ -185,7 +186,7 @@ mac_pipe_check_read(struct ucred *cred, mtx_assert(&pp->pp_mtx, MA_OWNED); - MAC_CHECK_NOSLEEP(pipe_check_read, cred, pp, pp->pp_label); + MAC_POLICY_CHECK_NOSLEEP(pipe_check_read, cred, pp, pp->pp_label); MAC_CHECK_PROBE2(pipe_check_read, error, cred, pp); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From sam at FreeBSD.org Fri May 1 21:31:40 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Fri May 1 21:31:51 2009 Subject: svn commit: r191732 - head/sys/net80211 Message-ID: <200905012131.n41LVdTo053829@svn.freebsd.org> Author: sam Date: Fri May 1 21:31:39 2009 New Revision: 191732 URL: http://svn.freebsd.org/changeset/base/191732 Log: revert wip Modified: head/sys/net80211/ieee80211_ddb.c Modified: head/sys/net80211/ieee80211_ddb.c ============================================================================== --- head/sys/net80211/ieee80211_ddb.c Fri May 1 21:05:40 2009 (r191731) +++ head/sys/net80211/ieee80211_ddb.c Fri May 1 21:31:39 2009 (r191732) @@ -284,21 +284,12 @@ _db_show_sta(const struct ieee80211_node static void _db_show_tdma(const char *sep, const struct ieee80211_tdma_state *ts, int showprocs) { - const char *cp; - int i; - db_printf("%stdma %p:\n", sep, ts); - db_printf("%s features %b version %u slot %u txrate %u bintval %u peer %p\n", sep, - ts->tdma_features, TDMA_F_BITS, ts->tdma_version, ts->tdma_slot, - ts->tdma_txrate, ts->tdma_bintval, ts->tdma_peer); - db_printf("%s slotlen %u slotcnt %u bw[", sep, + db_printf("%s version %u slot %u bintval %u peer %p\n", sep, + ts->tdma_version, ts->tdma_slot, ts->tdma_bintval, ts->tdma_peer); + db_printf("%s slotlen %u slotcnt %u", sep, ts->tdma_slotlen, ts->tdma_slotcnt); - cp = ""; - for (i = 0; i < TDMA_MAXSLOTS; i++) { - db_printf("%s%u", cp, ts->tdma_bw[i]); - cp = ":"; - } - db_printf("] inuse 0x%x active 0x%x count %d\n", + db_printf(" inuse 0x%x active 0x%x count %d\n", ts->tdma_inuse[0], ts->tdma_active[0], ts->tdma_count); if (showprocs) { DB_PRINTSYM(sep, " tdma_newstate", ts->tdma_newstate); From mav at FreeBSD.org Fri May 1 21:43:06 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Fri May 1 21:43:19 2009 Subject: svn commit: r191733 - in head/sys: amd64/isa isa Message-ID: <200905012143.n41Lh4uS054073@svn.freebsd.org> Author: mav Date: Fri May 1 21:43:04 2009 New Revision: 191733 URL: http://svn.freebsd.org/changeset/base/191733 Log: Add resume methods to i8254 and atrtc devices. Modified: head/sys/amd64/isa/clock.c head/sys/isa/atrtc.c Modified: head/sys/amd64/isa/clock.c ============================================================================== --- head/sys/amd64/isa/clock.c Fri May 1 21:31:39 2009 (r191732) +++ head/sys/amd64/isa/clock.c Fri May 1 21:43:04 2009 (r191733) @@ -376,6 +376,17 @@ set_i8254_freq(u_int freq, int intr_freq mtx_unlock_spin(&clock_lock); } +static void +i8254_restore(void) +{ + + mtx_lock_spin(&clock_lock); + outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); + outb(TIMER_CNTR0, i8254_real_max_count & 0xff); + outb(TIMER_CNTR0, i8254_real_max_count >> 8); + mtx_unlock_spin(&clock_lock); +} + /* This is separate from startrtclock() so that it can be called early. */ void i8254_init(void) @@ -558,6 +569,14 @@ attimer_attach(device_t dev) return(0); } +static int +attimer_resume(device_t dev) +{ + + i8254_restore(); + return(0); +} + static device_method_t attimer_methods[] = { /* Device interface */ DEVMETHOD(device_probe, attimer_probe), @@ -565,7 +584,7 @@ static device_method_t attimer_methods[] DEVMETHOD(device_detach, bus_generic_detach), DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_resume, attimer_resume), { 0, 0 } }; Modified: head/sys/isa/atrtc.c ============================================================================== --- head/sys/isa/atrtc.c Fri May 1 21:31:39 2009 (r191732) +++ head/sys/isa/atrtc.c Fri May 1 21:43:04 2009 (r191733) @@ -190,6 +190,13 @@ atrtc_attach(device_t dev) return(0); } +static int +atrtc_resume(device_t dev) +{ + + atrtc_restore(); + return(0); +} static int atrtc_settime(device_t dev __unused, struct timespec *ts) @@ -264,8 +271,7 @@ static device_method_t atrtc_methods[] = DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, bus_generic_suspend), /* XXX stop statclock? */ - DEVMETHOD(device_resume, bus_generic_resume), - /* XXX restart statclock? */ + DEVMETHOD(device_resume, atrtc_resume), /* clock interface */ DEVMETHOD(clock_gettime, atrtc_gettime), From zec at FreeBSD.org Sat May 2 05:02:31 2009 From: zec at FreeBSD.org (Marko Zec) Date: Sat May 2 05:02:42 2009 Subject: svn commit: r191734 - in head/sys: net netinet Message-ID: <200905020502.n4252Ssc070230@svn.freebsd.org> Author: zec Date: Sat May 2 05:02:28 2009 New Revision: 191734 URL: http://svn.freebsd.org/changeset/base/191734 Log: Unbreak options VIMAGE + nooptions INVARIANTS kernel builds. Submitted by: julian Approved by: julian (mentor) Modified: head/sys/net/route.c head/sys/netinet/igmp.c head/sys/netinet/tcp_timewait.c Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Fri May 1 21:43:04 2009 (r191733) +++ head/sys/net/route.c Sat May 2 05:02:28 2009 (r191734) @@ -1131,10 +1131,10 @@ bad: int rt_setgate(struct rtentry *rt, struct sockaddr *dst, struct sockaddr *gate) { - INIT_VNET_NET(curvnet); /* XXX dst may be overwritten, can we move this to below */ int dlen = SA_SIZE(dst), glen = SA_SIZE(gate); #ifdef INVARIANTS + INIT_VNET_NET(curvnet); struct radix_node_head *rnh = V_rt_tables[rt->rt_fibnum][dst->sa_family]; #endif Modified: head/sys/netinet/igmp.c ============================================================================== --- head/sys/netinet/igmp.c Fri May 1 21:43:04 2009 (r191733) +++ head/sys/netinet/igmp.c Sat May 2 05:02:28 2009 (r191734) @@ -3617,7 +3617,9 @@ vnet_igmp_iattach(const void *unused __u static int vnet_igmp_idetach(const void *unused __unused) { +#ifdef INVARIANTS INIT_VNET_INET(curvnet); +#endif CTR1(KTR_IGMPV3, "%s: tearing down", __func__); Modified: head/sys/netinet/tcp_timewait.c ============================================================================== --- head/sys/netinet/tcp_timewait.c Fri May 1 21:43:04 2009 (r191733) +++ head/sys/netinet/tcp_timewait.c Sat May 2 05:02:28 2009 (r191734) @@ -188,9 +188,7 @@ tcp_tw_init(void) void tcp_twstart(struct tcpcb *tp) { -#if defined(INVARIANTS) || defined(INVARIANT_SUPPORT) INIT_VNET_INET(tp->t_vnet); -#endif struct tcptw *tw; struct inpcb *inp = tp->t_inpcb; int acknow; From alc at FreeBSD.org Sat May 2 06:12:39 2009 From: alc at FreeBSD.org (Alan Cox) Date: Sat May 2 06:12:53 2009 Subject: svn commit: r191735 - in head/sys/mips: include mips Message-ID: <200905020612.n426Cc27074327@svn.freebsd.org> Author: alc Date: Sat May 2 06:12:38 2009 New Revision: 191735 URL: http://svn.freebsd.org/changeset/base/191735 Log: A variety of changes: Reimplement "kernel_pmap" in the standard way. Eliminate unused variables. (These are mostly variables that were discarded by the machine-independent layer after FreeBSD 4.x.) Properly handle a vm_page_alloc() failure in pmap_init(). Eliminate dead or legacy (FreeBSD 4.x) code. Eliminate unnecessary page queues locking. Eliminate some excess white space. Correct the synchronization of pmap_page_exists_quick(). Tested by: gonzo Modified: head/sys/mips/include/pmap.h head/sys/mips/mips/pmap.c Modified: head/sys/mips/include/pmap.h ============================================================================== --- head/sys/mips/include/pmap.h Sat May 2 05:02:28 2009 (r191734) +++ head/sys/mips/include/pmap.h Sat May 2 06:12:38 2009 (r191735) @@ -74,7 +74,7 @@ struct pv_entry; struct md_page { int pv_list_count; int pv_flags; - TAILQ_HEAD(, pv_entry)pv_list; + TAILQ_HEAD(, pv_entry) pv_list; }; #define PV_TABLE_MOD 0x01 /* modified */ @@ -86,8 +86,8 @@ struct md_page { struct pmap { pd_entry_t *pm_segtab; /* KVA of segment table */ - TAILQ_HEAD(, pv_entry)pm_pvlist; /* list of mappings in - * pmap */ + TAILQ_HEAD(, pv_entry) pm_pvlist; /* list of mappings in + * pmap */ int pm_active; /* active on cpus */ struct { u_int32_t asid:ASID_BITS; /* TLB address space tag */ @@ -105,10 +105,12 @@ typedef struct pmap *pmap_t; pt_entry_t *pmap_pte(pmap_t, vm_offset_t); pd_entry_t pmap_segmap(pmap_t pmap, vm_offset_t va); vm_offset_t pmap_kextract(vm_offset_t va); -extern pmap_t kernel_pmap; #define vtophys(va) pmap_kextract(((vm_offset_t) (va))) +extern struct pmap kernel_pmap_store; +#define kernel_pmap (&kernel_pmap_store) + #define PMAP_LOCK(pmap) mtx_lock(&(pmap)->pm_mtx) #define PMAP_LOCK_ASSERT(pmap, type) mtx_assert(&(pmap)->pm_mtx, (type)) #define PMAP_LOCK_DESTROY(pmap) mtx_destroy(&(pmap)->pm_mtx) @@ -132,8 +134,8 @@ extern pmap_t kernel_pmap; typedef struct pv_entry { pmap_t pv_pmap; /* pmap where mapping lies */ vm_offset_t pv_va; /* virtual address for mapping */ - TAILQ_ENTRY(pv_entry)pv_list; - TAILQ_ENTRY(pv_entry)pv_plist; + TAILQ_ENTRY(pv_entry) pv_list; + TAILQ_ENTRY(pv_entry) pv_plist; vm_page_t pv_ptem; /* VM page for pte */ boolean_t pv_wired; /* whether this entry is wired */ } *pv_entry_t; @@ -143,8 +145,6 @@ typedef struct pv_entry { #define PMAP_DIAGNOSTIC #endif -extern vm_offset_t avail_end; -extern vm_offset_t avail_start; extern vm_offset_t phys_avail[]; extern char *ptvmmap; /* poor name! */ extern vm_offset_t virtual_avail; Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Sat May 2 05:02:28 2009 (r191734) +++ head/sys/mips/mips/pmap.c Sat May 2 06:12:38 2009 (r191735) @@ -135,12 +135,9 @@ __FBSDID("$FreeBSD$"); #define pmap_va_asid(pmap, va) ((va) | ((pmap)->pm_asid[PCPU_GET(cpuid)].asid << VMTLB_PID_SHIFT)) #define is_kernel_pmap(x) ((x) == kernel_pmap) -static struct pmap kernel_pmap_store; -pmap_t kernel_pmap; +struct pmap kernel_pmap_store; pd_entry_t *kernel_segmap; -vm_offset_t avail_start; /* PA of first available physical page */ -vm_offset_t avail_end; /* PA of last available physical page */ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ @@ -161,7 +158,6 @@ static void pmap_asid_alloc(pmap_t pmap) static uma_zone_t pvzone; static struct vm_object pvzone_obj; static int pv_entry_count = 0, pv_entry_max = 0, pv_entry_high_water = 0; -int pmap_pagedaemon_waken = 0; struct fpage fpages_shared[FPAGES_SHARED]; @@ -412,25 +408,20 @@ again: for (i = 0, j = (virtual_avail >> SEGSHIFT); i < nkpt; i++, j++) kernel_segmap[j] = (pd_entry_t)(pgtab + (i * NPTEPG)); - avail_start = phys_avail[0]; for (i = 0; phys_avail[i + 2]; i += 2) continue; - avail_end = phys_avail[i + 1]; + printf("avail_start:0x%x avail_end:0x%x\n", + phys_avail[0], phys_avail[i + 1]); /* * The kernel's pmap is statically allocated so we don't have to use * pmap_create, which is unlikely to work correctly at this part of * the boot sequence (XXX and which no longer exists). */ - kernel_pmap = &kernel_pmap_store; - PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_segtab = kernel_segmap; kernel_pmap->pm_active = ~0; TAILQ_INIT(&kernel_pmap->pm_pvlist); - printf("avail_start:0x%x avail_end:0x%x\n", - avail_start, avail_end); - kernel_pmap->pm_asid[PCPU_GET(cpuid)].asid = PMAP_ASID_RESERVED; kernel_pmap->pm_asid[PCPU_GET(cpuid)].gen = 0; pmap_max_asid = VMNUM_PIDS; @@ -1011,19 +1002,11 @@ pmap_pinit(pmap_t pmap) /* * allocate the page directory page */ - ptdpg = vm_page_alloc(NULL, NUSERPGTBLS, req); + while ((ptdpg = vm_page_alloc(NULL, NUSERPGTBLS, req)) == NULL) + VM_WAIT; -#if 0 - /* I think we can just delete these, now that PG_BUSY is gone */ - vm_page_lock_queues(); - vm_page_flag_clear(ptdpg, PTE_BUSY); /* not usually mapped */ -#endif ptdpg->valid = VM_PAGE_BITS_ALL; -#if 0 - vm_page_unlock_queues(); -#endif - pmap->pm_segtab = (pd_entry_t *) MIPS_PHYS_TO_CACHED(VM_PAGE_TO_PHYS(ptdpg)); if ((ptdpg->flags & PG_ZERO) == 0) @@ -1193,12 +1176,9 @@ pmap_release(pmap_t pmap) pmap->pm_stats.resident_count)); ptdpg = PHYS_TO_VM_PAGE(MIPS_CACHED_TO_PHYS(pmap->pm_segtab)); - - vm_page_lock_queues(); ptdpg->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); vm_page_free_zero(ptdpg); - vm_page_unlock_queues(); } /* @@ -1447,7 +1427,6 @@ static void pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t mpte, vm_page_t m, boolean_t wired) { - pv_entry_t pv; pv = get_pv_entry(pmap); @@ -1461,7 +1440,6 @@ pmap_insert_entry(pmap_t pmap, vm_offset TAILQ_INSERT_TAIL(&pmap->pm_pvlist, pv, pv_plist); TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); m->md.pv_list_count++; - } /* @@ -1532,7 +1510,6 @@ pmap_remove_pte(struct pmap *pmap, pt_en pmap_remove_entry(pmap, m, va); } return pmap_unuse_pt(pmap, va, NULL); - } /* @@ -1623,14 +1600,8 @@ pmap_remove_all(vm_page_t m) register pv_entry_t pv; register pt_entry_t *pte, tpte; -#if defined(PMAP_DEBUG) - /* - * XXX This makes pmap_remove_all() illegal for non-managed pages! - */ - if (m->flags & PG_FICTITIOUS) { - panic("pmap_page_protect: illegal for unmanaged page, va: 0x%x", VM_PAGE_TO_PHYS(m)); - } -#endif + KASSERT((m->flags & PG_FICTITIOUS) == 0, + ("pmap_remove_all: page %p is fictitious", m)); mtx_assert(&vm_page_queue_mtx, MA_OWNED); if (m->md.pv_flags & PV_TABLE_REF) @@ -2484,28 +2455,18 @@ pmap_page_exists_quick(pmap_t pmap, vm_p if (m->flags & PG_FICTITIOUS) return FALSE; - vm_page_lock_queues(); - PMAP_LOCK(pmap); - - /* - * Not found, check current mappings returning immediately if found. - */ + mtx_assert(&vm_page_queue_mtx, MA_OWNED); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { if (pv->pv_pmap == pmap) { - PMAP_UNLOCK(pmap); - vm_page_unlock_queues(); return TRUE; } loops++; if (loops >= 16) break; } - PMAP_UNLOCK(pmap); - vm_page_unlock_queues(); return (FALSE); } -#define PMAP_REMOVE_PAGES_CURPROC_ONLY /* * Remove all pages from specified address space * this aids process exit speeds. Also, this code @@ -2521,13 +2482,10 @@ pmap_remove_pages(pmap_t pmap) pv_entry_t pv, npv; vm_page_t m; -#ifdef PMAP_REMOVE_PAGES_CURPROC_ONLY if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) { printf("warning: pmap_remove_pages called with non-current pmap\n"); return; } -#endif - vm_page_lock_queues(); PMAP_LOCK(pmap); sched_pin(); @@ -3272,7 +3230,8 @@ pmap_kextract(vm_offset_t va) else if (va >= MIPS_KSEG2_START && va < VM_MAX_KERNEL_ADDRESS) { pt_entry_t *ptep; - if (kernel_pmap) { + /* Is the kernel pmap initialized? */ + if (kernel_pmap->pm_active) { if (va >= (vm_offset_t)virtual_sys_start) { /* Its inside the virtual address range */ ptep = pmap_pte(kernel_pmap, va); From obrien at FreeBSD.org Sat May 2 06:25:53 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Sat May 2 06:26:01 2009 Subject: svn commit: r191736 - in vendor/file/dist: . Magdir Message-ID: <200905020625.n426Pplm074629@svn.freebsd.org> Author: obrien Date: Sat May 2 06:25:51 2009 New Revision: 191736 URL: http://svn.freebsd.org/changeset/base/191736 Log: Virgin import of Christos Zoulas's FILE 5.00. Modified: vendor/file/dist/ChangeLog vendor/file/dist/Magdir/animation vendor/file/dist/Magdir/audio vendor/file/dist/Magdir/cafebabe vendor/file/dist/Magdir/compress vendor/file/dist/Magdir/elf vendor/file/dist/Magdir/epoc vendor/file/dist/Magdir/filesystems vendor/file/dist/Magdir/graphviz vendor/file/dist/Magdir/images vendor/file/dist/Magdir/jpeg vendor/file/dist/Magdir/mach vendor/file/dist/Magdir/macintosh vendor/file/dist/Magdir/msdos vendor/file/dist/Magdir/perl vendor/file/dist/Magdir/printer vendor/file/dist/Magdir/timezone vendor/file/dist/Magdir/xwindows vendor/file/dist/Makefile.am vendor/file/dist/Makefile.in vendor/file/dist/README vendor/file/dist/TODO vendor/file/dist/apprentice.c vendor/file/dist/apptype.c vendor/file/dist/ascmagic.c vendor/file/dist/asprintf.c vendor/file/dist/compress.c vendor/file/dist/config.h.in vendor/file/dist/configure vendor/file/dist/configure.ac vendor/file/dist/file.c vendor/file/dist/file.h vendor/file/dist/file.man vendor/file/dist/file_opts.h vendor/file/dist/fsmagic.c vendor/file/dist/funcs.c vendor/file/dist/getopt_long.c vendor/file/dist/is_tar.c vendor/file/dist/libmagic.man vendor/file/dist/magic.c vendor/file/dist/magic.h vendor/file/dist/magic.man vendor/file/dist/patchlevel.h vendor/file/dist/print.c vendor/file/dist/readelf.c vendor/file/dist/softmagic.c vendor/file/dist/vasprintf.c Modified: vendor/file/dist/ChangeLog ============================================================================== --- vendor/file/dist/ChangeLog Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/ChangeLog Sat May 2 06:25:51 2009 (r191736) @@ -1,9 +1,105 @@ +2008-12-12 15:50 Christos Zoulas + + * fix initial offset calculation for non 4K sector files + + * add loop limits to avoid DoS attacks by constructing + looping sector references. + +2008-12-03 13:05 Christos Zoulas + + * fix memory botches on cdf file parsing. + + * exit with non-zero value for any error, not just for the last + file processed. + +2008-11-09 20:42 Charles Longeau + + * Replace all str{cpy,cat} functions with strl{cpy,cat} + * Ensure that strl{cpy,cat} are included in libmagic, + as needed. + +2008-11-06 18:18 Christos Zoulas + + * Handle ID3 format files. + +2008-11-06 23:00 Reuben Thomas + + * Fix --mime, --mime-type and --mime-encoding under new scheme. + + * Rename "ascii" to "text" and add "encoding" test. + + * Return a precise ("utf-16le" or "utf-16be") MIME charset for + UTF-16. + + * Fix error in comment caused by automatic indentation adding + words! + +2008-11-06 10:35 Christos Zoulas + + * use memchr instead of strchr because the string + might not be NUL terminated (Scott MacVicar) + +2008-11-03 07:31 Reuben Thomas + + * Fix a printf with a non-literal format string. + + * Fix formatting and punctuation of help for "--apple". + +2008-10-30 11:00 Reuben Thomas + + * Correct words counts in comments of struct magic. + + * Fix handle_annotation to allow both Apple and MIME types to be + printed, and to return correct code if MIME type is + printed (1, not 0) or if there's an error (-1 not 1). + + * Fix output of charset for MIME type (precede with semi-colon; + fixes Debian bug #501460). + + * Fix potential attacks via conversion specifications in magic + strings. + + * Add a FIXME for Debian bug #488562 (magic files should be + read in a defined order, by sorting the names). + +2008-10-18 16:45 Christos Zoulas + + * Added APPLE file creator/type + +2008-10-12 10:20 Christos Zoulas + + * Added CDF parsing + +2008-10-09 16:40 Christos Zoulas + + * filesystem and msdos patches (Joerg Jenderek) + +2008-10-09 13:20 Christos Zoulas + + * correct --exclude documentation issues: remove troff and fortran + and rename "token" to "tokens". (Randy McMurchy) + +2008-10-01 10:30 Christos Zoulas + + * Read ~/.magic in addition to the default magic file not instead + of, as documented in the man page. + +2008-09-10 21:30 Reuben Thomas + + * Comment out graphviz patterns, as they match too many files. + 2008-08-30 12:54 Christos Zoulas * Don't eat trailing \n in magic enties. * Cast defines to allow compilation using a c++ compiler. +2008-08-25 23:56 Reuben Thomas + + * Add text/x-lua MIME type for Lua scripts. + + * Escape { in regex in graphviz patterns. + 2008-07-26 00:59 Reuben Thomas * Add MIME types for special files. @@ -55,22 +151,22 @@ 2008-05-06 00:13 Robert Byrnes - * src/Makefile.am: + * src/Makefile.am: Ensure that getopt_long and [v]asprintf are included in libmagic, as needed. Remove unnecessary EXTRA_DIST. - * src/Makefile.in: + * src/Makefile.in: Rerun automake. - * src/vasprintf.c (dispatch): + * src/vasprintf.c (dispatch): Fix variable precision bug: be sure to step past '*'. - * src/vasprintf.c (core): + * src/vasprintf.c (core): Remove unreachable code. - * src/apprentice.c (set_test_type): + * src/apprentice.c (set_test_type): Add cast to avoid compiler warning. 2008-04-22 23:45 Christos Zoulas @@ -81,12 +177,12 @@ 2008-04-04 11:00 Christos Zoulas - * >= <= is not supported, so fix the magic and warn about it. + * >= <= is not supported, so fix the magic and warn about it. reported by: Thien-Thi Nguyen 2008-03-27 16:16 Robert Byrnes - * src/readelf.c (donote): + * src/readelf.c (donote): ELF core file command name/line bug fixes and enhancements: Try larger offsets first to avoid false matches @@ -112,7 +208,7 @@ * Clarify UTF-8 BOM message (Reuben Thomas) * Add HTML comment to token list in names.h - + 2007-02-04 15:50 Christos Zoulas * Debian fixes (Reuben Thomas) @@ -152,7 +248,7 @@ 2007-10-28 20:48 Christos Zoulas - * float and double magic support (Behan Webster) + * float and double magic support (Behan Webster) 2007-10-28 20:48 Christos Zoulas @@ -199,7 +295,7 @@ be easily parsed: mimetype [charset=character-set] [encoding=encoding-mime-type] - Remove spurious extra text from some MIME type printouts + Remove spurious extra text from some MIME type printouts (mostly in is_tar). Fix one case where -i produced nothing at all (for a 1-byte file, @@ -229,7 +325,7 @@ 2007-03-15 10:51 Christos Zoulas * fix fortran and nroff reversed tests (Dmitry V. Levin) - + * fix exclude option (Dmitry V. Levin) 2007-02-08 17:30 Christos Zoulas @@ -248,7 +344,7 @@ * Add exclude flag. 2007-01-18 05:29 Anon Ymous - + * Move the "type" detection code from parse() into its own table driven routine. This avoids maintaining multiple lists in file.h. @@ -256,7 +352,7 @@ * Add an optional conditional field (ust before the type field). This code is wrapped in "#ifdef ENABLE_CONDITIONALS" as it is likely to go away. - + 2007-01-16 23:24 Anon Ymous * Fix an initialization bug in check_mem(). @@ -327,7 +423,7 @@ 2006-12-08 16:32 Christos Zoulas * store and print the line number of the magic - entry for debugging. + entry for debugging. * if the magic entry did not print anything, don't treat it as a match @@ -342,7 +438,7 @@ file_softmagic. 2006-11-25 13:35 Christos Zoulas - + * Don't store the current offset in the magic struct, because it needs to be restored and it was not done properly all the time. Bug @@ -432,7 +528,7 @@ * Look for note sections in non executables. 2005-09-20 13:33 Christos Zoulas - + * Don't print SVR4 Style in core files multiple times (Radek Vokál) @@ -443,9 +539,9 @@ 2005-08-18 09:53 Christos Zoulas * Remove erroreous mention of /etc/magic in the file man page - This is gentoo bug 101639. (Mike Frysinger) + This is gentoo bug 101639. (Mike Frysinger) - * Cross-compile support and detection (Mike Frysinger) + * Cross-compile support and detection (Mike Frysinger) 2005-08-12 10:17 Christos Zoulas @@ -477,20 +573,20 @@ * Avoid NULL pointer dereference in time conversion. 2005-03-06 00:00 Joerg Walter - + * Add indirect magic offset support, and search mode. 2005-01-12 00:00 Stepan Kasal - * src/ascmagic.c (file_ascmagic): Fix three bugs about text files: - If a CRLF text file happens to have CR at offset HOWMANY - 1 - (currently 0xffff), it should not be counted as CR line - terminator. - If a line has length exactly MAXLINELEN, it should not yet be - treated as a ``very long line'', as MAXLINELEN is ``longest sane - line length''. - With CRLF, the line length was not computed correctly, and even - lines of length MAXLINELEN - 1 were treated as ``very long''. + * src/ascmagic.c (file_ascmagic): Fix three bugs about text files: + If a CRLF text file happens to have CR at offset HOWMANY - 1 + (currently 0xffff), it should not be counted as CR line + terminator. + If a line has length exactly MAXLINELEN, it should not yet be + treated as a ``very long line'', as MAXLINELEN is ``longest sane + line length''. + With CRLF, the line length was not computed correctly, and even + lines of length MAXLINELEN - 1 were treated as ``very long''. 2004-12-07 14:15 Christos Zoulas @@ -525,12 +621,12 @@ * Remove 3rd and 4th copyright clause; approved by Ian Darwin. - * Fix small memory leaks; caught by: Tamas Sarlos + * Fix small memory leaks; caught by: Tamas Sarlos 2004-07-24 16:33 Christos Zoulas - * magic.mime update Danny Milosavljevic + * magic.mime update Danny Milosavljevic * FreeBSD version update Oliver Eikemeier Modified: vendor/file/dist/Magdir/animation ============================================================================== --- vendor/file/dist/Magdir/animation Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/animation Sat May 2 06:25:51 2009 (r191736) @@ -325,6 +325,7 @@ # MP2, M1A 0 beshort&0xFFFE 0xFFFC MPEG ADTS, layer II, v1 +!:mime audio/mpeg # rates >2 byte&0xF0 0x10 \b, 32 kbps >2 byte&0xF0 0x20 \b, 48 kbps @@ -399,6 +400,7 @@ # MP3, M2A 0 beshort&0xFFFE 0xFFF2 MPEG ADTS, layer III, v2 +!:mime audio/mpeg # rate >2 byte&0xF0 0x10 \b, 8 kbps >2 byte&0xF0 0x20 \b, 16 kbps @@ -790,3 +792,24 @@ 0 belong 0x00000001 >4 byte&0x1F 0x07 !:mime video/h264 + +# Type: Bink Video +# URL: http://wiki.multimedia.cx/index.php?title=3DBink_Container +# From: 2008-07-18 +0 string BIK Bink Video +>3 regex =[a-z] rev.%s +#>4 ulelong x size %d +>20 ulelong x \b, %d +>24 ulelong x \bx%d +>8 ulelong x \b, %d frames +>32 ulelong x at rate %d/ +>28 ulelong >1 \b%d +>40 ulelong =0 \b, no audio +>40 ulelong !0 \b, %d audio track +>>40 ulelong !1 \bs +# follow properties of the first audio track only +>>48 uleshort x %dHz +>>51 byte&0x20 0 mono +>>51 byte&0x20 !0 stereo +#>>51 byte&0x10 0 FFT +#>>51 byte&0x10 !0 DCT Modified: vendor/file/dist/Magdir/audio ============================================================================== --- vendor/file/dist/Magdir/audio Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/audio Sat May 2 06:25:51 2009 (r191736) @@ -286,43 +286,14 @@ # SGI SoundTrack 0 string _SGI_SoundTrack SGI SoundTrack project file # ID3 version 2 tags -0 string ID3 Audio file with ID3 version 2. -# ??? Normally such a file is an MP3 file, but this will give false positives -!:mime audio/mpeg ->3 ubyte <0xff \b%d -#>4 ubyte <0xff \b%d tag ->2584 string fLaC \b, FLAC encoding ->>2588 byte&0x7f >0 \b, unknown version ->>2588 byte&0x7f 0 \b -# some common bits/sample values ->>>2600 beshort&0x1f0 0x030 \b, 4 bit ->>>2600 beshort&0x1f0 0x050 \b, 6 bit ->>>2600 beshort&0x1f0 0x070 \b, 8 bit ->>>2600 beshort&0x1f0 0x0b0 \b, 12 bit ->>>2600 beshort&0x1f0 0x0f0 \b, 16 bit ->>>2600 beshort&0x1f0 0x170 \b, 24 bit ->>>2600 byte&0xe 0x0 \b, mono ->>>2600 byte&0xe 0x2 \b, stereo ->>>2600 byte&0xe 0x4 \b, 3 channels ->>>2600 byte&0xe 0x6 \b, 4 channels ->>>2600 byte&0xe 0x8 \b, 5 channels ->>>2600 byte&0xe 0xa \b, 6 channels ->>>2600 byte&0xe 0xc \b, 7 channels ->>>2600 byte&0xe 0xe \b, 8 channels -# some common sample rates ->>>2597 belong&0xfffff0 0x0ac440 \b, 44.1 kHz ->>>2597 belong&0xfffff0 0x0bb800 \b, 48 kHz ->>>2597 belong&0xfffff0 0x07d000 \b, 32 kHz ->>>2597 belong&0xfffff0 0x056220 \b, 22.05 kHz ->>>2597 belong&0xfffff0 0x05dc00 \b, 24 kHz ->>>2597 belong&0xfffff0 0x03e800 \b, 16 kHz ->>>2597 belong&0xfffff0 0x02b110 \b, 11.025 kHz ->>>2597 belong&0xfffff0 0x02ee00 \b, 12 kHz ->>>2597 belong&0xfffff0 0x01f400 \b, 8 kHz ->>>2597 belong&0xfffff0 0x177000 \b, 96 kHz ->>>2597 belong&0xfffff0 0x0fa000 \b, 64 kHz ->>>2601 byte&0xf >0 \b, >4G samples ->2584 string !fLaC \b, MP3 encoding +0 string ID3 Audio file with ID3 version 2 +>3 byte x \b.%d +>4 byte x \b.%d +>>5 byte &0x80 \b, unsynchronized frames +>>5 byte &0x40 \b, extended header +>>5 byte &0x20 \b, experimental +>>5 byte &0x10 \b, footer present +>(6.I) indirect x \b, contains: # NSF (NES sound file) magic 0 string NESM\x1a NES Sound File Modified: vendor/file/dist/Magdir/cafebabe ============================================================================== --- vendor/file/dist/Magdir/cafebabe Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/cafebabe Sat May 2 06:25:51 2009 (r191736) @@ -12,16 +12,18 @@ # (and use as a hack). Let's not use 18, because the Mach-O people # might add another one or two as time goes by... # -0 beshort 0xcafe ->2 beshort 0xbabe +0 belong 0xcafebabe !:mime application/x-java-applet ->>2 belong >30 compiled Java class data, ->>>6 beshort x version %d. ->>>4 beshort x \b%d ->>4 belong 1 Mach-O fat file with 1 architecture ->>4 belong >1 ->>>4 belong <20 Mach-O fat file with %ld architectures ->2 beshort 0xd00d JAR compressed with pack200, +>4 belong >30 compiled Java class data, +>>6 beshort x version %d. +>>4 beshort x \b%d + +0 belong 0xcafebabe +>4 belong 1 Mach-O fat file with 1 architecture +>4 belong >1 +>>4 belong <20 Mach-O fat file with %ld architectures + +0 belong 0xcafed00d JAR compressed with pack200, >>5 byte x version %d. >>4 byte x \b%d !:mime application/x-java-pack200 Modified: vendor/file/dist/Magdir/compress ============================================================================== --- vendor/file/dist/Magdir/compress Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/compress Sat May 2 06:25:51 2009 (r191736) @@ -11,6 +11,7 @@ # standard unix compress 0 string \037\235 compress'd data !:mime application/x-compress +!:apple LZIVZIVU >2 byte&0x80 >0 block compressed >2 byte&0x1f x %d bits @@ -76,6 +77,11 @@ !:mime application/x-bzip2 >3 byte >47 \b, block size = %c00k +# lzip +0 string LZIP lzip compressed data +!:mime application/x-lzip +>4 byte x \b, version: %d + # squeeze and crunch # Michael Haardt 0 beshort 0x76FF squeezed data, Modified: vendor/file/dist/Magdir/elf ============================================================================== --- vendor/file/dist/Magdir/elf Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/elf Sat May 2 06:25:51 2009 (r191736) @@ -143,11 +143,13 @@ >>18 leshort 91 picoJava, >>18 leshort 92 OpenRISC, >>18 leshort 93 ARC Cores Tangent-A5, ->>18 leshort 0x3426 OpenRISC (obsolete), ->>18 leshort 0x8472 OpenRISC (obsolete), >>18 leshort 94 Tensilica Xtensa, >>18 leshort 97 NatSemi 32k, >>18 leshort 106 Analog Devices Blackfin, +>>18 leshort 113 Altera Nios II, +>>18 leshort 0xae META, +>>18 leshort 0x3426 OpenRISC (obsolete), +>>18 leshort 0x8472 OpenRISC (obsolete), >>18 leshort 0x9026 Alpha (unofficial), >>20 lelong 0 invalid version >>20 lelong 1 version 1 Modified: vendor/file/dist/Magdir/epoc ============================================================================== --- vendor/file/dist/Magdir/epoc Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/epoc Sat May 2 06:25:51 2009 (r191736) @@ -1,10 +1,11 @@ - #------------------------------------------------------------------------------ -# Epoc 32 : file(1) magic for Epoc Documents [psion/osaris +# EPOC : file(1) magic for EPOC documents [Psion Series 5/Osaris/Geofox 1] # Stefan Praszalowicz (hpicollo@worldnet.fr) -#0 lelong 0x10000037 Epoc32 +# Useful information for improving this file can be found at: +# http://software.frodo.looijaard.name/psiconv/formats/Index.html +0 lelong 0x10000037 >4 lelong 0x1000006D ->>8 lelong 0x1000007F Word ->>8 lelong 0x10000088 Sheet ->>8 lelong 0x1000007D Sketch ->>8 lelong 0x10000085 TextEd +>>8 lelong 0x1000007F Psion Word +>>8 lelong 0x10000088 Psion Sheet +>>8 lelong 0x1000007D Psion Sketch +>>8 lelong 0x10000085 Psion TextEd Modified: vendor/file/dist/Magdir/filesystems ============================================================================== --- vendor/file/dist/Magdir/filesystems Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/filesystems Sat May 2 06:25:51 2009 (r191736) @@ -104,9 +104,32 @@ >>>346 string des\ Betriebssystems >>>>366 string Betriebssystem\ nicht\ vorhanden \b, Microsoft Windows XP MBR (german) >>>>>0x1B8 ulelong >0 \b, Serial 0x%-.4x ->0x145 string Default:\ F \b, FREE-DOS MBR +#>0x145 string Default:\ F \b, FREE-DOS MBR +#>0x14B string Default:\ F \b, FREE-DOS 1.0 MBR +>0x145 search/7 Default:\ F \b, FREE-DOS MBR +#>>313 string F0\ .\ .\ . +#>>>322 string disk\ 1 +#>>>>382 string FAT3 >64 string no\ active\ partition\ found >>96 string read\ error\ while\ reading\ drive \b, FREE-DOS Beta 0.9 MBR +# Ranish Partition Manager http://www.ranish.com/part/ +>387 search/4 \0\ Error!\r +>>378 search/7 Virus! +>>>397 search/4 Booting\ +>>>>408 search/4 HD1/\0 \b, Ranish MBR ( +>>>>>416 string Writing\ changes... \b2.37 +>>>>>>438 ubyte x \b,0x%x dots +>>>>>>440 ubyte >0 \b,virus check +>>>>>>441 ubyte >0 \b,partition %c +#2.38,2.42,2.44 +>>>>>416 string !Writing\ changes... \b +>>>>>>418 ubyte 1 \bvirus check, +>>>>>>419 ubyte x \b0x%x seconds +>>>>>>420 ubyte&0x0F >0 \b,partition +>>>>>>>420 ubyte&0x0F <5 \b %x +>>>>>>>420 ubyte&0x0F 0Xf \b ask +>>>>>420 ubyte x \b) +# >271 string Operating\ system\ loading >>296 string error\r \b, SYSLINUX MBR (2.10) # http://www.acronis.de/ @@ -124,18 +147,20 @@ >0x40 string SBML # label with 11 characters of FAT 12 bit filesystem >>43 string SMART\ BTMGR ->>>430 string SBMK\ Bad!\r ->>>>3 string SBM \b, Smart Boot Manager ->>>>>6 string >\0 \b, version %s +>>>430 string SBMK\ Bad!\r \b, Smart Boot Manager +# OEM-ID not always "SBM" +#>>>>3 strings SBM +>>>>6 string >\0 \b, version %s >382 string XOSLLOADXCF \b, eXtended Operating System Loader >6 string LILO \b, LInux i386 boot LOader >>120 string LILO \b, version 22.3.4 SuSe >>172 string LILO \b, version 22.5.8 Debian -# updated by Joerg Jenderek +# updated by Joerg Jenderek at Oct 2008 # variables according to grub-0.97/stage1/stage1.S or # http://www.gnu.org/software/grub/manual/grub.html#Embedded-data # usual values are marked with comments to get only informations of strange GRUB loaders ->0 ulelong 0x009048EB +>342 search/60 \0Geom\0 +#>0 ulelong x %x=0x009048EB , 0x2a9048EB 0 >>0x41 ubyte <2 >>>0x3E ubyte >2 \b; GRand Unified Bootloader # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90 @@ -178,15 +203,14 @@ >3 string BCDL >>498 string BCDL\ \ \ \ BIN \b, Bootable CD Loader (1.50Z) # mbr partion table entries -# OEM-ID not Microsoft,SYSLINUX,or MTOOLs +# OEM-ID does not contain MicroSoft,NEWLDR,DOS,SYSLINUX,or MTOOLs >3 string !MS >>3 string !SYSLINUX >>>3 string !MTOOL +>>>>3 string !NEWLDR +>>>>>5 string !DOS # not FAT (32 bit) ->>>>82 string !FAT32 -#not IO.SYS ->>>>>472 string !IO\ \ \ \ \ \ SYS ->>>>>>480 string !IO\ \ \ \ \ \ SYS +>>>>>>82 string !FAT32 #not Linux kernel >>>>>>>514 string !HdrS #not BeOS @@ -272,6 +296,11 @@ >>>>>>>>>(1.b+11) ubyte 0xb >>>>>>>>>>(1.b+12) ubyte 0x56 >>>>>>>>>>(1.b+13) ubyte 0xb4 \b, mkdosfs boot message display +>214 string Please\ try\ to\ install\ FreeDOS\ \b, DOS Emulator boot message display +#>>244 string from\ dosemu-freedos-*-bin.tgz\r +#>>>170 string Sorry,\ could\ not\ load\ an\ +#>>>>195 string operating\ system.\r\n +# >103 string This\ is\ not\ a\ bootable\ disk.\ >>132 string Please\ insert\ a\ bootable\ >>>157 string floppy\ and\r\n @@ -374,12 +403,22 @@ >430 string Datentr\204ger\ entfernen\xFF\r\n >>454 string Medienfehler\xFF\r\n >>>469 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (4.german) ->>>>368 ubyte&0xDF >0 ->>>>>368 string x %-.5s ->>>>>>373 ubyte&0xDF >0 ->>>>>>>373 string x \b%-.3s ->>>>>376 ubyte&0xDF >0 ->>>>>>376 string x \b.%-.3s +>>>>379 string \0 +>>>>>368 ubyte&0xDF >0 +>>>>>>368 string x %-.5s +>>>>>>>373 ubyte&0xDF >0 +>>>>>>>>373 string x \b%-.3s +>>>>>>376 ubyte&0xDF >0 +>>>>>>>376 string x \b.%-.3s +# variant +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# + #>3 string NTFS\ \ \ \ >389 string Fehler\ beim\ Lesen\ >>407 string des\ Datentr\204gers @@ -567,12 +606,27 @@ >>>489 string Any\ key\ to\ retry \b, DR-DOS Bootloader >>471 string Cannot\ load\ DOS\ >>487 string press\ key\ to\ retry \b, Open-DOS Bootloader +#?? >444 string KERNEL\ \ SYS >>314 string BOOT\ error! \b, FREE-DOS Bootloader >499 string KERNEL\ \ SYS >>305 string BOOT\ err!\0 \b, Free-DOS Bootloader >449 string KERNEL\ \ SYS >>319 string BOOT\ error! \b, FREE-DOS 0.5 Bootloader +# +>449 string Loading\ FreeDOS +>>0x1AF ulelong >0 \b, FREE-DOS 0.95,1.0 Bootloader +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +# +>331 string Error!.0 \b, FREE-DOS 1.0 bootloader +# >125 string Loading\ FreeDOS...\r >>311 string BOOT\ error!\r \b, FREE-DOS bootloader >>>441 ubyte&0xDF >0 @@ -706,13 +760,7 @@ #it also hangs with another message ("NF"). >>>>>492 string RENF \b, FAT (12 bit) >>>>>495 string RENF \b, FAT (16 bit) -# added by Joerg Jenderek -# http://syslinux.zytor.com/iso.php -0 ulelong 0x7c40eafa isolinux Loader -# http://syslinux.zytor.com/pxe.php -0 ulelong 0x007c05ea pxelinux Loader -0 ulelong 0x60669c66 pxelinux Loader -# loader end +# x86 bootloader end # updated by Joerg Jenderek at Sep 2007 >3 ubyte 0 #no active flag @@ -732,6 +780,7 @@ # older drives may use Near JuMP instruction E9 xx xx >0 lelong&0x009000EB 0x009000EB >0 lelong&0x000000E9 0x000000E9 +# minimal short forward jump found 03cx?? # maximal short forward jump is 07fx >1 ubyte <0xff \b, code offset 0x%x # mtools-3.9.8/msdos.h @@ -740,91 +789,92 @@ >>11 uleshort&0x000f x >>>11 uleshort <32769 >>>>11 uleshort >31 ->>>>>3 string >\0 \b, OEM-ID "%8.8s" +>>>>>21 ubyte&0xf0 0xF0 +>>>>>>3 string >\0 \b, OEM-ID "%8.8s" #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC ->>>>>>8 string IHC \b cached by Windows 9M ->>>>>11 uleshort >512 \b, Bytes/sector %u -#>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual) ->>>>>11 uleshort <512 \b, Bytes/sector %u ->>>>>13 ubyte >1 \b, sectors/cluster %u -#>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies) ->>>>>14 uleshort >32 \b, reserved sectors %u -#>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32) -#>>>>>14 uleshort >1 \b, reserved sectors %u -#>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16) ->>>>>14 uleshort <1 \b, reserved sectors %u ->>>>>16 ubyte >2 \b, FATs %u -#>>>>>16 ubyte =2 \b, FATs %u (usual) ->>>>>16 ubyte =1 \b, FAT %u ->>>>>16 ubyte >0 ->>>>>17 uleshort >0 \b, root entries %u -#>>>>>17 uleshort =0 \b, root entries %u=0 (usual Fat32) ->>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) -#>>>>>19 uleshort =0 \b, sectors %u=0 (usual Fat32) ->>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x -#>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) ->>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x ->>>>>22 uleshort >0 \b, sectors/FAT %u -#>>>>>22 uleshort =0 \b, sectors/FAT %u=0 (usual Fat32) ->>>>>26 ubyte >2 \b, heads %u -#>>>>>26 ubyte =2 \b, heads %u (usual floppy) ->>>>>26 ubyte =1 \b, heads %u +>>>>>>>8 string IHC \b cached by Windows 9M +>>>>>>11 uleshort >512 \b, Bytes/sector %u +#>>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual) +>>>>>>11 uleshort <512 \b, Bytes/sector %u +>>>>>>13 ubyte >1 \b, sectors/cluster %u +#>>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies) +>>>>>>14 uleshort >32 \b, reserved sectors %u +#>>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32) +#>>>>>>14 uleshort >1 \b, reserved sectors %u +#>>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16) +>>>>>>14 uleshort <1 \b, reserved sectors %u +>>>>>>16 ubyte >2 \b, FATs %u +#>>>>>>16 ubyte =2 \b, FATs %u (usual) +>>>>>>16 ubyte =1 \b, FAT %u +>>>>>>16 ubyte >0 +>>>>>>17 uleshort >0 \b, root entries %u +#>>>>>>17 uleshort =0 \b, root entries %u=0 (usual Fat32) +>>>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) +#>>>>>>19 uleshort =0 \b, sectors %u=0 (usual Fat32) +>>>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x +#>>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) +>>>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x +>>>>>>22 uleshort >0 \b, sectors/FAT %u +#>>>>>>22 uleshort =0 \b, sectors/FAT %u=0 (usual Fat32) +>>>>>>26 ubyte >2 \b, heads %u +#>>>>>>26 ubyte =2 \b, heads %u (usual floppy) +>>>>>>26 ubyte =1 \b, heads %u #skip for Digital Research DOS (version 3.41) 1440 kB Bootdisk ->>>>>38 ubyte !0x70 ->>>>>>28 ulelong >0 \b, hidden sectors %u -#>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy) ->>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB) -#>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) +>>>>>>38 ubyte !0x70 +>>>>>>>28 ulelong >0 \b, hidden sectors %u +#>>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy) +>>>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB) +#>>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) # FAT<32 specific ->>>>>82 string !FAT32 -#>>>>>>36 ubyte 0x80 \b, physical drive 0x%x=0x80 (usual harddisk) -#>>>>>>36 ubyte 0 \b, physical drive 0x%x=0 (usual floppy) ->>>>>>36 ubyte !0x80 ->>>>>>>36 ubyte !0 \b, physical drive 0x%x ->>>>>>37 ubyte >0 \b, reserved 0x%x -#>>>>>>37 ubyte =0 \b, reserved 0x%x ->>>>>>38 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>38 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>38 ubyte =0x29 ->>>>>>>39 ulelong x \b, serial number 0x%x ->>>>>>>43 string >>>>>>43 string >NO\ NAME \b, label: "%11.11s" ->>>>>>>43 string =NO\ NAME \b, unlabeled ->>>>>>54 string FAT \b, FAT ->>>>>>>54 string FAT12 \b (12 bit) ->>>>>>>54 string FAT16 \b (16 bit) +>>>>>>82 string !FAT32 +#>>>>>>>36 ubyte 0x80 \b, physical drive 0x%x=0x80 (usual harddisk) +#>>>>>>>36 ubyte 0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>>36 ubyte !0x80 +>>>>>>>>36 ubyte !0 \b, physical drive 0x%x +>>>>>>>37 ubyte >0 \b, reserved 0x%x +#>>>>>>>37 ubyte =0 \b, reserved 0x%x +>>>>>>>38 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>38 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>38 ubyte =0x29 +>>>>>>>>39 ulelong x \b, serial number 0x%x +>>>>>>>>43 string >>>>>>>43 string >NO\ NAME \b, label: "%11.11s" +>>>>>>>>43 string =NO\ NAME \b, unlabeled +>>>>>>>54 string FAT \b, FAT +>>>>>>>>54 string FAT12 \b (12 bit) +>>>>>>>>54 string FAT16 \b (16 bit) # FAT32 specific ->>>>>82 string FAT32 \b, FAT (32 bit) ->>>>>>36 ulelong x \b, sectors/FAT %u ->>>>>>40 uleshort >0 \b, extension flags %u -#>>>>>>40 uleshort =0 \b, extension flags %u ->>>>>>42 uleshort >0 \b, fsVersion %u -#>>>>>>42 uleshort =0 \b, fsVersion %u (usual) ->>>>>>44 ulelong >2 \b, rootdir cluster %u -#>>>>>>44 ulelong =2 \b, rootdir cluster %u -#>>>>>>44 ulelong =1 \b, rootdir cluster %u ->>>>>>48 uleshort >1 \b, infoSector %u -#>>>>>>48 uleshort =1 \b, infoSector %u (usual) ->>>>>>48 uleshort <1 \b, infoSector %u ->>>>>>50 uleshort >6 \b, Backup boot sector %u -#>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual) ->>>>>>50 uleshort <6 \b, Backup boot sector %u ->>>>>>54 ulelong >0 \b, reserved1 0x%x ->>>>>>58 ulelong >0 \b, reserved2 0x%x ->>>>>>62 ulelong >0 \b, reserved3 0x%x +>>>>>>82 string FAT32 \b, FAT (32 bit) +>>>>>>>36 ulelong x \b, sectors/FAT %u +>>>>>>>40 uleshort >0 \b, extension flags %u +#>>>>>>>40 uleshort =0 \b, extension flags %u +>>>>>>>42 uleshort >0 \b, fsVersion %u +#>>>>>>>42 uleshort =0 \b, fsVersion %u (usual) +>>>>>>>44 ulelong >2 \b, rootdir cluster %u +#>>>>>>>44 ulelong =2 \b, rootdir cluster %u +#>>>>>>>44 ulelong =1 \b, rootdir cluster %u +>>>>>>>48 uleshort >1 \b, infoSector %u +#>>>>>>>48 uleshort =1 \b, infoSector %u (usual) +>>>>>>>48 uleshort <1 \b, infoSector %u +>>>>>>>50 uleshort >6 \b, Backup boot sector %u +#>>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual) +>>>>>>>50 uleshort <6 \b, Backup boot sector %u +>>>>>>>54 ulelong >0 \b, reserved1 0x%x +>>>>>>>58 ulelong >0 \b, reserved2 0x%x +>>>>>>>62 ulelong >0 \b, reserved3 0x%x # same structure as FAT1X ->>>>>>64 ubyte >0x80 \b, physical drive 0x%x -#>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) ->>>>>>64 ubyte&0x7F >0 \b, physical drive 0x%x -#>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) ->>>>>>65 ubyte >0 \b, reserved 0x%x ->>>>>>66 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>66 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>66 ubyte =0x29 ->>>>>>>67 ulelong x \b, serial number 0x%x ->>>>>>>71 string >>>>>71 string >NO\ NAME \b, label: "%11.11s" ->>>>>>71 string =NO\ NAME \b, unlabeled +>>>>>>>64 ubyte >0x80 \b, physical drive 0x%x +#>>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) +>>>>>>>64 ubyte&0x7F >0 \b, physical drive 0x%x +#>>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>>65 ubyte >0 \b, reserved 0x%x +>>>>>>>66 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>66 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>66 ubyte =0x29 +>>>>>>>>67 ulelong x \b, serial number 0x%x +>>>>>>>>71 string >>>>>>71 string >NO\ NAME \b, label: "%11.11s" +>>>>>>>71 string =NO\ NAME \b, unlabeled ### FATs end >0x200 lelong 0x82564557 \b, BSD disklabel # FATX @@ -854,6 +904,13 @@ 0x18b string OS/2 OS/2 Boot Manager +# updated by Joerg Jenderek at Oct 2008!! +# http://syslinux.zytor.com/iso.php +0 ulelong 0x7c40eafa isolinux Loader +# http://syslinux.zytor.com/pxe.php +0 ulelong 0x007c05ea pxelinux Loader +0 ulelong 0x60669c66 pxelinux Loader + # added by Joerg Jenderek # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or # grub-1.94/kern/i386/pc/startup.S @@ -1324,6 +1381,14 @@ >0x10024 belong x (blocksize %d, >0x10060 string >\0 lockproto %s) +# BTRFS +0x10040 string _BHRfS_M BTRFS Filesystem +>0x1012b string >\0 (label "%s", +>0x10090 lelong x sectorsize %d, +>0x10094 lelong x nodesize %d, +>0x10098 lelong x leafsize %d) + + # dvdisaster's .ecc # From: "Nelson A. de Oliveira" 0 string *dvdisaster* dvdisaster error correction file Modified: vendor/file/dist/Magdir/graphviz ============================================================================== --- vendor/file/dist/Magdir/graphviz Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/graphviz Sat May 2 06:25:51 2009 (r191736) @@ -1,7 +1,10 @@ - #------------------------------------------------------------------------------ # graphviz: file(1) magic for http://www.graphviz.org/ -0 regex/100 [\r\n\t\ ]*graph[\r\n\t\ ]*.*\\{ graphviz graph text -!:mime text/vnd.graphviz -0 regex/100 [\r\n\t\ ]*digraph[\r\n\t\ ]*.*\\{ graphviz digraph text -!:mime text/vnd.graphviz + +# FIXME: These patterns match too generally. For example, the first +# line matches a LaTeX file containing the word "graph" (with a { +# following later) and the second line matches this file. +#0 regex/100 [\r\n\t\ ]*graph[\r\n\t\ ]+.*\\{ graphviz graph text +#!:mime text/vnd.graphviz +#0 regex/100 [\r\n\t\ ]*digraph[\r\n\t\ ]+.*\\{ graphviz digraph text +#!:mime text/vnd.graphviz Modified: vendor/file/dist/Magdir/images ============================================================================== --- vendor/file/dist/Magdir/images Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/images Sat May 2 06:25:51 2009 (r191736) @@ -110,6 +110,7 @@ # GIF 0 string GIF8 GIF image data !:mime image/gif +!:apple 8BIMGIFf >4 string 7a \b, version 8%s, >4 string 9a \b, version 8%s, >6 leshort >0 %hd x @@ -600,3 +601,7 @@ # Wavelet Scalar Quantization format used in gray-scale fingerprint images # From Tano M Fotang 0 string \xff\xa0\xff\xa8\x00 Wavelet Scalar Quantization image data + +# JPEG 2000 Code Stream Bitmap +# From Petr Splichal +0 string \xFF\x4F\xFF\x51\x00 JPEG-2000 Code Stream Bitmap data Modified: vendor/file/dist/Magdir/jpeg ============================================================================== --- vendor/file/dist/Magdir/jpeg Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/jpeg Sat May 2 06:25:51 2009 (r191736) @@ -10,6 +10,7 @@ # 0 beshort 0xffd8 JPEG image data !:mime image/jpeg +!:apple 8BIMJPEG !:strength +1 >6 string JFIF \b, JFIF standard # The following added by Erik Rossen 1999-09-06 Modified: vendor/file/dist/Magdir/mach ============================================================================== --- vendor/file/dist/Magdir/mach Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/mach Sat May 2 06:25:51 2009 (r191736) @@ -4,7 +4,7 @@ # Java ByteCode, so they are both handled in the file "cafebabe". # The "feedface" ones are handled herein. #------------------------------------------------------------ -0 lelong&0xfeffffff 0xfeedface Mach-O +0 lelong&0xfffffffe 0xfeedface Mach-O >0 byte 0xcf 64-bit >12 lelong 1 object >12 lelong 2 executable Modified: vendor/file/dist/Magdir/macintosh ============================================================================== --- vendor/file/dist/Magdir/macintosh Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/macintosh Sat May 2 06:25:51 2009 (r191736) @@ -11,6 +11,8 @@ # Stuffit archives are the de facto standard of compression for Macintosh # files obtained from most archives. (franklsm@tuns.ca) 0 string SIT! StuffIt Archive (data) +!:mime application/x-stuffit +!:apple SIT!SIT! >2 string x : %s 0 string SITD StuffIt Deluxe (data) >2 string x : %s @@ -20,6 +22,7 @@ # Newer StuffIt archives (grant@netbsd.org) 0 string StuffIt StuffIt Archive !:mime application/x-stuffit +!:apple SIT!SIT! #>162 string >0 : %s # Macintosh Applications and Installation binaries (franklsm@tuns.ca) Modified: vendor/file/dist/Magdir/msdos ============================================================================== --- vendor/file/dist/Magdir/msdos Sat May 2 06:12:38 2009 (r191735) +++ vendor/file/dist/Magdir/msdos Sat May 2 06:25:51 2009 (r191736) @@ -4,15 +4,15 @@ # # .BAT files (Daniel Quinlan, quinlan@yggdrasil.com) -# updated by Joerg Jenderek +# updated by Joerg Jenderek at Oct 2008 0 string @ ->1 string/cB \ echo\ off MS-DOS batch file text +>1 string/cB \ echo\ off DOS batch file text !:mime text/x-msdos-batch ->1 string/cB echo\ off MS-DOS batch file text +>1 string/cB echo\ off DOS batch file text !:mime text/x-msdos-batch ->1 string/cB rem\ MS-DOS batch file text +>1 string/cB rem\ DOS batch file text !:mime text/x-msdos-batch ->1 string/cB set\ MS-DOS batch file text +>1 string/cB set\ DOS batch file text !:mime text/x-msdos-batch @@ -285,8 +285,9 @@ # Uncommenting only the first two lines will cover about 2/3 of COM files, # but it isn't feasible to match all COM files since there must be at least # two dozen different one-byte "magics". -#0 byte 0xe9 DOS executable (COM) -#>0x1FE leshort 0xAA55 \b, boot code +# test too generic ? +0 byte 0xe9 DOS executable (COM) +>0x1FE leshort 0xAA55 \b, boot code >6 string SFX\ of\ LHarc (%s) 0 belong 0xffffffff DOS executable (device driver) #CMD640X2.SYS @@ -309,25 +310,38 @@ >>77 string >\x40 >>>77 string <\x5B >>>>77 string x \b, name: %.8s -#0 byte 0x8c DOS executable (COM) -# 0xeb conflicts with "sequent" magic -#0 byte 0xeb DOS executable (COM) -#>0x1FE leshort 0xAA55 \b, boot code -#>85 string UPX \b, UPX compressed -#>4 string \ $ARX \b, ARX self-extracting archive -#>4 string \ $LHarc \b, LHarc self-extracting archive -#>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive +# test too generic ? +0 byte 0x8c DOS executable (COM) +# updated by Joerg Jenderek at Oct 2008 +0 ulelong 0xffff10eb DR-DOS executable (COM) +# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb +0 ubeshort&0xeb8d >0xeb00 +# DR-DOS STACKER.COM SCREATE.SYS missed +>0 byte 0xeb DOS executable (COM) +>>0x1FE leshort 0xAA55 \b, boot code +>>85 string UPX \b, UPX compressed +>>4 string \ $ARX \b, ARX self-extracting archive +>>4 string \ $LHarc \b, LHarc self-extracting archive +>>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive +# updated by Joerg Jenderek at Oct 2008 #0 byte 0xb8 COM executable +0 uleshort&0x80ff 0x00b8 # modified by Joerg Jenderek ->1 lelong !0x21cd4cff for DOS +>1 lelong !0x21cd4cff COM executable for DOS # http://syslinux.zytor.com/comboot.php # (32-bit COMBOOT) programs *.C32 contain 32-bit code and run in flat-memory 32-bit protected mode # start with assembler instructions mov eax,21cd4cffh ->1 lelong 0x21cd4cff (32-bit COMBOOT) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From rdivacky at FreeBSD.org Sat May 2 07:02:32 2009 From: rdivacky at FreeBSD.org (Roman Divacky) Date: Sat May 2 07:02:38 2009 Subject: svn commit: r191737 - head/usr.bin/ncal Message-ID: <200905020702.n4272VGS075497@svn.freebsd.org> Author: rdivacky Date: Sat May 2 07:02:31 2009 New Revision: 191737 URL: http://svn.freebsd.org/changeset/base/191737 Log: Mention -h in usage() and manpage. Rename term_{r,e} to term_{so,se}. Suggested by: ru Approved by: ed (mentor) Modified: head/usr.bin/ncal/ncal.1 head/usr.bin/ncal/ncal.c Modified: head/usr.bin/ncal/ncal.1 ============================================================================== --- head/usr.bin/ncal/ncal.1 Sat May 2 06:25:51 2009 (r191736) +++ head/usr.bin/ncal/ncal.1 Sat May 2 07:02:31 2009 (r191737) @@ -33,24 +33,24 @@ .Nd displays a calendar and the date of Easter .Sh SYNOPSIS .Nm -.Op Fl jy +.Op Fl hjy .Oo .Op Ar month .Ar year .Oc .Nm -.Op Fl j +.Op Fl hj .Fl m Ar month .Op Ar year .Nm ncal -.Op Fl jJpwy +.Op Fl hjJpwy .Op Fl s Ar country_code .Oo .Op Ar month .Ar year .Oc .Nm ncal -.Op Fl Jeo +.Op Fl hJeo .Op Ar year .Sh DESCRIPTION The @@ -65,6 +65,8 @@ the current month is displayed. .Pp The options are as follows: .Bl -tag -width indent +.It Fl h +Turns off highlighting of today. .It Fl J Display Julian Calendar, if combined with the .Fl e Modified: head/usr.bin/ncal/ncal.c ============================================================================== --- head/usr.bin/ncal/ncal.c Sat May 2 06:25:51 2009 (r191736) +++ head/usr.bin/ncal/ncal.c Sat May 2 07:02:31 2009 (r191737) @@ -161,7 +161,7 @@ char jdaystr[] = " 1 2 3 4 int flag_weeks; /* user wants number of week */ int nswitch; /* user defined switch date */ int nswitchb; /* switch date for backward compatibility */ -const char *term_r, *term_e; +const char *term_so, *term_se; int today; char *center(char *s, char *t, int w); @@ -207,14 +207,14 @@ main(int argc, char *argv[]) time_t t; struct tm *tm1; - term_e = term_r = NULL; + term_se = term_so = NULL; today = 0; if (isatty(STDOUT_FILENO) && tgetent(tbuf, NULL) == 1) { date dt; /* handy date */ b = cbuf; - term_r = tgetstr("so", &b); - term_e = tgetstr("se", &b); + term_so = tgetstr("so", &b); + term_se = tgetstr("se", &b); t = time(NULL); tm1 = localtime(&t); dt.y = tm1->tm_year + 1900; @@ -272,7 +272,7 @@ main(int argc, char *argv[]) flag_julian_cal = 1; break; case 'h': - term_r = term_e = NULL; + term_so = term_se = NULL; break; case 'e': if (flag_backward) @@ -382,10 +382,10 @@ usage(void) { fputs( - "usage: cal [-jy] [[month] year]\n" - " cal [-j] [-m month] [year]\n" - " ncal [-Jjpwy] [-s country_code] [[month] year]\n" - " ncal [-Jeo] [year]\n", stderr); + "usage: cal [-hjy] [[month] year]\n" + " cal [-hj] [-m month] [year]\n" + " ncal [-hJjpwy] [-s country_code] [[month] year]\n" + " ncal [-hJeo] [year]\n", stderr); exit(EX_USAGE); } @@ -671,8 +671,8 @@ mkmonth(int y, int m, int jd_flag, struc for (i = 0; i != 7; i++) { l = 0; for (j = firstm + i, k = 0; j < last; j += 7, k += dw) { - if (j == today && (term_r != NULL && term_e != NULL)) { - l = strlen(term_r); + if (j == today && (term_so != NULL && term_se != NULL)) { + l = strlen(term_so); if (jd_flag) dt.d = j - jan1 + 1; else @@ -683,11 +683,11 @@ mkmonth(int y, int m, int jd_flag, struc memcpy(mlines->lines[i] + k + l, ds + dt.d * dw, dw); /* highlight on */ - memcpy(mlines->lines[i] + k + 1, term_r, l); + memcpy(mlines->lines[i] + k + 1, term_so, l); /* highlight off */ - memcpy(mlines->lines[i] + k + l + dw, term_e, - strlen(term_e)); - l = strlen(term_e) + strlen(term_r); + memcpy(mlines->lines[i] + k + l + dw, term_se, + strlen(term_se)); + l = strlen(term_se) + strlen(term_so); continue; } if (j >= first) { @@ -790,8 +790,8 @@ mkmonthb(int y, int m, int jd_flag, stru l = 0; for (j = firsts + 7 * i, k = 0; j < last && k != dw * 7; j++, k += dw) { - if (j == today && (term_r != NULL && term_e != NULL)) { - l = strlen(term_r); + if (j == today && (term_so != NULL && term_se != NULL)) { + l = strlen(term_so); if (jd_flag) dt.d = j - jan1 + 1; else @@ -802,11 +802,11 @@ mkmonthb(int y, int m, int jd_flag, stru memcpy(mlines->lines[i] + k + l, ds + dt.d * dw, dw); /* highlight on */ - memcpy(mlines->lines[i] + k + 1, term_r, l); + memcpy(mlines->lines[i] + k + 1, term_so, l); /* highlight off */ - memcpy(mlines->lines[i] + k + l + dw, term_e, - strlen(term_e)); - l = strlen(term_e) + strlen(term_r); + memcpy(mlines->lines[i] + k + l + dw, term_se, + strlen(term_se)); + l = strlen(term_se) + strlen(term_so); continue; } if (j >= first) { From zec at FreeBSD.org Sat May 2 08:16:27 2009 From: zec at FreeBSD.org (Marko Zec) Date: Sat May 2 08:16:33 2009 Subject: svn commit: r191738 - in head/sys: net netinet netinet6 netipsec Message-ID: <200905020816.n428GQ6B076923@svn.freebsd.org> Author: zec Date: Sat May 2 08:16:26 2009 New Revision: 191738 URL: http://svn.freebsd.org/changeset/base/191738 Log: Make indentation more uniform accross vnet container structs. This is a purely cosmetic / NOP change. Reviewed by: bz Approved by: julian (mentor) Verified by: svn diff -x -w producing no output Modified: head/sys/net/if_gif.h head/sys/net/vnet.h head/sys/netinet/ip_fw.h head/sys/netinet/vinet.h head/sys/netinet6/vinet6.h head/sys/netipsec/vipsec.h Modified: head/sys/net/if_gif.h ============================================================================== --- head/sys/net/if_gif.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/net/if_gif.h Sat May 2 08:16:26 2009 (r191738) @@ -117,11 +117,11 @@ int gif_encapcheck(const struct mbuf *, */ struct vnet_gif { - LIST_HEAD(, gif_softc) _gif_softc_list; - int _max_gif_nesting; - int _parallel_tunnels; - int _ip_gif_ttl; - int _ip6_gif_hlim; + LIST_HEAD(, gif_softc) _gif_softc_list; + int _max_gif_nesting; + int _parallel_tunnels; + int _ip_gif_ttl; + int _ip6_gif_hlim; }; #ifndef VIMAGE Modified: head/sys/net/vnet.h ============================================================================== --- head/sys/net/vnet.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/net/vnet.h Sat May 2 08:16:26 2009 (r191738) @@ -36,25 +36,25 @@ #include struct vnet_net { - int _if_index; - struct ifindex_entry *_ifindex_table; - struct ifnethead _ifnet; - struct ifgrouphead _ifg_head; + int _if_index; + struct ifindex_entry * _ifindex_table; + struct ifnethead _ifnet; + struct ifgrouphead _ifg_head; - int _if_indexlim; - struct knlist _ifklist; + int _if_indexlim; + struct knlist _ifklist; - struct rtstat _rtstat; - struct radix_node_head *_rt_tables[RT_MAXFIBS][AF_MAX+1]; - int _rttrash; - uma_zone_t _rtzone; + struct rtstat _rtstat; + struct radix_node_head *_rt_tables[RT_MAXFIBS][AF_MAX+1]; + int _rttrash; + uma_zone_t _rtzone; - struct ifnet *_loif; - LIST_HEAD(, lo_softc) _lo_list; + struct ifnet * _loif; + LIST_HEAD(, lo_softc) _lo_list; - LIST_HEAD(, rawcb) _rawcb_list; + LIST_HEAD(, rawcb) _rawcb_list; - int _ether_ipfw; + int _ether_ipfw; }; /* Size guard. See sys/vimage.h. */ Modified: head/sys/netinet/ip_fw.h ============================================================================== --- head/sys/netinet/ip_fw.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/netinet/ip_fw.h Sat May 2 08:16:26 2009 (r191738) @@ -689,33 +689,33 @@ struct eventhandler_entry; * Stack virtualization support. */ struct vnet_ipfw { - int _fw_enable; - int _fw6_enable; - u_int32_t _set_disable; - int _fw_deny_unknown_exthdrs; - int _fw_verbose; - int _verbose_limit; - int _autoinc_step; - ipfw_dyn_rule **_ipfw_dyn_v; - uma_zone_t _ipfw_dyn_rule_zone; - struct ip_fw_chain _layer3_chain; - u_int32_t _dyn_buckets; - u_int32_t _curr_dyn_buckets; - u_int32_t _dyn_ack_lifetime; - u_int32_t _dyn_syn_lifetime; - u_int32_t _dyn_fin_lifetime; - u_int32_t _dyn_rst_lifetime; - u_int32_t _dyn_udp_lifetime; - u_int32_t _dyn_short_lifetime; - u_int32_t _dyn_keepalive_interval; - u_int32_t _dyn_keepalive_period; - u_int32_t _dyn_keepalive; - u_int32_t _static_count; - u_int32_t _static_len; - u_int32_t _dyn_count; - u_int32_t _dyn_max; - u_int64_t _norule_counter; - struct callout _ipfw_timeout; + int _fw_enable; + int _fw6_enable; + u_int32_t _set_disable; + int _fw_deny_unknown_exthdrs; + int _fw_verbose; + int _verbose_limit; + int _autoinc_step; + ipfw_dyn_rule ** _ipfw_dyn_v; + uma_zone_t _ipfw_dyn_rule_zone; + struct ip_fw_chain _layer3_chain; + u_int32_t _dyn_buckets; + u_int32_t _curr_dyn_buckets; + u_int32_t _dyn_ack_lifetime; + u_int32_t _dyn_syn_lifetime; + u_int32_t _dyn_fin_lifetime; + u_int32_t _dyn_rst_lifetime; + u_int32_t _dyn_udp_lifetime; + u_int32_t _dyn_short_lifetime; + u_int32_t _dyn_keepalive_interval; + u_int32_t _dyn_keepalive_period; + u_int32_t _dyn_keepalive; + u_int32_t _static_count; + u_int32_t _static_len; + u_int32_t _dyn_count; + u_int32_t _dyn_max; + u_int64_t _norule_counter; + struct callout _ipfw_timeout; struct eventhandler_entry *_ifaddr_event_tag; }; Modified: head/sys/netinet/vinet.h ============================================================================== --- head/sys/netinet/vinet.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/netinet/vinet.h Sat May 2 08:16:26 2009 (r191738) @@ -51,166 +51,166 @@ #include struct vnet_inet { - struct in_ifaddrhashhead *_in_ifaddrhashtbl; - struct in_ifaddrhead _in_ifaddrhead; - u_long _in_ifaddrhmask; - - int _arpt_keep; - int _arp_maxtries; - int _useloopback; - int _arp_proxyall; - int _subnetsarelocal; - int _sameprefixcarponly; - - int _ipforwarding; - int _ipstealth; - int _ipfastforward_active; - int _ipsendredirects; - int _ip_defttl; - int _ip_keepfaith; - int _ip_sendsourcequench; - int _ip_do_randomid; - int _ip_checkinterface; - int _ip_output_flowtable_size; - u_short _ip_id; - - uma_zone_t _ipq_zone; - int _nipq; /* Total # of reass queues */ - int _maxnipq; /* Admin. limit on # reass queues. */ - int _maxfragsperpacket; + struct in_ifaddrhashhead *_in_ifaddrhashtbl; + struct in_ifaddrhead _in_ifaddrhead; + u_long _in_ifaddrhmask; + + int _arpt_keep; + int _arp_maxtries; + int _useloopback; + int _arp_proxyall; + int _subnetsarelocal; + int _sameprefixcarponly; + + int _ipforwarding; + int _ipstealth; + int _ipfastforward_active; + int _ipsendredirects; + int _ip_defttl; + int _ip_keepfaith; + int _ip_sendsourcequench; + int _ip_do_randomid; + int _ip_checkinterface; + int _ip_output_flowtable_size; + u_short _ip_id; + + uma_zone_t _ipq_zone; + int _nipq; /* Total # of reass queues */ + int _maxnipq; /* Admin. limit on # reass queues. */ + int _maxfragsperpacket; TAILQ_HEAD(ipqhead, ipq) _ipq[IPREASS_NHASH]; - struct inpcbhead _tcb; /* head of queue of active tcpcb's */ - struct inpcbinfo _tcbinfo; - struct tcpstat _tcpstat; /* tcp statistics */ - struct tcp_hostcache _tcp_hostcache; - struct callout _tcp_hc_callout; - - uma_zone_t _tcp_reass_zone; - uma_zone_t _tcpcb_zone; - uma_zone_t _tcptw_zone; - uma_zone_t _sack_hole_zone; - - struct tcp_syncache _tcp_syncache; - int _tcp_syncookies; - int _tcp_syncookiesonly; - int _tcp_sc_rst_sock_fail; - - struct inpcbhead _divcb; - struct inpcbinfo _divcbinfo; - TAILQ_HEAD(, tcptw) _twq_2msl; - - int _tcp_mssdflt; - int _tcp_v6mssdflt; - int _tcp_minmss; - int _tcp_do_rfc1323; - int _icmp_may_rst; - int _tcp_isn_reseed_interval; - int _tcp_inflight_enable; - int _tcp_inflight_rttthresh; - int _tcp_inflight_min; - int _tcp_inflight_max; - int _tcp_inflight_stab; - int _nolocaltimewait; - int _path_mtu_discovery; - int _ss_fltsz; - int _ss_fltsz_local; - int _tcp_do_newreno; - int _tcp_do_tso; - int _tcp_do_autosndbuf; - int _tcp_autosndbuf_inc; - int _tcp_autosndbuf_max; - int _tcp_do_sack; - int _tcp_sack_maxholes; - int _tcp_sack_globalmaxholes; - int _tcp_sack_globalholes; - int _blackhole; - int _tcp_delack_enabled; - int _drop_synfin; - int _tcp_do_rfc3042; - int _tcp_do_rfc3390; - int _tcp_do_rfc3465; - int _tcp_abc_l_var; - int _tcp_do_ecn; - int _tcp_ecn_maxretries; - int _tcp_insecure_rst; - int _tcp_do_autorcvbuf; - int _tcp_autorcvbuf_inc; - int _tcp_autorcvbuf_max; - int _tcp_reass_maxseg; - int _tcp_reass_qsize; - int _tcp_reass_maxqlen; - int _tcp_reass_overflows; - - u_char _isn_secret[32]; - int _isn_last_reseed; - u_int32_t _isn_offset; - u_int32_t _isn_offset_old; - - struct inpcbhead _udb; - struct inpcbinfo _udbinfo; - struct udpstat _udpstat; - int _udp_blackhole; - - struct inpcbhead _ripcb; - struct inpcbinfo _ripcbinfo; - struct socket *_ip_mrouter; - - struct socket *_ip_rsvpd; - int _ip_rsvp_on; - int _rsvp_on; - - struct icmpstat _icmpstat; - struct ipstat _ipstat; - - LIST_HEAD(, igmp_ifinfo) _igi_head; - struct igmpstat _igmpstat; - int _interface_timers_running; - int _state_change_timers_running; - int _current_state_timers_running; - int _igmp_recvifkludge; - int _igmp_sendra; - int _igmp_sendlocal; - int _igmp_v1enable; - int _igmp_v2enable; - int _igmp_legacysupp; - int _igmp_sgalloc; - int _igmp_default_version; - struct timeval _igmp_gsrdelay; - - int _rtq_timeout; - int _rtq_reallyold; - int _rtq_minreallyold; - int _rtq_toomany; - struct callout _rtq_timer; - - int _ipport_lowfirstauto; - int _ipport_lowlastauto; - int _ipport_firstauto; - int _ipport_lastauto; - int _ipport_hifirstauto; - int _ipport_hilastauto; - int _ipport_reservedhigh; - int _ipport_reservedlow; - int _ipport_randomized; - int _ipport_randomcps; - int _ipport_randomtime; - int _ipport_stoprandom; - int _ipport_tcpallocs; - int _ipport_tcplastcount; - - int _icmpmaskrepl; - u_int _icmpmaskfake; - int _drop_redirect; - int _log_redirect; - int _icmplim; - int _icmplim_output; - char _reply_src[IFNAMSIZ]; - int _icmp_rfi; - int _icmp_quotelen; - int _icmpbmcastecho; + struct inpcbhead _tcb; /* head of queue of active tcpcb's */ + struct inpcbinfo _tcbinfo; + struct tcpstat _tcpstat; /* tcp statistics */ + struct tcp_hostcache _tcp_hostcache; + struct callout _tcp_hc_callout; + + uma_zone_t _tcp_reass_zone; + uma_zone_t _tcpcb_zone; + uma_zone_t _tcptw_zone; + uma_zone_t _sack_hole_zone; + + struct tcp_syncache _tcp_syncache; + int _tcp_syncookies; + int _tcp_syncookiesonly; + int _tcp_sc_rst_sock_fail; + + struct inpcbhead _divcb; + struct inpcbinfo _divcbinfo; + TAILQ_HEAD(, tcptw) _twq_2msl; + + int _tcp_mssdflt; + int _tcp_v6mssdflt; + int _tcp_minmss; + int _tcp_do_rfc1323; + int _icmp_may_rst; + int _tcp_isn_reseed_interval; + int _tcp_inflight_enable; + int _tcp_inflight_rttthresh; + int _tcp_inflight_min; + int _tcp_inflight_max; + int _tcp_inflight_stab; + int _nolocaltimewait; + int _path_mtu_discovery; + int _ss_fltsz; + int _ss_fltsz_local; + int _tcp_do_newreno; + int _tcp_do_tso; + int _tcp_do_autosndbuf; + int _tcp_autosndbuf_inc; + int _tcp_autosndbuf_max; + int _tcp_do_sack; + int _tcp_sack_maxholes; + int _tcp_sack_globalmaxholes; + int _tcp_sack_globalholes; + int _blackhole; + int _tcp_delack_enabled; + int _drop_synfin; + int _tcp_do_rfc3042; + int _tcp_do_rfc3390; + int _tcp_do_rfc3465; + int _tcp_abc_l_var; + int _tcp_do_ecn; + int _tcp_ecn_maxretries; + int _tcp_insecure_rst; + int _tcp_do_autorcvbuf; + int _tcp_autorcvbuf_inc; + int _tcp_autorcvbuf_max; + int _tcp_reass_maxseg; + int _tcp_reass_qsize; + int _tcp_reass_maxqlen; + int _tcp_reass_overflows; + + u_char _isn_secret[32]; + int _isn_last_reseed; + u_int32_t _isn_offset; + u_int32_t _isn_offset_old; + + struct inpcbhead _udb; + struct inpcbinfo _udbinfo; + struct udpstat _udpstat; + int _udp_blackhole; + + struct inpcbhead _ripcb; + struct inpcbinfo _ripcbinfo; + struct socket * _ip_mrouter; + + struct socket * _ip_rsvpd; + int _ip_rsvp_on; + int _rsvp_on; + + struct icmpstat _icmpstat; + struct ipstat _ipstat; + + LIST_HEAD(, igmp_ifinfo) _igi_head; + struct igmpstat _igmpstat; + int _interface_timers_running; + int _state_change_timers_running; + int _current_state_timers_running; + int _igmp_recvifkludge; + int _igmp_sendra; + int _igmp_sendlocal; + int _igmp_v1enable; + int _igmp_v2enable; + int _igmp_legacysupp; + int _igmp_sgalloc; + int _igmp_default_version; + struct timeval _igmp_gsrdelay; + + int _rtq_timeout; + int _rtq_reallyold; + int _rtq_minreallyold; + int _rtq_toomany; + struct callout _rtq_timer; + + int _ipport_lowfirstauto; + int _ipport_lowlastauto; + int _ipport_firstauto; + int _ipport_lastauto; + int _ipport_hifirstauto; + int _ipport_hilastauto; + int _ipport_reservedhigh; + int _ipport_reservedlow; + int _ipport_randomized; + int _ipport_randomcps; + int _ipport_randomtime; + int _ipport_stoprandom; + int _ipport_tcpallocs; + int _ipport_tcplastcount; + + int _icmpmaskrepl; + u_int _icmpmaskfake; + int _drop_redirect; + int _log_redirect; + int _icmplim; + int _icmplim_output; + char _reply_src[IFNAMSIZ]; + int _icmp_rfi; + int _icmp_quotelen; + int _icmpbmcastecho; - int _fw_one_pass; + int _fw_one_pass; }; /* Size guard. See sys/vimage.h. */ Modified: head/sys/netinet6/vinet6.h ============================================================================== --- head/sys/netinet6/vinet6.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/netinet6/vinet6.h Sat May 2 08:16:26 2009 (r191738) @@ -48,112 +48,112 @@ #include struct vnet_inet6 { - struct in6_ifaddr * _in6_ifaddr; + struct in6_ifaddr * _in6_ifaddr; - u_int _frag6_nfragpackets; - u_int _frag6_nfrags; - struct ip6q _ip6q; + u_int _frag6_nfragpackets; + u_int _frag6_nfrags; + struct ip6q _ip6q; - struct in6_addrpolicy _defaultaddrpolicy; + struct in6_addrpolicy _defaultaddrpolicy; TAILQ_HEAD(, addrsel_policyent) _addrsel_policytab; - u_int _in6_maxmtu; - int _ip6_auto_linklocal; - int _rtq_minreallyold6; - int _rtq_reallyold6; - int _rtq_toomany6; - - struct ip6stat _ip6stat; - struct rip6stat _rip6stat; - struct icmp6stat _icmp6stat; - - int _rtq_timeout6; - struct callout _rtq_timer6; - struct callout _rtq_mtutimer; - struct callout _nd6_slowtimo_ch; - struct callout _nd6_timer_ch; - struct callout _in6_tmpaddrtimer_ch; - - int _nd6_inuse; - int _nd6_allocated; - int _nd6_onlink_ns_rfc4861; - struct nd_drhead _nd_defrouter; - struct nd_prhead _nd_prefix; - struct ifnet * _nd6_defifp; - int _nd6_defifindex; - - struct scope6_id _sid_default; - - TAILQ_HEAD(, dadq) _dadq; - int _dad_init; - - int _icmp6errpps_count; - struct timeval _icmp6errppslim_last; - - int _ip6_forwarding; - int _ip6_sendredirects; - int _ip6_defhlim; - int _ip6_defmcasthlim; - int _ip6_accept_rtadv; - int _ip6_maxfragpackets; - int _ip6_maxfrags; - int _ip6_log_interval; - int _ip6_hdrnestlimit; - int _ip6_dad_count; - int _ip6_auto_flowlabel; - int _ip6_use_deprecated; - int _ip6_rr_prune; - int _ip6_mcast_pmtu; - int _ip6_v6only; - int _ip6_keepfaith; - int _ip6stealth; - time_t _ip6_log_time; - - int _pmtu_expire; - int _pmtu_probe; - u_long _rip6_sendspace; - u_long _rip6_recvspace; - int _icmp6_rediraccept; - int _icmp6_redirtimeout; - int _icmp6errppslim; - int _icmp6_nodeinfo; - int _udp6_sendspace; - int _udp6_recvspace; - int _ip6qmaxlen; - int _ip6_prefer_tempaddr; - - int _nd6_prune; - int _nd6_delay; - int _nd6_umaxtries; - int _nd6_mmaxtries; - int _nd6_useloopback; - int _nd6_gctimer; - int _nd6_maxndopt; - int _nd6_maxnudhint; - int _nd6_maxqueuelen; - int _nd6_debug; - int _nd6_recalc_reachtm_interval; - int _dad_ignore_ns; - int _dad_maxtry; - int _ip6_use_tempaddr; - int _ip6_desync_factor; - u_int32_t _ip6_temp_preferred_lifetime; - u_int32_t _ip6_temp_valid_lifetime; - - struct socket * _ip6_mrouter; - int _ip6_mrouter_ver; - int _pim6; - u_int _mrt6debug; - - int _ip6_temp_regen_advance; - int _ip6_use_defzone; - - struct ip6_pktopts _ip6_opts; - - struct timeval _mld_gsrdelay; - LIST_HEAD(, mld_ifinfo) _mli_head; - int _interface_timers_running6; - int _state_change_timers_running6; - int _current_state_timers_running6; + u_int _in6_maxmtu; + int _ip6_auto_linklocal; + int _rtq_minreallyold6; + int _rtq_reallyold6; + int _rtq_toomany6; + + struct ip6stat _ip6stat; + struct rip6stat _rip6stat; + struct icmp6stat _icmp6stat; + + int _rtq_timeout6; + struct callout _rtq_timer6; + struct callout _rtq_mtutimer; + struct callout _nd6_slowtimo_ch; + struct callout _nd6_timer_ch; + struct callout _in6_tmpaddrtimer_ch; + + int _nd6_inuse; + int _nd6_allocated; + int _nd6_onlink_ns_rfc4861; + struct nd_drhead _nd_defrouter; + struct nd_prhead _nd_prefix; + struct ifnet * _nd6_defifp; + int _nd6_defifindex; + + struct scope6_id _sid_default; + + TAILQ_HEAD(, dadq) _dadq; + int _dad_init; + + int _icmp6errpps_count; + struct timeval _icmp6errppslim_last; + + int _ip6_forwarding; + int _ip6_sendredirects; + int _ip6_defhlim; + int _ip6_defmcasthlim; + int _ip6_accept_rtadv; + int _ip6_maxfragpackets; + int _ip6_maxfrags; + int _ip6_log_interval; + int _ip6_hdrnestlimit; + int _ip6_dad_count; + int _ip6_auto_flowlabel; + int _ip6_use_deprecated; + int _ip6_rr_prune; + int _ip6_mcast_pmtu; + int _ip6_v6only; + int _ip6_keepfaith; + int _ip6stealth; + time_t _ip6_log_time; + + int _pmtu_expire; + int _pmtu_probe; + u_long _rip6_sendspace; + u_long _rip6_recvspace; + int _icmp6_rediraccept; + int _icmp6_redirtimeout; + int _icmp6errppslim; + int _icmp6_nodeinfo; + int _udp6_sendspace; + int _udp6_recvspace; + int _ip6qmaxlen; + int _ip6_prefer_tempaddr; + + int _nd6_prune; + int _nd6_delay; + int _nd6_umaxtries; + int _nd6_mmaxtries; + int _nd6_useloopback; + int _nd6_gctimer; + int _nd6_maxndopt; + int _nd6_maxnudhint; + int _nd6_maxqueuelen; + int _nd6_debug; + int _nd6_recalc_reachtm_interval; + int _dad_ignore_ns; + int _dad_maxtry; + int _ip6_use_tempaddr; + int _ip6_desync_factor; + u_int32_t _ip6_temp_preferred_lifetime; + u_int32_t _ip6_temp_valid_lifetime; + + struct socket * _ip6_mrouter; + int _ip6_mrouter_ver; + int _pim6; + u_int _mrt6debug; + + int _ip6_temp_regen_advance; + int _ip6_use_defzone; + + struct ip6_pktopts _ip6_opts; + + struct timeval _mld_gsrdelay; + LIST_HEAD(, mld_ifinfo) _mli_head; + int _interface_timers_running6; + int _state_change_timers_running6; + int _current_state_timers_running6; }; /* Size guard. See sys/vimage.h. */ Modified: head/sys/netipsec/vipsec.h ============================================================================== --- head/sys/netipsec/vipsec.h Sat May 2 07:02:31 2009 (r191737) +++ head/sys/netipsec/vipsec.h Sat May 2 08:16:26 2009 (r191738) @@ -47,8 +47,8 @@ struct vnet_ipsec { int _ipsec_debug; - struct ipsecstat _ipsec4stat; - struct secpolicy _ip4_def_policy; + struct ipsecstat _ipsec4stat; + struct secpolicy _ip4_def_policy; int _ip4_esp_trans_deflev; int _ip4_esp_net_deflev; From obrien at FreeBSD.org Sat May 2 08:22:51 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Sat May 2 08:23:06 2009 Subject: svn commit: r191739 - in vendor/file/dist: . Magdir tests Message-ID: <200905020822.n428MntB077088@svn.freebsd.org> Author: obrien Date: Sat May 2 08:22:49 2009 New Revision: 191739 URL: http://svn.freebsd.org/changeset/base/191739 Log: Virgin import of Christos Zoulas's FILE 5.00. Added: vendor/file/dist/Magdir/wireless vendor/file/dist/Makefile.am-src (contents, props changed) vendor/file/dist/cdf.c (contents, props changed) vendor/file/dist/cdf.h (contents, props changed) vendor/file/dist/cdf_time.c (contents, props changed) vendor/file/dist/encoding.c (contents, props changed) vendor/file/dist/readcdf.c (contents, props changed) Modified: vendor/file/dist/asprintf.c (props changed) vendor/file/dist/elfclass.h (props changed) vendor/file/dist/getopt_long.c (props changed) vendor/file/dist/mygetopt.h (props changed) vendor/file/dist/tests/Makefile.am (props changed) vendor/file/dist/tests/Makefile.in (props changed) vendor/file/dist/tests/test.c (props changed) vendor/file/dist/vasprintf.c (props changed) Added: vendor/file/dist/Magdir/wireless ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/file/dist/Magdir/wireless Sat May 2 08:22:49 2009 (r191739) @@ -0,0 +1,5 @@ +#------------------------------------------------------------------------------ +# wireless-regdb: file(1) magic for CRDA wireless-regdb file format +# +0 string RGDB CRDA wireless regulatory database file +>4 belong 19 (Version 1) Added: vendor/file/dist/Makefile.am-src ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/file/dist/Makefile.am-src Sat May 2 08:22:49 2009 (r191739) @@ -0,0 +1,18 @@ +MAGIC = $(pkgdatadir)/magic +lib_LTLIBRARIES = libmagic.la +include_HEADERS = magic.h + +bin_PROGRAMS = file + +AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"' +AM_CFLAGS = @WARNINGS@ + +libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \ + encoding.c compress.c is_tar.c readelf.c print.c fsmagic.c \ + funcs.c file.h names.h patchlevel.h readelf.h tar.h apptype.c \ + file_opts.h elfclass.h mygetopt.h cdf.c cdf_time.c readcdf.c cdf.h +libmagic_la_LDFLAGS = -no-undefined -version-info 1:0:0 +libmagic_la_LIBADD = $(LTLIBOBJS) + +file_SOURCES = file.c +file_LDADD = libmagic.la Added: vendor/file/dist/cdf.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/file/dist/cdf.c Sat May 2 08:22:49 2009 (r191739) @@ -0,0 +1,1105 @@ +/*- + * Copyright (c) 2008 Christos Zoulas + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Parse composite document files, the format used in Microsoft Office + * document files before they switched to zipped xml. + * Info from: http://sc.openoffice.org/compdocfileformat.pdf + */ + +#include "file.h" + +#ifndef lint +FILE_RCSID("@(#)$File: cdf.c,v 1.17 2009/02/03 20:27:51 christos Exp $") +#endif + +#include +#ifdef CDF_DEBUG +#include +#endif +#include +#include +#include +#include +#include + +#ifndef EFTYPE +#define EFTYPE EINVAL +#endif + +#include "cdf.h" + +#ifndef __arraycount +#define __arraycount(a) (sizeof(a) / sizeof(a[0])) +#endif + +#ifdef CDF_DEBUG +#define DPRINTF(a) printf a +#else +#define DPRINTF(a) +#endif + +static union { + char s[4]; + uint32_t u; +} cdf_bo; + +#define NEED_SWAP (cdf_bo.u == (uint32_t)0x01020304) + +#define CDF_TOLE8(x) (NEED_SWAP ? cdf_tole8(x) : (uint64_t)(x)) +#define CDF_TOLE4(x) (NEED_SWAP ? cdf_tole4(x) : (uint32_t)(x)) +#define CDF_TOLE2(x) (NEED_SWAP ? cdf_tole2(x) : (uint16_t)(x)) + +/* + * swap a short + */ +uint16_t +cdf_tole2(uint16_t sv) +{ + uint16_t rv; + uint8_t *s = (uint8_t *)(void *)&sv; + uint8_t *d = (uint8_t *)(void *)&rv; + d[0] = s[1]; + d[1] = s[0]; + return rv; +} + +/* + * swap an int + */ +uint32_t +cdf_tole4(uint32_t sv) +{ + uint32_t rv; + uint8_t *s = (uint8_t *)(void *)&sv; + uint8_t *d = (uint8_t *)(void *)&rv; + d[0] = s[3]; + d[1] = s[2]; + d[2] = s[1]; + d[3] = s[0]; + return rv; +} + +/* + * swap a quad + */ +uint64_t +cdf_tole8(uint64_t sv) +{ + uint64_t rv; + uint8_t *s = (uint8_t *)(void *)&sv; + uint8_t *d = (uint8_t *)(void *)&rv; + d[0] = s[7]; + d[1] = s[6]; + d[2] = s[5]; + d[3] = s[4]; + d[4] = s[3]; + d[5] = s[2]; + d[6] = s[1]; + d[7] = s[0]; + return rv; +} + +#define CDF_UNPACK(a) \ + (void)memcpy(&(a), &buf[len], sizeof(a)), len += sizeof(a) +#define CDF_UNPACKA(a) \ + (void)memcpy((a), &buf[len], sizeof(a)), len += sizeof(a) + +void +cdf_swap_header(cdf_header_t *h) +{ + size_t i; + + h->h_magic = CDF_TOLE8(h->h_magic); + h->h_uuid[0] = CDF_TOLE8(h->h_uuid[0]); + h->h_uuid[1] = CDF_TOLE8(h->h_uuid[1]); + h->h_revision = CDF_TOLE2(h->h_revision); + h->h_version = CDF_TOLE2(h->h_version); + h->h_byte_order = CDF_TOLE2(h->h_byte_order); + h->h_sec_size_p2 = CDF_TOLE2(h->h_sec_size_p2); + h->h_short_sec_size_p2 = CDF_TOLE2(h->h_short_sec_size_p2); + h->h_num_sectors_in_sat = CDF_TOLE4(h->h_num_sectors_in_sat); + h->h_secid_first_directory = CDF_TOLE4(h->h_secid_first_directory); + h->h_min_size_standard_stream = + CDF_TOLE4(h->h_min_size_standard_stream); + h->h_secid_first_sector_in_short_sat = + CDF_TOLE4(h->h_secid_first_sector_in_short_sat); + h->h_num_sectors_in_short_sat = + CDF_TOLE4(h->h_num_sectors_in_short_sat); + h->h_secid_first_sector_in_master_sat = + CDF_TOLE4(h->h_secid_first_sector_in_master_sat); + h->h_num_sectors_in_master_sat = + CDF_TOLE4(h->h_num_sectors_in_master_sat); + for (i = 0; i < __arraycount(h->h_master_sat); i++) + h->h_master_sat[i] = CDF_TOLE4(h->h_master_sat[i]); +} + +void +cdf_unpack_header(cdf_header_t *h, char *buf) +{ + size_t i; + size_t len = 0; + + CDF_UNPACK(h->h_magic); + CDF_UNPACKA(h->h_uuid); + CDF_UNPACK(h->h_revision); + CDF_UNPACK(h->h_version); + CDF_UNPACK(h->h_byte_order); + CDF_UNPACK(h->h_sec_size_p2); + CDF_UNPACK(h->h_short_sec_size_p2); + CDF_UNPACKA(h->h_unused0); + CDF_UNPACK(h->h_num_sectors_in_sat); + CDF_UNPACK(h->h_secid_first_directory); + CDF_UNPACKA(h->h_unused1); + CDF_UNPACK(h->h_min_size_standard_stream); + CDF_UNPACK(h->h_secid_first_sector_in_short_sat); + CDF_UNPACK(h->h_num_sectors_in_short_sat); + CDF_UNPACK(h->h_secid_first_sector_in_master_sat); + CDF_UNPACK(h->h_num_sectors_in_master_sat); + for (i = 0; i < __arraycount(h->h_master_sat); i++) + CDF_UNPACK(h->h_master_sat[i]); +} + +void +cdf_swap_dir(cdf_directory_t *d) +{ + d->d_namelen = CDF_TOLE2(d->d_namelen); + d->d_left_child = CDF_TOLE4(d->d_left_child); + d->d_right_child = CDF_TOLE4(d->d_right_child); + d->d_storage = CDF_TOLE4(d->d_storage); + d->d_storage_uuid[0] = CDF_TOLE8(d->d_storage_uuid[0]); + d->d_storage_uuid[1] = CDF_TOLE8(d->d_storage_uuid[1]); + d->d_flags = CDF_TOLE4(d->d_flags); + d->d_created = CDF_TOLE8(d->d_created); + d->d_modified = CDF_TOLE8(d->d_modified); + d->d_stream_first_sector = CDF_TOLE4(d->d_stream_first_sector); + d->d_size = CDF_TOLE4(d->d_size); +} + +void +cdf_swap_class(cdf_classid_t *d) +{ + d->cl_dword = CDF_TOLE4(d->cl_dword); + d->cl_word[0] = CDF_TOLE2(d->cl_word[0]); + d->cl_word[1] = CDF_TOLE2(d->cl_word[1]); +} + +void +cdf_unpack_dir(cdf_directory_t *d, char *buf) +{ + size_t len = 0; + + CDF_UNPACKA(d->d_name); + CDF_UNPACK(d->d_namelen); + CDF_UNPACK(d->d_type); + CDF_UNPACK(d->d_color); + CDF_UNPACK(d->d_left_child); + CDF_UNPACK(d->d_right_child); + CDF_UNPACK(d->d_storage); + CDF_UNPACKA(d->d_storage_uuid); + CDF_UNPACK(d->d_flags); + CDF_UNPACK(d->d_created); + CDF_UNPACK(d->d_modified); + CDF_UNPACK(d->d_stream_first_sector); + CDF_UNPACK(d->d_size); + CDF_UNPACK(d->d_unused0); +} + +int +cdf_read_header(int fd, cdf_header_t *h) +{ + (void)memcpy(cdf_bo.s, "\01\02\03\04", 4); + char buf[512]; + if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) + return -1; + if (read(fd, buf, sizeof(buf)) != sizeof(buf)) + return -1; + cdf_unpack_header(h, buf); + cdf_swap_header(h); + if (h->h_magic != CDF_MAGIC) { + DPRINTF(("Bad magic 0x%x != 0x$x\n", h->h_magic, CDF_MAGIC)); + errno = EFTYPE; + return -1; + } + return 0; +} + + +ssize_t +cdf_read_sector(int fd, void *buf, size_t offs, size_t len, + const cdf_header_t *h, cdf_secid_t id) +{ + assert((size_t)CDF_SEC_SIZE(h) == len); + if (lseek(fd, (off_t)CDF_SEC_POS(h, id), SEEK_SET) == (off_t)-1) + return -1; + return read(fd, ((char *)buf) + offs, len); +} + +ssize_t +cdf_read_short_sector(const cdf_stream_t *sst, void *buf, size_t offs, + size_t len, const cdf_header_t *h, cdf_secid_t id) +{ + assert((size_t)CDF_SHORT_SEC_SIZE(h) == len); + (void)memcpy(((char *)buf) + offs, + ((const char *)sst->sst_tab) + CDF_SHORT_SEC_POS(h, id), len); + return len; +} + +/* + * Read the sector allocation table. + */ +int +cdf_read_sat(int fd, cdf_header_t *h, cdf_sat_t *sat) +{ + size_t i, j, k; + size_t ss = CDF_SEC_SIZE(h); + cdf_secid_t *msa, mid; + + for (i = 0; i < __arraycount(h->h_master_sat); i++) + if (h->h_master_sat[i] == CDF_SECID_FREE) + break; + + sat->sat_len = (h->h_num_sectors_in_master_sat + i); + if ((sat->sat_tab = calloc(sat->sat_len, ss)) == NULL) + return -1; + + for (i = 0; i < __arraycount(h->h_master_sat); i++) { + if (h->h_master_sat[i] < 0) + break; + if (cdf_read_sector(fd, sat->sat_tab, ss * i, ss, h, + h->h_master_sat[i]) != (ssize_t)ss) { + DPRINTF(("Reading sector %d", h->h_master_sat[i])); + goto out1; + } + } + + if ((msa = calloc(1, ss)) == NULL) + goto out1; + + mid = h->h_secid_first_sector_in_master_sat; + for (j = 0; j < h->h_num_sectors_in_master_sat; j++) { + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Reading master sector loop limit")); + errno = EFTYPE; + goto out2; + } + if (cdf_read_sector(fd, msa, 0, ss, h, mid) != (ssize_t)ss) { + DPRINTF(("Reading master sector %d", mid)); + goto out2; + } + for (k = 0; k < (ss / sizeof(mid)) - 1; k++, i++) + if (cdf_read_sector(fd, sat->sat_tab, ss * i, ss, h, + CDF_TOLE4(msa[k])) != (ssize_t)ss) { + DPRINTF(("Reading sector %d", + CDF_TOLE4(msa[k]))); + goto out2; + } + mid = CDF_TOLE4(msa[(ss / sizeof(mid)) - 1]); + } + free(msa); + return 0; +out2: + free(msa); +out1: + free(sat->sat_tab); + return -1; +} + +size_t +cdf_count_chain(const cdf_header_t *h, const cdf_sat_t *sat, + cdf_secid_t sid) +{ + size_t i, j, s = CDF_SEC_SIZE(h) / sizeof(cdf_secid_t); + cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * s); + + DPRINTF(("Chain:")); + for (j = i = 0; sid >= 0; i++, j++) { + DPRINTF((" %d", sid)); + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Counting chain loop limit")); + errno = EFTYPE; + return (size_t)-1; + } + if (sid > maxsector) { + DPRINTF(("Sector %d > %d\n", sid, maxsector)); + errno = EFTYPE; + return (size_t)-1; + } + sid = CDF_TOLE4(sat->sat_tab[sid]); + } + DPRINTF(("\n")); + return i; +} + +int +cdf_read_long_sector_chain(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + cdf_secid_t sid, size_t len, cdf_stream_t *scn) +{ + size_t ss = CDF_SEC_SIZE(h), i, j; + ssize_t nr; + scn->sst_len = cdf_count_chain(h, sat, sid); + scn->sst_dirlen = len; + + if (scn->sst_len == (size_t)-1) + return -1; + + scn->sst_tab = calloc(scn->sst_len, ss); + if (scn->sst_tab == NULL) + return -1; + + for (j = i = 0; sid >= 0; i++, j++) { + if ((nr = cdf_read_sector(fd, scn->sst_tab, i * ss, ss, h, + sid)) != (ssize_t)ss) { + if (i == scn->sst_len - 1 && nr > 0) { + /* Last sector might be truncated */ + return 0; + } + DPRINTF(("Reading long sector chain %d", sid)); + goto out; + } + sid = CDF_TOLE4(sat->sat_tab[sid]); + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Read long sector chain loop limit")); + errno = EFTYPE; + goto out; + } + } + return 0; +out: + free(scn->sst_tab); + return (size_t)-1; +} + +int +cdf_read_short_sector_chain(const cdf_header_t *h, + const cdf_sat_t *ssat, const cdf_stream_t *sst, + cdf_secid_t sid, size_t len, cdf_stream_t *scn) +{ + size_t ss = CDF_SHORT_SEC_SIZE(h), i, j; + scn->sst_len = cdf_count_chain(h, ssat, sid); + scn->sst_dirlen = len; + + if (scn->sst_len == (size_t)-1) + return -1; + + scn->sst_tab = calloc(scn->sst_len, ss); + if (scn->sst_tab == NULL) + return -1; + + for (j = i = 0; sid >= 0; i++, j++) { + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Read short sector chain loop limit")); + errno = EFTYPE; + goto out; + } + if (cdf_read_short_sector(sst, scn->sst_tab, i * ss, ss, h, + sid) != (ssize_t)ss) { + DPRINTF(("Reading short sector chain %d", sid)); + goto out; + } + sid = CDF_TOLE4(ssat->sat_tab[sid]); + } + return 0; +out: + free(scn->sst_tab); + return (size_t)-1; +} + +int +cdf_read_sector_chain(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + const cdf_sat_t *ssat, const cdf_stream_t *sst, + cdf_secid_t sid, size_t len, cdf_stream_t *scn) +{ + + if (len < h->h_min_size_standard_stream) + return cdf_read_short_sector_chain(h, ssat, sst, sid, len, + scn); + else + return cdf_read_long_sector_chain(fd, h, sat, sid, len, scn); +} + +int +cdf_read_dir(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + cdf_dir_t *dir) +{ + size_t i, j; + size_t ss = CDF_SEC_SIZE(h), ns, nd; + char *buf; + cdf_secid_t sid = h->h_secid_first_directory; + + ns = cdf_count_chain(h, sat, sid); + if (ns == (size_t)-1) + return -1; + + nd = ss / CDF_DIRECTORY_SIZE; + + dir->dir_len = ns * nd; + dir->dir_tab = calloc(dir->dir_len, sizeof(dir->dir_tab[0])); + if (dir->dir_tab == NULL) + return -1; + + if ((buf = malloc(ss)) == NULL) { + free(dir->dir_tab); + return -1; + } + + for (j = i = 0; i < ns; i++, j++) { + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Read dir loop limit")); + errno = EFTYPE; + goto out; + } + if (cdf_read_sector(fd, buf, 0, ss, h, sid) != (ssize_t)ss) { + DPRINTF(("Reading directory sector %d", sid)); + goto out; + } + for (j = 0; j < nd; j++) { + cdf_unpack_dir(&dir->dir_tab[i * nd + j], + &buf[j * CDF_DIRECTORY_SIZE]); + } + sid = CDF_TOLE4(sat->sat_tab[sid]); + } + if (NEED_SWAP) + for (i = 0; i < dir->dir_len; i++) + cdf_swap_dir(&dir->dir_tab[i]); + free(buf); + return 0; +out: + free(dir->dir_tab); + free(buf); + return -1; +} + + +int +cdf_read_ssat(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + cdf_sat_t *ssat) +{ + size_t i, j; + size_t ss = CDF_SEC_SIZE(h); + cdf_secid_t sid = h->h_secid_first_sector_in_short_sat; + + ssat->sat_len = cdf_count_chain(h, sat, sid); + if (ssat->sat_len == (size_t)-1) + return -1; + + ssat->sat_tab = calloc(ssat->sat_len, ss); + if (ssat->sat_tab == NULL) + return -1; + + for (j = i = 0; sid >= 0; i++, j++) { + if (j >= CDF_LOOP_LIMIT) { + DPRINTF(("Read short sat sector loop limit")); + errno = EFTYPE; + goto out; + } + if (cdf_read_sector(fd, ssat->sat_tab, i * ss, ss, h, sid) != + (ssize_t)ss) { + DPRINTF(("Reading short sat sector %d", sid)); + goto out; + } + sid = CDF_TOLE4(sat->sat_tab[sid]); + } + return 0; +out: + free(ssat->sat_tab); + return -1; +} + +int +cdf_read_short_stream(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + const cdf_dir_t *dir, cdf_stream_t *scn) +{ + size_t i; + const cdf_directory_t *d; + + for (i = 0; i < dir->dir_len; i++) + if (dir->dir_tab[i].d_type == CDF_DIR_TYPE_ROOT_STORAGE) + break; + + if (i == dir->dir_len) { + DPRINTF(("Cannot find root storage node\n")); + errno = EFTYPE; + return -1; + } + d = &dir->dir_tab[i]; + + /* If the it is not there, just fake it; some docs don't have it */ + if (d->d_stream_first_sector < 0) { + scn->sst_tab = NULL; + scn->sst_len = 0; + return 0; + } + + return cdf_read_long_sector_chain(fd, h, sat, + d->d_stream_first_sector, d->d_size, scn); +} + +static int +cdf_namecmp(const char *d, const uint16_t *s, size_t l) +{ + for (; l--; d++, s++) + if (*d != CDF_TOLE2(*s)) + return (unsigned char)*d - CDF_TOLE2(*s); + return 0; +} + +int +cdf_read_summary_info(int fd, const cdf_header_t *h, + const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst, + const cdf_dir_t *dir, cdf_stream_t *scn) +{ + size_t i; + const cdf_directory_t *d; + static const char name[] = "\05SummaryInformation"; + + for (i = 0; i < dir->dir_len; i++) + if (dir->dir_tab[i].d_type == CDF_DIR_TYPE_USER_STREAM && + cdf_namecmp(name, dir->dir_tab[i].d_name, sizeof(name)) + == 0) + break; + + if (i == dir->dir_len) { + DPRINTF(("Cannot find summary information section\n")); + errno = EFTYPE; + return -1; + } + d = &dir->dir_tab[i]; + return cdf_read_sector_chain(fd, h, sat, ssat, sst, + d->d_stream_first_sector, d->d_size, scn); +} + +int +cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs, + cdf_property_info_t **info, size_t *count, size_t *maxcount) +{ + const cdf_section_header_t *shp; + cdf_section_header_t sh; + const uint32_t *p, *q, *e; + int16_t s16; + int32_t s32; + uint32_t u32; + int64_t s64; + uint64_t u64; + cdf_timestamp_t tp; + size_t i, o, nelements, j; + cdf_property_info_t *inp; + + shp = (const void *)((const char *)sst->sst_tab + offs); + sh.sh_len = CDF_TOLE4(shp->sh_len); + sh.sh_properties = CDF_TOLE4(shp->sh_properties); + DPRINTF(("section len: %d properties %d\n", sh.sh_len, + sh.sh_properties)); + if (*maxcount) { + *maxcount += sh.sh_properties; + inp = realloc(*info, *maxcount * sizeof(*inp)); + } else { + *maxcount = sh.sh_properties; + inp = malloc(*maxcount * sizeof(*inp)); + } + if (inp == NULL) + goto out; + *info = inp; + inp += *count; + *count += sh.sh_properties; + p = (const void *)((const char *)sst->sst_tab + offs + sizeof(sh)); + e = (const void *)(((const char *)shp) + sh.sh_len); + for (i = 0; i < sh.sh_properties; i++) { + q = (const uint32_t *)((const char *)p + + CDF_TOLE4(p[(i << 1) + 1])) - 2; + if (q > e) { + DPRINTF(("Ran of the end %p > %p\n", q, e)); + goto out; + } + inp[i].pi_id = CDF_TOLE4(p[i << 1]); + inp[i].pi_type = CDF_TOLE4(q[0]); + DPRINTF(("%d) id=%x type=%x offs=%x\n", i, inp[i].pi_id, + inp[i].pi_type, (const char *)q - (const char *)p)); + if (inp[i].pi_type & CDF_VECTOR) { + nelements = CDF_TOLE4(q[1]); + o = 2; + } else { + nelements = 1; + o = 1; + } + if (inp[i].pi_type & (CDF_ARRAY|CDF_BYREF|CDF_RESERVED)) + goto unknown; + switch (inp[i].pi_type & CDF_TYPEMASK) { + case CDF_EMPTY: + break; + case CDF_SIGNED16: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&s16, &q[o], sizeof(s16)); + inp[i].pi_s16 = CDF_TOLE2(s16); + break; + case CDF_SIGNED32: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&s32, &q[o], sizeof(s32)); + inp[i].pi_s32 = CDF_TOLE4(s32); + break; + case CDF_BOOL: + case CDF_UNSIGNED32: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&u32, &q[o], sizeof(u32)); + inp[i].pi_u32 = CDF_TOLE4(u32); + break; + case CDF_SIGNED64: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&s64, &q[o], sizeof(s64)); + inp[i].pi_s64 = CDF_TOLE4(s64); + break; + case CDF_UNSIGNED64: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&u64, &q[o], sizeof(u64)); + inp[i].pi_u64 = CDF_TOLE4(u64); + break; + case CDF_LENGTH32_STRING: + if (nelements > 1) { + size_t nelem = inp - *info; + *maxcount += nelements; + inp = realloc(*info, *maxcount * sizeof(*inp)); + if (inp == NULL) + goto out; + *info = inp; + inp = *info + nelem; + } + DPRINTF(("nelements = %d\n", nelements)); + for (j = 0; j < nelements; j++, i++) { + uint32_t l = CDF_TOLE4(q[o]); + inp[i].pi_str.s_len = l; + inp[i].pi_str.s_buf = (const char *)(&q[o+1]); + DPRINTF(("l = %d, r = %d, s = %s\n", l, + CDF_ROUND(l, sizeof(l)), + inp[i].pi_str.s_buf)); + l = 4 + CDF_ROUND(l, sizeof(l)); + o += l >> 2; + } + i--; + break; + case CDF_FILETIME: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + (void)memcpy(&tp, &q[o], sizeof(tp)); + inp[i].pi_tp = CDF_TOLE8(tp); + break; + case CDF_CLIPBOARD: + if (inp[i].pi_type & CDF_VECTOR) + goto unknown; + break; + default: + unknown: + DPRINTF(("Don't know how to deal with %x\n", + inp[i].pi_type)); + goto out; + } + } + return 0; +out: + free(*info); + return -1; +} + +int +cdf_unpack_summary_info(const cdf_stream_t *sst, cdf_summary_info_header_t *ssi, + cdf_property_info_t **info, size_t *count) +{ + size_t i, maxcount; + const cdf_summary_info_header_t *si = sst->sst_tab; + const cdf_section_declaration_t *sd = (const void *) + ((const char *)sst->sst_tab + CDF_SECTION_DECLARATION_OFFSET); + + ssi->si_byte_order = CDF_TOLE2(si->si_byte_order); + ssi->si_os_version = CDF_TOLE2(si->si_os_version); + ssi->si_os = CDF_TOLE2(si->si_os); + ssi->si_class = si->si_class; + cdf_swap_class(&ssi->si_class); + ssi->si_count = CDF_TOLE2(si->si_count); + *count = 0; + maxcount = 0; + *info = NULL; + for (i = 0; i < CDF_TOLE4(si->si_count); i++) { + if (i >= CDF_LOOP_LIMIT) { + DPRINTF(("Unpack summary info loop limit")); + errno = EFTYPE; + return -1; + } + if (cdf_read_property_info(sst, CDF_TOLE4(sd->sd_offset), + info, count, &maxcount) == -1) + return -1; + } + return 0; +} + + + +int +cdf_print_classid(char *buf, size_t buflen, const cdf_classid_t *id) +{ + return snprintf(buf, buflen, "%.8x-%.4x-%.4x-%.2x%.2x-" + "%.2x%.2x%.2x%.2x%.2x%.2x", id->cl_dword, id->cl_word[0], + id->cl_word[1], id->cl_two[0], id->cl_two[1], id->cl_six[0], + id->cl_six[1], id->cl_six[2], id->cl_six[3], id->cl_six[4], + id->cl_six[5]); +} + +static const struct { + uint32_t v; + const char *n; +} vn[] = { + { CDF_PROPERTY_CODE_PAGE, "Code page" }, + { CDF_PROPERTY_TITLE, "Title" }, + { CDF_PROPERTY_SUBJECT, "Subject" }, + { CDF_PROPERTY_AUTHOR, "Author" }, + { CDF_PROPERTY_KEYWORDS, "Keywords" }, + { CDF_PROPERTY_COMMENTS, "Comments" }, + { CDF_PROPERTY_TEMPLATE, "Template" }, + { CDF_PROPERTY_LAST_SAVED_BY, "Last Saved By" }, + { CDF_PROPERTY_REVISION_NUMBER, "Revision Number" }, + { CDF_PROPERTY_TOTAL_EDITING_TIME, "Total Editing Time" }, + { CDF_PROPERTY_LAST_PRINTED, "Last Printed" }, + { CDF_PROPERTY_CREATE_TIME, "Create Time/Date" }, + { CDF_PROPERTY_LAST_SAVED_TIME, "Last Saved Time/Date" }, + { CDF_PROPERTY_NUMBER_OF_PAGES, "Number of Pages" }, + { CDF_PROPERTY_NUMBER_OF_WORDS, "Number of Words" }, + { CDF_PROPERTY_NUMBER_OF_CHARACTERS, "Number of Characters" }, + { CDF_PROPERTY_THUMBNAIL, "Thumbnail" }, + { CDF_PROPERTY_NAME_OF_APPLICATION, "Name of Creating Application" }, + { CDF_PROPERTY_SECURITY, "Security" }, + { CDF_PROPERTY_LOCALE_ID, "Locale ID" }, +}; + +int +cdf_print_property_name(char *buf, size_t bufsiz, uint32_t p) +{ + size_t i; + + for (i = 0; i < __arraycount(vn); i++) + if (vn[i].v == p) + return snprintf(buf, bufsiz, "%s", vn[i].n); + return snprintf(buf, bufsiz, "0x%x", p); +} + +int +cdf_print_elapsed_time(char *buf, size_t bufsiz, cdf_timestamp_t ts) +{ + size_t len = 0; + int days, hours, mins, secs; + + ts /= CDF_TIME_PREC; + secs = ts % 60; + ts /= 60; + mins = ts % 60; + ts /= 60; + hours = ts % 24; + ts /= 24; + days = ts; + + if (days) { + len += snprintf(buf + len, bufsiz - len, "%dd+", days); + if (len >= bufsiz) + return len; + } + + if (days || hours) { + len += snprintf(buf + len, bufsiz - len, "%.2d:", hours); + if (len >= bufsiz) + return len; + } + + len += snprintf(buf + len, bufsiz - len, "%.2d:", mins); + if (len >= bufsiz) + return len; + + len += snprintf(buf + len, bufsiz - len, "%.2d", secs); + return len; +} + + +#ifdef CDF_DEBUG +void +cdf_dump_header(const cdf_header_t *h) +{ + size_t i; + +#define DUMP(a, b) printf("%40.40s = " a "\n", # b, h->h_ ## b) + DUMP("%d", revision); + DUMP("%d", version); + DUMP("0x%x", byte_order); + DUMP("%d", sec_size_p2); + DUMP("%d", short_sec_size_p2); + DUMP("%d", num_sectors_in_sat); + DUMP("%d", secid_first_directory); + DUMP("%d", min_size_standard_stream); + DUMP("%d", secid_first_sector_in_short_sat); + DUMP("%d", num_sectors_in_short_sat); + DUMP("%d", secid_first_sector_in_master_sat); + DUMP("%d", num_sectors_in_master_sat); + for (i = 0; i < __arraycount(h->h_master_sat); i++) { + if (h->h_master_sat[i] == CDF_SECID_FREE) + break; + printf("%35.35s[%.3zu] = %d\n", + "master_sat", i, h->h_master_sat[i]); + } +} + +void +cdf_dump_sat(const char *prefix, const cdf_header_t *h, const cdf_sat_t *sat) +{ + size_t i, j, s = CDF_SEC_SIZE(h) / sizeof(cdf_secid_t); + + for (i = 0; i < sat->sat_len; i++) { + printf("%s[%zu]:\n", prefix, i); + for (j = 0; j < s; j++) { + printf("%5d, ", CDF_TOLE4(sat->sat_tab[s * i + j])); + if ((j + 1) % 10 == 0) + printf("\n"); + } + printf("\n"); + } +} + +void +cdf_dump(void *v, size_t len) +{ + size_t i, j; + unsigned char *p = v; + char abuf[16]; + printf("%.4x: ", 0); + for (i = 0, j = 0; i < len; i++, p++) { + printf("%.2x ", *p); + abuf[j++] = isprint(*p) ? *p : '.'; + if (j == 16) { + j = 0; + abuf[15] = '\0'; + printf("%s\n%.4x: ", abuf, i + 1); + } + } + printf("\n"); +} + +void +cdf_dump_stream(const cdf_header_t *h, const cdf_stream_t *sst) +{ + size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ? + CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h); + cdf_dump(sst->sst_tab, ss * sst->sst_len); +} + +void +cdf_dump_dir(int fd, const cdf_header_t *h, const cdf_sat_t *sat, + const cdf_sat_t *ssat, const cdf_stream_t *sst, + const cdf_dir_t *dir) +{ + size_t i, j; + cdf_directory_t *d; + char name[__arraycount(d->d_name)]; + cdf_stream_t scn; + struct timespec ts; + + static const char *types[] = { "empty", "user storage", + "user stream", "lockbytes", "property", "root storage" }; + + for (i = 0; i < dir->dir_len; i++) { + d = &dir->dir_tab[i]; + for (j = 0; j < sizeof(name); j++) + name[j] = (char)CDF_TOLE2(d->d_name[j]); + printf("Directory %zu: %s\n", i, name); + if (d->d_type < __arraycount(types)) + printf("Type: %s\n", types[d->d_type]); + else + printf("Type: %d\n", d->d_type); + printf("Color: %s\n", d->d_color ? "black" : "red"); + printf("Left child: %d\n", d->d_left_child); + printf("Right child: %d\n", d->d_right_child); + printf("Flags: 0x%x\n", d->d_flags); + cdf_timestamp_to_timespec(&ts, d->d_created); + printf("Created %s", ctime(&ts.tv_sec)); + cdf_timestamp_to_timespec(&ts, d->d_modified); + printf("Modified %s", ctime(&ts.tv_sec)); + printf("Stream %d\n", d->d_stream_first_sector); + printf("Size %d\n", d->d_size); + switch (d->d_type) { + case CDF_DIR_TYPE_USER_STORAGE: + printf("Storage: %d\n", d->d_storage); + break; + case CDF_DIR_TYPE_USER_STREAM: + if (sst == NULL) + break; + if (cdf_read_sector_chain(fd, h, sat, ssat, sst, + d->d_stream_first_sector, d->d_size, &scn) == -1) { + warn("Can't read stream for %s at %d len %d", + name, d->d_stream_first_sector, d->d_size); + break; + } + cdf_dump_stream(h, &scn); + free(scn.sst_tab); + break; + default: + break; + } + + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From obrien at FreeBSD.org Sat May 2 09:11:26 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Sat May 2 09:11:53 2009 Subject: svn commit: r191740 - in vendor/gdb: 4.16 4.16/bfd 4.16/bfd/doc 4.16/bfd/hosts 4.16/contrib 4.16/gdb 4.16/gdb/config 4.16/gdb/config/i386 4.16/gdb/doc 4.16/gdb/gdbserver 4.16/gdb/nlm 4.16/include 4... Message-ID: <200905020911.n429BPPS078103@svn.freebsd.org> Author: obrien Date: Sat May 2 09:11:21 2009 New Revision: 191740 URL: http://svn.freebsd.org/changeset/base/191740 Log: Flatten the GDB historic releases. Added: vendor/gdb/4.16/COPYING (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/COPYING vendor/gdb/4.16/COPYING.LIB (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/COPYING.LIB vendor/gdb/4.16/Makefile.in (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/Makefile.in vendor/gdb/4.16/README (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/README vendor/gdb/4.16/bfd/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/bfd/ vendor/gdb/4.16/config.guess (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/config.guess vendor/gdb/4.16/config.sub (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/config.sub vendor/gdb/4.16/configure (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/configure vendor/gdb/4.16/configure.in (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/configure.in vendor/gdb/4.16/gdb/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/gdb/ vendor/gdb/4.16/include/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/include/ vendor/gdb/4.16/install.sh (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/install.sh vendor/gdb/4.16/libiberty/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/libiberty/ vendor/gdb/4.16/move-if-change (props changed) - copied unchanged from r191739, vendor/gdb/4.16/contrib/gdb/move-if-change vendor/gdb/4.16/opcodes/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/opcodes/ vendor/gdb/4.16/readline/ - copied from r191739, vendor/gdb/4.16/contrib/gdb/readline/ vendor/gdb/4.18/COPYING (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/COPYING vendor/gdb/4.18/COPYING.LIB (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/COPYING.LIB vendor/gdb/4.18/Makefile.in (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/Makefile.in vendor/gdb/4.18/README (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/README vendor/gdb/4.18/config-ml.in (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/config-ml.in vendor/gdb/4.18/config.guess (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/config.guess vendor/gdb/4.18/config.if (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/config.if vendor/gdb/4.18/config.sub (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/config.sub vendor/gdb/4.18/configure (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/configure vendor/gdb/4.18/configure.in (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/configure.in vendor/gdb/4.18/gdb/ - copied from r191739, vendor/gdb/4.18/contrib/gdb/gdb/ vendor/gdb/4.18/move-if-change (props changed) - copied unchanged from r191739, vendor/gdb/4.18/contrib/gdb/move-if-change vendor/gdb/5.2.1/COPYING (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/COPYING vendor/gdb/5.2.1/COPYING.LIB (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/COPYING.LIB vendor/gdb/5.2.1/Makefile.in (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/Makefile.in vendor/gdb/5.2.1/README (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/README vendor/gdb/5.2.1/config-ml.in (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/config-ml.in vendor/gdb/5.2.1/config.guess (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/config.guess vendor/gdb/5.2.1/config.if (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/config.if vendor/gdb/5.2.1/config.sub (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/config.sub vendor/gdb/5.2.1/configure (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/configure vendor/gdb/5.2.1/configure.in (props changed) - copied unchanged from r191739, vendor/gdb/5.2.1/contrib/gdb/configure.in vendor/gdb/5.2.1/gdb/ - copied from r191739, vendor/gdb/5.2.1/contrib/gdb/gdb/ vendor/gdb/5.2.1/include/ - copied from r191739, vendor/gdb/5.2.1/contrib/gdb/include/ vendor/gdb/6.1.1/COPYING (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/COPYING vendor/gdb/6.1.1/COPYING.LIB (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/COPYING.LIB vendor/gdb/6.1.1/README (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/README vendor/gdb/6.1.1/config-ml.in (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/config-ml.in vendor/gdb/6.1.1/djunpack.bat (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/djunpack.bat vendor/gdb/6.1.1/gdb/ - copied from r191739, vendor/gdb/6.1.1/contrib/gdb/gdb/ vendor/gdb/6.1.1/gettext.m4 (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/gettext.m4 vendor/gdb/6.1.1/include/ - copied from r191739, vendor/gdb/6.1.1/contrib/gdb/include/ vendor/gdb/6.1.1/install-sh (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/install-sh vendor/gdb/6.1.1/libtool.m4 (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/libtool.m4 vendor/gdb/6.1.1/ltcf-c.sh (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ltcf-c.sh vendor/gdb/6.1.1/ltcf-cxx.sh (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ltcf-cxx.sh vendor/gdb/6.1.1/ltcf-gcj.sh (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ltcf-gcj.sh vendor/gdb/6.1.1/ltconfig (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ltconfig vendor/gdb/6.1.1/ltmain.sh (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ltmain.sh vendor/gdb/6.1.1/md5.sum (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/md5.sum vendor/gdb/6.1.1/missing (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/missing vendor/gdb/6.1.1/mkinstalldirs (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/mkinstalldirs vendor/gdb/6.1.1/move-if-change (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/move-if-change vendor/gdb/6.1.1/src-release (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/src-release vendor/gdb/6.1.1/symlink-tree (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/symlink-tree vendor/gdb/6.1.1/ylwrap (props changed) - copied unchanged from r191739, vendor/gdb/6.1.1/contrib/gdb/ylwrap vendor/gdb/anoncvs_gdb_5_2_branch_20020627/COPYING (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/COPYING vendor/gdb/anoncvs_gdb_5_2_branch_20020627/COPYING.LIB (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/COPYING.LIB vendor/gdb/anoncvs_gdb_5_2_branch_20020627/ChangeLog (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/ChangeLog vendor/gdb/anoncvs_gdb_5_2_branch_20020627/MAINTAINERS (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/MAINTAINERS vendor/gdb/anoncvs_gdb_5_2_branch_20020627/Makefile.in (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/Makefile.in vendor/gdb/anoncvs_gdb_5_2_branch_20020627/README (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/README vendor/gdb/anoncvs_gdb_5_2_branch_20020627/config-ml.in (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/config-ml.in vendor/gdb/anoncvs_gdb_5_2_branch_20020627/config.guess (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/config.guess vendor/gdb/anoncvs_gdb_5_2_branch_20020627/config.if (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/config.if vendor/gdb/anoncvs_gdb_5_2_branch_20020627/config.sub (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/config.sub vendor/gdb/anoncvs_gdb_5_2_branch_20020627/configure (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/configure vendor/gdb/anoncvs_gdb_5_2_branch_20020627/configure.in (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/configure.in vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ - copied from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/gdb/ vendor/gdb/anoncvs_gdb_5_2_branch_20020627/include/ - copied from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/include/ vendor/gdb/anoncvs_gdb_5_2_branch_20020627/move-if-change (props changed) - copied unchanged from r191739, vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/gdb/move-if-change vendor/gdb/marcel_contrib/FREEBSD-diffs (props changed) - copied unchanged from r191739, vendor/gdb/marcel_contrib/contrib/gdb/FREEBSD-diffs vendor/gdb/marcel_contrib/gdb/ - copied from r191739, vendor/gdb/marcel_contrib/contrib/gdb/gdb/ Deleted: vendor/gdb/4.16/contrib/ vendor/gdb/4.18/contrib/ vendor/gdb/5.2.1/contrib/ vendor/gdb/6.1.1/contrib/ vendor/gdb/anoncvs_gdb_5_2_branch_20020627/contrib/ vendor/gdb/marcel_contrib/contrib/ Modified: vendor/gdb/4.16/bfd/COPYING (props changed) vendor/gdb/4.16/bfd/Makefile.in (props changed) vendor/gdb/4.16/bfd/PORTING (props changed) vendor/gdb/4.16/bfd/TODO (props changed) vendor/gdb/4.16/bfd/VERSION (props changed) vendor/gdb/4.16/bfd/acconfig.h (props changed) vendor/gdb/4.16/bfd/aclocal.m4 (props changed) vendor/gdb/4.16/bfd/aix386-core.c (props changed) vendor/gdb/4.16/bfd/aout-adobe.c (props changed) vendor/gdb/4.16/bfd/aout-arm.c (props changed) vendor/gdb/4.16/bfd/aout-encap.c (props changed) vendor/gdb/4.16/bfd/aout-ns32k.c (props changed) vendor/gdb/4.16/bfd/aout-target.h (props changed) vendor/gdb/4.16/bfd/aout0.c (props changed) vendor/gdb/4.16/bfd/aout32.c (props changed) vendor/gdb/4.16/bfd/aout64.c (props changed) vendor/gdb/4.16/bfd/aoutf1.h (props changed) vendor/gdb/4.16/bfd/aoutx.h (props changed) vendor/gdb/4.16/bfd/archive.c (props changed) vendor/gdb/4.16/bfd/archures.c (props changed) vendor/gdb/4.16/bfd/bfd-in.h (props changed) vendor/gdb/4.16/bfd/bfd-in2.h (props changed) vendor/gdb/4.16/bfd/bfd.c (props changed) vendor/gdb/4.16/bfd/binary.c (props changed) vendor/gdb/4.16/bfd/bout.c (props changed) vendor/gdb/4.16/bfd/cache.c (props changed) vendor/gdb/4.16/bfd/cf-i386lynx.c (props changed) vendor/gdb/4.16/bfd/cf-m68klynx.c (props changed) vendor/gdb/4.16/bfd/cf-sparclynx.c (props changed) vendor/gdb/4.16/bfd/cisco-core.c (props changed) vendor/gdb/4.16/bfd/coff-a29k.c (props changed) vendor/gdb/4.16/bfd/coff-alpha.c (props changed) vendor/gdb/4.16/bfd/coff-apollo.c (props changed) vendor/gdb/4.16/bfd/coff-arm.c (props changed) vendor/gdb/4.16/bfd/coff-aux.c (props changed) vendor/gdb/4.16/bfd/coff-go32.c (props changed) vendor/gdb/4.16/bfd/coff-h8300.c (props changed) vendor/gdb/4.16/bfd/coff-h8500.c (props changed) vendor/gdb/4.16/bfd/coff-i386.c (props changed) vendor/gdb/4.16/bfd/coff-i860.c (props changed) vendor/gdb/4.16/bfd/coff-i960.c (props changed) vendor/gdb/4.16/bfd/coff-m68k.c (props changed) vendor/gdb/4.16/bfd/coff-m88k.c (props changed) vendor/gdb/4.16/bfd/coff-mips.c (props changed) vendor/gdb/4.16/bfd/coff-pmac.c (props changed) vendor/gdb/4.16/bfd/coff-ppc.c (props changed) vendor/gdb/4.16/bfd/coff-rs6000.c (props changed) vendor/gdb/4.16/bfd/coff-sh.c (props changed) vendor/gdb/4.16/bfd/coff-sparc.c (props changed) vendor/gdb/4.16/bfd/coff-u68k.c (props changed) vendor/gdb/4.16/bfd/coff-w65.c (props changed) vendor/gdb/4.16/bfd/coff-we32k.c (props changed) vendor/gdb/4.16/bfd/coff-z8k.c (props changed) vendor/gdb/4.16/bfd/coffcode.h (props changed) vendor/gdb/4.16/bfd/coffgen.c (props changed) vendor/gdb/4.16/bfd/cofflink.c (props changed) vendor/gdb/4.16/bfd/coffswap.h (props changed) vendor/gdb/4.16/bfd/config.bfd (props changed) vendor/gdb/4.16/bfd/config.in (props changed) vendor/gdb/4.16/bfd/configure (props changed) vendor/gdb/4.16/bfd/configure.bat (props changed) vendor/gdb/4.16/bfd/configure.host (props changed) vendor/gdb/4.16/bfd/configure.in (props changed) vendor/gdb/4.16/bfd/corefile.c (props changed) vendor/gdb/4.16/bfd/cpu-a29k.c (props changed) vendor/gdb/4.16/bfd/cpu-alpha.c (props changed) vendor/gdb/4.16/bfd/cpu-arm.c (props changed) vendor/gdb/4.16/bfd/cpu-h8300.c (props changed) vendor/gdb/4.16/bfd/cpu-h8500.c (props changed) vendor/gdb/4.16/bfd/cpu-hppa.c (props changed) vendor/gdb/4.16/bfd/cpu-i386.c (props changed) vendor/gdb/4.16/bfd/cpu-i860.c (props changed) vendor/gdb/4.16/bfd/cpu-i960.c (props changed) vendor/gdb/4.16/bfd/cpu-m68k.c (props changed) vendor/gdb/4.16/bfd/cpu-m88k.c (props changed) vendor/gdb/4.16/bfd/cpu-mips.c (props changed) vendor/gdb/4.16/bfd/cpu-ns32k.c (props changed) vendor/gdb/4.16/bfd/cpu-powerpc.c (props changed) vendor/gdb/4.16/bfd/cpu-rs6000.c (props changed) vendor/gdb/4.16/bfd/cpu-sh.c (props changed) vendor/gdb/4.16/bfd/cpu-sparc.c (props changed) vendor/gdb/4.16/bfd/cpu-vax.c (props changed) vendor/gdb/4.16/bfd/cpu-w65.c (props changed) vendor/gdb/4.16/bfd/cpu-we32k.c (props changed) vendor/gdb/4.16/bfd/cpu-z8k.c (props changed) vendor/gdb/4.16/bfd/demo64.c (props changed) vendor/gdb/4.16/bfd/dep-in.sed (props changed) vendor/gdb/4.16/bfd/doc/ChangeLog (props changed) vendor/gdb/4.16/bfd/doc/Makefile.in (props changed) vendor/gdb/4.16/bfd/doc/bfd.texinfo (props changed) vendor/gdb/4.16/bfd/doc/bfdsumm.texi (props changed) vendor/gdb/4.16/bfd/doc/chew.c (props changed) vendor/gdb/4.16/bfd/doc/doc.str (props changed) vendor/gdb/4.16/bfd/doc/proto.str (props changed) vendor/gdb/4.16/bfd/ecoff.c (props changed) vendor/gdb/4.16/bfd/ecofflink.c (props changed) vendor/gdb/4.16/bfd/ecoffswap.h (props changed) vendor/gdb/4.16/bfd/elf-bfd.h (props changed) vendor/gdb/4.16/bfd/elf.c (props changed) vendor/gdb/4.16/bfd/elf32-gen.c (props changed) vendor/gdb/4.16/bfd/elf32-hppa.c (props changed) vendor/gdb/4.16/bfd/elf32-hppa.h (props changed) vendor/gdb/4.16/bfd/elf32-i386.c (props changed) vendor/gdb/4.16/bfd/elf32-i860.c (props changed) vendor/gdb/4.16/bfd/elf32-m68k.c (props changed) vendor/gdb/4.16/bfd/elf32-m88k.c (props changed) vendor/gdb/4.16/bfd/elf32-mips.c (props changed) vendor/gdb/4.16/bfd/elf32-ppc.c (props changed) vendor/gdb/4.16/bfd/elf32-sparc.c (props changed) vendor/gdb/4.16/bfd/elf32.c (props changed) vendor/gdb/4.16/bfd/elf64-gen.c (props changed) vendor/gdb/4.16/bfd/elf64-sparc.c (props changed) vendor/gdb/4.16/bfd/elf64.c (props changed) vendor/gdb/4.16/bfd/elfcode.h (props changed) vendor/gdb/4.16/bfd/elfcore.h (props changed) vendor/gdb/4.16/bfd/elflink.c (props changed) vendor/gdb/4.16/bfd/elflink.h (props changed) vendor/gdb/4.16/bfd/elfxx-target.h (props changed) vendor/gdb/4.16/bfd/filemode.c (props changed) vendor/gdb/4.16/bfd/format.c (props changed) vendor/gdb/4.16/bfd/freebsd.h (props changed) vendor/gdb/4.16/bfd/gen-aout.c (props changed) vendor/gdb/4.16/bfd/genlink.h (props changed) vendor/gdb/4.16/bfd/hash.c (props changed) vendor/gdb/4.16/bfd/host-aout.c (props changed) vendor/gdb/4.16/bfd/hosts/alphalinux.h (props changed) vendor/gdb/4.16/bfd/hosts/decstation.h (props changed) vendor/gdb/4.16/bfd/hosts/delta68.h (props changed) vendor/gdb/4.16/bfd/hosts/dpx2.h (props changed) vendor/gdb/4.16/bfd/hosts/hp300bsd.h (props changed) vendor/gdb/4.16/bfd/hosts/i386bsd.h (props changed) vendor/gdb/4.16/bfd/hosts/i386linux.h (props changed) vendor/gdb/4.16/bfd/hosts/i386mach3.h (props changed) vendor/gdb/4.16/bfd/hosts/i386sco.h (props changed) vendor/gdb/4.16/bfd/hosts/i860mach3.h (props changed) vendor/gdb/4.16/bfd/hosts/m68kaux.h (props changed) vendor/gdb/4.16/bfd/hosts/m68klinux.h (props changed) vendor/gdb/4.16/bfd/hosts/m88kmach3.h (props changed) vendor/gdb/4.16/bfd/hosts/mipsbsd.h (props changed) vendor/gdb/4.16/bfd/hosts/mipsmach3.h (props changed) vendor/gdb/4.16/bfd/hosts/news-mips.h (props changed) vendor/gdb/4.16/bfd/hosts/news.h (props changed) vendor/gdb/4.16/bfd/hosts/pc532mach.h (props changed) vendor/gdb/4.16/bfd/hosts/riscos.h (props changed) vendor/gdb/4.16/bfd/hosts/symmetry.h (props changed) vendor/gdb/4.16/bfd/hosts/tahoe.h (props changed) vendor/gdb/4.16/bfd/hosts/vaxbsd.h (props changed) vendor/gdb/4.16/bfd/hosts/vaxult.h (props changed) vendor/gdb/4.16/bfd/hosts/vaxult2.h (props changed) vendor/gdb/4.16/bfd/hp300bsd.c (props changed) vendor/gdb/4.16/bfd/hp300hpux.c (props changed) vendor/gdb/4.16/bfd/hppa_stubs.h (props changed) vendor/gdb/4.16/bfd/hppabsd-core.c (props changed) vendor/gdb/4.16/bfd/hpux-core.c (props changed) vendor/gdb/4.16/bfd/i386aout.c (props changed) vendor/gdb/4.16/bfd/i386bsd.c (props changed) vendor/gdb/4.16/bfd/i386dynix.c (props changed) vendor/gdb/4.16/bfd/i386freebsd.c (props changed) vendor/gdb/4.16/bfd/i386linux.c (props changed) vendor/gdb/4.16/bfd/i386lynx.c (props changed) vendor/gdb/4.16/bfd/i386mach3.c (props changed) vendor/gdb/4.16/bfd/i386msdos.c (props changed) vendor/gdb/4.16/bfd/i386netbsd.c (props changed) vendor/gdb/4.16/bfd/i386os9k.c (props changed) vendor/gdb/4.16/bfd/ieee.c (props changed) vendor/gdb/4.16/bfd/ihex.c (props changed) vendor/gdb/4.16/bfd/init.c (props changed) vendor/gdb/4.16/bfd/irix-core.c (props changed) vendor/gdb/4.16/bfd/libaout.h (props changed) vendor/gdb/4.16/bfd/libbfd-in.h (props changed) vendor/gdb/4.16/bfd/libbfd.c (props changed) vendor/gdb/4.16/bfd/libbfd.h (props changed) vendor/gdb/4.16/bfd/libcoff-in.h (props changed) vendor/gdb/4.16/bfd/libcoff.h (props changed) vendor/gdb/4.16/bfd/libecoff.h (props changed) vendor/gdb/4.16/bfd/libhppa.h (props changed) vendor/gdb/4.16/bfd/libieee.h (props changed) vendor/gdb/4.16/bfd/libnlm.h (props changed) vendor/gdb/4.16/bfd/liboasys.h (props changed) vendor/gdb/4.16/bfd/linker.c (props changed) vendor/gdb/4.16/bfd/lynx-core.c (props changed) vendor/gdb/4.16/bfd/m68k4knetbsd.c (props changed) vendor/gdb/4.16/bfd/m68klinux.c (props changed) vendor/gdb/4.16/bfd/m68klynx.c (props changed) vendor/gdb/4.16/bfd/m68knetbsd.c (props changed) vendor/gdb/4.16/bfd/m88kmach3.c (props changed) vendor/gdb/4.16/bfd/makefile.dos (props changed) vendor/gdb/4.16/bfd/mipsbsd.c (props changed) vendor/gdb/4.16/bfd/mpw-config.in (props changed) vendor/gdb/4.16/bfd/mpw-make.sed (props changed) vendor/gdb/4.16/bfd/netbsd-core.c (props changed) vendor/gdb/4.16/bfd/netbsd.h (props changed) vendor/gdb/4.16/bfd/newsos3.c (props changed) vendor/gdb/4.16/bfd/nlm-target.h (props changed) vendor/gdb/4.16/bfd/nlm.c (props changed) vendor/gdb/4.16/bfd/nlm32-alpha.c (props changed) vendor/gdb/4.16/bfd/nlm32-i386.c (props changed) vendor/gdb/4.16/bfd/nlm32-ppc.c (props changed) vendor/gdb/4.16/bfd/nlm32-sparc.c (props changed) vendor/gdb/4.16/bfd/nlm32.c (props changed) vendor/gdb/4.16/bfd/nlm64.c (props changed) vendor/gdb/4.16/bfd/nlmcode.h (props changed) vendor/gdb/4.16/bfd/nlmswap.h (props changed) vendor/gdb/4.16/bfd/ns32knetbsd.c (props changed) vendor/gdb/4.16/bfd/oasys.c (props changed) vendor/gdb/4.16/bfd/opncls.c (props changed) vendor/gdb/4.16/bfd/osf-core.c (props changed) vendor/gdb/4.16/bfd/pc532-mach.c (props changed) vendor/gdb/4.16/bfd/pe-arm.c (props changed) vendor/gdb/4.16/bfd/pe-i386.c (props changed) vendor/gdb/4.16/bfd/pe-ppc.c (props changed) vendor/gdb/4.16/bfd/pei-arm.c (props changed) vendor/gdb/4.16/bfd/pei-i386.c (props changed) vendor/gdb/4.16/bfd/pei-ppc.c (props changed) vendor/gdb/4.16/bfd/peicode.h (props changed) vendor/gdb/4.16/bfd/ptrace-core.c (props changed) vendor/gdb/4.16/bfd/reloc.c (props changed) vendor/gdb/4.16/bfd/reloc16.c (props changed) vendor/gdb/4.16/bfd/riscix.c (props changed) vendor/gdb/4.16/bfd/rs6000-core.c (props changed) vendor/gdb/4.16/bfd/section.c (props changed) vendor/gdb/4.16/bfd/som.c (props changed) vendor/gdb/4.16/bfd/som.h (props changed) vendor/gdb/4.16/bfd/sparclynx.c (props changed) vendor/gdb/4.16/bfd/sparcnetbsd.c (props changed) vendor/gdb/4.16/bfd/srec.c (props changed) vendor/gdb/4.16/bfd/stab-syms.c (props changed) vendor/gdb/4.16/bfd/sunos.c (props changed) vendor/gdb/4.16/bfd/syms.c (props changed) vendor/gdb/4.16/bfd/sysdep.h (props changed) vendor/gdb/4.16/bfd/targets.c (props changed) vendor/gdb/4.16/bfd/tekhex.c (props changed) vendor/gdb/4.16/bfd/trad-core.c (props changed) vendor/gdb/4.16/bfd/versados.c (props changed) vendor/gdb/4.16/bfd/xcofflink.c (props changed) vendor/gdb/4.16/gdb/.gdbinit (props changed) vendor/gdb/4.16/gdb/COPYING (props changed) vendor/gdb/4.16/gdb/ChangeLog (props changed) vendor/gdb/4.16/gdb/ChangeLog-93 (props changed) vendor/gdb/4.16/gdb/ChangeLog-94 (props changed) vendor/gdb/4.16/gdb/ChangeLog-95 (props changed) vendor/gdb/4.16/gdb/Makefile.in (props changed) vendor/gdb/4.16/gdb/NEWS (props changed) vendor/gdb/4.16/gdb/README (props changed) vendor/gdb/4.16/gdb/TODO (props changed) vendor/gdb/4.16/gdb/acconfig.h (props changed) vendor/gdb/4.16/gdb/aclocal.m4 (props changed) vendor/gdb/4.16/gdb/alpha-nat.c (props changed) vendor/gdb/4.16/gdb/alpha-tdep.c (props changed) vendor/gdb/4.16/gdb/annotate.c (props changed) vendor/gdb/4.16/gdb/annotate.h (props changed) vendor/gdb/4.16/gdb/arm-convert.s (props changed) vendor/gdb/4.16/gdb/arm-tdep.c (props changed) vendor/gdb/4.16/gdb/arm-xdep.c (props changed) vendor/gdb/4.16/gdb/bcache.c (props changed) vendor/gdb/4.16/gdb/bcache.h (props changed) vendor/gdb/4.16/gdb/blockframe.c (props changed) vendor/gdb/4.16/gdb/breakpoint.c (props changed) vendor/gdb/4.16/gdb/breakpoint.h (props changed) vendor/gdb/4.16/gdb/buildsym.c (props changed) vendor/gdb/4.16/gdb/buildsym.h (props changed) vendor/gdb/4.16/gdb/c-exp.tab.c (props changed) vendor/gdb/4.16/gdb/c-exp.y (props changed) vendor/gdb/4.16/gdb/c-lang.c (props changed) vendor/gdb/4.16/gdb/c-lang.h (props changed) vendor/gdb/4.16/gdb/c-typeprint.c (props changed) vendor/gdb/4.16/gdb/c-valprint.c (props changed) vendor/gdb/4.16/gdb/call-cmds.h (props changed) vendor/gdb/4.16/gdb/callback.c (props changed) vendor/gdb/4.16/gdb/callback.h (props changed) vendor/gdb/4.16/gdb/ch-exp.c (props changed) vendor/gdb/4.16/gdb/ch-lang.c (props changed) vendor/gdb/4.16/gdb/ch-lang.h (props changed) vendor/gdb/4.16/gdb/ch-typeprint.c (props changed) vendor/gdb/4.16/gdb/ch-valprint.c (props changed) vendor/gdb/4.16/gdb/coff-solib.c (props changed) vendor/gdb/4.16/gdb/coff-solib.h (props changed) vendor/gdb/4.16/gdb/coffread.c (props changed) vendor/gdb/4.16/gdb/command.c (props changed) vendor/gdb/4.16/gdb/command.h (props changed) vendor/gdb/4.16/gdb/complaints.c (props changed) vendor/gdb/4.16/gdb/complaints.h (props changed) vendor/gdb/4.16/gdb/config.in (props changed) vendor/gdb/4.16/gdb/config/i386/cygwin32.mh (props changed) vendor/gdb/4.16/gdb/config/i386/cygwin32.mt (props changed) vendor/gdb/4.16/gdb/config/i386/fbsd.mh (props changed) vendor/gdb/4.16/gdb/config/i386/fbsd.mt (props changed) vendor/gdb/4.16/gdb/config/i386/gdbserve.mt (props changed) vendor/gdb/4.16/gdb/config/i386/go32.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386aix.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386aix.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386aout.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386bsd.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386bsd.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386dgux.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386gnu.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386gnu.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386lynx.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386lynx.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386m3.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386m3.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386mach.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386mk.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386mk.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386nw.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386os9k.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386sco.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386sco4.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386sco5.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386sol2.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386sol2.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386v.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386v.mt (props changed) vendor/gdb/4.16/gdb/config/i386/i386v32.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386v4.mh (props changed) vendor/gdb/4.16/gdb/config/i386/i386v4.mt (props changed) vendor/gdb/4.16/gdb/config/i386/linux.mh (props changed) vendor/gdb/4.16/gdb/config/i386/linux.mt (props changed) vendor/gdb/4.16/gdb/config/i386/nbsd.mh (props changed) vendor/gdb/4.16/gdb/config/i386/nbsd.mt (props changed) vendor/gdb/4.16/gdb/config/i386/ncr3000.mh (props changed) vendor/gdb/4.16/gdb/config/i386/ncr3000.mt (props changed) vendor/gdb/4.16/gdb/config/i386/nm-fbsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-gnu.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386aix.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386bsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386lynx.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386mach.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386sco.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386sco4.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386sco5.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386v.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-i386v4.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-linux.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-m3.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-ptx4.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-sun386.h (props changed) vendor/gdb/4.16/gdb/config/i386/nm-symmetry.h (props changed) vendor/gdb/4.16/gdb/config/i386/ptx.mh (props changed) vendor/gdb/4.16/gdb/config/i386/ptx.mt (props changed) vendor/gdb/4.16/gdb/config/i386/ptx4.mh (props changed) vendor/gdb/4.16/gdb/config/i386/ptx4.mt (props changed) vendor/gdb/4.16/gdb/config/i386/sun386.mh (props changed) vendor/gdb/4.16/gdb/config/i386/sun386.mt (props changed) vendor/gdb/4.16/gdb/config/i386/symmetry.mh (props changed) vendor/gdb/4.16/gdb/config/i386/symmetry.mt (props changed) vendor/gdb/4.16/gdb/config/i386/tm-cygwin32.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386aix.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386bsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386gnu.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386lynx.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386m3.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386mk.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386nw.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386os9k.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386v.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-i386v4.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-linux.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-ptx.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-ptx4.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-sun386.h (props changed) vendor/gdb/4.16/gdb/config/i386/tm-symmetry.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-cygwin32.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-go32.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386aix.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386bsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386gnu.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386lynx.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386m3.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386mach.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386mk.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386sco.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386v.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386v32.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-i386v4.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-linux.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-ptx.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-ptx4.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-sun386.h (props changed) vendor/gdb/4.16/gdb/config/i386/xm-symmetry.h (props changed) vendor/gdb/4.16/gdb/config/nm-empty.h (props changed) vendor/gdb/4.16/gdb/config/nm-gnu.h (props changed) vendor/gdb/4.16/gdb/config/nm-lynx.h (props changed) vendor/gdb/4.16/gdb/config/nm-m3.h (props changed) vendor/gdb/4.16/gdb/config/nm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/nm-sysv4.h (props changed) vendor/gdb/4.16/gdb/config/tm-lynx.h (props changed) vendor/gdb/4.16/gdb/config/tm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/tm-sunos.h (props changed) vendor/gdb/4.16/gdb/config/tm-sysv4.h (props changed) vendor/gdb/4.16/gdb/config/xm-aix4.h (props changed) vendor/gdb/4.16/gdb/config/xm-lynx.h (props changed) vendor/gdb/4.16/gdb/config/xm-mpw.h (props changed) vendor/gdb/4.16/gdb/config/xm-nbsd.h (props changed) vendor/gdb/4.16/gdb/config/xm-sysv4.h (props changed) vendor/gdb/4.16/gdb/configure (props changed) vendor/gdb/4.16/gdb/configure.in (props changed) vendor/gdb/4.16/gdb/copying.awk (props changed) vendor/gdb/4.16/gdb/copying.c (props changed) vendor/gdb/4.16/gdb/core-aout.c (props changed) vendor/gdb/4.16/gdb/core-regset.c (props changed) vendor/gdb/4.16/gdb/core-sol2.c (props changed) vendor/gdb/4.16/gdb/corefile.c (props changed) vendor/gdb/4.16/gdb/corelow.c (props changed) vendor/gdb/4.16/gdb/cp-valprint.c (props changed) vendor/gdb/4.16/gdb/cpu32bug-rom.c (props changed) vendor/gdb/4.16/gdb/cxux-nat.c (props changed) vendor/gdb/4.16/gdb/dbxread.c (props changed) vendor/gdb/4.16/gdb/dcache.c (props changed) vendor/gdb/4.16/gdb/dcache.h (props changed) vendor/gdb/4.16/gdb/defs.h (props changed) vendor/gdb/4.16/gdb/demangle.c (props changed) vendor/gdb/4.16/gdb/doc/ChangeLog (props changed) vendor/gdb/4.16/gdb/doc/GDBvn.texi (props changed) vendor/gdb/4.16/gdb/doc/Makefile.in (props changed) vendor/gdb/4.16/gdb/doc/a4rc.sed (props changed) vendor/gdb/4.16/gdb/doc/all-cfg.texi (props changed) vendor/gdb/4.16/gdb/doc/annotate.texi (props changed) vendor/gdb/4.16/gdb/doc/configure.in (props changed) vendor/gdb/4.16/gdb/doc/gdb.texinfo (props changed) vendor/gdb/4.16/gdb/doc/gdbint.texinfo (props changed) vendor/gdb/4.16/gdb/doc/h8-cfg.texi (props changed) vendor/gdb/4.16/gdb/doc/libgdb.texinfo (props changed) vendor/gdb/4.16/gdb/doc/lpsrc.sed (props changed) vendor/gdb/4.16/gdb/doc/psrc.sed (props changed) vendor/gdb/4.16/gdb/doc/refcard.dvi (props changed) vendor/gdb/4.16/gdb/doc/refcard.tex (props changed) vendor/gdb/4.16/gdb/doc/remote.texi (props changed) vendor/gdb/4.16/gdb/doc/stabs.texinfo (props changed) vendor/gdb/4.16/gdb/dwarfread.c (props changed) vendor/gdb/4.16/gdb/elfread.c (props changed) vendor/gdb/4.16/gdb/environ.c (props changed) vendor/gdb/4.16/gdb/environ.h (props changed) vendor/gdb/4.16/gdb/eval.c (props changed) vendor/gdb/4.16/gdb/exc_request.defs (props changed) vendor/gdb/4.16/gdb/exec.c (props changed) vendor/gdb/4.16/gdb/expprint.c (props changed) vendor/gdb/4.16/gdb/expression.h (props changed) vendor/gdb/4.16/gdb/f-exp.tab.c (props changed) vendor/gdb/4.16/gdb/f-exp.y (props changed) vendor/gdb/4.16/gdb/f-lang.c (props changed) vendor/gdb/4.16/gdb/f-lang.h (props changed) vendor/gdb/4.16/gdb/f-typeprint.c (props changed) vendor/gdb/4.16/gdb/f-valprint.c (props changed) vendor/gdb/4.16/gdb/findvar.c (props changed) vendor/gdb/4.16/gdb/fork-child.c (props changed) vendor/gdb/4.16/gdb/frame.h (props changed) vendor/gdb/4.16/gdb/gdb-stabs.h (props changed) vendor/gdb/4.16/gdb/gdb.1 (props changed) vendor/gdb/4.16/gdb/gdb.gdb (props changed) vendor/gdb/4.16/gdb/gdb_stat.h (props changed) vendor/gdb/4.16/gdb/gdb_string.h (props changed) vendor/gdb/4.16/gdb/gdba.el (props changed) vendor/gdb/4.16/gdb/gdbcmd.h (props changed) vendor/gdb/4.16/gdb/gdbcore.h (props changed) vendor/gdb/4.16/gdb/gdbserver/Makefile.in (props changed) vendor/gdb/4.16/gdb/gdbserver/README (props changed) vendor/gdb/4.16/gdb/gdbserver/configure.in (props changed) vendor/gdb/4.16/gdb/gdbserver/gdbreplay.c (props changed) vendor/gdb/4.16/gdb/gdbserver/gdbserver.1 (props changed) vendor/gdb/4.16/gdb/gdbserver/low-hppabsd.c (props changed) vendor/gdb/4.16/gdb/gdbserver/low-linux.c (props changed) vendor/gdb/4.16/gdb/gdbserver/low-lynx.c (props changed) vendor/gdb/4.16/gdb/gdbserver/low-sparc.c (props changed) vendor/gdb/4.16/gdb/gdbserver/low-sun3.c (props changed) vendor/gdb/4.16/gdb/gdbserver/remote-utils.c (props changed) vendor/gdb/4.16/gdb/gdbserver/server.c (props changed) vendor/gdb/4.16/gdb/gdbserver/server.h (props changed) vendor/gdb/4.16/gdb/gdbserver/utils.c (props changed) vendor/gdb/4.16/gdb/gdbtypes.c (props changed) vendor/gdb/4.16/gdb/gdbtypes.h (props changed) vendor/gdb/4.16/gdb/gnu-nat.c (props changed) vendor/gdb/4.16/gdb/gnu-nat.h (props changed) vendor/gdb/4.16/gdb/gnu-regex.c (props changed) vendor/gdb/4.16/gdb/gnu-regex.h (props changed) vendor/gdb/4.16/gdb/go32-xdep.c (props changed) vendor/gdb/4.16/gdb/i386-stub.c (props changed) vendor/gdb/4.16/gdb/i386-tdep.c (props changed) vendor/gdb/4.16/gdb/i386aix-nat.c (props changed) vendor/gdb/4.16/gdb/i386b-nat.c (props changed) vendor/gdb/4.16/gdb/i386gnu-nat.c (props changed) vendor/gdb/4.16/gdb/i386ly-tdep.c (props changed) vendor/gdb/4.16/gdb/i386m3-nat.c (props changed) vendor/gdb/4.16/gdb/i386mach-nat.c (props changed) vendor/gdb/4.16/gdb/i386v-nat.c (props changed) vendor/gdb/4.16/gdb/i386v4-nat.c (props changed) vendor/gdb/4.16/gdb/i387-tdep.c (props changed) vendor/gdb/4.16/gdb/infcmd.c (props changed) vendor/gdb/4.16/gdb/inferior.h (props changed) vendor/gdb/4.16/gdb/inflow.c (props changed) vendor/gdb/4.16/gdb/infptrace.c (props changed) vendor/gdb/4.16/gdb/infrun.c (props changed) vendor/gdb/4.16/gdb/inftarg.c (props changed) vendor/gdb/4.16/gdb/irix4-nat.c (props changed) vendor/gdb/4.16/gdb/irix5-nat.c (props changed) vendor/gdb/4.16/gdb/isi-xdep.c (props changed) vendor/gdb/4.16/gdb/kdb-start.c (props changed) vendor/gdb/4.16/gdb/language.c (props changed) vendor/gdb/4.16/gdb/language.h (props changed) vendor/gdb/4.16/gdb/lynx-nat.c (props changed) vendor/gdb/4.16/gdb/m2-exp.tab.c (props changed) vendor/gdb/4.16/gdb/m2-exp.y (props changed) vendor/gdb/4.16/gdb/m2-lang.c (props changed) vendor/gdb/4.16/gdb/m2-lang.h (props changed) vendor/gdb/4.16/gdb/m2-typeprint.c (props changed) vendor/gdb/4.16/gdb/m2-valprint.c (props changed) vendor/gdb/4.16/gdb/m3-nat.c (props changed) vendor/gdb/4.16/gdb/m68k-stub.c (props changed) vendor/gdb/4.16/gdb/m68k-tdep.c (props changed) vendor/gdb/4.16/gdb/m68knbsd-nat.c (props changed) vendor/gdb/4.16/gdb/m88k-nat.c (props changed) vendor/gdb/4.16/gdb/m88k-tdep.c (props changed) vendor/gdb/4.16/gdb/main.c (props changed) vendor/gdb/4.16/gdb/maint.c (props changed) vendor/gdb/4.16/gdb/mdebugread.c (props changed) vendor/gdb/4.16/gdb/mem-break.c (props changed) vendor/gdb/4.16/gdb/minimon.h (props changed) vendor/gdb/4.16/gdb/minsyms.c (props changed) vendor/gdb/4.16/gdb/mipsread.c (props changed) vendor/gdb/4.16/gdb/mon960-rom.c (props changed) vendor/gdb/4.16/gdb/monitor.c (props changed) vendor/gdb/4.16/gdb/monitor.h (props changed) vendor/gdb/4.16/gdb/mpw-config.in (props changed) vendor/gdb/4.16/gdb/mpw-make.sed (props changed) vendor/gdb/4.16/gdb/msg.defs (props changed) vendor/gdb/4.16/gdb/msg_reply.defs (props changed) vendor/gdb/4.16/gdb/news-xdep.c (props changed) vendor/gdb/4.16/gdb/nindy-tdep.c (props changed) vendor/gdb/4.16/gdb/nlm/Makefile.in (props changed) vendor/gdb/4.16/gdb/nlm/configure (props changed) vendor/gdb/4.16/gdb/nlm/configure.in (props changed) vendor/gdb/4.16/gdb/nlm/gdbserve.c (props changed) vendor/gdb/4.16/gdb/nlm/gdbserve.def (props changed) vendor/gdb/4.16/gdb/nlm/i386.c (props changed) vendor/gdb/4.16/gdb/nlm/i386.h (props changed) vendor/gdb/4.16/gdb/nlm/ppc.c (props changed) vendor/gdb/4.16/gdb/nlm/ppc.h (props changed) vendor/gdb/4.16/gdb/nlm/prelude.c (props changed) vendor/gdb/4.16/gdb/nlmread.c (props changed) vendor/gdb/4.16/gdb/notify.defs (props changed) vendor/gdb/4.16/gdb/ns32k-tdep.c (props changed) vendor/gdb/4.16/gdb/ns32km3-nat.c (props changed) vendor/gdb/4.16/gdb/objfiles.c (props changed) vendor/gdb/4.16/gdb/objfiles.h (props changed) vendor/gdb/4.16/gdb/op50-rom.c (props changed) vendor/gdb/4.16/gdb/os9kread.c (props changed) vendor/gdb/4.16/gdb/osfsolib.c (props changed) vendor/gdb/4.16/gdb/parse.c (props changed) vendor/gdb/4.16/gdb/parser-defs.h (props changed) vendor/gdb/4.16/gdb/partial-stab.h (props changed) vendor/gdb/4.16/gdb/ppcbug-rom.c (props changed) vendor/gdb/4.16/gdb/printcmd.c (props changed) vendor/gdb/4.16/gdb/process_reply.defs (props changed) vendor/gdb/4.16/gdb/procfs.c (props changed) vendor/gdb/4.16/gdb/ptx4-nat.c (props changed) vendor/gdb/4.16/gdb/pyr-tdep.c (props changed) vendor/gdb/4.16/gdb/pyr-xdep.c (props changed) vendor/gdb/4.16/gdb/remote-adapt.c (props changed) vendor/gdb/4.16/gdb/remote-array.c (props changed) vendor/gdb/4.16/gdb/remote-bug.c (props changed) vendor/gdb/4.16/gdb/remote-e7000.c (props changed) vendor/gdb/4.16/gdb/remote-eb.c (props changed) vendor/gdb/4.16/gdb/remote-es.c (props changed) vendor/gdb/4.16/gdb/remote-est.c (props changed) vendor/gdb/4.16/gdb/remote-hms.c (props changed) vendor/gdb/4.16/gdb/remote-mips.c (props changed) vendor/gdb/4.16/gdb/remote-mm.c (props changed) vendor/gdb/4.16/gdb/remote-nindy.c (props changed) vendor/gdb/4.16/gdb/remote-nrom.c (props changed) vendor/gdb/4.16/gdb/remote-os9k.c (props changed) vendor/gdb/4.16/gdb/remote-pa.c (props changed) vendor/gdb/4.16/gdb/remote-rdp.c (props changed) vendor/gdb/4.16/gdb/remote-sim.c (props changed) vendor/gdb/4.16/gdb/remote-sim.h (props changed) vendor/gdb/4.16/gdb/remote-st.c (props changed) vendor/gdb/4.16/gdb/remote-udi.c (props changed) vendor/gdb/4.16/gdb/remote-utils.c (props changed) vendor/gdb/4.16/gdb/remote-utils.h (props changed) vendor/gdb/4.16/gdb/remote-vx.c (props changed) vendor/gdb/4.16/gdb/remote-vx29k.c (props changed) vendor/gdb/4.16/gdb/remote-vx68.c (props changed) vendor/gdb/4.16/gdb/remote-vx960.c (props changed) vendor/gdb/4.16/gdb/remote-vxmips.c (props changed) vendor/gdb/4.16/gdb/remote-vxsparc.c (props changed) vendor/gdb/4.16/gdb/remote.c (props changed) vendor/gdb/4.16/gdb/reply_mig_hack.awk (props changed) vendor/gdb/4.16/gdb/saber.suppress (props changed) vendor/gdb/4.16/gdb/scm-exp.c (props changed) vendor/gdb/4.16/gdb/scm-lang.c (props changed) vendor/gdb/4.16/gdb/scm-lang.h (props changed) vendor/gdb/4.16/gdb/scm-tags.h (props changed) vendor/gdb/4.16/gdb/scm-valprint.c (props changed) vendor/gdb/4.16/gdb/ser-e7kpc.c (props changed) vendor/gdb/4.16/gdb/ser-go32.c (props changed) vendor/gdb/4.16/gdb/ser-mac.c (props changed) vendor/gdb/4.16/gdb/ser-tcp.c (props changed) vendor/gdb/4.16/gdb/ser-unix.c (props changed) vendor/gdb/4.16/gdb/serial.c (props changed) vendor/gdb/4.16/gdb/serial.h (props changed) vendor/gdb/4.16/gdb/signals.h (props changed) vendor/gdb/4.16/gdb/solib.c (props changed) vendor/gdb/4.16/gdb/solib.h (props changed) vendor/gdb/4.16/gdb/somread.c (props changed) vendor/gdb/4.16/gdb/somsolib.c (props changed) vendor/gdb/4.16/gdb/somsolib.h (props changed) vendor/gdb/4.16/gdb/source.c (props changed) vendor/gdb/4.16/gdb/srec.h (props changed) vendor/gdb/4.16/gdb/stabsread.c (props changed) vendor/gdb/4.16/gdb/stabsread.h (props changed) vendor/gdb/4.16/gdb/stack.c (props changed) vendor/gdb/4.16/gdb/standalone.c (props changed) vendor/gdb/4.16/gdb/stop-gdb.c (props changed) vendor/gdb/4.16/gdb/stuff.c (props changed) vendor/gdb/4.16/gdb/symfile.c (props changed) vendor/gdb/4.16/gdb/symfile.h (props changed) vendor/gdb/4.16/gdb/symm-nat.c (props changed) vendor/gdb/4.16/gdb/symm-tdep.c (props changed) vendor/gdb/4.16/gdb/symmisc.c (props changed) vendor/gdb/4.16/gdb/symtab.c (props changed) vendor/gdb/4.16/gdb/symtab.h (props changed) vendor/gdb/4.16/gdb/target.c (props changed) vendor/gdb/4.16/gdb/target.h (props changed) vendor/gdb/4.16/gdb/terminal.h (props changed) vendor/gdb/4.16/gdb/thread.c (props changed) vendor/gdb/4.16/gdb/thread.h (props changed) vendor/gdb/4.16/gdb/top.c (props changed) vendor/gdb/4.16/gdb/top.h (props changed) vendor/gdb/4.16/gdb/typeprint.c (props changed) vendor/gdb/4.16/gdb/typeprint.h (props changed) vendor/gdb/4.16/gdb/umax-xdep.c (props changed) vendor/gdb/4.16/gdb/utils.c (props changed) vendor/gdb/4.16/gdb/valarith.c (props changed) vendor/gdb/4.16/gdb/valops.c (props changed) vendor/gdb/4.16/gdb/valprint.c (props changed) vendor/gdb/4.16/gdb/valprint.h (props changed) vendor/gdb/4.16/gdb/value.h (props changed) vendor/gdb/4.16/gdb/values.c (props changed) vendor/gdb/4.16/gdb/xcoffread.c (props changed) vendor/gdb/4.16/gdb/xcoffsolib.c (props changed) vendor/gdb/4.16/gdb/xcoffsolib.h (props changed) vendor/gdb/4.16/gdb/xmodem.c (props changed) vendor/gdb/4.16/gdb/xmodem.h (props changed) vendor/gdb/4.16/include/COPYING (props changed) vendor/gdb/4.16/include/ChangeLog (props changed) vendor/gdb/4.16/include/ansidecl.h (props changed) vendor/gdb/4.16/include/aout/ChangeLog (props changed) vendor/gdb/4.16/include/aout/adobe.h (props changed) vendor/gdb/4.16/include/aout/aout64.h (props changed) vendor/gdb/4.16/include/aout/ar.h (props changed) vendor/gdb/4.16/include/aout/dynix3.h (props changed) vendor/gdb/4.16/include/aout/encap.h (props changed) vendor/gdb/4.16/include/aout/host.h (props changed) vendor/gdb/4.16/include/aout/hp.h (props changed) vendor/gdb/4.16/include/aout/hp300hpux.h (props changed) vendor/gdb/4.16/include/aout/hppa.h (props changed) vendor/gdb/4.16/include/aout/ranlib.h (props changed) vendor/gdb/4.16/include/aout/reloc.h (props changed) vendor/gdb/4.16/include/aout/stab.def (props changed) vendor/gdb/4.16/include/aout/stab_gnu.h (props changed) vendor/gdb/4.16/include/aout/sun4.h (props changed) vendor/gdb/4.16/include/bfdlink.h (props changed) vendor/gdb/4.16/include/bout.h (props changed) vendor/gdb/4.16/include/coff/ChangeLog (props changed) vendor/gdb/4.16/include/coff/a29k.h (props changed) vendor/gdb/4.16/include/coff/alpha.h (props changed) vendor/gdb/4.16/include/coff/apollo.h (props changed) vendor/gdb/4.16/include/coff/arm.h (props changed) vendor/gdb/4.16/include/coff/aux-coff.h (props changed) vendor/gdb/4.16/include/coff/ecoff.h (props changed) vendor/gdb/4.16/include/coff/h8300.h (props changed) vendor/gdb/4.16/include/coff/h8500.h (props changed) vendor/gdb/4.16/include/coff/i386.h (props changed) vendor/gdb/4.16/include/coff/i860.h (props changed) vendor/gdb/4.16/include/coff/i960.h (props changed) vendor/gdb/4.16/include/coff/internal.h (props changed) vendor/gdb/4.16/include/coff/m68k.h (props changed) vendor/gdb/4.16/include/coff/m88k.h (props changed) vendor/gdb/4.16/include/coff/mips.h (props changed) vendor/gdb/4.16/include/coff/pe.h (props changed) vendor/gdb/4.16/include/coff/powerpc.h (props changed) vendor/gdb/4.16/include/coff/rs6000.h (props changed) vendor/gdb/4.16/include/coff/sh.h (props changed) vendor/gdb/4.16/include/coff/sparc.h (props changed) vendor/gdb/4.16/include/coff/sym.h (props changed) vendor/gdb/4.16/include/coff/symconst.h (props changed) vendor/gdb/4.16/include/coff/w65.h (props changed) vendor/gdb/4.16/include/coff/we32k.h (props changed) vendor/gdb/4.16/include/coff/z8k.h (props changed) vendor/gdb/4.16/include/demangle.h (props changed) vendor/gdb/4.16/include/dis-asm.h (props changed) vendor/gdb/4.16/include/elf/ChangeLog (props changed) vendor/gdb/4.16/include/elf/common.h (props changed) vendor/gdb/4.16/include/elf/dwarf.h (props changed) vendor/gdb/4.16/include/elf/external.h (props changed) vendor/gdb/4.16/include/elf/hppa.h (props changed) vendor/gdb/4.16/include/elf/internal.h (props changed) vendor/gdb/4.16/include/elf/mips.h (props changed) vendor/gdb/4.16/include/elf/ppc.h (props changed) vendor/gdb/4.16/include/elf/sparc.h (props changed) vendor/gdb/4.16/include/floatformat.h (props changed) vendor/gdb/4.16/include/fopen-bin.h (props changed) vendor/gdb/4.16/include/fopen-same.h (props changed) vendor/gdb/4.16/include/gdbm.h (props changed) vendor/gdb/4.16/include/getopt.h (props changed) vendor/gdb/4.16/include/hp-symtab.h (props changed) vendor/gdb/4.16/include/ieee.h (props changed) vendor/gdb/4.16/include/libiberty.h (props changed) vendor/gdb/4.16/include/mpw/ChangeLog (props changed) vendor/gdb/4.16/include/mpw/README (props changed) vendor/gdb/4.16/include/mpw/dir.h (props changed) vendor/gdb/4.16/include/mpw/dirent.h (props changed) vendor/gdb/4.16/include/mpw/fcntl.h (props changed) vendor/gdb/4.16/include/mpw/grp.h (props changed) vendor/gdb/4.16/include/mpw/mpw.h (props changed) vendor/gdb/4.16/include/mpw/pwd.h (props changed) vendor/gdb/4.16/include/mpw/spin.h (props changed) vendor/gdb/4.16/include/mpw/stat.h (props changed) vendor/gdb/4.16/include/mpw/sys/file.h (props changed) vendor/gdb/4.16/include/mpw/sys/param.h (props changed) vendor/gdb/4.16/include/mpw/sys/resource.h (props changed) vendor/gdb/4.16/include/mpw/sys/stat.h (props changed) vendor/gdb/4.16/include/mpw/sys/time.h (props changed) vendor/gdb/4.16/include/mpw/sys/types.h (props changed) vendor/gdb/4.16/include/mpw/utime.h (props changed) vendor/gdb/4.16/include/mpw/varargs.h (props changed) vendor/gdb/4.16/include/nlm/ChangeLog (props changed) vendor/gdb/4.16/include/nlm/alpha-ext.h (props changed) vendor/gdb/4.16/include/nlm/common.h (props changed) vendor/gdb/4.16/include/nlm/external.h (props changed) vendor/gdb/4.16/include/nlm/i386-ext.h (props changed) vendor/gdb/4.16/include/nlm/internal.h (props changed) vendor/gdb/4.16/include/nlm/ppc-ext.h (props changed) vendor/gdb/4.16/include/nlm/sparc32-ext.h (props changed) vendor/gdb/4.16/include/oasys.h (props changed) vendor/gdb/4.16/include/obstack.h (props changed) vendor/gdb/4.16/include/opcode/ChangeLog (props changed) vendor/gdb/4.16/include/opcode/a29k.h (props changed) vendor/gdb/4.16/include/opcode/arm.h (props changed) vendor/gdb/4.16/include/opcode/convex.h (props changed) vendor/gdb/4.16/include/opcode/h8300.h (props changed) vendor/gdb/4.16/include/opcode/hppa.h (props changed) vendor/gdb/4.16/include/opcode/i386.h (props changed) vendor/gdb/4.16/include/opcode/i860.h (props changed) vendor/gdb/4.16/include/opcode/i960.h (props changed) vendor/gdb/4.16/include/opcode/m68k.h (props changed) vendor/gdb/4.16/include/opcode/m88k.h (props changed) vendor/gdb/4.16/include/opcode/mips.h (props changed) vendor/gdb/4.16/include/opcode/np1.h (props changed) vendor/gdb/4.16/include/opcode/ns32k.h (props changed) vendor/gdb/4.16/include/opcode/pn.h (props changed) vendor/gdb/4.16/include/opcode/ppc.h (props changed) vendor/gdb/4.16/include/opcode/pyr.h (props changed) vendor/gdb/4.16/include/opcode/rs6k.h (props changed) vendor/gdb/4.16/include/opcode/sparc.h (props changed) vendor/gdb/4.16/include/opcode/tahoe.h (props changed) vendor/gdb/4.16/include/opcode/vax.h (props changed) vendor/gdb/4.16/include/os9k.h (props changed) vendor/gdb/4.16/include/progress.h (props changed) vendor/gdb/4.16/include/wait.h (props changed) vendor/gdb/4.16/libiberty/COPYING.LIB (props changed) vendor/gdb/4.16/libiberty/ChangeLog (props changed) vendor/gdb/4.16/libiberty/Makefile.in (props changed) vendor/gdb/4.16/libiberty/README (props changed) vendor/gdb/4.16/libiberty/alloca-botch.h (props changed) vendor/gdb/4.16/libiberty/alloca-norm.h (props changed) vendor/gdb/4.16/libiberty/alloca.c (props changed) vendor/gdb/4.16/libiberty/argv.c (props changed) vendor/gdb/4.16/libiberty/atexit.c (props changed) vendor/gdb/4.16/libiberty/basename.c (props changed) vendor/gdb/4.16/libiberty/bcmp.c (props changed) vendor/gdb/4.16/libiberty/bcopy.c (props changed) vendor/gdb/4.16/libiberty/bzero.c (props changed) vendor/gdb/4.16/libiberty/clock.c (props changed) vendor/gdb/4.16/libiberty/concat.c (props changed) vendor/gdb/4.16/libiberty/config.table (props changed) vendor/gdb/4.16/libiberty/config/mh-a68bsd (props changed) vendor/gdb/4.16/libiberty/config/mh-aix (props changed) vendor/gdb/4.16/libiberty/config/mh-apollo68 (props changed) vendor/gdb/4.16/libiberty/config/mh-cxux7 (props changed) vendor/gdb/4.16/libiberty/config/mh-go32 (props changed) vendor/gdb/4.16/libiberty/config/mh-hpbsd (props changed) vendor/gdb/4.16/libiberty/config/mh-irix4 (props changed) vendor/gdb/4.16/libiberty/config/mh-lynxos (props changed) vendor/gdb/4.16/libiberty/config/mh-ncr3000 (props changed) vendor/gdb/4.16/libiberty/config/mh-riscix (props changed) vendor/gdb/4.16/libiberty/config/mh-sysv (props changed) vendor/gdb/4.16/libiberty/config/mh-sysv4 (props changed) vendor/gdb/4.16/libiberty/config/mt-sunos4 (props changed) vendor/gdb/4.16/libiberty/config/mt-vxworks5 (props changed) vendor/gdb/4.16/libiberty/configure.bat (props changed) vendor/gdb/4.16/libiberty/configure.in (props changed) vendor/gdb/4.16/libiberty/copysign.c (props changed) vendor/gdb/4.16/libiberty/cplus-dem.c (props changed) vendor/gdb/4.16/libiberty/dummy.c (props changed) vendor/gdb/4.16/libiberty/fdmatch.c (props changed) vendor/gdb/4.16/libiberty/floatformat.c (props changed) vendor/gdb/4.16/libiberty/functions.def (props changed) vendor/gdb/4.16/libiberty/getcwd.c (props changed) vendor/gdb/4.16/libiberty/getopt.c (props changed) vendor/gdb/4.16/libiberty/getopt1.c (props changed) vendor/gdb/4.16/libiberty/getpagesize.c (props changed) vendor/gdb/4.16/libiberty/getruntime.c (props changed) vendor/gdb/4.16/libiberty/hex.c (props changed) vendor/gdb/4.16/libiberty/index.c (props changed) vendor/gdb/4.16/libiberty/insque.c (props changed) vendor/gdb/4.16/libiberty/makefile.dos (props changed) vendor/gdb/4.16/libiberty/memchr.c (props changed) vendor/gdb/4.16/libiberty/memcmp.c (props changed) vendor/gdb/4.16/libiberty/memcpy.c (props changed) vendor/gdb/4.16/libiberty/memmove.c (props changed) vendor/gdb/4.16/libiberty/memset.c (props changed) vendor/gdb/4.16/libiberty/mpw-config.in (props changed) vendor/gdb/4.16/libiberty/mpw-make.sed (props changed) vendor/gdb/4.16/libiberty/mpw.c (props changed) vendor/gdb/4.16/libiberty/msdos.c (props changed) vendor/gdb/4.16/libiberty/obstack.c (props changed) vendor/gdb/4.16/libiberty/random.c (props changed) vendor/gdb/4.16/libiberty/rename.c (props changed) vendor/gdb/4.16/libiberty/rindex.c (props changed) vendor/gdb/4.16/libiberty/sigsetmask.c (props changed) vendor/gdb/4.16/libiberty/spaces.c (props changed) vendor/gdb/4.16/libiberty/strcasecmp.c (props changed) vendor/gdb/4.16/libiberty/strchr.c (props changed) vendor/gdb/4.16/libiberty/strdup.c (props changed) vendor/gdb/4.16/libiberty/strerror.c (props changed) vendor/gdb/4.16/libiberty/strncasecmp.c (props changed) vendor/gdb/4.16/libiberty/strrchr.c (props changed) vendor/gdb/4.16/libiberty/strsignal.c (props changed) vendor/gdb/4.16/libiberty/strstr.c (props changed) vendor/gdb/4.16/libiberty/strtod.c (props changed) vendor/gdb/4.16/libiberty/strtol.c (props changed) vendor/gdb/4.16/libiberty/strtoul.c (props changed) vendor/gdb/4.16/libiberty/tmpnam.c (props changed) vendor/gdb/4.16/libiberty/vasprintf.c (props changed) vendor/gdb/4.16/libiberty/vfork.c (props changed) vendor/gdb/4.16/libiberty/vfprintf.c (props changed) vendor/gdb/4.16/libiberty/vmsbuild.com (props changed) vendor/gdb/4.16/libiberty/vprintf.c (props changed) vendor/gdb/4.16/libiberty/vsprintf.c (props changed) vendor/gdb/4.16/libiberty/waitpid.c (props changed) vendor/gdb/4.16/libiberty/xatexit.c (props changed) vendor/gdb/4.16/libiberty/xexit.c (props changed) vendor/gdb/4.16/libiberty/xmalloc.c (props changed) vendor/gdb/4.16/libiberty/xstrdup.c (props changed) vendor/gdb/4.16/libiberty/xstrerror.c (props changed) vendor/gdb/4.16/opcodes/ChangeLog (props changed) vendor/gdb/4.16/opcodes/Makefile.in (props changed) vendor/gdb/4.16/opcodes/config.in (props changed) vendor/gdb/4.16/opcodes/configure (props changed) vendor/gdb/4.16/opcodes/configure.in (props changed) vendor/gdb/4.16/opcodes/dis-buf.c (props changed) vendor/gdb/4.16/opcodes/disassemble.c (props changed) vendor/gdb/4.16/opcodes/i386-dis.c (props changed) vendor/gdb/4.16/opcodes/sysdep.h (props changed) vendor/gdb/4.16/opcodes/z8k-dis.c (props changed) vendor/gdb/4.16/readline/doc/ChangeLog (props changed) vendor/gdb/4.16/readline/doc/Makefile.in (props changed) vendor/gdb/4.16/readline/doc/configure.in (props changed) vendor/gdb/4.16/readline/doc/hist.texinfo (props changed) vendor/gdb/4.16/readline/doc/hstech.texinfo (props changed) vendor/gdb/4.16/readline/doc/hsuser.texinfo (props changed) vendor/gdb/4.16/readline/doc/inc-hist.texi (props changed) vendor/gdb/4.16/readline/doc/rlman.texinfo (props changed) vendor/gdb/4.16/readline/doc/rltech.texinfo (props changed) vendor/gdb/4.16/readline/doc/rluser.texinfo (props changed) vendor/gdb/4.18/gdb/COPYING (props changed) vendor/gdb/4.18/gdb/ChangeLog (props changed) vendor/gdb/4.18/gdb/ChangeLog-93 (props changed) vendor/gdb/4.18/gdb/ChangeLog-94 (props changed) vendor/gdb/4.18/gdb/ChangeLog-95 (props changed) vendor/gdb/4.18/gdb/ChangeLog-96 (props changed) vendor/gdb/4.18/gdb/ChangeLog-97 (props changed) vendor/gdb/4.18/gdb/ChangeLog-98 (props changed) vendor/gdb/4.18/gdb/Makefile.in (props changed) vendor/gdb/4.18/gdb/NEWS (props changed) vendor/gdb/4.18/gdb/README (props changed) vendor/gdb/4.18/gdb/TODO (props changed) vendor/gdb/4.18/gdb/abug-rom.c (props changed) vendor/gdb/4.18/gdb/acconfig.h (props changed) vendor/gdb/4.18/gdb/acinclude.m4 (props changed) vendor/gdb/4.18/gdb/aclocal.m4 (props changed) vendor/gdb/4.18/gdb/alpha-nat.c (props changed) vendor/gdb/4.18/gdb/alpha-tdep.c (props changed) vendor/gdb/4.18/gdb/annotate.c (props changed) vendor/gdb/4.18/gdb/annotate.h (props changed) vendor/gdb/4.18/gdb/arc-tdep.c (props changed) vendor/gdb/4.18/gdb/arm-convert.s (props changed) vendor/gdb/4.18/gdb/arm-tdep.c (props changed) vendor/gdb/4.18/gdb/arm-xdep.c (props changed) vendor/gdb/4.18/gdb/ax-gdb.c (props changed) vendor/gdb/4.18/gdb/ax-gdb.h (props changed) vendor/gdb/4.18/gdb/ax-general.c (props changed) vendor/gdb/4.18/gdb/ax.h (props changed) vendor/gdb/4.18/gdb/bcache.c (props changed) vendor/gdb/4.18/gdb/bcache.h (props changed) vendor/gdb/4.18/gdb/blockframe.c (props changed) vendor/gdb/4.18/gdb/breakpoint.c (props changed) vendor/gdb/4.18/gdb/breakpoint.h (props changed) vendor/gdb/4.18/gdb/buildsym.c (props changed) vendor/gdb/4.18/gdb/buildsym.h (props changed) vendor/gdb/4.18/gdb/c-exp.tab.c (props changed) vendor/gdb/4.18/gdb/c-exp.y (props changed) vendor/gdb/4.18/gdb/c-lang.c (props changed) vendor/gdb/4.18/gdb/c-lang.h (props changed) vendor/gdb/4.18/gdb/c-typeprint.c (props changed) vendor/gdb/4.18/gdb/c-valprint.c (props changed) vendor/gdb/4.18/gdb/call-cmds.h (props changed) vendor/gdb/4.18/gdb/ch-exp.c (props changed) vendor/gdb/4.18/gdb/ch-lang.c (props changed) vendor/gdb/4.18/gdb/ch-lang.h (props changed) vendor/gdb/4.18/gdb/ch-typeprint.c (props changed) vendor/gdb/4.18/gdb/ch-valprint.c (props changed) vendor/gdb/4.18/gdb/coff-solib.c (props changed) vendor/gdb/4.18/gdb/coff-solib.h (props changed) vendor/gdb/4.18/gdb/coffread.c (props changed) vendor/gdb/4.18/gdb/command.c (props changed) vendor/gdb/4.18/gdb/command.h (props changed) vendor/gdb/4.18/gdb/complaints.c (props changed) vendor/gdb/4.18/gdb/complaints.h (props changed) vendor/gdb/4.18/gdb/config.in (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-linux.mh (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-linux.mt (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-osf1.mh (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-osf1.mt (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-osf2.mh (props changed) vendor/gdb/4.18/gdb/config/alpha/alpha-osf3.mh (props changed) vendor/gdb/4.18/gdb/config/alpha/nm-linux.h (props changed) vendor/gdb/4.18/gdb/config/alpha/nm-osf.h (props changed) vendor/gdb/4.18/gdb/config/alpha/nm-osf2.h (props changed) vendor/gdb/4.18/gdb/config/alpha/nm-osf3.h (props changed) vendor/gdb/4.18/gdb/config/alpha/tm-alpha.h (props changed) vendor/gdb/4.18/gdb/config/alpha/tm-alphalinux.h (props changed) vendor/gdb/4.18/gdb/config/alpha/xm-alphalinux.h (props changed) vendor/gdb/4.18/gdb/config/alpha/xm-alphaosf.h (props changed) vendor/gdb/4.18/gdb/config/i386/cygwin.mh (props changed) vendor/gdb/4.18/gdb/config/i386/cygwin.mt (props changed) vendor/gdb/4.18/gdb/config/i386/fbsd.mh (props changed) vendor/gdb/4.18/gdb/config/i386/fbsd.mt (props changed) vendor/gdb/4.18/gdb/config/i386/gdbserve.mt (props changed) vendor/gdb/4.18/gdb/config/i386/go32.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386aix.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386aix.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386aout.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386bsd.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386bsd.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386dgux.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386gnu.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386gnu.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386lynx.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386lynx.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386m3.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386m3.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386mach.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386mk.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386mk.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386nw.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386os9k.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386sco.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386sco4.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386sco5.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386sco5.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386sol2.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386sol2.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386v.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386v.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386v32.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386v4.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386v4.mt (props changed) vendor/gdb/4.18/gdb/config/i386/i386v42mp.mh (props changed) vendor/gdb/4.18/gdb/config/i386/i386v42mp.mt (props changed) vendor/gdb/4.18/gdb/config/i386/linux.mh (props changed) vendor/gdb/4.18/gdb/config/i386/linux.mt (props changed) vendor/gdb/4.18/gdb/config/i386/nbsd.mh (props changed) vendor/gdb/4.18/gdb/config/i386/nbsd.mt (props changed) vendor/gdb/4.18/gdb/config/i386/ncr3000.mh (props changed) vendor/gdb/4.18/gdb/config/i386/ncr3000.mt (props changed) vendor/gdb/4.18/gdb/config/i386/nm-fbsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-gnu.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386aix.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386bsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386lynx.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386mach.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386sco.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386sco4.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386sco5.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386sol2.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386v.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386v4.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-i386v42mp.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-linux.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-m3.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-nbsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-ptx4.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-sun386.h (props changed) vendor/gdb/4.18/gdb/config/i386/nm-symmetry.h (props changed) vendor/gdb/4.18/gdb/config/i386/ptx.mh (props changed) vendor/gdb/4.18/gdb/config/i386/ptx.mt (props changed) vendor/gdb/4.18/gdb/config/i386/ptx4.mh (props changed) vendor/gdb/4.18/gdb/config/i386/ptx4.mt (props changed) vendor/gdb/4.18/gdb/config/i386/sun386.mh (props changed) vendor/gdb/4.18/gdb/config/i386/sun386.mt (props changed) vendor/gdb/4.18/gdb/config/i386/symmetry.mh (props changed) vendor/gdb/4.18/gdb/config/i386/symmetry.mt (props changed) vendor/gdb/4.18/gdb/config/i386/tm-cygwin.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-fbsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386aix.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386bsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386gnu.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386lynx.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386m3.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386mk.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386nw.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386os9k.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386sco5.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386sol2.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386v.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386v4.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-i386v42mp.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-linux.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-nbsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-ptx.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-ptx4.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-sun386.h (props changed) vendor/gdb/4.18/gdb/config/i386/tm-symmetry.h (props changed) vendor/gdb/4.18/gdb/config/i386/windows.mh (props changed) vendor/gdb/4.18/gdb/config/i386/xm-cygwin.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-go32.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386aix.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386bsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386gnu.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386lynx.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386m3.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386mach.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386mk.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386sco.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386v.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386v32.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-i386v4.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-linux.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-nbsd.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-ptx.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-ptx4.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-sun386.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-symmetry.h (props changed) vendor/gdb/4.18/gdb/config/i386/xm-windows.h (props changed) vendor/gdb/4.18/gdb/configure (props changed) vendor/gdb/4.18/gdb/configure.host (props changed) vendor/gdb/4.18/gdb/configure.in (props changed) vendor/gdb/4.18/gdb/configure.tgt (props changed) vendor/gdb/4.18/gdb/copying.awk (props changed) vendor/gdb/4.18/gdb/copying.c (props changed) vendor/gdb/4.18/gdb/core-aout.c (props changed) vendor/gdb/4.18/gdb/core-regset.c (props changed) vendor/gdb/4.18/gdb/core-sol2.c (props changed) vendor/gdb/4.18/gdb/corefile.c (props changed) vendor/gdb/4.18/gdb/corelow.c (props changed) vendor/gdb/4.18/gdb/cp-valprint.c (props changed) vendor/gdb/4.18/gdb/cpu32bug-rom.c (props changed) vendor/gdb/4.18/gdb/cxux-nat.c (props changed) vendor/gdb/4.18/gdb/dbxread.c (props changed) vendor/gdb/4.18/gdb/dcache.c (props changed) vendor/gdb/4.18/gdb/dcache.h (props changed) vendor/gdb/4.18/gdb/defs.h (props changed) vendor/gdb/4.18/gdb/demangle.c (props changed) vendor/gdb/4.18/gdb/dink32-rom.c (props changed) vendor/gdb/4.18/gdb/doc/ChangeLog (props changed) vendor/gdb/4.18/gdb/doc/GDBvn.texi (props changed) vendor/gdb/4.18/gdb/doc/HPPA-cfg.texi (props changed) vendor/gdb/4.18/gdb/doc/LRS (props changed) vendor/gdb/4.18/gdb/doc/Makefile.in (props changed) vendor/gdb/4.18/gdb/doc/a4rc.sed (props changed) vendor/gdb/4.18/gdb/doc/agentexpr.texi (props changed) vendor/gdb/4.18/gdb/doc/all-cfg.texi (props changed) vendor/gdb/4.18/gdb/doc/annotate.texi (props changed) vendor/gdb/4.18/gdb/doc/configure (props changed) vendor/gdb/4.18/gdb/doc/configure.in (props changed) vendor/gdb/4.18/gdb/doc/gdb.texinfo (props changed) vendor/gdb/4.18/gdb/doc/gdbint.texinfo (props changed) vendor/gdb/4.18/gdb/doc/h8-cfg.texi (props changed) vendor/gdb/4.18/gdb/doc/libgdb.texinfo (props changed) vendor/gdb/4.18/gdb/doc/lpsrc.sed (props changed) vendor/gdb/4.18/gdb/doc/psrc.sed (props changed) vendor/gdb/4.18/gdb/doc/refcard.tex (props changed) vendor/gdb/4.18/gdb/doc/remote.texi (props changed) vendor/gdb/4.18/gdb/doc/stabs.texinfo (props changed) vendor/gdb/4.18/gdb/dwarf2read.c (props changed) vendor/gdb/4.18/gdb/dwarfread.c (props changed) vendor/gdb/4.18/gdb/elfread.c (props changed) vendor/gdb/4.18/gdb/environ.c (props changed) vendor/gdb/4.18/gdb/environ.h (props changed) vendor/gdb/4.18/gdb/eval.c (props changed) vendor/gdb/4.18/gdb/exc_request.defs (props changed) vendor/gdb/4.18/gdb/exec.c (props changed) vendor/gdb/4.18/gdb/expprint.c (props changed) vendor/gdb/4.18/gdb/expression.h (props changed) vendor/gdb/4.18/gdb/f-exp.tab.c (props changed) vendor/gdb/4.18/gdb/f-exp.y (props changed) vendor/gdb/4.18/gdb/f-lang.c (props changed) vendor/gdb/4.18/gdb/f-lang.h (props changed) vendor/gdb/4.18/gdb/f-typeprint.c (props changed) vendor/gdb/4.18/gdb/f-valprint.c (props changed) vendor/gdb/4.18/gdb/findvar.c (props changed) vendor/gdb/4.18/gdb/fork-child.c (props changed) vendor/gdb/4.18/gdb/fr30-tdep.c (props changed) vendor/gdb/4.18/gdb/frame.h (props changed) vendor/gdb/4.18/gdb/gdb-stabs.h (props changed) vendor/gdb/4.18/gdb/gdb.1 (props changed) vendor/gdb/4.18/gdb/gdb.gdb (props changed) vendor/gdb/4.18/gdb/gdb_stat.h (props changed) vendor/gdb/4.18/gdb/gdb_string.h (props changed) vendor/gdb/4.18/gdb/gdba.el (props changed) vendor/gdb/4.18/gdb/gdbarch.c (props changed) vendor/gdb/4.18/gdb/gdbarch.h (props changed) vendor/gdb/4.18/gdb/gdbcmd.h (props changed) vendor/gdb/4.18/gdb/gdbcore.h (props changed) vendor/gdb/4.18/gdb/gdbinit.in (props changed) vendor/gdb/4.18/gdb/gdbserver/Makefile.in (props changed) vendor/gdb/4.18/gdb/gdbserver/README (props changed) vendor/gdb/4.18/gdb/gdbserver/configure.in (props changed) vendor/gdb/4.18/gdb/gdbserver/gdbreplay.c (props changed) vendor/gdb/4.18/gdb/gdbserver/gdbserver.1 (props changed) vendor/gdb/4.18/gdb/gdbserver/low-hppabsd.c (props changed) vendor/gdb/4.18/gdb/gdbserver/low-linux.c (props changed) vendor/gdb/4.18/gdb/gdbserver/low-lynx.c (props changed) vendor/gdb/4.18/gdb/gdbserver/low-sim.c (props changed) vendor/gdb/4.18/gdb/gdbserver/low-sparc.c (props changed) vendor/gdb/4.18/gdb/gdbserver/low-sun3.c (props changed) vendor/gdb/4.18/gdb/gdbserver/remote-utils.c (props changed) vendor/gdb/4.18/gdb/gdbserver/server.c (props changed) vendor/gdb/4.18/gdb/gdbserver/server.h (props changed) vendor/gdb/4.18/gdb/gdbserver/utils.c (props changed) vendor/gdb/4.18/gdb/gdbthread.h (props changed) vendor/gdb/4.18/gdb/gdbtypes.c (props changed) vendor/gdb/4.18/gdb/gdbtypes.h (props changed) vendor/gdb/4.18/gdb/gnu-nat.c (props changed) vendor/gdb/4.18/gdb/gnu-nat.h (props changed) vendor/gdb/4.18/gdb/gnu-regex.c (props changed) vendor/gdb/4.18/gdb/gnu-regex.h (props changed) vendor/gdb/4.18/gdb/go32-xdep.c (props changed) vendor/gdb/4.18/gdb/hp-psymtab-read.c (props changed) vendor/gdb/4.18/gdb/hp-symtab-read.c (props changed) vendor/gdb/4.18/gdb/hpread.h (props changed) vendor/gdb/4.18/gdb/hpux-thread.c (props changed) vendor/gdb/4.18/gdb/i386-stub.c (props changed) vendor/gdb/4.18/gdb/i386-tdep.c (props changed) vendor/gdb/4.18/gdb/i386aix-nat.c (props changed) vendor/gdb/4.18/gdb/i386b-nat.c (props changed) vendor/gdb/4.18/gdb/i386gnu-nat.c (props changed) vendor/gdb/4.18/gdb/i386ly-tdep.c (props changed) vendor/gdb/4.18/gdb/i386m3-nat.c (props changed) vendor/gdb/4.18/gdb/i386mach-nat.c (props changed) vendor/gdb/4.18/gdb/i386v-nat.c (props changed) vendor/gdb/4.18/gdb/i386v4-nat.c (props changed) vendor/gdb/4.18/gdb/i387-tdep.c (props changed) vendor/gdb/4.18/gdb/infcmd.c (props changed) vendor/gdb/4.18/gdb/inferior.h (props changed) vendor/gdb/4.18/gdb/inflow.c (props changed) vendor/gdb/4.18/gdb/infptrace.c (props changed) vendor/gdb/4.18/gdb/infrun.c (props changed) vendor/gdb/4.18/gdb/inftarg.c (props changed) vendor/gdb/4.18/gdb/infttrace.c (props changed) vendor/gdb/4.18/gdb/irix4-nat.c (props changed) vendor/gdb/4.18/gdb/irix5-nat.c (props changed) vendor/gdb/4.18/gdb/isi-xdep.c (props changed) vendor/gdb/4.18/gdb/jv-exp.tab.c (props changed) vendor/gdb/4.18/gdb/jv-exp.y (props changed) vendor/gdb/4.18/gdb/jv-lang.c (props changed) vendor/gdb/4.18/gdb/jv-lang.h (props changed) vendor/gdb/4.18/gdb/jv-typeprint.c (props changed) vendor/gdb/4.18/gdb/jv-valprint.c (props changed) vendor/gdb/4.18/gdb/kdb-start.c (props changed) vendor/gdb/4.18/gdb/language.c (props changed) vendor/gdb/4.18/gdb/language.h (props changed) vendor/gdb/4.18/gdb/lynx-nat.c (props changed) vendor/gdb/4.18/gdb/m2-exp.tab.c (props changed) vendor/gdb/4.18/gdb/m2-exp.y (props changed) vendor/gdb/4.18/gdb/m2-lang.c (props changed) vendor/gdb/4.18/gdb/m2-lang.h (props changed) vendor/gdb/4.18/gdb/m2-typeprint.c (props changed) vendor/gdb/4.18/gdb/m2-valprint.c (props changed) vendor/gdb/4.18/gdb/m3-nat.c (props changed) vendor/gdb/4.18/gdb/m32r-rom.c (props changed) vendor/gdb/4.18/gdb/m32r-stub.c (props changed) vendor/gdb/4.18/gdb/m32r-tdep.c (props changed) vendor/gdb/4.18/gdb/m68k-stub.c (props changed) vendor/gdb/4.18/gdb/m68k-tdep.c (props changed) vendor/gdb/4.18/gdb/m68klinux-nat.c (props changed) vendor/gdb/4.18/gdb/m68knbsd-nat.c (props changed) vendor/gdb/4.18/gdb/m88k-nat.c (props changed) vendor/gdb/4.18/gdb/m88k-tdep.c (props changed) vendor/gdb/4.18/gdb/main.c (props changed) vendor/gdb/4.18/gdb/maint.c (props changed) vendor/gdb/4.18/gdb/mdebugread.c (props changed) vendor/gdb/4.18/gdb/mem-break.c (props changed) vendor/gdb/4.18/gdb/minimon.h (props changed) vendor/gdb/4.18/gdb/minsyms.c (props changed) vendor/gdb/4.18/gdb/mipsread.c (props changed) vendor/gdb/4.18/gdb/mon960-rom.c (props changed) vendor/gdb/4.18/gdb/monitor.c (props changed) vendor/gdb/4.18/gdb/monitor.h (props changed) vendor/gdb/4.18/gdb/mpw-config.in (props changed) vendor/gdb/4.18/gdb/mpw-make.sed (props changed) vendor/gdb/4.18/gdb/msg.defs (props changed) vendor/gdb/4.18/gdb/msg_reply.defs (props changed) vendor/gdb/4.18/gdb/news-xdep.c (props changed) vendor/gdb/4.18/gdb/nindy-tdep.c (props changed) vendor/gdb/4.18/gdb/nlm/Makefile.in (props changed) vendor/gdb/4.18/gdb/nlm/configure (props changed) vendor/gdb/4.18/gdb/nlm/configure.in (props changed) vendor/gdb/4.18/gdb/nlm/gdbserve.c (props changed) vendor/gdb/4.18/gdb/nlm/gdbserve.def (props changed) vendor/gdb/4.18/gdb/nlm/i386.c (props changed) vendor/gdb/4.18/gdb/nlm/i386.h (props changed) vendor/gdb/4.18/gdb/nlm/ppc.c (props changed) vendor/gdb/4.18/gdb/nlm/ppc.h (props changed) vendor/gdb/4.18/gdb/nlm/prelude.c (props changed) vendor/gdb/4.18/gdb/nlmread.c (props changed) vendor/gdb/4.18/gdb/notify.defs (props changed) vendor/gdb/4.18/gdb/ns32k-tdep.c (props changed) vendor/gdb/4.18/gdb/ns32km3-nat.c (props changed) vendor/gdb/4.18/gdb/ns32knbsd-nat.c (props changed) vendor/gdb/4.18/gdb/objfiles.c (props changed) vendor/gdb/4.18/gdb/objfiles.h (props changed) vendor/gdb/4.18/gdb/ocd.c (props changed) vendor/gdb/4.18/gdb/ocd.h (props changed) vendor/gdb/4.18/gdb/op50-rom.c (props changed) vendor/gdb/4.18/gdb/os9kread.c (props changed) vendor/gdb/4.18/gdb/osfsolib.c (props changed) vendor/gdb/4.18/gdb/parse.c (props changed) vendor/gdb/4.18/gdb/parser-defs.h (props changed) vendor/gdb/4.18/gdb/partial-stab.h (props changed) vendor/gdb/4.18/gdb/ppc-bdm.c (props changed) vendor/gdb/4.18/gdb/ppcbug-rom.c (props changed) vendor/gdb/4.18/gdb/printcmd.c (props changed) vendor/gdb/4.18/gdb/process_reply.defs (props changed) vendor/gdb/4.18/gdb/procfs.c (props changed) vendor/gdb/4.18/gdb/ptx4-nat.c (props changed) vendor/gdb/4.18/gdb/pyr-tdep.c (props changed) vendor/gdb/4.18/gdb/pyr-xdep.c (props changed) vendor/gdb/4.18/gdb/remote-adapt.c (props changed) vendor/gdb/4.18/gdb/remote-array.c (props changed) vendor/gdb/4.18/gdb/remote-bug.c (props changed) vendor/gdb/4.18/gdb/remote-d10v.c (props changed) vendor/gdb/4.18/gdb/remote-e7000.c (props changed) vendor/gdb/4.18/gdb/remote-eb.c (props changed) vendor/gdb/4.18/gdb/remote-es.c (props changed) vendor/gdb/4.18/gdb/remote-est.c (props changed) vendor/gdb/4.18/gdb/remote-hms.c (props changed) vendor/gdb/4.18/gdb/remote-mips.c (props changed) vendor/gdb/4.18/gdb/remote-mm.c (props changed) vendor/gdb/4.18/gdb/remote-nindy.c (props changed) vendor/gdb/4.18/gdb/remote-nrom.c (props changed) vendor/gdb/4.18/gdb/remote-os9k.c (props changed) vendor/gdb/4.18/gdb/remote-rdi.c (props changed) vendor/gdb/4.18/gdb/remote-rdp.c (props changed) vendor/gdb/4.18/gdb/remote-sds.c (props changed) vendor/gdb/4.18/gdb/remote-sim.c (props changed) vendor/gdb/4.18/gdb/remote-st.c (props changed) vendor/gdb/4.18/gdb/remote-udi.c (props changed) vendor/gdb/4.18/gdb/remote-utils.c (props changed) vendor/gdb/4.18/gdb/remote-utils.h (props changed) vendor/gdb/4.18/gdb/remote-vx.c (props changed) vendor/gdb/4.18/gdb/remote-vx29k.c (props changed) vendor/gdb/4.18/gdb/remote-vx68.c (props changed) vendor/gdb/4.18/gdb/remote-vx960.c (props changed) vendor/gdb/4.18/gdb/remote-vxmips.c (props changed) vendor/gdb/4.18/gdb/remote-vxsparc.c (props changed) vendor/gdb/4.18/gdb/remote.c (props changed) vendor/gdb/4.18/gdb/reply_mig_hack.awk (props changed) vendor/gdb/4.18/gdb/saber.suppress (props changed) vendor/gdb/4.18/gdb/scm-exp.c (props changed) vendor/gdb/4.18/gdb/scm-lang.c (props changed) vendor/gdb/4.18/gdb/scm-lang.h (props changed) vendor/gdb/4.18/gdb/scm-tags.h (props changed) vendor/gdb/4.18/gdb/scm-valprint.c (props changed) vendor/gdb/4.18/gdb/ser-e7kpc.c (props changed) vendor/gdb/4.18/gdb/ser-go32.c (props changed) vendor/gdb/4.18/gdb/ser-mac.c (props changed) vendor/gdb/4.18/gdb/ser-ocd.c (props changed) vendor/gdb/4.18/gdb/ser-tcp.c (props changed) vendor/gdb/4.18/gdb/ser-unix.c (props changed) vendor/gdb/4.18/gdb/serial.c (props changed) vendor/gdb/4.18/gdb/serial.h (props changed) vendor/gdb/4.18/gdb/signals.h (props changed) vendor/gdb/4.18/gdb/sol-thread.c (props changed) vendor/gdb/4.18/gdb/solib.c (props changed) vendor/gdb/4.18/gdb/solib.h (props changed) vendor/gdb/4.18/gdb/somread.c (props changed) vendor/gdb/4.18/gdb/somsolib.c (props changed) vendor/gdb/4.18/gdb/somsolib.h (props changed) vendor/gdb/4.18/gdb/source.c (props changed) vendor/gdb/4.18/gdb/srec.h (props changed) vendor/gdb/4.18/gdb/stabsread.c (props changed) vendor/gdb/4.18/gdb/stabsread.h (props changed) vendor/gdb/4.18/gdb/stack.c (props changed) vendor/gdb/4.18/gdb/standalone.c (props changed) vendor/gdb/4.18/gdb/stop-gdb.c (props changed) vendor/gdb/4.18/gdb/stuff.c (props changed) vendor/gdb/4.18/gdb/symfile.c (props changed) vendor/gdb/4.18/gdb/symfile.h (props changed) vendor/gdb/4.18/gdb/symm-nat.c (props changed) vendor/gdb/4.18/gdb/symm-tdep.c (props changed) vendor/gdb/4.18/gdb/symmisc.c (props changed) vendor/gdb/4.18/gdb/symtab.c (props changed) vendor/gdb/4.18/gdb/symtab.h (props changed) vendor/gdb/4.18/gdb/target.c (props changed) vendor/gdb/4.18/gdb/target.h (props changed) vendor/gdb/4.18/gdb/terminal.h (props changed) vendor/gdb/4.18/gdb/thread.c (props changed) vendor/gdb/4.18/gdb/top.c (props changed) vendor/gdb/4.18/gdb/top.h (props changed) vendor/gdb/4.18/gdb/tracepoint.c (props changed) vendor/gdb/4.18/gdb/tracepoint.h (props changed) vendor/gdb/4.18/gdb/tui/ChangeLog (props changed) vendor/gdb/4.18/gdb/tui/Makefile (props changed) vendor/gdb/4.18/gdb/tui/Makefile.in (props changed) vendor/gdb/4.18/gdb/tui/tui.c (props changed) vendor/gdb/4.18/gdb/tui/tui.h (props changed) vendor/gdb/4.18/gdb/tui/tuiCommand.c (props changed) vendor/gdb/4.18/gdb/tui/tuiCommand.h (props changed) vendor/gdb/4.18/gdb/tui/tuiData.c (props changed) vendor/gdb/4.18/gdb/tui/tuiData.h (props changed) vendor/gdb/4.18/gdb/tui/tuiDataWin.c (props changed) vendor/gdb/4.18/gdb/tui/tuiDataWin.h (props changed) vendor/gdb/4.18/gdb/tui/tuiDisassem.c (props changed) vendor/gdb/4.18/gdb/tui/tuiDisassem.h (props changed) vendor/gdb/4.18/gdb/tui/tuiGeneralWin.c (props changed) vendor/gdb/4.18/gdb/tui/tuiGeneralWin.h (props changed) vendor/gdb/4.18/gdb/tui/tuiIO.c (props changed) vendor/gdb/4.18/gdb/tui/tuiIO.h (props changed) vendor/gdb/4.18/gdb/tui/tuiLayout.c (props changed) vendor/gdb/4.18/gdb/tui/tuiLayout.h (props changed) vendor/gdb/4.18/gdb/tui/tuiRegs.c (props changed) vendor/gdb/4.18/gdb/tui/tuiRegs.h (props changed) vendor/gdb/4.18/gdb/tui/tuiSource.c (props changed) vendor/gdb/4.18/gdb/tui/tuiSource.h (props changed) vendor/gdb/4.18/gdb/tui/tuiSourceWin.c (props changed) vendor/gdb/4.18/gdb/tui/tuiSourceWin.h (props changed) vendor/gdb/4.18/gdb/tui/tuiStack.c (props changed) vendor/gdb/4.18/gdb/tui/tuiStack.h (props changed) vendor/gdb/4.18/gdb/tui/tuiWin.c (props changed) vendor/gdb/4.18/gdb/tui/tuiWin.h (props changed) vendor/gdb/4.18/gdb/typeprint.c (props changed) vendor/gdb/4.18/gdb/typeprint.h (props changed) vendor/gdb/4.18/gdb/umax-xdep.c (props changed) vendor/gdb/4.18/gdb/utils.c (props changed) vendor/gdb/4.18/gdb/v850-tdep.c (props changed) vendor/gdb/4.18/gdb/valarith.c (props changed) vendor/gdb/4.18/gdb/valops.c (props changed) vendor/gdb/4.18/gdb/valprint.c (props changed) vendor/gdb/4.18/gdb/valprint.h (props changed) vendor/gdb/4.18/gdb/value.h (props changed) vendor/gdb/4.18/gdb/values.c (props changed) vendor/gdb/4.18/gdb/xcoffread.c (props changed) vendor/gdb/4.18/gdb/xcoffsolib.c (props changed) vendor/gdb/4.18/gdb/xcoffsolib.h (props changed) vendor/gdb/4.18/gdb/xmodem.c (props changed) vendor/gdb/4.18/gdb/xmodem.h (props changed) vendor/gdb/5.2.1/gdb/CONTRIBUTE (props changed) vendor/gdb/5.2.1/gdb/COPYING (props changed) vendor/gdb/5.2.1/gdb/ChangeLog (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1990 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1991 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1992 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1993 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1994 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1995 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1996 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1997 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1998 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-1999 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-2000 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-2001 (props changed) vendor/gdb/5.2.1/gdb/ChangeLog-3.x (props changed) vendor/gdb/5.2.1/gdb/MAINTAINERS (props changed) vendor/gdb/5.2.1/gdb/Makefile.in (props changed) vendor/gdb/5.2.1/gdb/NEWS (props changed) vendor/gdb/5.2.1/gdb/PROBLEMS (props changed) vendor/gdb/5.2.1/gdb/README (props changed) vendor/gdb/5.2.1/gdb/TODO (props changed) vendor/gdb/5.2.1/gdb/abug-rom.c (props changed) vendor/gdb/5.2.1/gdb/acconfig.h (props changed) vendor/gdb/5.2.1/gdb/acinclude.m4 (props changed) vendor/gdb/5.2.1/gdb/aclocal.m4 (props changed) vendor/gdb/5.2.1/gdb/alpha-nat.c (props changed) vendor/gdb/5.2.1/gdb/alpha-tdep.c (props changed) vendor/gdb/5.2.1/gdb/alphabsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/alphafbsd-tdep.c (props changed) vendor/gdb/5.2.1/gdb/annotate.c (props changed) vendor/gdb/5.2.1/gdb/annotate.h (props changed) vendor/gdb/5.2.1/gdb/arc-tdep.c (props changed) vendor/gdb/5.2.1/gdb/arch-utils.c (props changed) vendor/gdb/5.2.1/gdb/arch-utils.h (props changed) vendor/gdb/5.2.1/gdb/arm-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/arm-linux-tdep.c (props changed) vendor/gdb/5.2.1/gdb/arm-tdep.c (props changed) vendor/gdb/5.2.1/gdb/arm-tdep.h (props changed) vendor/gdb/5.2.1/gdb/armnbsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/armnbsd-tdep.c (props changed) vendor/gdb/5.2.1/gdb/ax-gdb.c (props changed) vendor/gdb/5.2.1/gdb/ax-gdb.h (props changed) vendor/gdb/5.2.1/gdb/ax-general.c (props changed) vendor/gdb/5.2.1/gdb/ax.h (props changed) vendor/gdb/5.2.1/gdb/bcache.c (props changed) vendor/gdb/5.2.1/gdb/bcache.h (props changed) vendor/gdb/5.2.1/gdb/blockframe.c (props changed) vendor/gdb/5.2.1/gdb/breakpoint.c (props changed) vendor/gdb/5.2.1/gdb/breakpoint.h (props changed) vendor/gdb/5.2.1/gdb/buildsym.c (props changed) vendor/gdb/5.2.1/gdb/buildsym.h (props changed) vendor/gdb/5.2.1/gdb/c-exp.y (props changed) vendor/gdb/5.2.1/gdb/c-lang.c (props changed) vendor/gdb/5.2.1/gdb/c-lang.h (props changed) vendor/gdb/5.2.1/gdb/c-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/c-valprint.c (props changed) vendor/gdb/5.2.1/gdb/call-cmds.h (props changed) vendor/gdb/5.2.1/gdb/ch-exp.c (props changed) vendor/gdb/5.2.1/gdb/ch-lang.c (props changed) vendor/gdb/5.2.1/gdb/ch-lang.h (props changed) vendor/gdb/5.2.1/gdb/ch-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/ch-valprint.c (props changed) vendor/gdb/5.2.1/gdb/cli-out.c (props changed) vendor/gdb/5.2.1/gdb/cli-out.h (props changed) vendor/gdb/5.2.1/gdb/cli/cli-cmds.c (props changed) vendor/gdb/5.2.1/gdb/cli/cli-cmds.h (props changed) vendor/gdb/5.2.1/gdb/cli/cli-decode.c (props changed) vendor/gdb/5.2.1/gdb/cli/cli-decode.h (props changed) vendor/gdb/5.2.1/gdb/cli/cli-script.c (props changed) vendor/gdb/5.2.1/gdb/cli/cli-script.h (props changed) vendor/gdb/5.2.1/gdb/cli/cli-setshow.c (props changed) vendor/gdb/5.2.1/gdb/cli/cli-setshow.h (props changed) vendor/gdb/5.2.1/gdb/cli/cli-utils.c (props changed) vendor/gdb/5.2.1/gdb/cli/cli-utils.h (props changed) vendor/gdb/5.2.1/gdb/coff-solib.c (props changed) vendor/gdb/5.2.1/gdb/coff-solib.h (props changed) vendor/gdb/5.2.1/gdb/coffread.c (props changed) vendor/gdb/5.2.1/gdb/command.h (props changed) vendor/gdb/5.2.1/gdb/complaints.c (props changed) vendor/gdb/5.2.1/gdb/complaints.h (props changed) vendor/gdb/5.2.1/gdb/completer.c (props changed) vendor/gdb/5.2.1/gdb/completer.h (props changed) vendor/gdb/5.2.1/gdb/config.in (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-osf1.mh (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-osf1.mt (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-osf2.mh (props changed) vendor/gdb/5.2.1/gdb/config/alpha/alpha-osf3.mh (props changed) vendor/gdb/5.2.1/gdb/config/alpha/fbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/alpha/fbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/alpha/nm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/nm-osf.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/nm-osf2.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/nm-osf3.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/tm-alpha.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/tm-alphalinux.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/tm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/xm-alphalinux.h (props changed) vendor/gdb/5.2.1/gdb/config/alpha/xm-alphaosf.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/embed.mt (props changed) vendor/gdb/5.2.1/gdb/config/arm/linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/arm/linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/arm/nbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/arm/nbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/arm/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/nm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/tm-arm.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/tm-embed.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/tm-wince.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/wince.mt (props changed) vendor/gdb/5.2.1/gdb/config/arm/xm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/arm/xm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/cygwin.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/cygwin.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/embed.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/fbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/fbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/gdbserve.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/go32.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/go32.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386aix.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386aix.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386aout.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386bsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386bsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386dgux.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386gnu.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386gnu.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386lynx.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386lynx.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386m3.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386m3.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386mach.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386mk.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386mk.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386nw.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386os9k.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sco.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sco4.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sco5.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sco5.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sol2.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386sol2.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v32.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v4.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v4.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v42mp.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/i386v42mp.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/nbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/nbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/nbsdelf.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/nbsdelf.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/ncr3000.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/ncr3000.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-cygwin.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-gnu.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-go32.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386aix.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386bsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386lynx.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386mach.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386sco.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386sco4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386sco5.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386sol2.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386v.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386v4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-i386v42mp.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-m3.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-nbsdelf.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-obsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-ptx4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-symmetry.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/nm-x86-64.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/obsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/obsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/ptx.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/ptx.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/ptx4.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/ptx4.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/symmetry.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/symmetry.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-cygwin.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-go32.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386aix.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386bsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386gnu.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386lynx.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386m3.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386mk.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386nw.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386os9k.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386sco5.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386sol2.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386v.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386v4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-i386v42mp.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-nbsdelf.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-obsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-ptx.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-ptx4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-symmetry.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/tm-vxworks.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/vxworks.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/x86-64linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/i386/x86-64linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-cygwin.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-go32.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386aix.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386bsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386gnu.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386m3.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386mach.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386mk.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386sco.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386v.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386v32.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-i386v4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-ptx.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-ptx4.h (props changed) vendor/gdb/5.2.1/gdb/config/i386/xm-symmetry.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/aix.mh (props changed) vendor/gdb/5.2.1/gdb/config/ia64/aix.mt (props changed) vendor/gdb/5.2.1/gdb/config/ia64/linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/ia64/linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/ia64/nm-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/tm-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/tm-ia64.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/xm-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/ia64/xm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/none/nm-none.h (props changed) vendor/gdb/5.2.1/gdb/config/none/none.mh (props changed) vendor/gdb/5.2.1/gdb/config/none/none.mt (props changed) vendor/gdb/5.2.1/gdb/config/none/tm-none.h (props changed) vendor/gdb/5.2.1/gdb/config/none/xm-none.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/aix.mh (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/aix.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/gdbserve.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/nbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/nbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/nm-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/nm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/ppc-eabi.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/ppc-sim.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/ppcle-eabi.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/ppcle-sim.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-ppc-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-ppc-eabi.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-ppc-sim.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-ppcle-eabi.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-ppcle-sim.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/tm-vxworks.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/vxworks.mt (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/xm-aix.h (props changed) vendor/gdb/5.2.1/gdb/config/powerpc/xm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/fbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/fbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/linux.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nbsd.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nbsd.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nbsdelf.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-nbsdelf.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-sparclynx.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-sun4os4.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/nm-sun4sol2.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sp64.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sp64linux.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sp64sim.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sp64sol2.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sparc-em.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sparclet.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sparclite.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sparclynx.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sparclynx.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sun4os4.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sun4os4.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sun4sol2.mh (props changed) vendor/gdb/5.2.1/gdb/config/sparc/sun4sol2.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-fbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sp64.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sp64linux.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sp64sim.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sparc.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sparclet.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sparclite.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sparclynx.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-spc-em.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sun4os4.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-sun4sol2.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/tm-vxsparc.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/vxsparc.mt (props changed) vendor/gdb/5.2.1/gdb/config/sparc/xm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/xm-nbsd.h (props changed) vendor/gdb/5.2.1/gdb/config/sparc/xm-sun4sol2.h (props changed) vendor/gdb/5.2.1/gdb/config/tm-linux.h (props changed) vendor/gdb/5.2.1/gdb/config/tm-vxworks.h (props changed) vendor/gdb/5.2.1/gdb/configure (props changed) vendor/gdb/5.2.1/gdb/configure.host (props changed) vendor/gdb/5.2.1/gdb/configure.in (props changed) vendor/gdb/5.2.1/gdb/configure.tgt (props changed) vendor/gdb/5.2.1/gdb/copying.awk (props changed) vendor/gdb/5.2.1/gdb/copying.c (props changed) vendor/gdb/5.2.1/gdb/core-aout.c (props changed) vendor/gdb/5.2.1/gdb/core-regset.c (props changed) vendor/gdb/5.2.1/gdb/core-sol2.c (props changed) vendor/gdb/5.2.1/gdb/corefile.c (props changed) vendor/gdb/5.2.1/gdb/corelow.c (props changed) vendor/gdb/5.2.1/gdb/cp-abi.c (props changed) vendor/gdb/5.2.1/gdb/cp-abi.h (props changed) vendor/gdb/5.2.1/gdb/cp-valprint.c (props changed) vendor/gdb/5.2.1/gdb/dbug-rom.c (props changed) vendor/gdb/5.2.1/gdb/dbxread.c (props changed) vendor/gdb/5.2.1/gdb/dcache.c (props changed) vendor/gdb/5.2.1/gdb/dcache.h (props changed) vendor/gdb/5.2.1/gdb/defs.h (props changed) vendor/gdb/5.2.1/gdb/demangle.c (props changed) vendor/gdb/5.2.1/gdb/dink32-rom.c (props changed) vendor/gdb/5.2.1/gdb/doc/ChangeLog (props changed) vendor/gdb/5.2.1/gdb/doc/GDBvn.texi (props changed) vendor/gdb/5.2.1/gdb/doc/LRS (props changed) vendor/gdb/5.2.1/gdb/doc/Makefile.in (props changed) vendor/gdb/5.2.1/gdb/doc/a4rc.sed (props changed) vendor/gdb/5.2.1/gdb/doc/agentexpr.texi (props changed) vendor/gdb/5.2.1/gdb/doc/all-cfg.texi (props changed) vendor/gdb/5.2.1/gdb/doc/annotate.texi (props changed) vendor/gdb/5.2.1/gdb/doc/configure (props changed) vendor/gdb/5.2.1/gdb/doc/configure.in (props changed) vendor/gdb/5.2.1/gdb/doc/fdl.texi (props changed) vendor/gdb/5.2.1/gdb/doc/gdb.texinfo (props changed) vendor/gdb/5.2.1/gdb/doc/gdbint.texinfo (props changed) vendor/gdb/5.2.1/gdb/doc/gpl.texi (props changed) vendor/gdb/5.2.1/gdb/doc/lpsrc.sed (props changed) vendor/gdb/5.2.1/gdb/doc/psrc.sed (props changed) vendor/gdb/5.2.1/gdb/doc/refcard.tex (props changed) vendor/gdb/5.2.1/gdb/doc/stabs.texinfo (props changed) vendor/gdb/5.2.1/gdb/doublest.c (props changed) vendor/gdb/5.2.1/gdb/doublest.h (props changed) vendor/gdb/5.2.1/gdb/dsrec.c (props changed) vendor/gdb/5.2.1/gdb/dst.h (props changed) vendor/gdb/5.2.1/gdb/dstread.c (props changed) vendor/gdb/5.2.1/gdb/dwarf2cfi.c (props changed) vendor/gdb/5.2.1/gdb/dwarf2cfi.h (props changed) vendor/gdb/5.2.1/gdb/dwarf2read.c (props changed) vendor/gdb/5.2.1/gdb/dwarfread.c (props changed) vendor/gdb/5.2.1/gdb/elfread.c (props changed) vendor/gdb/5.2.1/gdb/environ.c (props changed) vendor/gdb/5.2.1/gdb/environ.h (props changed) vendor/gdb/5.2.1/gdb/eval.c (props changed) vendor/gdb/5.2.1/gdb/event-loop.c (props changed) vendor/gdb/5.2.1/gdb/event-loop.h (props changed) vendor/gdb/5.2.1/gdb/event-top.c (props changed) vendor/gdb/5.2.1/gdb/event-top.h (props changed) vendor/gdb/5.2.1/gdb/exc_request.defs (props changed) vendor/gdb/5.2.1/gdb/exec.c (props changed) vendor/gdb/5.2.1/gdb/expprint.c (props changed) vendor/gdb/5.2.1/gdb/expression.h (props changed) vendor/gdb/5.2.1/gdb/f-exp.y (props changed) vendor/gdb/5.2.1/gdb/f-lang.c (props changed) vendor/gdb/5.2.1/gdb/f-lang.h (props changed) vendor/gdb/5.2.1/gdb/f-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/f-valprint.c (props changed) vendor/gdb/5.2.1/gdb/findvar.c (props changed) vendor/gdb/5.2.1/gdb/fork-child.c (props changed) vendor/gdb/5.2.1/gdb/fr30-tdep.c (props changed) vendor/gdb/5.2.1/gdb/frame.c (props changed) vendor/gdb/5.2.1/gdb/frame.h (props changed) vendor/gdb/5.2.1/gdb/gcore.c (props changed) vendor/gdb/5.2.1/gdb/gdb-events.c (props changed) vendor/gdb/5.2.1/gdb/gdb-events.h (props changed) vendor/gdb/5.2.1/gdb/gdb-events.sh (props changed) vendor/gdb/5.2.1/gdb/gdb-stabs.h (props changed) vendor/gdb/5.2.1/gdb/gdb.1 (props changed) vendor/gdb/5.2.1/gdb/gdb.gdb (props changed) vendor/gdb/5.2.1/gdb/gdb.h (props changed) vendor/gdb/5.2.1/gdb/gdb_assert.h (props changed) vendor/gdb/5.2.1/gdb/gdb_dirent.h (props changed) vendor/gdb/5.2.1/gdb/gdb_indent.sh (props changed) vendor/gdb/5.2.1/gdb/gdb_proc_service.h (props changed) vendor/gdb/5.2.1/gdb/gdb_regex.h (props changed) vendor/gdb/5.2.1/gdb/gdb_stat.h (props changed) vendor/gdb/5.2.1/gdb/gdb_string.h (props changed) vendor/gdb/5.2.1/gdb/gdb_thread_db.h (props changed) vendor/gdb/5.2.1/gdb/gdb_vfork.h (props changed) vendor/gdb/5.2.1/gdb/gdb_wait.h (props changed) vendor/gdb/5.2.1/gdb/gdbarch.c (props changed) vendor/gdb/5.2.1/gdb/gdbarch.h (props changed) vendor/gdb/5.2.1/gdb/gdbarch.sh (props changed) vendor/gdb/5.2.1/gdb/gdbcmd.h (props changed) vendor/gdb/5.2.1/gdb/gdbcore.h (props changed) vendor/gdb/5.2.1/gdb/gdbinit.in (props changed) vendor/gdb/5.2.1/gdb/gdbserver/Makefile.in (props changed) vendor/gdb/5.2.1/gdb/gdbserver/README (props changed) vendor/gdb/5.2.1/gdb/gdbserver/acconfig.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/aclocal.m4 (props changed) vendor/gdb/5.2.1/gdb/gdbserver/config.in (props changed) vendor/gdb/5.2.1/gdb/gdbserver/configure (props changed) vendor/gdb/5.2.1/gdb/gdbserver/configure.in (props changed) vendor/gdb/5.2.1/gdb/gdbserver/configure.srv (props changed) vendor/gdb/5.2.1/gdb/gdbserver/gdbreplay.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/gdbserver.1 (props changed) vendor/gdb/5.2.1/gdb/gdbserver/i387-fp.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/i387-fp.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-arm-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-i386-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-ia64-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-low.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-mips-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-ppc-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/linux-x86-64-low.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-hppabsd.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-lynx.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-nbsd.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-sim.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-sparc.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/low-sun3.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/regcache.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/regcache.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/remote-utils.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/server.c (props changed) vendor/gdb/5.2.1/gdb/gdbserver/server.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/terminal.h (props changed) vendor/gdb/5.2.1/gdb/gdbserver/utils.c (props changed) vendor/gdb/5.2.1/gdb/gdbthread.h (props changed) vendor/gdb/5.2.1/gdb/gdbtypes.c (props changed) vendor/gdb/5.2.1/gdb/gdbtypes.h (props changed) vendor/gdb/5.2.1/gdb/gnu-v2-abi.c (props changed) vendor/gdb/5.2.1/gdb/gnu-v3-abi.c (props changed) vendor/gdb/5.2.1/gdb/gregset.h (props changed) vendor/gdb/5.2.1/gdb/hpacc-abi.c (props changed) vendor/gdb/5.2.1/gdb/hpux-thread.c (props changed) vendor/gdb/5.2.1/gdb/i386-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386-linux-tdep.c (props changed) vendor/gdb/5.2.1/gdb/i386-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386-stub.c (props changed) vendor/gdb/5.2.1/gdb/i386-tdep.c (props changed) vendor/gdb/5.2.1/gdb/i386-tdep.h (props changed) vendor/gdb/5.2.1/gdb/i386aix-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386b-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386bsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386bsd-tdep.c (props changed) vendor/gdb/5.2.1/gdb/i386fbsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386ly-tdep.c (props changed) vendor/gdb/5.2.1/gdb/i386m3-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386mach-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386nbsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386nbsd-tdep.c (props changed) vendor/gdb/5.2.1/gdb/i386v-nat.c (props changed) vendor/gdb/5.2.1/gdb/i386v4-nat.c (props changed) vendor/gdb/5.2.1/gdb/i387-nat.c (props changed) vendor/gdb/5.2.1/gdb/i387-nat.h (props changed) vendor/gdb/5.2.1/gdb/i387-tdep.c (props changed) vendor/gdb/5.2.1/gdb/ia64-aix-nat.c (props changed) vendor/gdb/5.2.1/gdb/ia64-aix-tdep.c (props changed) vendor/gdb/5.2.1/gdb/ia64-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/ia64-linux-tdep.c (props changed) vendor/gdb/5.2.1/gdb/ia64-tdep.c (props changed) vendor/gdb/5.2.1/gdb/inf-loop.c (props changed) vendor/gdb/5.2.1/gdb/inf-loop.h (props changed) vendor/gdb/5.2.1/gdb/infcmd.c (props changed) vendor/gdb/5.2.1/gdb/inferior.h (props changed) vendor/gdb/5.2.1/gdb/inflow.c (props changed) vendor/gdb/5.2.1/gdb/infptrace.c (props changed) vendor/gdb/5.2.1/gdb/infrun.c (props changed) vendor/gdb/5.2.1/gdb/inftarg.c (props changed) vendor/gdb/5.2.1/gdb/infttrace.c (props changed) vendor/gdb/5.2.1/gdb/jv-exp.y (props changed) vendor/gdb/5.2.1/gdb/jv-lang.c (props changed) vendor/gdb/5.2.1/gdb/jv-lang.h (props changed) vendor/gdb/5.2.1/gdb/jv-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/jv-valprint.c (props changed) vendor/gdb/5.2.1/gdb/kod-cisco.c (props changed) vendor/gdb/5.2.1/gdb/kod.c (props changed) vendor/gdb/5.2.1/gdb/kod.h (props changed) vendor/gdb/5.2.1/gdb/language.c (props changed) vendor/gdb/5.2.1/gdb/language.h (props changed) vendor/gdb/5.2.1/gdb/lin-lwp.c (props changed) vendor/gdb/5.2.1/gdb/linespec.c (props changed) vendor/gdb/5.2.1/gdb/linespec.h (props changed) vendor/gdb/5.2.1/gdb/linux-proc.c (props changed) vendor/gdb/5.2.1/gdb/m2-exp.y (props changed) vendor/gdb/5.2.1/gdb/m2-lang.c (props changed) vendor/gdb/5.2.1/gdb/m2-lang.h (props changed) vendor/gdb/5.2.1/gdb/m2-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/m2-valprint.c (props changed) vendor/gdb/5.2.1/gdb/m3-nat.c (props changed) vendor/gdb/5.2.1/gdb/main.c (props changed) vendor/gdb/5.2.1/gdb/maint.c (props changed) vendor/gdb/5.2.1/gdb/mdebugread.c (props changed) vendor/gdb/5.2.1/gdb/mem-break.c (props changed) vendor/gdb/5.2.1/gdb/memattr.c (props changed) vendor/gdb/5.2.1/gdb/memattr.h (props changed) vendor/gdb/5.2.1/gdb/mi/ChangeLog (props changed) vendor/gdb/5.2.1/gdb/mi/gdbmi.texinfo (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmd-break.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmd-disas.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmd-stack.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmd-var.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmds.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-cmds.h (props changed) vendor/gdb/5.2.1/gdb/mi/mi-console.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-console.h (props changed) vendor/gdb/5.2.1/gdb/mi/mi-getopt.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-getopt.h (props changed) vendor/gdb/5.2.1/gdb/mi/mi-main.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-out.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-out.h (props changed) vendor/gdb/5.2.1/gdb/mi/mi-parse.c (props changed) vendor/gdb/5.2.1/gdb/mi/mi-parse.h (props changed) vendor/gdb/5.2.1/gdb/minimon.h (props changed) vendor/gdb/5.2.1/gdb/minsyms.c (props changed) vendor/gdb/5.2.1/gdb/mipsread.c (props changed) vendor/gdb/5.2.1/gdb/monitor.c (props changed) vendor/gdb/5.2.1/gdb/monitor.h (props changed) vendor/gdb/5.2.1/gdb/msg.defs (props changed) vendor/gdb/5.2.1/gdb/msg_reply.defs (props changed) vendor/gdb/5.2.1/gdb/nlm/Makefile.in (props changed) vendor/gdb/5.2.1/gdb/nlm/configure (props changed) vendor/gdb/5.2.1/gdb/nlm/configure.in (props changed) vendor/gdb/5.2.1/gdb/nlm/gdbserve.c (props changed) vendor/gdb/5.2.1/gdb/nlm/gdbserve.def (props changed) vendor/gdb/5.2.1/gdb/nlm/i386.c (props changed) vendor/gdb/5.2.1/gdb/nlm/i386.h (props changed) vendor/gdb/5.2.1/gdb/nlm/ppc.c (props changed) vendor/gdb/5.2.1/gdb/nlm/ppc.h (props changed) vendor/gdb/5.2.1/gdb/nlm/prelude.c (props changed) vendor/gdb/5.2.1/gdb/nlmread.c (props changed) vendor/gdb/5.2.1/gdb/notify.defs (props changed) vendor/gdb/5.2.1/gdb/objfiles.c (props changed) vendor/gdb/5.2.1/gdb/objfiles.h (props changed) vendor/gdb/5.2.1/gdb/ocd.c (props changed) vendor/gdb/5.2.1/gdb/ocd.h (props changed) vendor/gdb/5.2.1/gdb/osfsolib.c (props changed) vendor/gdb/5.2.1/gdb/p-exp.y (props changed) vendor/gdb/5.2.1/gdb/p-lang.c (props changed) vendor/gdb/5.2.1/gdb/p-lang.h (props changed) vendor/gdb/5.2.1/gdb/p-typeprint.c (props changed) vendor/gdb/5.2.1/gdb/p-valprint.c (props changed) vendor/gdb/5.2.1/gdb/parse.c (props changed) vendor/gdb/5.2.1/gdb/parser-defs.h (props changed) vendor/gdb/5.2.1/gdb/ppc-bdm.c (props changed) vendor/gdb/5.2.1/gdb/ppc-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/ppc-linux-tdep.c (props changed) vendor/gdb/5.2.1/gdb/ppc-tdep.h (props changed) vendor/gdb/5.2.1/gdb/ppcbug-rom.c (props changed) vendor/gdb/5.2.1/gdb/ppcnbsd-nat.c (props changed) vendor/gdb/5.2.1/gdb/printcmd.c (props changed) vendor/gdb/5.2.1/gdb/proc-api.c (props changed) vendor/gdb/5.2.1/gdb/proc-events.c (props changed) vendor/gdb/5.2.1/gdb/proc-flags.c (props changed) vendor/gdb/5.2.1/gdb/proc-service.c (props changed) vendor/gdb/5.2.1/gdb/proc-utils.h (props changed) vendor/gdb/5.2.1/gdb/proc-why.c (props changed) vendor/gdb/5.2.1/gdb/process_reply.defs (props changed) vendor/gdb/5.2.1/gdb/procfs.c (props changed) vendor/gdb/5.2.1/gdb/regcache.c (props changed) vendor/gdb/5.2.1/gdb/regcache.h (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-arm.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-i386-linux.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-i386.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-ia64.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-mips.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-ppc.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-sh.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/reg-x86-64.dat (props changed) vendor/gdb/5.2.1/gdb/regformats/regdat.sh (props changed) vendor/gdb/5.2.1/gdb/regformats/regdef.h (props changed) vendor/gdb/5.2.1/gdb/remote-mips.c (props changed) vendor/gdb/5.2.1/gdb/remote-rdi.c (props changed) vendor/gdb/5.2.1/gdb/remote-rdp.c (props changed) vendor/gdb/5.2.1/gdb/remote-sim.c (props changed) vendor/gdb/5.2.1/gdb/remote-st.c (props changed) vendor/gdb/5.2.1/gdb/remote-utils.c (props changed) vendor/gdb/5.2.1/gdb/remote-utils.h (props changed) vendor/gdb/5.2.1/gdb/remote.c (props changed) vendor/gdb/5.2.1/gdb/remote.h (props changed) vendor/gdb/5.2.1/gdb/reply_mig_hack.awk (props changed) vendor/gdb/5.2.1/gdb/saber.suppress (props changed) vendor/gdb/5.2.1/gdb/scm-exp.c (props changed) vendor/gdb/5.2.1/gdb/scm-lang.c (props changed) vendor/gdb/5.2.1/gdb/scm-lang.h (props changed) vendor/gdb/5.2.1/gdb/scm-tags.h (props changed) vendor/gdb/5.2.1/gdb/scm-valprint.c (props changed) vendor/gdb/5.2.1/gdb/ser-pipe.c (props changed) vendor/gdb/5.2.1/gdb/ser-tcp.c (props changed) vendor/gdb/5.2.1/gdb/ser-unix.c (props changed) vendor/gdb/5.2.1/gdb/ser-unix.h (props changed) vendor/gdb/5.2.1/gdb/serial.c (props changed) vendor/gdb/5.2.1/gdb/serial.h (props changed) vendor/gdb/5.2.1/gdb/signals.c (props changed) vendor/gdb/5.2.1/gdb/signals/signals.c (props changed) vendor/gdb/5.2.1/gdb/sol-thread.c (props changed) vendor/gdb/5.2.1/gdb/solib-legacy.c (props changed) vendor/gdb/5.2.1/gdb/solib-osf.c (props changed) vendor/gdb/5.2.1/gdb/solib-sunos.c (props changed) vendor/gdb/5.2.1/gdb/solib-svr4.c (props changed) vendor/gdb/5.2.1/gdb/solib-svr4.h (props changed) vendor/gdb/5.2.1/gdb/solib.c (props changed) vendor/gdb/5.2.1/gdb/solib.h (props changed) vendor/gdb/5.2.1/gdb/solist.h (props changed) vendor/gdb/5.2.1/gdb/source.c (props changed) vendor/gdb/5.2.1/gdb/source.h (props changed) vendor/gdb/5.2.1/gdb/sparc-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/sparc-nat.c (props changed) vendor/gdb/5.2.1/gdb/sparc-stub.c (props changed) vendor/gdb/5.2.1/gdb/sparc-tdep.c (props changed) vendor/gdb/5.2.1/gdb/sparcl-stub.c (props changed) vendor/gdb/5.2.1/gdb/sparcl-tdep.c (props changed) vendor/gdb/5.2.1/gdb/sparclet-rom.c (props changed) vendor/gdb/5.2.1/gdb/sparclet-stub.c (props changed) vendor/gdb/5.2.1/gdb/srec.h (props changed) vendor/gdb/5.2.1/gdb/stabsread.c (props changed) vendor/gdb/5.2.1/gdb/stabsread.h (props changed) vendor/gdb/5.2.1/gdb/stack.c (props changed) vendor/gdb/5.2.1/gdb/standalone.c (props changed) vendor/gdb/5.2.1/gdb/symfile.c (props changed) vendor/gdb/5.2.1/gdb/symfile.h (props changed) vendor/gdb/5.2.1/gdb/symmisc.c (props changed) vendor/gdb/5.2.1/gdb/symtab.c (props changed) vendor/gdb/5.2.1/gdb/symtab.h (props changed) vendor/gdb/5.2.1/gdb/target.c (props changed) vendor/gdb/5.2.1/gdb/target.h (props changed) vendor/gdb/5.2.1/gdb/terminal.h (props changed) vendor/gdb/5.2.1/gdb/thread-db.c (props changed) vendor/gdb/5.2.1/gdb/thread.c (props changed) vendor/gdb/5.2.1/gdb/top.c (props changed) vendor/gdb/5.2.1/gdb/top.h (props changed) vendor/gdb/5.2.1/gdb/tracepoint.c (props changed) vendor/gdb/5.2.1/gdb/tracepoint.h (props changed) vendor/gdb/5.2.1/gdb/typeprint.c (props changed) vendor/gdb/5.2.1/gdb/typeprint.h (props changed) vendor/gdb/5.2.1/gdb/ui-file.c (props changed) vendor/gdb/5.2.1/gdb/ui-file.h (props changed) vendor/gdb/5.2.1/gdb/ui-out.c (props changed) vendor/gdb/5.2.1/gdb/ui-out.h (props changed) vendor/gdb/5.2.1/gdb/utils.c (props changed) vendor/gdb/5.2.1/gdb/uw-thread.c (props changed) vendor/gdb/5.2.1/gdb/valarith.c (props changed) vendor/gdb/5.2.1/gdb/valops.c (props changed) vendor/gdb/5.2.1/gdb/valprint.c (props changed) vendor/gdb/5.2.1/gdb/valprint.h (props changed) vendor/gdb/5.2.1/gdb/value.h (props changed) vendor/gdb/5.2.1/gdb/values.c (props changed) vendor/gdb/5.2.1/gdb/varobj.c (props changed) vendor/gdb/5.2.1/gdb/varobj.h (props changed) vendor/gdb/5.2.1/gdb/version.h (props changed) vendor/gdb/5.2.1/gdb/version.in (props changed) vendor/gdb/5.2.1/gdb/wrapper.c (props changed) vendor/gdb/5.2.1/gdb/wrapper.h (props changed) vendor/gdb/5.2.1/gdb/x86-64-linux-nat.c (props changed) vendor/gdb/5.2.1/gdb/x86-64-linux-tdep.c (props changed) vendor/gdb/5.2.1/gdb/x86-64-tdep.c (props changed) vendor/gdb/5.2.1/gdb/x86-64-tdep.h (props changed) vendor/gdb/5.2.1/gdb/xcoffread.c (props changed) vendor/gdb/5.2.1/gdb/xcoffsolib.c (props changed) vendor/gdb/5.2.1/gdb/xcoffsolib.h (props changed) vendor/gdb/5.2.1/include/gdb/ChangeLog (props changed) vendor/gdb/5.2.1/include/gdb/signals.h (props changed) vendor/gdb/6.1.1/gdb/CONTRIBUTE (props changed) vendor/gdb/6.1.1/gdb/COPYING (props changed) vendor/gdb/6.1.1/gdb/MAINTAINERS (props changed) vendor/gdb/6.1.1/gdb/NEWS (props changed) vendor/gdb/6.1.1/gdb/PROBLEMS (props changed) vendor/gdb/6.1.1/gdb/README (props changed) vendor/gdb/6.1.1/gdb/TODO (props changed) vendor/gdb/6.1.1/gdb/abug-rom.c (props changed) vendor/gdb/6.1.1/gdb/acinclude.m4 (props changed) vendor/gdb/6.1.1/gdb/aclocal.m4 (props changed) vendor/gdb/6.1.1/gdb/ada-exp.c (props changed) vendor/gdb/6.1.1/gdb/ada-exp.y (props changed) vendor/gdb/6.1.1/gdb/ada-lang.c (props changed) vendor/gdb/6.1.1/gdb/ada-lang.h (props changed) vendor/gdb/6.1.1/gdb/ada-lex.l (props changed) vendor/gdb/6.1.1/gdb/ada-tasks.c (props changed) vendor/gdb/6.1.1/gdb/ada-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/ada-valprint.c (props changed) vendor/gdb/6.1.1/gdb/alpha-mdebug-tdep.c (props changed) vendor/gdb/6.1.1/gdb/alpha-nat.c (props changed) vendor/gdb/6.1.1/gdb/alpha-tdep.c (props changed) vendor/gdb/6.1.1/gdb/alpha-tdep.h (props changed) vendor/gdb/6.1.1/gdb/alphabsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/alphabsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/alphabsd-tdep.h (props changed) vendor/gdb/6.1.1/gdb/alphafbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/alphanbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/amd64-nat.c (props changed) vendor/gdb/6.1.1/gdb/amd64-nat.h (props changed) vendor/gdb/6.1.1/gdb/amd64-tdep.c (props changed) vendor/gdb/6.1.1/gdb/amd64-tdep.h (props changed) vendor/gdb/6.1.1/gdb/amd64bsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/amd64fbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/amd64fbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/amd64nbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/amd64nbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/amd64obsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/amd64obsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/annotate.c (props changed) vendor/gdb/6.1.1/gdb/annotate.h (props changed) vendor/gdb/6.1.1/gdb/arch-utils.c (props changed) vendor/gdb/6.1.1/gdb/arch-utils.h (props changed) vendor/gdb/6.1.1/gdb/arm-tdep.c (props changed) vendor/gdb/6.1.1/gdb/arm-tdep.h (props changed) vendor/gdb/6.1.1/gdb/armnbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/armnbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/auxv.c (props changed) vendor/gdb/6.1.1/gdb/auxv.h (props changed) vendor/gdb/6.1.1/gdb/ax-gdb.c (props changed) vendor/gdb/6.1.1/gdb/ax-gdb.h (props changed) vendor/gdb/6.1.1/gdb/ax-general.c (props changed) vendor/gdb/6.1.1/gdb/ax.h (props changed) vendor/gdb/6.1.1/gdb/bcache.c (props changed) vendor/gdb/6.1.1/gdb/bcache.h (props changed) vendor/gdb/6.1.1/gdb/bfd-target.c (props changed) vendor/gdb/6.1.1/gdb/bfd-target.h (props changed) vendor/gdb/6.1.1/gdb/block.c (props changed) vendor/gdb/6.1.1/gdb/block.h (props changed) vendor/gdb/6.1.1/gdb/blockframe.c (props changed) vendor/gdb/6.1.1/gdb/breakpoint.c (props changed) vendor/gdb/6.1.1/gdb/breakpoint.h (props changed) vendor/gdb/6.1.1/gdb/buildsym.c (props changed) vendor/gdb/6.1.1/gdb/buildsym.h (props changed) vendor/gdb/6.1.1/gdb/c-exp.c (props changed) vendor/gdb/6.1.1/gdb/c-exp.y (props changed) vendor/gdb/6.1.1/gdb/c-lang.c (props changed) vendor/gdb/6.1.1/gdb/c-lang.h (props changed) vendor/gdb/6.1.1/gdb/c-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/c-valprint.c (props changed) vendor/gdb/6.1.1/gdb/call-cmds.h (props changed) vendor/gdb/6.1.1/gdb/charset.c (props changed) vendor/gdb/6.1.1/gdb/charset.h (props changed) vendor/gdb/6.1.1/gdb/cli-out.c (props changed) vendor/gdb/6.1.1/gdb/cli-out.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-cmds.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-cmds.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-decode.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-decode.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-dump.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-dump.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-interp.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-logging.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-script.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-script.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-setshow.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-setshow.h (props changed) vendor/gdb/6.1.1/gdb/cli/cli-utils.c (props changed) vendor/gdb/6.1.1/gdb/cli/cli-utils.h (props changed) vendor/gdb/6.1.1/gdb/coff-pe-read.c (props changed) vendor/gdb/6.1.1/gdb/coff-pe-read.h (props changed) vendor/gdb/6.1.1/gdb/coff-solib.c (props changed) vendor/gdb/6.1.1/gdb/coff-solib.h (props changed) vendor/gdb/6.1.1/gdb/coffread.c (props changed) vendor/gdb/6.1.1/gdb/command.h (props changed) vendor/gdb/6.1.1/gdb/complaints.c (props changed) vendor/gdb/6.1.1/gdb/complaints.h (props changed) vendor/gdb/6.1.1/gdb/completer.c (props changed) vendor/gdb/6.1.1/gdb/completer.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/alpha-osf2.mh (props changed) vendor/gdb/6.1.1/gdb/config/alpha/alpha-osf3.mh (props changed) vendor/gdb/6.1.1/gdb/config/alpha/alpha.mt (props changed) vendor/gdb/6.1.1/gdb/config/alpha/fbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/alpha/fbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nm-osf.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nm-osf2.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/nm-osf3.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/tm-alpha.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/tm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/alpha/xm-alphaosf.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/embed.mt (props changed) vendor/gdb/6.1.1/gdb/config/arm/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/arm/nbsdaout.mh (props changed) vendor/gdb/6.1.1/gdb/config/arm/nbsdelf.mh (props changed) vendor/gdb/6.1.1/gdb/config/arm/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/nm-nbsdaout.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/tm-arm.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/tm-embed.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/tm-wince.h (props changed) vendor/gdb/6.1.1/gdb/config/arm/wince.mt (props changed) vendor/gdb/6.1.1/gdb/config/arm/xm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/embed.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/fbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/fbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/fbsd64.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/fbsd64.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/go32.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/go32.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386aout.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386gnu.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386gnu.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386lynx.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386lynx.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386nw.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386sco.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386sco4.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386sco5.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386sol2.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386sol2.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386v.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386v.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386v4.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/i386v42mp.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/nbsd64.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/nbsd64.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/nbsdaout.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/nbsdelf.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/ncr3000.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/ncr3000.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-fbsd64.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-go32.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386gnu.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386lynx.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386sco.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386sco4.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386sco5.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386sol2.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386v.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386v4.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-i386v42mp.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-nbsdaout.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-nto.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nm-obsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/nto.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/nto.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/obsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/obsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/obsd64.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/obsd64.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/obsdaout.mh (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-go32.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-i386.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-i386lynx.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-i386sol2.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-nto.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/tm-vxworks.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/vxworks.mt (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-go32.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-i386.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-i386sco.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-i386v.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-i386v4.h (props changed) vendor/gdb/6.1.1/gdb/config/i386/xm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/ia64/ia64.mt (props changed) vendor/gdb/6.1.1/gdb/config/ia64/tm-ia64.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/decstation.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/embed.mt (props changed) vendor/gdb/6.1.1/gdb/config/mips/littlemips.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/mipsv4.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/mipsv4.mt (props changed) vendor/gdb/6.1.1/gdb/config/mips/nbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/mips/news-mips.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/nm-mips.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/nm-news-mips.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/nm-riscos.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/riscos.mh (props changed) vendor/gdb/6.1.1/gdb/config/mips/tm-mips.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/tm-mipsv4.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/tm-vxmips.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/tm-wince.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/vxmips.mt (props changed) vendor/gdb/6.1.1/gdb/config/mips/wince.mt (props changed) vendor/gdb/6.1.1/gdb/config/mips/xm-mips.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/xm-mipsv4.h (props changed) vendor/gdb/6.1.1/gdb/config/mips/xm-riscos.h (props changed) vendor/gdb/6.1.1/gdb/config/nm-gnu.h (props changed) vendor/gdb/6.1.1/gdb/config/nm-lynx.h (props changed) vendor/gdb/6.1.1/gdb/config/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/nm-nbsdaout.h (props changed) vendor/gdb/6.1.1/gdb/config/nm-sysv4.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/fbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/fbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/nbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/nm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/ppc-eabi.mt (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/ppc-sim.mt (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/tm-ppc-eabi.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/tm-ppcle-eabi.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/tm-ppcle-sim.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/tm-vxworks.h (props changed) vendor/gdb/6.1.1/gdb/config/powerpc/vxworks.mt (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/nm-rs6000.h (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/nm-rs6000ly.h (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/rs6000.mh (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/rs6000.mt (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/rs6000lynx.mh (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/rs6000lynx.mt (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/tm-rs6000.h (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/tm-rs6000ly.h (props changed) vendor/gdb/6.1.1/gdb/config/rs6000/xm-rs6000.h (props changed) vendor/gdb/6.1.1/gdb/config/s390/s390.mh (props changed) vendor/gdb/6.1.1/gdb/config/s390/s390.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/fbsd.mh (props changed) vendor/gdb/6.1.1/gdb/config/sparc/fbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nbsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nbsd64.mh (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nbsd64.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nbsdaout.mh (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nbsdelf.mh (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nm-nbsdaout.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/nm-sol2.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/obsd.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/obsd64.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/sol2-64.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/sol2.mh (props changed) vendor/gdb/6.1.1/gdb/config/sparc/sol2.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/sparc.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/sparc64.mt (props changed) vendor/gdb/6.1.1/gdb/config/sparc/tm-fbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/tm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/tm-nbsd64.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/tm-sol2.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/tm-vxworks.h (props changed) vendor/gdb/6.1.1/gdb/config/sparc/vxworks.mt (props changed) vendor/gdb/6.1.1/gdb/config/tm-lynx.h (props changed) vendor/gdb/6.1.1/gdb/config/tm-nto.h (props changed) vendor/gdb/6.1.1/gdb/config/tm-sunos.h (props changed) vendor/gdb/6.1.1/gdb/config/tm-sysv4.h (props changed) vendor/gdb/6.1.1/gdb/config/tm-vxworks.h (props changed) vendor/gdb/6.1.1/gdb/config/xm-nbsd.h (props changed) vendor/gdb/6.1.1/gdb/config/xm-sysv4.h (props changed) vendor/gdb/6.1.1/gdb/copying.awk (props changed) vendor/gdb/6.1.1/gdb/copying.c (props changed) vendor/gdb/6.1.1/gdb/core-aout.c (props changed) vendor/gdb/6.1.1/gdb/core-regset.c (props changed) vendor/gdb/6.1.1/gdb/corefile.c (props changed) vendor/gdb/6.1.1/gdb/corelow.c (props changed) vendor/gdb/6.1.1/gdb/cp-abi.c (props changed) vendor/gdb/6.1.1/gdb/cp-abi.h (props changed) vendor/gdb/6.1.1/gdb/cp-namespace.c (props changed) vendor/gdb/6.1.1/gdb/cp-support.c (props changed) vendor/gdb/6.1.1/gdb/cp-support.h (props changed) vendor/gdb/6.1.1/gdb/cp-valprint.c (props changed) vendor/gdb/6.1.1/gdb/cpu32bug-rom.c (props changed) vendor/gdb/6.1.1/gdb/dbug-rom.c (props changed) vendor/gdb/6.1.1/gdb/dbxread.c (props changed) vendor/gdb/6.1.1/gdb/dcache.c (props changed) vendor/gdb/6.1.1/gdb/dcache.h (props changed) vendor/gdb/6.1.1/gdb/defs.h (props changed) vendor/gdb/6.1.1/gdb/delta68-nat.c (props changed) vendor/gdb/6.1.1/gdb/demangle.c (props changed) vendor/gdb/6.1.1/gdb/dictionary.c (props changed) vendor/gdb/6.1.1/gdb/dictionary.h (props changed) vendor/gdb/6.1.1/gdb/dink32-rom.c (props changed) vendor/gdb/6.1.1/gdb/disasm.c (props changed) vendor/gdb/6.1.1/gdb/disasm.h (props changed) vendor/gdb/6.1.1/gdb/doc/GDBvn.texi (props changed) vendor/gdb/6.1.1/gdb/doc/LRS (props changed) vendor/gdb/6.1.1/gdb/doc/a4rc.sed (props changed) vendor/gdb/6.1.1/gdb/doc/agentexpr.texi (props changed) vendor/gdb/6.1.1/gdb/doc/all-cfg.texi (props changed) vendor/gdb/6.1.1/gdb/doc/annotate.texinfo (props changed) vendor/gdb/6.1.1/gdb/doc/fdl.texi (props changed) vendor/gdb/6.1.1/gdb/doc/gdb.info-1 (props changed) vendor/gdb/6.1.1/gdb/doc/gdb.info-2 (props changed) vendor/gdb/6.1.1/gdb/doc/gdb.info-3 (props changed) vendor/gdb/6.1.1/gdb/doc/gdb.texinfo (props changed) vendor/gdb/6.1.1/gdb/doc/gdbint.texinfo (props changed) vendor/gdb/6.1.1/gdb/doc/gpl.texi (props changed) vendor/gdb/6.1.1/gdb/doc/lpsrc.sed (props changed) vendor/gdb/6.1.1/gdb/doc/observer.texi (props changed) vendor/gdb/6.1.1/gdb/doc/psrc.sed (props changed) vendor/gdb/6.1.1/gdb/doc/refcard.tex (props changed) vendor/gdb/6.1.1/gdb/doc/stabs.texinfo (props changed) vendor/gdb/6.1.1/gdb/doublest.c (props changed) vendor/gdb/6.1.1/gdb/doublest.h (props changed) vendor/gdb/6.1.1/gdb/dpx2-nat.c (props changed) vendor/gdb/6.1.1/gdb/dsrec.c (props changed) vendor/gdb/6.1.1/gdb/dummy-frame.c (props changed) vendor/gdb/6.1.1/gdb/dummy-frame.h (props changed) vendor/gdb/6.1.1/gdb/dve3900-rom.c (props changed) vendor/gdb/6.1.1/gdb/dwarf2-frame.c (props changed) vendor/gdb/6.1.1/gdb/dwarf2-frame.h (props changed) vendor/gdb/6.1.1/gdb/dwarf2expr.c (props changed) vendor/gdb/6.1.1/gdb/dwarf2expr.h (props changed) vendor/gdb/6.1.1/gdb/dwarf2loc.c (props changed) vendor/gdb/6.1.1/gdb/dwarf2loc.h (props changed) vendor/gdb/6.1.1/gdb/dwarf2read.c (props changed) vendor/gdb/6.1.1/gdb/dwarfread.c (props changed) vendor/gdb/6.1.1/gdb/elfread.c (props changed) vendor/gdb/6.1.1/gdb/environ.c (props changed) vendor/gdb/6.1.1/gdb/environ.h (props changed) vendor/gdb/6.1.1/gdb/eval.c (props changed) vendor/gdb/6.1.1/gdb/event-loop.c (props changed) vendor/gdb/6.1.1/gdb/event-loop.h (props changed) vendor/gdb/6.1.1/gdb/event-top.c (props changed) vendor/gdb/6.1.1/gdb/event-top.h (props changed) vendor/gdb/6.1.1/gdb/exc_request.defs (props changed) vendor/gdb/6.1.1/gdb/exec.c (props changed) vendor/gdb/6.1.1/gdb/exec.h (props changed) vendor/gdb/6.1.1/gdb/expprint.c (props changed) vendor/gdb/6.1.1/gdb/expression.h (props changed) vendor/gdb/6.1.1/gdb/f-exp.c (props changed) vendor/gdb/6.1.1/gdb/f-exp.y (props changed) vendor/gdb/6.1.1/gdb/f-lang.c (props changed) vendor/gdb/6.1.1/gdb/f-lang.h (props changed) vendor/gdb/6.1.1/gdb/f-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/f-valprint.c (props changed) vendor/gdb/6.1.1/gdb/fbsd-proc.c (props changed) vendor/gdb/6.1.1/gdb/findvar.c (props changed) vendor/gdb/6.1.1/gdb/fork-child.c (props changed) vendor/gdb/6.1.1/gdb/frame-base.c (props changed) vendor/gdb/6.1.1/gdb/frame-base.h (props changed) vendor/gdb/6.1.1/gdb/frame-unwind.c (props changed) vendor/gdb/6.1.1/gdb/frame-unwind.h (props changed) vendor/gdb/6.1.1/gdb/frame.c (props changed) vendor/gdb/6.1.1/gdb/frame.h (props changed) vendor/gdb/6.1.1/gdb/gcore.c (props changed) vendor/gdb/6.1.1/gdb/gdb-events.c (props changed) vendor/gdb/6.1.1/gdb/gdb-events.h (props changed) vendor/gdb/6.1.1/gdb/gdb-events.sh (props changed) vendor/gdb/6.1.1/gdb/gdb-stabs.h (props changed) vendor/gdb/6.1.1/gdb/gdb.1 (props changed) vendor/gdb/6.1.1/gdb/gdb.c (props changed) vendor/gdb/6.1.1/gdb/gdb.gdb (props changed) vendor/gdb/6.1.1/gdb/gdb.h (props changed) vendor/gdb/6.1.1/gdb/gdb_assert.h (props changed) vendor/gdb/6.1.1/gdb/gdb_curses.h (props changed) vendor/gdb/6.1.1/gdb/gdb_dirent.h (props changed) vendor/gdb/6.1.1/gdb/gdb_gcore.sh (props changed) vendor/gdb/6.1.1/gdb/gdb_indent.sh (props changed) vendor/gdb/6.1.1/gdb/gdb_locale.h (props changed) vendor/gdb/6.1.1/gdb/gdb_mbuild.sh (props changed) vendor/gdb/6.1.1/gdb/gdb_obstack.h (props changed) vendor/gdb/6.1.1/gdb/gdb_proc_service.h (props changed) vendor/gdb/6.1.1/gdb/gdb_regex.h (props changed) vendor/gdb/6.1.1/gdb/gdb_stat.h (props changed) vendor/gdb/6.1.1/gdb/gdb_string.h (props changed) vendor/gdb/6.1.1/gdb/gdb_thread_db.h (props changed) vendor/gdb/6.1.1/gdb/gdb_vfork.h (props changed) vendor/gdb/6.1.1/gdb/gdb_wait.h (props changed) vendor/gdb/6.1.1/gdb/gdbarch.c (props changed) vendor/gdb/6.1.1/gdb/gdbarch.h (props changed) vendor/gdb/6.1.1/gdb/gdbarch.sh (props changed) vendor/gdb/6.1.1/gdb/gdbcmd.h (props changed) vendor/gdb/6.1.1/gdb/gdbcore.h (props changed) vendor/gdb/6.1.1/gdb/gdbinit.in (props changed) vendor/gdb/6.1.1/gdb/gdbserver/README (props changed) vendor/gdb/6.1.1/gdb/gdbserver/acinclude.m4 (props changed) vendor/gdb/6.1.1/gdb/gdbserver/aclocal.m4 (props changed) vendor/gdb/6.1.1/gdb/gdbserver/gdbreplay.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/gdbserver.1 (props changed) vendor/gdb/6.1.1/gdb/gdbserver/i387-fp.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/i387-fp.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/inferiors.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/mem-break.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/mem-break.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/proc-service.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/regcache.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/regcache.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/remote-utils.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/server.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/server.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/target.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/target.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/terminal.h (props changed) vendor/gdb/6.1.1/gdb/gdbserver/thread-db.c (props changed) vendor/gdb/6.1.1/gdb/gdbserver/utils.c (props changed) vendor/gdb/6.1.1/gdb/gdbthread.h (props changed) vendor/gdb/6.1.1/gdb/gdbtypes.c (props changed) vendor/gdb/6.1.1/gdb/gdbtypes.h (props changed) vendor/gdb/6.1.1/gdb/glibc-tdep.c (props changed) vendor/gdb/6.1.1/gdb/glibc-tdep.h (props changed) vendor/gdb/6.1.1/gdb/gnu-nat.c (props changed) vendor/gdb/6.1.1/gdb/gnu-nat.h (props changed) vendor/gdb/6.1.1/gdb/gnu-v2-abi.c (props changed) vendor/gdb/6.1.1/gdb/gnu-v3-abi.c (props changed) vendor/gdb/6.1.1/gdb/go32-nat.c (props changed) vendor/gdb/6.1.1/gdb/gregset.h (props changed) vendor/gdb/6.1.1/gdb/hpacc-abi.c (props changed) vendor/gdb/6.1.1/gdb/hpread.c (props changed) vendor/gdb/6.1.1/gdb/i386-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386-nto-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386-sol2-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386-stub.c (props changed) vendor/gdb/6.1.1/gdb/i386-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386-tdep.h (props changed) vendor/gdb/6.1.1/gdb/i386bsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386bsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386fbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386fbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386gnu-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386gnu-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386ly-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386nbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386obsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386obsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i386v-nat.c (props changed) vendor/gdb/6.1.1/gdb/i386v4-nat.c (props changed) vendor/gdb/6.1.1/gdb/i387-tdep.c (props changed) vendor/gdb/6.1.1/gdb/i387-tdep.h (props changed) vendor/gdb/6.1.1/gdb/ia64-tdep.c (props changed) vendor/gdb/6.1.1/gdb/ia64-tdep.h (props changed) vendor/gdb/6.1.1/gdb/inf-loop.c (props changed) vendor/gdb/6.1.1/gdb/inf-loop.h (props changed) vendor/gdb/6.1.1/gdb/infcall.c (props changed) vendor/gdb/6.1.1/gdb/infcall.h (props changed) vendor/gdb/6.1.1/gdb/infcmd.c (props changed) vendor/gdb/6.1.1/gdb/inferior.h (props changed) vendor/gdb/6.1.1/gdb/inflow.c (props changed) vendor/gdb/6.1.1/gdb/inflow.h (props changed) vendor/gdb/6.1.1/gdb/infptrace.c (props changed) vendor/gdb/6.1.1/gdb/infrun.c (props changed) vendor/gdb/6.1.1/gdb/inftarg.c (props changed) vendor/gdb/6.1.1/gdb/infttrace.c (props changed) vendor/gdb/6.1.1/gdb/infttrace.h (props changed) vendor/gdb/6.1.1/gdb/interps.c (props changed) vendor/gdb/6.1.1/gdb/interps.h (props changed) vendor/gdb/6.1.1/gdb/jv-exp.c (props changed) vendor/gdb/6.1.1/gdb/jv-exp.y (props changed) vendor/gdb/6.1.1/gdb/jv-lang.c (props changed) vendor/gdb/6.1.1/gdb/jv-lang.h (props changed) vendor/gdb/6.1.1/gdb/jv-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/jv-valprint.c (props changed) vendor/gdb/6.1.1/gdb/kod-cisco.c (props changed) vendor/gdb/6.1.1/gdb/kod.c (props changed) vendor/gdb/6.1.1/gdb/kod.h (props changed) vendor/gdb/6.1.1/gdb/language.c (props changed) vendor/gdb/6.1.1/gdb/language.h (props changed) vendor/gdb/6.1.1/gdb/libunwind-frame.c (props changed) vendor/gdb/6.1.1/gdb/libunwind-frame.h (props changed) vendor/gdb/6.1.1/gdb/lin-lwp.c (props changed) vendor/gdb/6.1.1/gdb/linespec.c (props changed) vendor/gdb/6.1.1/gdb/linespec.h (props changed) vendor/gdb/6.1.1/gdb/lynx-nat.c (props changed) vendor/gdb/6.1.1/gdb/m2-exp.c (props changed) vendor/gdb/6.1.1/gdb/m2-exp.y (props changed) vendor/gdb/6.1.1/gdb/m2-lang.c (props changed) vendor/gdb/6.1.1/gdb/m2-lang.h (props changed) vendor/gdb/6.1.1/gdb/m2-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/m2-valprint.c (props changed) vendor/gdb/6.1.1/gdb/macrocmd.c (props changed) vendor/gdb/6.1.1/gdb/macroexp.c (props changed) vendor/gdb/6.1.1/gdb/macroexp.h (props changed) vendor/gdb/6.1.1/gdb/macroscope.c (props changed) vendor/gdb/6.1.1/gdb/macroscope.h (props changed) vendor/gdb/6.1.1/gdb/macrotab.c (props changed) vendor/gdb/6.1.1/gdb/macrotab.h (props changed) vendor/gdb/6.1.1/gdb/main.c (props changed) vendor/gdb/6.1.1/gdb/main.h (props changed) vendor/gdb/6.1.1/gdb/maint.c (props changed) vendor/gdb/6.1.1/gdb/mdebugread.c (props changed) vendor/gdb/6.1.1/gdb/mem-break.c (props changed) vendor/gdb/6.1.1/gdb/memattr.c (props changed) vendor/gdb/6.1.1/gdb/memattr.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-break.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-disas.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-env.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-file.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-stack.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmd-var.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmds.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-cmds.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-console.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-console.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-getopt.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-getopt.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-interp.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-main.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-main.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-out.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-out.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-parse.c (props changed) vendor/gdb/6.1.1/gdb/mi/mi-parse.h (props changed) vendor/gdb/6.1.1/gdb/mi/mi-symbol-cmds.c (props changed) vendor/gdb/6.1.1/gdb/minimon.h (props changed) vendor/gdb/6.1.1/gdb/minsyms.c (props changed) vendor/gdb/6.1.1/gdb/mips-nat.c (props changed) vendor/gdb/6.1.1/gdb/mips-tdep.c (props changed) vendor/gdb/6.1.1/gdb/mips-tdep.h (props changed) vendor/gdb/6.1.1/gdb/mipsnbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/mipsnbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/mipsnbsd-tdep.h (props changed) vendor/gdb/6.1.1/gdb/mipsread.c (props changed) vendor/gdb/6.1.1/gdb/mipsv4-nat.c (props changed) vendor/gdb/6.1.1/gdb/monitor.c (props changed) vendor/gdb/6.1.1/gdb/monitor.h (props changed) vendor/gdb/6.1.1/gdb/msg.defs (props changed) vendor/gdb/6.1.1/gdb/msg_reply.defs (props changed) vendor/gdb/6.1.1/gdb/nbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/nbsd-tdep.h (props changed) vendor/gdb/6.1.1/gdb/nlmread.c (props changed) vendor/gdb/6.1.1/gdb/notify.defs (props changed) vendor/gdb/6.1.1/gdb/nto-procfs.c (props changed) vendor/gdb/6.1.1/gdb/nto-tdep.c (props changed) vendor/gdb/6.1.1/gdb/nto-tdep.h (props changed) vendor/gdb/6.1.1/gdb/objc-exp.c (props changed) vendor/gdb/6.1.1/gdb/objc-exp.y (props changed) vendor/gdb/6.1.1/gdb/objc-lang.c (props changed) vendor/gdb/6.1.1/gdb/objc-lang.h (props changed) vendor/gdb/6.1.1/gdb/objfiles.c (props changed) vendor/gdb/6.1.1/gdb/objfiles.h (props changed) vendor/gdb/6.1.1/gdb/observer.c (props changed) vendor/gdb/6.1.1/gdb/observer.h (props changed) vendor/gdb/6.1.1/gdb/ocd.c (props changed) vendor/gdb/6.1.1/gdb/ocd.h (props changed) vendor/gdb/6.1.1/gdb/osabi.c (props changed) vendor/gdb/6.1.1/gdb/osabi.h (props changed) vendor/gdb/6.1.1/gdb/p-exp.c (props changed) vendor/gdb/6.1.1/gdb/p-exp.y (props changed) vendor/gdb/6.1.1/gdb/p-lang.c (props changed) vendor/gdb/6.1.1/gdb/p-lang.h (props changed) vendor/gdb/6.1.1/gdb/p-typeprint.c (props changed) vendor/gdb/6.1.1/gdb/p-valprint.c (props changed) vendor/gdb/6.1.1/gdb/pa64solib.c (props changed) vendor/gdb/6.1.1/gdb/pa64solib.h (props changed) vendor/gdb/6.1.1/gdb/parse.c (props changed) vendor/gdb/6.1.1/gdb/parser-defs.h (props changed) vendor/gdb/6.1.1/gdb/ppc-bdm.c (props changed) vendor/gdb/6.1.1/gdb/ppc-sysv-tdep.c (props changed) vendor/gdb/6.1.1/gdb/ppc-tdep.h (props changed) vendor/gdb/6.1.1/gdb/ppcbug-rom.c (props changed) vendor/gdb/6.1.1/gdb/ppcfbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/ppcfbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/ppcfbsd-tdep.h (props changed) vendor/gdb/6.1.1/gdb/ppcnbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/ppcnbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/ppcnbsd-tdep.h (props changed) vendor/gdb/6.1.1/gdb/printcmd.c (props changed) vendor/gdb/6.1.1/gdb/proc-api.c (props changed) vendor/gdb/6.1.1/gdb/proc-events.c (props changed) vendor/gdb/6.1.1/gdb/proc-flags.c (props changed) vendor/gdb/6.1.1/gdb/proc-service.c (props changed) vendor/gdb/6.1.1/gdb/proc-utils.h (props changed) vendor/gdb/6.1.1/gdb/proc-why.c (props changed) vendor/gdb/6.1.1/gdb/process_reply.defs (props changed) vendor/gdb/6.1.1/gdb/procfs.c (props changed) vendor/gdb/6.1.1/gdb/regcache.c (props changed) vendor/gdb/6.1.1/gdb/regcache.h (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-arm.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-i386.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-ia64.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-m68k.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-mips.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-ppc.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-s390.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-s390x.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-sh.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/reg-x86-64.dat (props changed) vendor/gdb/6.1.1/gdb/regformats/regdat.sh (props changed) vendor/gdb/6.1.1/gdb/regformats/regdef.h (props changed) vendor/gdb/6.1.1/gdb/reggroups.c (props changed) vendor/gdb/6.1.1/gdb/reggroups.h (props changed) vendor/gdb/6.1.1/gdb/regset.h (props changed) vendor/gdb/6.1.1/gdb/remote-e7000.c (props changed) vendor/gdb/6.1.1/gdb/remote-est.c (props changed) vendor/gdb/6.1.1/gdb/remote-fileio.c (props changed) vendor/gdb/6.1.1/gdb/remote-fileio.h (props changed) vendor/gdb/6.1.1/gdb/remote-hms.c (props changed) vendor/gdb/6.1.1/gdb/remote-mips.c (props changed) vendor/gdb/6.1.1/gdb/remote-rdi.c (props changed) vendor/gdb/6.1.1/gdb/remote-rdp.c (props changed) vendor/gdb/6.1.1/gdb/remote-sds.c (props changed) vendor/gdb/6.1.1/gdb/remote-sim.c (props changed) vendor/gdb/6.1.1/gdb/remote-st.c (props changed) vendor/gdb/6.1.1/gdb/remote-utils.c (props changed) vendor/gdb/6.1.1/gdb/remote-utils.h (props changed) vendor/gdb/6.1.1/gdb/remote-vx.c (props changed) vendor/gdb/6.1.1/gdb/remote-vx68.c (props changed) vendor/gdb/6.1.1/gdb/remote-vxmips.c (props changed) vendor/gdb/6.1.1/gdb/remote-vxsparc.c (props changed) vendor/gdb/6.1.1/gdb/remote.c (props changed) vendor/gdb/6.1.1/gdb/remote.h (props changed) vendor/gdb/6.1.1/gdb/reply_mig_hack.awk (props changed) vendor/gdb/6.1.1/gdb/rom68k-rom.c (props changed) vendor/gdb/6.1.1/gdb/rs6000-nat.c (props changed) vendor/gdb/6.1.1/gdb/rs6000-tdep.c (props changed) vendor/gdb/6.1.1/gdb/s390-nat.c (props changed) vendor/gdb/6.1.1/gdb/s390-tdep.c (props changed) vendor/gdb/6.1.1/gdb/s390-tdep.h (props changed) vendor/gdb/6.1.1/gdb/scm-exp.c (props changed) vendor/gdb/6.1.1/gdb/scm-lang.c (props changed) vendor/gdb/6.1.1/gdb/scm-lang.h (props changed) vendor/gdb/6.1.1/gdb/scm-tags.h (props changed) vendor/gdb/6.1.1/gdb/scm-valprint.c (props changed) vendor/gdb/6.1.1/gdb/sentinel-frame.c (props changed) vendor/gdb/6.1.1/gdb/sentinel-frame.h (props changed) vendor/gdb/6.1.1/gdb/ser-e7kpc.c (props changed) vendor/gdb/6.1.1/gdb/ser-go32.c (props changed) vendor/gdb/6.1.1/gdb/ser-pipe.c (props changed) vendor/gdb/6.1.1/gdb/ser-tcp.c (props changed) vendor/gdb/6.1.1/gdb/ser-unix.c (props changed) vendor/gdb/6.1.1/gdb/ser-unix.h (props changed) vendor/gdb/6.1.1/gdb/serial.c (props changed) vendor/gdb/6.1.1/gdb/serial.h (props changed) vendor/gdb/6.1.1/gdb/signals/signals.c (props changed) vendor/gdb/6.1.1/gdb/sim-regno.h (props changed) vendor/gdb/6.1.1/gdb/sol-thread.c (props changed) vendor/gdb/6.1.1/gdb/solib-legacy.c (props changed) vendor/gdb/6.1.1/gdb/solib-osf.c (props changed) vendor/gdb/6.1.1/gdb/solib-sunos.c (props changed) vendor/gdb/6.1.1/gdb/solib-svr4.c (props changed) vendor/gdb/6.1.1/gdb/solib-svr4.h (props changed) vendor/gdb/6.1.1/gdb/solib.c (props changed) vendor/gdb/6.1.1/gdb/solib.h (props changed) vendor/gdb/6.1.1/gdb/solist.h (props changed) vendor/gdb/6.1.1/gdb/somread.c (props changed) vendor/gdb/6.1.1/gdb/somsolib.c (props changed) vendor/gdb/6.1.1/gdb/somsolib.h (props changed) vendor/gdb/6.1.1/gdb/source.c (props changed) vendor/gdb/6.1.1/gdb/source.h (props changed) vendor/gdb/6.1.1/gdb/sparc-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparc-nat.h (props changed) vendor/gdb/6.1.1/gdb/sparc-sol2-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparc-sol2-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc-stub.c (props changed) vendor/gdb/6.1.1/gdb/sparc-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc-tdep.h (props changed) vendor/gdb/6.1.1/gdb/sparc64-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparc64-sol2-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc64-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc64-tdep.h (props changed) vendor/gdb/6.1.1/gdb/sparc64fbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparc64fbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc64nbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparc64nbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparc64obsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparcnbsd-nat.c (props changed) vendor/gdb/6.1.1/gdb/sparcnbsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/sparcobsd-tdep.c (props changed) vendor/gdb/6.1.1/gdb/srec.h (props changed) vendor/gdb/6.1.1/gdb/stabsread.c (props changed) vendor/gdb/6.1.1/gdb/stabsread.h (props changed) vendor/gdb/6.1.1/gdb/stack.c (props changed) vendor/gdb/6.1.1/gdb/stack.h (props changed) vendor/gdb/6.1.1/gdb/standalone.c (props changed) vendor/gdb/6.1.1/gdb/std-regs.c (props changed) vendor/gdb/6.1.1/gdb/stop-gdb.c (props changed) vendor/gdb/6.1.1/gdb/sun3-nat.c (props changed) vendor/gdb/6.1.1/gdb/symfile.c (props changed) vendor/gdb/6.1.1/gdb/symfile.h (props changed) vendor/gdb/6.1.1/gdb/symmisc.c (props changed) vendor/gdb/6.1.1/gdb/symtab.c (props changed) vendor/gdb/6.1.1/gdb/symtab.h (props changed) vendor/gdb/6.1.1/gdb/target.c (props changed) vendor/gdb/6.1.1/gdb/target.h (props changed) vendor/gdb/6.1.1/gdb/terminal.h (props changed) vendor/gdb/6.1.1/gdb/thread-db.c (props changed) vendor/gdb/6.1.1/gdb/thread.c (props changed) vendor/gdb/6.1.1/gdb/top.c (props changed) vendor/gdb/6.1.1/gdb/top.h (props changed) vendor/gdb/6.1.1/gdb/tracepoint.c (props changed) vendor/gdb/6.1.1/gdb/tracepoint.h (props changed) vendor/gdb/6.1.1/gdb/trad-frame.c (props changed) vendor/gdb/6.1.1/gdb/trad-frame.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-command.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-command.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-data.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-data.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-disasm.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-disasm.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-file.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-file.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-hooks.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-hooks.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-interp.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-io.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-io.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-layout.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-layout.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-main.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-out.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-regs.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-regs.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-source.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-source.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-stack.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-stack.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-win.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-win.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-windata.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-windata.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-wingeneral.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-wingeneral.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui-winsource.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui-winsource.h (props changed) vendor/gdb/6.1.1/gdb/tui/tui.c (props changed) vendor/gdb/6.1.1/gdb/tui/tui.h (props changed) vendor/gdb/6.1.1/gdb/typeprint.c (props changed) vendor/gdb/6.1.1/gdb/typeprint.h (props changed) vendor/gdb/6.1.1/gdb/ui-file.c (props changed) vendor/gdb/6.1.1/gdb/ui-file.h (props changed) vendor/gdb/6.1.1/gdb/ui-out.c (props changed) vendor/gdb/6.1.1/gdb/ui-out.h (props changed) vendor/gdb/6.1.1/gdb/user-regs.c (props changed) vendor/gdb/6.1.1/gdb/user-regs.h (props changed) vendor/gdb/6.1.1/gdb/utils.c (props changed) vendor/gdb/6.1.1/gdb/uw-thread.c (props changed) vendor/gdb/6.1.1/gdb/valarith.c (props changed) vendor/gdb/6.1.1/gdb/valops.c (props changed) vendor/gdb/6.1.1/gdb/valprint.c (props changed) vendor/gdb/6.1.1/gdb/valprint.h (props changed) vendor/gdb/6.1.1/gdb/value.h (props changed) vendor/gdb/6.1.1/gdb/values.c (props changed) vendor/gdb/6.1.1/gdb/varobj.c (props changed) vendor/gdb/6.1.1/gdb/varobj.h (props changed) vendor/gdb/6.1.1/gdb/version.h (props changed) vendor/gdb/6.1.1/gdb/version.in (props changed) vendor/gdb/6.1.1/gdb/win32-nat.c (props changed) vendor/gdb/6.1.1/gdb/wince-stub.c (props changed) vendor/gdb/6.1.1/gdb/wince-stub.h (props changed) vendor/gdb/6.1.1/gdb/wince.c (props changed) vendor/gdb/6.1.1/gdb/wrapper.c (props changed) vendor/gdb/6.1.1/gdb/wrapper.h (props changed) vendor/gdb/6.1.1/gdb/xcoffread.c (props changed) vendor/gdb/6.1.1/gdb/xcoffsolib.c (props changed) vendor/gdb/6.1.1/gdb/xcoffsolib.h (props changed) vendor/gdb/6.1.1/gdb/xmodem.c (props changed) vendor/gdb/6.1.1/gdb/xmodem.h (props changed) vendor/gdb/6.1.1/include/COPYING (props changed) vendor/gdb/6.1.1/include/MAINTAINERS (props changed) vendor/gdb/6.1.1/include/alloca-conf.h (props changed) vendor/gdb/6.1.1/include/ansidecl.h (props changed) vendor/gdb/6.1.1/include/bfdlink.h (props changed) vendor/gdb/6.1.1/include/bin-bugs.h (props changed) vendor/gdb/6.1.1/include/bout.h (props changed) vendor/gdb/6.1.1/include/demangle.h (props changed) vendor/gdb/6.1.1/include/dis-asm.h (props changed) vendor/gdb/6.1.1/include/dyn-string.h (props changed) vendor/gdb/6.1.1/include/fibheap.h (props changed) vendor/gdb/6.1.1/include/filenames.h (props changed) vendor/gdb/6.1.1/include/floatformat.h (props changed) vendor/gdb/6.1.1/include/fnmatch.h (props changed) vendor/gdb/6.1.1/include/fopen-bin.h (props changed) vendor/gdb/6.1.1/include/fopen-same.h (props changed) vendor/gdb/6.1.1/include/fopen-vms.h (props changed) vendor/gdb/6.1.1/include/gdb/callback.h (props changed) vendor/gdb/6.1.1/include/gdb/fileio.h (props changed) vendor/gdb/6.1.1/include/gdb/remote-sim.h (props changed) vendor/gdb/6.1.1/include/gdb/signals.h (props changed) vendor/gdb/6.1.1/include/gdb/sim-arm.h (props changed) vendor/gdb/6.1.1/include/gdb/sim-d10v.h (props changed) vendor/gdb/6.1.1/include/gdb/sim-frv.h (props changed) vendor/gdb/6.1.1/include/gdb/sim-h8300.h (props changed) vendor/gdb/6.1.1/include/gdb/sim-sh.h (props changed) vendor/gdb/6.1.1/include/gdbm.h (props changed) vendor/gdb/6.1.1/include/getopt.h (props changed) vendor/gdb/6.1.1/include/hashtab.h (props changed) vendor/gdb/6.1.1/include/hp-symtab.h (props changed) vendor/gdb/6.1.1/include/ieee.h (props changed) vendor/gdb/6.1.1/include/libiberty.h (props changed) vendor/gdb/6.1.1/include/md5.h (props changed) vendor/gdb/6.1.1/include/oasys.h (props changed) vendor/gdb/6.1.1/include/objalloc.h (props changed) vendor/gdb/6.1.1/include/obstack.h (props changed) vendor/gdb/6.1.1/include/os9k.h (props changed) vendor/gdb/6.1.1/include/partition.h (props changed) vendor/gdb/6.1.1/include/progress.h (props changed) vendor/gdb/6.1.1/include/safe-ctype.h (props changed) vendor/gdb/6.1.1/include/sort.h (props changed) vendor/gdb/6.1.1/include/splay-tree.h (props changed) vendor/gdb/6.1.1/include/symcat.h (props changed) vendor/gdb/6.1.1/include/ternary.h (props changed) vendor/gdb/6.1.1/include/xregex.h (props changed) vendor/gdb/6.1.1/include/xregex2.h (props changed) vendor/gdb/6.1.1/include/xtensa-isa-internal.h (props changed) vendor/gdb/6.1.1/include/xtensa-isa.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/CONTRIBUTE (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/COPYING (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1990 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1991 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1992 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1993 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1994 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1995 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1996 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1997 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1998 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-1999 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-2000 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-2001 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ChangeLog-3.x (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/MAINTAINERS (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/Makefile.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/NEWS (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/PROBLEMS (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/README (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/TODO (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/abug-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/acconfig.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/acinclude.m4 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/aclocal.m4 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/alpha-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/alpha-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/alphabsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/alphafbsd-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/annotate.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/annotate.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arc-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arch-utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arch-utils.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arm-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arm-linux-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arm-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/arm-tdep.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/armnbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/armnbsd-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ax-gdb.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ax-gdb.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ax-general.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ax.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/bcache.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/bcache.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/blockframe.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/breakpoint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/breakpoint.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/buildsym.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/buildsym.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/c-exp.y (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/c-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/c-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/c-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/c-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/call-cmds.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ch-exp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ch-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ch-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ch-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ch-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli-out.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli-out.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-cmds.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-cmds.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-decode.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-decode.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-script.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-script.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-setshow.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-setshow.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cli/cli-utils.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/coff-solib.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/coff-solib.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/coffread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/command.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/complaints.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/complaints.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/completer.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/completer.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-osf1.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-osf1.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-osf2.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/alpha-osf3.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/fbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/fbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/nm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/nm-osf.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/nm-osf2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/nm-osf3.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/tm-alpha.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/tm-alphalinux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/tm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/xm-alphalinux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/alpha/xm-alphaosf.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/embed.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/nbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/nbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/nm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/tm-arm.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/tm-embed.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/tm-wince.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/wince.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/xm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/arm/xm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/cygwin.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/cygwin.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/embed.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/fbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/fbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/gdbserve.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/go32.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/go32.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386aix.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386aix.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386aout.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386bsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386bsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386dgux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386gnu.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386gnu.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386lynx.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386lynx.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386m3.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386m3.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386mach.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386mk.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386mk.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386nw.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386os9k.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sco.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sco4.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sco5.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sco5.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sol2.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386sol2.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v32.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v4.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v4.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v42mp.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/i386v42mp.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nbsdelf.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nbsdelf.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ncr3000.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ncr3000.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-cygwin.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-gnu.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-go32.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386bsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386lynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386mach.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386sco.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386sco4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386sco5.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386sol2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386v.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386v4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-i386v42mp.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-m3.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-nbsdelf.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-obsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-ptx4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-symmetry.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/nm-x86-64.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/obsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/obsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ptx.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ptx.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ptx4.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/ptx4.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/symmetry.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/symmetry.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-cygwin.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-go32.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386bsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386gnu.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386lynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386m3.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386mk.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386nw.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386os9k.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386sco5.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386sol2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386v.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386v4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-i386v42mp.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-nbsdelf.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-obsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-ptx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-ptx4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-symmetry.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/tm-vxworks.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/vxworks.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/x86-64linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/x86-64linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-cygwin.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-go32.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386bsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386gnu.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386m3.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386mach.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386mk.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386sco.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386v.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386v32.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-i386v4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-ptx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-ptx4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/i386/xm-symmetry.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/aix.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/aix.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/nm-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/tm-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/tm-ia64.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/xm-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/ia64/xm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-gnu.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-lynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-m3.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/nm-sysv4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/none/nm-none.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/none/none.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/none/none.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/none/tm-none.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/none/xm-none.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/aix.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/aix.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/gdbserve.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/nbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/nbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/nm-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/nm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/ppc-eabi.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/ppc-sim.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/ppcle-eabi.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/ppcle-sim.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-ppc-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-ppc-eabi.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-ppc-sim.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-ppcle-eabi.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-ppcle-sim.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/tm-vxworks.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/vxworks.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/xm-aix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/powerpc/xm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/fbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/fbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/linux.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nbsd.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nbsd.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nbsdelf.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-nbsdelf.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-sparclynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-sun4os4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/nm-sun4sol2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sp64.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sp64linux.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sp64sim.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sp64sol2.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sparc-em.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sparclet.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sparclite.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sparclynx.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sparclynx.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sun4os4.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sun4os4.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sun4sol2.mh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/sun4sol2.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-fbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sp64.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sp64linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sp64sim.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sparc.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sparclet.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sparclite.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sparclynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-spc-em.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sun4os4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-sun4sol2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/tm-vxsparc.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/vxsparc.mt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/xm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/xm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/sparc/xm-sun4sol2.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-linux.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-lynx.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-sunos.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-sysv4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/tm-vxworks.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/xm-aix4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/xm-nbsd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/config/xm-sysv4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/configure (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/configure.host (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/configure.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/configure.tgt (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/copying.awk (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/copying.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/core-aout.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/core-regset.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/core-sol2.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/corefile.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/corelow.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cp-abi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cp-abi.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cp-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cpu32bug-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/cxux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dbug-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dbxread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dcache.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dcache.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/defs.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/demangle.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dink32-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/ChangeLog (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/LRS (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/Makefile.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/a4rc.sed (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/agentexpr.texi (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/all-cfg.texi (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/annotate.texi (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/configure (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/configure.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/fdl.texi (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/gdb.texinfo (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/gdbint.texinfo (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/gpl.texi (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/lpsrc.sed (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/psrc.sed (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/refcard.tex (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doc/stabs.texinfo (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doublest.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/doublest.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dsrec.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dst.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dstread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dwarf2cfi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dwarf2cfi.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dwarf2read.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/dwarfread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/elfread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/environ.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/environ.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/eval.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/event-loop.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/event-loop.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/event-top.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/event-top.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/exc_request.defs (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/exec.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/expprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/expression.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/f-exp.y (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/f-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/f-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/f-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/f-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/findvar.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/fork-child.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/fr30-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/frame.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/frame.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gcore.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb-events.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb-events.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb-events.sh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb-stabs.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb.1 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb.gdb (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_assert.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_dirent.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_indent.sh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_proc_service.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_regex.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_stat.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_string.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_thread_db.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_vfork.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdb_wait.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbarch.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbarch.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbarch.sh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbcmd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbcore.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbinit.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/Makefile.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/README (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/acconfig.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/aclocal.m4 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/config.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/configure (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/configure.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/configure.srv (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/gdbreplay.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/gdbserver.1 (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/i387-fp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/i387-fp.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-arm-low.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-i386-low.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-ia64-low.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-low.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-low.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/linux-x86-64-low.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-hppabsd.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-lynx.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-nbsd.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-sim.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-sparc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/low-sun3.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/regcache.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/regcache.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/remote-utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/server.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/server.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/terminal.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbserver/utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbthread.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbtypes.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gdbtypes.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gnu-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gnu-nat.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gnu-v2-abi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gnu-v3-abi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/gregset.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/hpacc-abi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/hpux-thread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-linux-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386-tdep.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386aix-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386b-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386bsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386bsd-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386fbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386gnu-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386ly-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386m3-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386mach-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386nbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386nbsd-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386v-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i386v4-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i387-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i387-nat.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/i387-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ia64-aix-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ia64-aix-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ia64-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ia64-linux-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ia64-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/inf-loop.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/inf-loop.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/infcmd.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/inferior.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/inflow.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/infptrace.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/infrun.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/inftarg.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/infttrace.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/irix4-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/irix5-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/jv-exp.y (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/jv-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/jv-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/jv-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/jv-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/kod-cisco.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/kod.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/kod.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/language.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/language.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/lin-lwp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/linespec.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/linespec.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/linux-proc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/lynx-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m2-exp.y (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m2-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m2-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m2-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m2-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m3-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m32r-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m32r-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m32r-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m68k-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m68k-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m68klinux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m68knbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m88k-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/m88k-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/main.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/maint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mdebugread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mem-break.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/memattr.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/memattr.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/ChangeLog (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/gdbmi.texinfo (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmd-break.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmd-disas.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmd-stack.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmd-var.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmds.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-cmds.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-console.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-console.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-getopt.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-getopt.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-main.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-out.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-out.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-parse.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mi/mi-parse.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/minimon.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/minsyms.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mipsread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/mon960-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/monitor.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/monitor.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/msg.defs (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/msg_reply.defs (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nindy-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/Makefile.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/configure (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/configure.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/gdbserve.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/gdbserve.def (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/i386.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/i386.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/ppc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/ppc.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlm/prelude.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/nlmread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/notify.defs (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ns32k-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ns32knbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/objfiles.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/objfiles.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ocd.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ocd.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/op50-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/os9kread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/osfsolib.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/p-exp.y (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/p-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/p-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/p-typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/p-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/parse.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/parser-defs.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppc-bdm.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppc-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppc-linux-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppc-tdep.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppcbug-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ppcnbsd-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/printcmd.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-api.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-events.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-flags.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-service.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-utils.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/proc-why.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/process_reply.defs (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/procfs.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ptx4-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regcache.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regcache.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-arm.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-i386-linux.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-i386.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-ia64.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-ppc.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/reg-x86-64.dat (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/regdat.sh (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/regformats/regdef.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-adapt.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-array.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-bug.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-e7000.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-eb.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-es.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-est.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-hms.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-mips.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-mm.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-nindy.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-nrom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-os9k.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-rdi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-rdp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-sds.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-sim.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-st.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-udi.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-utils.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vx.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vx29k.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vx68.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vx960.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vxmips.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote-vxsparc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/remote.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/reply_mig_hack.awk (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/saber.suppress (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/scm-exp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/scm-lang.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/scm-lang.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/scm-tags.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/scm-valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-e7kpc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-go32.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-pipe.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-tcp.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-unix.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ser-unix.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/serial.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/serial.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/signals.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/signals/signals.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sol-thread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib-legacy.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib-osf.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib-sunos.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib-svr4.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib-svr4.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solib.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/solist.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/somread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/somsolib.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/somsolib.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/source.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/source.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparc-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparc-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparc-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparc-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparcl-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparcl-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparclet-rom.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/sparclet-stub.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/srec.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/stabsread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/stabsread.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/stack.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/standalone.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/stop-gdb.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symfile.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symfile.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symm-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symm-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symmisc.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symtab.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/symtab.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/target.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/target.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/terminal.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/thread-db.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/thread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/top.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/top.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/tracepoint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/tracepoint.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/typeprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/typeprint.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ui-file.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ui-file.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ui-out.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/ui-out.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/utils.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/uw-thread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/v850-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/valarith.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/valops.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/valprint.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/valprint.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/value.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/values.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/varobj.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/varobj.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/version.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/version.in (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/wrapper.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/wrapper.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/x86-64-linux-nat.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/x86-64-linux-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/x86-64-tdep.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/x86-64-tdep.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/xcoffread.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/xcoffsolib.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/xcoffsolib.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/xmodem.c (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/gdb/xmodem.h (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/include/gdb/ChangeLog (props changed) vendor/gdb/anoncvs_gdb_5_2_branch_20020627/include/gdb/signals.h (props changed) vendor/gdb/marcel_contrib/gdb/config/ia64/fbsd.mh (props changed) vendor/gdb/marcel_contrib/gdb/config/ia64/fbsd.mt (props changed) vendor/gdb/marcel_contrib/gdb/config/ia64/nm-fbsd.h (props changed) vendor/gdb/marcel_contrib/gdb/config/ia64/tm-fbsd.h (props changed) vendor/gdb/marcel_contrib/gdb/ia64-fbsd-nat.c (props changed) vendor/gdb/marcel_contrib/gdb/ia64-fbsd-tdep.c (props changed) Copied: vendor/gdb/4.16/COPYING (from r191739, vendor/gdb/4.16/contrib/gdb/COPYING) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/gdb/4.16/COPYING Sat May 2 09:11:21 2009 (r191740, copy of r191739, vendor/gdb/4.16/contrib/gdb/COPYING) @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. Copied: vendor/gdb/4.16/COPYING.LIB (from r191739, vendor/gdb/4.16/contrib/gdb/COPYING.LIB) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/gdb/4.16/COPYING.LIB Sat May 2 09:11:21 2009 (r191740, copy of r191739, vendor/gdb/4.16/contrib/gdb/COPYING.LIB) @@ -0,0 +1,481 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! Copied: vendor/gdb/4.16/Makefile.in (from r191739, vendor/gdb/4.16/contrib/gdb/Makefile.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/gdb/4.16/Makefile.in Sat May 2 09:11:21 2009 (r191740, copy of r191739, vendor/gdb/4.16/contrib/gdb/Makefile.in) @@ -0,0 +1,1366 @@ +# +# Makefile for directory with subdirs to build. +# Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +srcdir = . + +prefix = /usr/local + +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +libdir = $(exec_prefix)/lib +tooldir = $(exec_prefix)/$(target) + +program_transform_name = + +datadir = $(prefix)/lib +mandir = $(prefix)/man +man1dir = $(mandir)/man1 +man2dir = $(mandir)/man2 +man3dir = $(mandir)/man3 +man4dir = $(mandir)/man4 +man5dir = $(mandir)/man5 +man6dir = $(mandir)/man6 +man7dir = $(mandir)/man7 +man8dir = $(mandir)/man8 +man9dir = $(mandir)/man9 +infodir = $(prefix)/info +includedir = $(prefix)/include +docdir = $(datadir)/doc +GDB_NLM_DEPS = + +SHELL = /bin/sh + +INSTALL = $${srcroot}/install.sh -c +INSTALL_PROGRAM = $(INSTALL) +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_XFORM = $(INSTALL) -t='$(program_transform_name)' + +INSTALL_DOSREL = install-dosrel-fake + +AS = as +AR = ar +AR_FLAGS = rc +CC = cc + +# Special variables passed down in EXTRA_GCC_FLAGS. They are defined +# here so that they can be overridden by Makefile fragments. +HOST_CC = $(CC_FOR_BUILD) +HOST_PREFIX = +HOST_PREFIX_1 = loser- + +# We don't specify -g -O because many compilers don't support -g -O, +# and/or -O is broken in and of itself. +CFLAGS = -g +LIBCFLAGS = $(CFLAGS) +CFLAGS_FOR_TARGET = $(CFLAGS) +LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) +PICFLAG = +PICFLAG_FOR_TARGET = + +CXX = gcc + +# Use -O2 to stress test the compiler. +CXXFLAGS = -g -O2 +LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) +LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + +RANLIB = ranlib + +DLLTOOL = dlltool + +NM = nm +# Not plain GZIP, since gzip looks there for extra command-line options. +GZIPPROG = gzip + +# These values are substituted by configure. +DEFAULT_YACC = yacc +DEFAULT_LEX = lex + +BISON = bison -y +LEX = `if [ -f $$r/flex/flex ] ; \ + then echo $$r/flex/flex ; \ + else echo ${DEFAULT_LEX} ; fi` + +M4 = `if [ -f $$r/m4/m4 ] ; \ + then echo $$r/m4/m4 ; \ + else echo m4 ; fi` + +MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \ + then echo $$r/texinfo/makeinfo/makeinfo ; \ + else echo makeinfo ; fi` + +# This just becomes part of the MAKEINFO definition passed down to +# sub-makes. It lets flags be given on the command line while still +# using the makeinfo from the object tree. +MAKEINFOFLAGS = + +EXPECT = `if [ -f $$r/expect/expect ] ; \ + then echo $$r/expect/expect ; \ + else echo expect ; fi` + +RUNTEST = `if [ -f $${srcroot}/dejagnu/runtest ] ; \ + then echo $${srcroot}/dejagnu/runtest ; \ + else echo runtest ; fi` + + +# compilers to use to create programs which must be run in the build +# environment. +CC_FOR_BUILD = $(CC) +CXX_FOR_BUILD = $(CXX) + +SUBDIRS = "this is set via configure, don't edit this" +OTHERS = + +# This is set by the configure script to the list of directories which +# should be built using the target tools. +TARGET_CONFIGDIRS = libiberty libgloss newlib libio librx libstdc++ libg++ winsup + +# Target libraries are put under this directory: +TARGET_SUBDIR = . # Changed by configure to $(target_alias) if cross. + +# This is set by the configure script to the arguments passed to configure. +CONFIG_ARGUMENTS = + +# This is set by configure to REALLY_SET_LIB_PATH if --enable-shared +# was used. +SET_LIB_PATH = + +# This is the name of the environment variable used for the path to +# the libraries. This may be changed by configure.in. +RPATH_ENVVAR = LD_LIBRARY_PATH + +# configure.in sets SET_LIB_PATH to this if --enable-shared was used. +REALLY_SET_LIB_PATH = \ + $(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes:$$$(RPATH_ENVVAR); \ + export $(RPATH_ENVVAR); + +ALL = all.normal +INSTALL_TARGET = install-dirs \ + $(INSTALL_MODULES) \ + $(INSTALL_TARGET_MODULES) \ + $(INSTALL_X11_MODULES) \ + install-gcc \ + $(INSTALL_DOSREL) + + +CC_FOR_TARGET = ` \ + if [ -f $$r/gcc/Makefile ] ; then \ + if [ -f $$r/$(TARGET_SUBDIR)/newlib/Makefile ] ; then \ + echo $$r/gcc/xgcc -B$$r/gcc/ -idirafter $$r/$(TARGET_SUBDIR)/newlib/targ-include -idirafter $${srcroot}/newlib/libc/include -nostdinc; \ + else \ + echo $$r/gcc/xgcc -B$$r/gcc/; \ + fi; \ + else \ + if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From dchagin at FreeBSD.org Sat May 2 10:06:51 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Sat May 2 10:07:17 2009 Subject: svn commit: r191741 - in head/sys: amd64/linux32 compat/linux i386/linux Message-ID: <200905021006.n42A6n85079217@svn.freebsd.org> Author: dchagin Date: Sat May 2 10:06:49 2009 New Revision: 191741 URL: http://svn.freebsd.org/changeset/base/191741 Log: Move extern variable definitions to the header file. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_futex.c head/sys/compat/linux/linux_futex.h head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sat May 2 09:11:21 2009 (r191740) +++ head/sys/amd64/linux32/linux32_sysvec.c Sat May 2 10:06:49 2009 (r191741) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -127,9 +128,6 @@ static void exec_linux_setregs(struct th u_long stack, u_long ps_strings); static void linux32_fixlimit(struct rlimit *rl, int which); -extern LIST_HEAD(futex_list, futex) futex_list; -extern struct mtx futex_mtx; - static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; static eventhandler_tag linux_exec_tag; Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sat May 2 09:11:21 2009 (r191740) +++ head/sys/compat/linux/linux_futex.c Sat May 2 10:06:49 2009 (r191741) @@ -81,7 +81,7 @@ struct futex { TAILQ_HEAD(lf_waiting_proc, waiting_proc) f_waiting_proc; }; -LIST_HEAD(futex_list, futex) futex_list; +struct futex_list futex_list; #define FUTEX_LOCK(f) sx_xlock(&(f)->f_lck) #define FUTEX_UNLOCK(f) sx_xunlock(&(f)->f_lck) Modified: head/sys/compat/linux/linux_futex.h ============================================================================== --- head/sys/compat/linux/linux_futex.h Sat May 2 09:11:21 2009 (r191740) +++ head/sys/compat/linux/linux_futex.h Sat May 2 10:06:49 2009 (r191741) @@ -36,6 +36,9 @@ #ifndef _LINUX_FUTEX_H #define _LINUX_FUTEX_H +extern LIST_HEAD(futex_list, futex) futex_list; +extern struct mtx futex_mtx; + #define LINUX_FUTEX_WAIT 0 #define LINUX_FUTEX_WAKE 1 #define LINUX_FUTEX_FD 2 /* unused */ Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sat May 2 09:11:21 2009 (r191740) +++ head/sys/i386/linux/linux_sysvec.c Sat May 2 10:06:49 2009 (r191741) @@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -111,9 +112,6 @@ static register_t *linux_copyout_strings static int linux_szplatform; const char *linux_platform; -extern LIST_HEAD(futex_list, futex) futex_list; -extern struct mtx futex_mtx; - static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; static eventhandler_tag linux_exec_tag; From dchagin at FreeBSD.org Sat May 2 10:51:42 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Sat May 2 10:51:53 2009 Subject: svn commit: r191742 - head/sys/compat/linux Message-ID: <200905021051.n42ApetI083033@svn.freebsd.org> Author: dchagin Date: Sat May 2 10:51:40 2009 New Revision: 191742 URL: http://svn.freebsd.org/changeset/base/191742 Log: Linux socketpair() call expects explicit specified protocol for AF_LOCAL domain unlike FreeBSD which expects 0 in this case. Approved by: kib (mentor) MFC after: 1 month Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sat May 2 10:06:49 2009 (r191741) +++ head/sys/compat/linux/linux_socket.c Sat May 2 10:51:40 2009 (r191742) @@ -859,7 +859,10 @@ linux_socketpair(struct thread *td, stru return (EINVAL); bsd_args.type = args->type; - bsd_args.protocol = args->protocol; + if (bsd_args.domain == AF_LOCAL && args->protocol == PF_UNIX) + bsd_args.protocol = 0; + else + bsd_args.protocol = args->protocol; bsd_args.rsv = (int *)PTRIN(args->rsv); return (socketpair(td, &bsd_args)); } From hrs at FreeBSD.org Sat May 2 11:59:57 2009 From: hrs at FreeBSD.org (Hiroki Sato) Date: Sat May 2 12:00:09 2009 Subject: svn commit: r191743 - head/share/man/man4 Message-ID: <200905021159.n42BxuDF084285@svn.freebsd.org> Author: hrs Date: Sat May 2 11:59:56 2009 New Revision: 191743 URL: http://svn.freebsd.org/changeset/base/191743 Log: Fix typos: s,Novatal,Novatel, s,/sys/dev/u3g.c,/sys/dev/usb/serial/u3g.c, MFC after: 3 days Modified: head/share/man/man4/u3g.4 Modified: head/share/man/man4/u3g.4 ============================================================================== --- head/share/man/man4/u3g.4 Sat May 2 10:51:40 2009 (r191742) +++ head/share/man/man4/u3g.4 Sat May 2 11:59:56 2009 (r191743) @@ -66,13 +66,13 @@ Qualcomm Inc. CDMA MSM .It Huawei B190, E220 ('') .It -Novatal U740, MC950D, X950D, etc. +Novatel U740, MC950D, X950D, etc. .It Sierra MC875U, MC8775U, etc. .El .Pp (See -.Pa /sys/dev/u3g.c +.Pa /sys/dev/usb/serial/u3g.c for the complete list of supported cards for each vendor mentioned above.) .Pp From mav at FreeBSD.org Sat May 2 12:20:44 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sat May 2 12:20:50 2009 Subject: svn commit: r191744 - in head/sys/amd64: amd64 include isa Message-ID: <200905021220.n42CKh4A084716@svn.freebsd.org> Author: mav Date: Sat May 2 12:20:43 2009 New Revision: 191744 URL: http://svn.freebsd.org/changeset/base/191744 Log: Add support for using i8254 and rtc timers as event sources for amd64 SMP system. Redistribute hard-/stat-/profclock events to other CPUs using IPIs. Modified: head/sys/amd64/amd64/mp_machdep.c head/sys/amd64/include/apicvar.h head/sys/amd64/include/clock.h head/sys/amd64/isa/clock.c Modified: head/sys/amd64/amd64/mp_machdep.c ============================================================================== --- head/sys/amd64/amd64/mp_machdep.c Sat May 2 11:59:56 2009 (r191743) +++ head/sys/amd64/amd64/mp_machdep.c Sat May 2 12:20:43 2009 (r191744) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -1124,6 +1125,15 @@ ipi_bitmap_handler(struct trapframe fram sched_preempt(curthread); /* Nothing to do for AST */ + + if (ipi_bitmap & (1 << IPI_HARDCLOCK)) + hardclockintr(&frame); + + if (ipi_bitmap & (1 << IPI_STATCLOCK)) + statclockintr(&frame); + + if (ipi_bitmap & (1 << IPI_PROFCLOCK)) + profclockintr(&frame); } /* Modified: head/sys/amd64/include/apicvar.h ============================================================================== --- head/sys/amd64/include/apicvar.h Sat May 2 11:59:56 2009 (r191743) +++ head/sys/amd64/include/apicvar.h Sat May 2 12:20:43 2009 (r191744) @@ -126,7 +126,10 @@ /* IPIs handled by IPI_BITMAPED_VECTOR (XXX ups is there a better place?) */ #define IPI_AST 0 /* Generate software trap. */ #define IPI_PREEMPT 1 -#define IPI_BITMAP_LAST IPI_PREEMPT +#define IPI_HARDCLOCK 2 +#define IPI_STATCLOCK 3 +#define IPI_PROFCLOCK 4 +#define IPI_BITMAP_LAST IPI_PROFCLOCK #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ Modified: head/sys/amd64/include/clock.h ============================================================================== --- head/sys/amd64/include/clock.h Sat May 2 11:59:56 2009 (r191743) +++ head/sys/amd64/include/clock.h Sat May 2 12:20:43 2009 (r191744) @@ -24,6 +24,12 @@ extern int tsc_is_invariant; void i8254_init(void); +struct trapframe; + +int hardclockintr(struct trapframe *frame); +int statclockintr(struct trapframe *frame); +int profclockintr(struct trapframe *frame); + /* * Driver to clock driver interface. */ Modified: head/sys/amd64/isa/clock.c ============================================================================== --- head/sys/amd64/isa/clock.c Sat May 2 11:59:56 2009 (r191743) +++ head/sys/amd64/isa/clock.c Sat May 2 12:20:43 2009 (r191744) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -62,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #ifdef DEV_ISA @@ -112,6 +114,35 @@ static struct timecounter i8254_timecoun 0 /* quality */ }; +int +hardclockintr(struct trapframe *frame) +{ + + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); + return (FILTER_HANDLED); +} + +int +statclockintr(struct trapframe *frame) +{ + + if (profprocs != 0) + profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + statclock(TRAPF_USERMODE(frame)); + return (FILTER_HANDLED); +} + +int +profclockintr(struct trapframe *frame) +{ + + profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + return (FILTER_HANDLED); +} + static int clkintr(struct trapframe *frame) { @@ -128,7 +159,14 @@ clkintr(struct trapframe *frame) mtx_unlock_spin(&clock_lock); } KASSERT(!using_lapic_timer, ("clk interrupt enabled with lapic timer")); - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); +#ifdef SMP + if (smp_started) + ipi_all_but_self(IPI_HARDCLOCK); +#endif + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); return (FILTER_HANDLED); } @@ -209,10 +247,19 @@ rtcintr(struct trapframe *frame) if (profprocs != 0) { if (--pscnt == 0) pscnt = psdiv; +#ifdef SMP + if (pscnt != psdiv && smp_started) + ipi_all_but_self(IPI_PROFCLOCK); +#endif profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); } - if (pscnt == psdiv) + if (pscnt == psdiv) { +#ifdef SMP + if (smp_started) + ipi_all_but_self(IPI_STATCLOCK); +#endif statclock(TRAPF_USERMODE(frame)); + } } return(flag ? FILTER_HANDLED : FILTER_STRAY); } From mav at FreeBSD.org Sat May 2 12:59:48 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sat May 2 12:59:55 2009 Subject: svn commit: r191745 - in head/sys/i386: i386 include isa Message-ID: <200905021259.n42Cxl0u085525@svn.freebsd.org> Author: mav Date: Sat May 2 12:59:47 2009 New Revision: 191745 URL: http://svn.freebsd.org/changeset/base/191745 Log: Add support for using i8254 and rtc timers as event sources for i386 SMP system. Redistribute hard-/stat-/profclock events to other CPUs using IPI. Modified: head/sys/i386/i386/mp_machdep.c head/sys/i386/include/apicvar.h head/sys/i386/include/clock.h head/sys/i386/isa/clock.c Modified: head/sys/i386/i386/mp_machdep.c ============================================================================== --- head/sys/i386/i386/mp_machdep.c Sat May 2 12:20:43 2009 (r191744) +++ head/sys/i386/i386/mp_machdep.c Sat May 2 12:59:47 2009 (r191745) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -1284,6 +1285,15 @@ ipi_bitmap_handler(struct trapframe fram #endif /* Nothing to do for AST */ } + + if (ipi_bitmap & (1 << IPI_HARDCLOCK)) + hardclockintr(&frame); + + if (ipi_bitmap & (1 << IPI_STATCLOCK)) + statclockintr(&frame); + + if (ipi_bitmap & (1 << IPI_PROFCLOCK)) + profclockintr(&frame); } /* Modified: head/sys/i386/include/apicvar.h ============================================================================== --- head/sys/i386/include/apicvar.h Sat May 2 12:20:43 2009 (r191744) +++ head/sys/i386/include/apicvar.h Sat May 2 12:59:47 2009 (r191745) @@ -137,7 +137,10 @@ /* IPIs handled by IPI_BITMAPED_VECTOR (XXX ups is there a better place?) */ #define IPI_AST 0 /* Generate software trap. */ #define IPI_PREEMPT 1 -#define IPI_BITMAP_LAST IPI_PREEMPT +#define IPI_HARDCLOCK 2 +#define IPI_STATCLOCK 3 +#define IPI_PROFCLOCK 4 +#define IPI_BITMAP_LAST IPI_PROFCLOCK #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ Modified: head/sys/i386/include/clock.h ============================================================================== --- head/sys/i386/include/clock.h Sat May 2 12:20:43 2009 (r191744) +++ head/sys/i386/include/clock.h Sat May 2 12:59:47 2009 (r191745) @@ -24,6 +24,12 @@ extern int tsc_is_invariant; void i8254_init(void); +struct trapframe; + +int hardclockintr(struct trapframe *frame); +int statclockintr(struct trapframe *frame); +int profclockintr(struct trapframe *frame); + /* * Driver to clock driver interface. */ Modified: head/sys/i386/isa/clock.c ============================================================================== --- head/sys/i386/isa/clock.c Sat May 2 12:20:43 2009 (r191744) +++ head/sys/i386/isa/clock.c Sat May 2 12:59:47 2009 (r191745) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -69,6 +70,7 @@ __FBSDID("$FreeBSD$"); #endif #include #include +#include #include #ifdef DEV_ISA @@ -127,6 +129,35 @@ static struct timecounter i8254_timecoun 0 /* quality */ }; +int +hardclockintr(struct trapframe *frame) +{ + + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); + return (FILTER_HANDLED); +} + +int +statclockintr(struct trapframe *frame) +{ + + if (profprocs != 0) + profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + statclock(TRAPF_USERMODE(frame)); + return (FILTER_HANDLED); +} + +int +profclockintr(struct trapframe *frame) +{ + + profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + return (FILTER_HANDLED); +} + static int clkintr(struct trapframe *frame) { @@ -155,7 +186,14 @@ clkintr(struct trapframe *frame) (*lapic_cyclic_clock_func[cpu])(frame); #endif - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); +#ifdef SMP + if (smp_started) + ipi_all_but_self(IPI_HARDCLOCK); +#endif + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); #ifdef DEV_MCA /* Reset clock interrupt by asserting bit 7 of port 0x61 */ if (MCA_system) @@ -241,10 +279,19 @@ rtcintr(struct trapframe *frame) if (profprocs != 0) { if (--pscnt == 0) pscnt = psdiv; +#ifdef SMP + if (pscnt != psdiv && smp_started) + ipi_all_but_self(IPI_PROFCLOCK); +#endif profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); } - if (pscnt == psdiv) + if (pscnt == psdiv) { +#ifdef SMP + if (smp_started) + ipi_all_but_self(IPI_STATCLOCK); +#endif statclock(TRAPF_USERMODE(frame)); + } } return(flag ? FILTER_HANDLED : FILTER_STRAY); } From thompsa at FreeBSD.org Sat May 2 15:14:20 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sat May 2 15:14:34 2009 Subject: svn commit: r191746 - in head/sys: dev/if_ndis dev/ipw dev/iwi dev/iwn dev/usb/wlan dev/wi dev/wpi net80211 Message-ID: <200905021514.n42FEJ6u088104@svn.freebsd.org> Author: thompsa Date: Sat May 2 15:14:18 2009 New Revision: 191746 URL: http://svn.freebsd.org/changeset/base/191746 Log: Create a taskqueue for each wireless interface which provides a serialised sleepable context for net80211 driver callbacks. This removes the need for USB and firmware based drivers to roll their own code to defer the chip programming for state changes, scan requests, channel changes and mcast/promisc updates. When a driver callback completes the hardware state is now guaranteed to have been updated and is in sync with net80211 layer. This nukes around 1300 lines of code from the wireless device drivers making them more readable and less race prone. The net80211 layer has been updated as follows - all state/channel changes are serialised on the taskqueue. - ieee80211_new_state() always queues and can now be called from any context - scanning runs from a single taskq function and executes to completion. driver callbacks are synchronous so the channel, phy mode and rx filters are guaranteed to be set in hardware before probe request frames are transmitted. Help and contributions from Sam Leffler. Reviewed by: sam Deleted: head/sys/dev/usb/wlan/usb_wlan.h Modified: head/sys/dev/if_ndis/if_ndis.c head/sys/dev/if_ndis/if_ndisvar.h head/sys/dev/ipw/if_ipw.c head/sys/dev/ipw/if_ipwvar.h head/sys/dev/iwi/if_iwi.c head/sys/dev/iwi/if_iwivar.h head/sys/dev/iwn/if_iwn.c head/sys/dev/iwn/if_iwnvar.h head/sys/dev/usb/wlan/if_rum.c head/sys/dev/usb/wlan/if_rumvar.h head/sys/dev/usb/wlan/if_uath.c head/sys/dev/usb/wlan/if_uathvar.h head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_uralvar.h head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/usb/wlan/if_zydreg.h head/sys/dev/wi/if_wi.c head/sys/dev/wi/if_wivar.h head/sys/dev/wpi/if_wpi.c head/sys/dev/wpi/if_wpivar.h head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_ioctl.c head/sys/net80211/ieee80211_node.c head/sys/net80211/ieee80211_node.h head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_scan.c head/sys/net80211/ieee80211_scan.h head/sys/net80211/ieee80211_scan_sta.c head/sys/net80211/ieee80211_var.h Modified: head/sys/dev/if_ndis/if_ndis.c ============================================================================== --- head/sys/dev/if_ndis/if_ndis.c Sat May 2 12:59:47 2009 (r191745) +++ head/sys/dev/if_ndis/if_ndis.c Sat May 2 15:14:18 2009 (r191746) @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include @@ -173,7 +172,7 @@ static int ndis_newstate (struct ieee802 int); static int ndis_nettype_chan (uint32_t); static int ndis_nettype_mode (uint32_t); -static void ndis_scan (void *, int); +static void ndis_scan (void *); static void ndis_scan_results (struct ndis_softc *); static void ndis_scan_start (struct ieee80211com *); static void ndis_scan_end (struct ieee80211com *); @@ -184,8 +183,6 @@ static void ndis_init (void *); static void ndis_stop (struct ndis_softc *); static int ndis_ifmedia_upd (struct ifnet *); static void ndis_ifmedia_sts (struct ifnet *, struct ifmediareq *); -static void ndis_auth (void *, int); -static void ndis_assoc (void *, int); static int ndis_get_assoc (struct ndis_softc *, ndis_wlan_bssid_ex **); static int ndis_probe_offload (struct ndis_softc *); static int ndis_set_offload (struct ndis_softc *); @@ -741,13 +738,7 @@ ndis_attach(dev) uint32_t arg; int r; - sc->ndis_tq = taskqueue_create("nids_taskq", M_NOWAIT | M_ZERO, - taskqueue_thread_enqueue, &sc->ndis_tq); - taskqueue_start_threads(&sc->ndis_tq, 1, PI_NET, "%s taskq", - device_get_nameunit(dev)); - TASK_INIT(&sc->ndis_scantask, 0, ndis_scan, sc); - TASK_INIT(&sc->ndis_authtask, 0, ndis_auth, sc); - TASK_INIT(&sc->ndis_assoctask, 0, ndis_assoc, sc); + callout_init(&sc->ndis_scan_callout, CALLOUT_MPSAFE); ifp->if_ioctl = ndis_ioctl_80211; ic->ic_ifp = ifp; @@ -1054,12 +1045,6 @@ ndis_detach(dev) } else NDIS_UNLOCK(sc); - if (sc->ndis_80211) { - taskqueue_drain(sc->ndis_tq, &sc->ndis_scantask); - taskqueue_drain(sc->ndis_tq, &sc->ndis_authtask); - taskqueue_drain(sc->ndis_tq, &sc->ndis_assoctask); - } - if (sc->ndis_tickitem != NULL) IoFreeWorkItem(sc->ndis_tickitem); if (sc->ndis_startitem != NULL) @@ -1121,8 +1106,6 @@ ndis_detach(dev) if (sc->ndis_iftype == PCIBus) bus_dma_tag_destroy(sc->ndis_parent_tag); - if (sc->ndis_80211) - taskqueue_free(sc->ndis_tq); return(0); } @@ -2419,30 +2402,6 @@ ndis_setstate_80211(sc) } static void -ndis_auth(void *arg, int npending) -{ - struct ndis_softc *sc = arg; - struct ifnet *ifp = sc->ifp; - struct ieee80211com *ic = ifp->if_l2com; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - - vap->iv_state = IEEE80211_S_AUTH; - ndis_auth_and_assoc(sc, vap); -} - -static void -ndis_assoc(void *arg, int npending) -{ - struct ndis_softc *sc = arg; - struct ifnet *ifp = sc->ifp; - struct ieee80211com *ic = ifp->if_l2com; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - - vap->iv_state = IEEE80211_S_ASSOC; - ndis_auth_and_assoc(sc, vap); -} - -static void ndis_auth_and_assoc(sc, vap) struct ndis_softc *sc; struct ieee80211vap *vap; @@ -2656,9 +2615,6 @@ ndis_auth_and_assoc(sc, vap) if (rval) device_printf (sc->ndis_dev, "set ssid failed: %d\n", rval); - if (vap->iv_state == IEEE80211_S_AUTH) - ieee80211_new_state(vap, IEEE80211_S_ASSOC, 0); - return; } @@ -3304,13 +3260,18 @@ ndis_newstate(struct ieee80211vap *vap, return nvp->newstate(vap, nstate, arg); case IEEE80211_S_ASSOC: if (ostate != IEEE80211_S_AUTH) { - taskqueue_enqueue(sc->ndis_tq, &sc->ndis_assoctask); - return EINPROGRESS; + IEEE80211_UNLOCK(ic); + ndis_auth_and_assoc(sc, vap); + IEEE80211_LOCK(ic); } break; case IEEE80211_S_AUTH: - taskqueue_enqueue(sc->ndis_tq, &sc->ndis_authtask); - return EINPROGRESS; + IEEE80211_UNLOCK(ic); + ndis_auth_and_assoc(sc, vap); + if (vap->iv_state == IEEE80211_S_AUTH) /* XXX */ + ieee80211_new_state(vap, IEEE80211_S_ASSOC, 0); + IEEE80211_LOCK(ic); + break; default: break; } @@ -3318,54 +3279,18 @@ ndis_newstate(struct ieee80211vap *vap, } static void -ndis_scan(void *arg, int npending) +ndis_scan(void *arg) { struct ndis_softc *sc = arg; struct ieee80211com *ic; struct ieee80211vap *vap; - struct ieee80211_scan_state *ss; - ndis_80211_ssid ssid; - int error, len; ic = sc->ifp->if_l2com; - ss = ic->ic_scan; vap = TAILQ_FIRST(&ic->ic_vaps); - if (!NDIS_INITIALIZED(sc)) { - DPRINTF(("%s: scan aborted\n", __func__)); - ieee80211_cancel_scan(vap); - return; - } - - len = sizeof(ssid); - bzero((char *)&ssid, len); - if (ss->ss_nssid == 0) - ssid.ns_ssidlen = 1; - else { - /* Perform a directed scan */ - ssid.ns_ssidlen = ss->ss_ssid[0].len; - bcopy(ss->ss_ssid[0].ssid, ssid.ns_ssid, ssid.ns_ssidlen); - } - - error = ndis_set_info(sc, OID_802_11_SSID, &ssid, &len); - if (error) - DPRINTF(("%s: set ESSID failed\n", __func__)); - - len = 0; - error = ndis_set_info(sc, OID_802_11_BSSID_LIST_SCAN, - NULL, &len); - if (error) { - DPRINTF(("%s: scan command failed\n", __func__)); - ieee80211_cancel_scan(vap); - return; - } - - pause("ssidscan", hz * 3); - if (!NDIS_INITIALIZED(sc)) - /* The interface was downed while we were sleeping */ - return; - + NDIS_LOCK(sc); ndis_scan_results(sc); + NDIS_UNLOCK(sc); ieee80211_scan_done(vap); } @@ -3496,8 +3421,48 @@ ndis_scan_start(struct ieee80211com *ic) { struct ifnet *ifp = ic->ic_ifp; struct ndis_softc *sc = ifp->if_softc; + struct ieee80211vap *vap; + struct ieee80211_scan_state *ss; + ndis_80211_ssid ssid; + int error, len; + + ss = ic->ic_scan; + vap = TAILQ_FIRST(&ic->ic_vaps); + + NDIS_LOCK(sc); + if (!NDIS_INITIALIZED(sc)) { + DPRINTF(("%s: scan aborted\n", __func__)); + NDIS_UNLOCK(sc); + ieee80211_cancel_scan(vap); + return; + } - taskqueue_enqueue(sc->ndis_tq, &sc->ndis_scantask); + len = sizeof(ssid); + bzero((char *)&ssid, len); + if (ss->ss_nssid == 0) + ssid.ns_ssidlen = 1; + else { + /* Perform a directed scan */ + ssid.ns_ssidlen = ss->ss_ssid[0].len; + bcopy(ss->ss_ssid[0].ssid, ssid.ns_ssid, ssid.ns_ssidlen); + } + + error = ndis_set_info(sc, OID_802_11_SSID, &ssid, &len); + if (error) + DPRINTF(("%s: set ESSID failed\n", __func__)); + + len = 0; + error = ndis_set_info(sc, OID_802_11_BSSID_LIST_SCAN, + NULL, &len); + if (error) { + DPRINTF(("%s: scan command failed\n", __func__)); + NDIS_UNLOCK(sc); + ieee80211_cancel_scan(vap); + return; + } + NDIS_UNLOCK(sc); + /* Set a timer to collect the results */ + callout_reset(&sc->ndis_scan_callout, hz * 3, ndis_scan, sc); } static void Modified: head/sys/dev/if_ndis/if_ndisvar.h ============================================================================== --- head/sys/dev/if_ndis/if_ndisvar.h Sat May 2 12:59:47 2009 (r191745) +++ head/sys/dev/if_ndis/if_ndisvar.h Sat May 2 15:14:18 2009 (r191746) @@ -180,6 +180,7 @@ struct ndis_softc { ndis_miniport_block *ndis_block; ndis_miniport_characteristics *ndis_chars; interface_type ndis_type; + struct callout ndis_scan_callout; struct callout ndis_stat_callout; int ndis_maxpkts; ndis_oid *ndis_oids; @@ -219,10 +220,6 @@ struct ndis_softc { struct ifqueue ndis_rxqueue; kspin_lock ndis_rxlock; - struct taskqueue *ndis_tq; /* private task queue */ - struct task ndis_scantask; - struct task ndis_authtask; - struct task ndis_assoctask; int (*ndis_newstate)(struct ieee80211com *, enum ieee80211_state, int); int ndis_tx_timer; Modified: head/sys/dev/ipw/if_ipw.c ============================================================================== --- head/sys/dev/ipw/if_ipw.c Sat May 2 12:59:47 2009 (r191745) +++ head/sys/dev/ipw/if_ipw.c Sat May 2 15:14:18 2009 (r191746) @@ -118,10 +118,6 @@ static void ipw_media_status(struct ifne static int ipw_newstate(struct ieee80211vap *, enum ieee80211_state, int); static uint16_t ipw_read_prom_word(struct ipw_softc *, uint8_t); static void ipw_rx_cmd_intr(struct ipw_softc *, struct ipw_soft_buf *); -static void ipw_assocsuccess(void *, int); -static void ipw_assocfailed(void *, int); -static void ipw_scandone(void *, int); -static void ipw_bmiss(void *, int); static void ipw_rx_newstate_intr(struct ipw_softc *, struct ipw_soft_buf *); static void ipw_rx_data_intr(struct ipw_softc *, struct ipw_status *, struct ipw_soft_bd *, struct ipw_soft_buf *); @@ -147,8 +143,8 @@ static int ipw_reset(struct ipw_softc *) static int ipw_load_ucode(struct ipw_softc *, const char *, int); static int ipw_load_firmware(struct ipw_softc *, const char *, int); static int ipw_config(struct ipw_softc *); -static void ipw_assoc_task(void *, int); -static void ipw_disassoc_task(void *, int); +static void ipw_assoc(struct ieee80211com *, struct ieee80211vap *); +static void ipw_disassoc(struct ieee80211com *, struct ieee80211vap *); static void ipw_init_task(void *, int); static void ipw_init(void *); static void ipw_init_locked(struct ipw_softc *); @@ -166,7 +162,6 @@ static void ipw_read_mem_1(struct ipw_so #endif static void ipw_write_mem_1(struct ipw_softc *, bus_size_t, const uint8_t *, bus_size_t); -static void ipw_scan_task(void *, int); static int ipw_scan(struct ipw_softc *); static void ipw_scan_start(struct ieee80211com *); static void ipw_scan_end(struct ieee80211com *); @@ -239,8 +234,6 @@ ipw_attach(device_t dev) MTX_DEF | MTX_RECURSE); TASK_INIT(&sc->sc_init_task, 0, ipw_init_task, sc); - TASK_INIT(&sc->sc_scan_task, 0, ipw_scan_task, sc); - TASK_INIT(&sc->sc_bmiss_task, 0, ipw_bmiss, sc); callout_init_mtx(&sc->sc_wdtimer, &sc->sc_mtx, 0); if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) { @@ -417,9 +410,7 @@ ipw_detach(device_t dev) ieee80211_ifdetach(ic); callout_drain(&sc->sc_wdtimer); - taskqueue_drain(taskqueue_swi, &sc->sc_init_task); - taskqueue_drain(taskqueue_swi, &sc->sc_scan_task); - taskqueue_drain(taskqueue_swi, &sc->sc_bmiss_task); + ieee80211_draintask(ic, &sc->sc_init_task); ipw_release(sc); @@ -511,12 +502,6 @@ ipw_vap_create(struct ieee80211com *ic, return NULL; vap = &ivp->vap; - TASK_INIT(&ivp->assoc_task, 0, ipw_assoc_task, vap); - TASK_INIT(&ivp->disassoc_task, 0, ipw_disassoc_task, vap); - TASK_INIT(&ivp->assoc_success_task, 0, ipw_assocsuccess, vap); - TASK_INIT(&ivp->assoc_failed_task, 0, ipw_assocfailed, vap); - TASK_INIT(&ivp->scandone_task, 0, ipw_scandone, vap); - ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid, mac); /* override with driver methods */ ivp->newstate = vap->iv_newstate; @@ -894,11 +879,15 @@ ipw_newstate(struct ieee80211vap *vap, e struct ieee80211com *ic = vap->iv_ic; struct ifnet *ifp = ic->ic_ifp; struct ipw_softc *sc = ifp->if_softc; + enum ieee80211_state ostate; DPRINTF(("%s: %s -> %s flags 0x%x\n", __func__, ieee80211_state_name[vap->iv_state], ieee80211_state_name[nstate], sc->flags)); + ostate = vap->iv_state; + IEEE80211_UNLOCK(ic); + switch (nstate) { case IEEE80211_S_RUN: if (ic->ic_opmode == IEEE80211_M_IBSS) { @@ -910,39 +899,33 @@ ipw_newstate(struct ieee80211vap *vap, e * AUTH -> RUN transition and we want to do nothing. * This is all totally bogus and needs to be redone. */ - if (vap->iv_state == IEEE80211_S_SCAN) { - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->assoc_task); - return EINPROGRESS; - } + if (ostate == IEEE80211_S_SCAN) + ipw_assoc(ic, vap); } break; case IEEE80211_S_INIT: if (sc->flags & IPW_FLAG_ASSOCIATED) - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->disassoc_task); + ipw_disassoc(ic, vap); break; case IEEE80211_S_AUTH: - taskqueue_enqueue(taskqueue_swi, &IPW_VAP(vap)->assoc_task); - return EINPROGRESS; + ipw_assoc(ic, vap); + break; case IEEE80211_S_ASSOC: /* * If we are not transitioning from AUTH the resend the * association request. */ - if (vap->iv_state != IEEE80211_S_AUTH) { - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->assoc_task); - return EINPROGRESS; - } + if (ostate != IEEE80211_S_AUTH) + ipw_assoc(ic, vap); break; default: break; } + IEEE80211_LOCK(ic); return ivp->newstate(vap, nstate, arg); } @@ -1020,38 +1003,6 @@ ipw_rx_cmd_intr(struct ipw_softc *sc, st } static void -ipw_assocsuccess(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_new_state(vap, IEEE80211_S_RUN, -1); -} - -static void -ipw_assocfailed(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); -} - -static void -ipw_scandone(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_scan_done(vap); -} - -static void -ipw_bmiss(void *arg, int npending) -{ - struct ieee80211com *ic = arg; - - ieee80211_beacon_miss(ic); -} - -static void ipw_rx_newstate_intr(struct ipw_softc *sc, struct ipw_soft_buf *sbuf) { #define IEEESTATE(vap) ieee80211_state_name[vap->iv_state] @@ -1076,8 +1027,7 @@ ipw_rx_newstate_intr(struct ipw_softc *s } sc->flags &= ~IPW_FLAG_ASSOCIATING; sc->flags |= IPW_FLAG_ASSOCIATED; - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->assoc_success_task); + ieee80211_new_state(vap, IEEE80211_S_RUN, -1); break; case IPW_STATE_SCANNING: @@ -1091,7 +1041,7 @@ ipw_rx_newstate_intr(struct ipw_softc *s */ if (sc->flags & IPW_FLAG_ASSOCIATED) { /* XXX probably need to issue disassoc to fw */ - taskqueue_enqueue(taskqueue_swi, &sc->sc_bmiss_task); + ieee80211_beacon_miss(ic); } break; @@ -1110,8 +1060,7 @@ ipw_rx_newstate_intr(struct ipw_softc *s break; } if (sc->flags & IPW_FLAG_SCANNING) { - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->scandone_task); + ieee80211_scan_done(vap); sc->flags &= ~IPW_FLAG_SCANNING; sc->sc_scan_timer = 0; } @@ -1122,8 +1071,7 @@ ipw_rx_newstate_intr(struct ipw_softc *s IEEESTATE(vap), sc->flags)); sc->flags &= ~(IPW_FLAG_ASSOCIATING | IPW_FLAG_ASSOCIATED); if (vap->iv_state == IEEE80211_S_RUN) - taskqueue_enqueue(taskqueue_swi, - &IPW_VAP(vap)->assoc_failed_task); + ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); break; case IPW_STATE_DISABLED: @@ -1432,6 +1380,16 @@ ipw_tx_intr(struct ipw_softc *sc) } static void +ipw_fatal_error_intr(struct ipw_softc *sc) +{ + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + + device_printf(sc->sc_dev, "firmware error\n"); + ieee80211_runtask(ic, &sc->sc_init_task); +} + +static void ipw_intr(void *arg) { struct ipw_softc *sc = arg; @@ -1440,10 +1398,9 @@ ipw_intr(void *arg) IPW_LOCK(sc); - if ((r = CSR_READ_4(sc, IPW_CSR_INTR)) == 0 || r == 0xffffffff) { - IPW_UNLOCK(sc); - return; - } + r = CSR_READ_4(sc, IPW_CSR_INTR); + if (r == 0 || r == 0xffffffff) + goto done; /* disable interrupts */ CSR_WRITE_4(sc, IPW_CSR_INTR_MASK, 0); @@ -1452,9 +1409,8 @@ ipw_intr(void *arg) CSR_WRITE_4(sc, IPW_CSR_INTR, r); if (r & (IPW_INTR_FATAL_ERROR | IPW_INTR_PARITY_ERROR)) { - device_printf(sc->sc_dev, "firmware error\n"); - taskqueue_enqueue(taskqueue_swi, &sc->sc_init_task); - r = 0; /* don't process more interrupts */ + ipw_fatal_error_intr(sc); + goto done; } if (r & IPW_INTR_FW_INIT_DONE) @@ -1468,7 +1424,7 @@ ipw_intr(void *arg) /* re-enable interrupts */ CSR_WRITE_4(sc, IPW_CSR_INTR_MASK, IPW_INTR_MASK); - +done: IPW_UNLOCK(sc); } @@ -2181,20 +2137,6 @@ ipw_setscanopts(struct ipw_softc *sc, ui return ipw_cmd(sc, IPW_CMD_SET_SCAN_OPTIONS, &opts, sizeof(opts)); } -/* - * Handler for sc_scan_task. This is a simple wrapper around ipw_scan(). - */ -static void -ipw_scan_task(void *context, int pending) -{ - struct ipw_softc *sc = context; - IPW_LOCK_DECL; - - IPW_LOCK(sc); - ipw_scan(sc); - IPW_UNLOCK(sc); -} - static int ipw_scan(struct ipw_softc *sc) { @@ -2258,11 +2200,9 @@ ipw_setchannel(struct ipw_softc *sc, str } static void -ipw_assoc_task(void *context, int pending) +ipw_assoc(struct ieee80211com *ic, struct ieee80211vap *vap) { - struct ieee80211vap *vap = context; struct ifnet *ifp = vap->iv_ic->ic_ifp; - struct ieee80211com *ic = ifp->if_l2com; struct ipw_softc *sc = ifp->if_softc; struct ieee80211_node *ni = vap->iv_bss; struct ipw_security security; @@ -2353,9 +2293,8 @@ done: } static void -ipw_disassoc_task(void *context, int pending) +ipw_disassoc(struct ieee80211com *ic, struct ieee80211vap *vap) { - struct ieee80211vap *vap = context; struct ifnet *ifp = vap->iv_ic->ic_ifp; struct ieee80211_node *ni = vap->iv_bss; struct ipw_softc *sc = ifp->if_softc; @@ -2729,8 +2668,7 @@ ipw_scan_start(struct ieee80211com *ic) IPW_LOCK_DECL; IPW_LOCK(sc); - if (!(sc->flags & IPW_FLAG_SCANNING)) - taskqueue_enqueue(taskqueue_swi, &sc->sc_scan_task); + ipw_scan(sc); IPW_UNLOCK(sc); } Modified: head/sys/dev/ipw/if_ipwvar.h ============================================================================== --- head/sys/dev/ipw/if_ipwvar.h Sat May 2 12:59:47 2009 (r191745) +++ head/sys/dev/ipw/if_ipwvar.h Sat May 2 15:14:18 2009 (r191746) @@ -78,11 +78,6 @@ struct ipw_tx_radiotap_header { struct ipw_vap { struct ieee80211vap vap; - struct task assoc_task; - struct task disassoc_task; - struct task assoc_success_task; - struct task assoc_failed_task; - struct task scandone_task; int (*newstate)(struct ieee80211vap *, enum ieee80211_state, int); @@ -95,9 +90,6 @@ struct ipw_softc { struct mtx sc_mtx; struct task sc_init_task; - struct task sc_scan_task; - struct task sc_chan_task; - struct task sc_bmiss_task; struct callout sc_wdtimer; /* watchdog timer */ uint32_t flags; Modified: head/sys/dev/iwi/if_iwi.c ============================================================================== --- head/sys/dev/iwi/if_iwi.c Sat May 2 12:59:47 2009 (r191745) +++ head/sys/dev/iwi/if_iwi.c Sat May 2 15:14:18 2009 (r191746) @@ -158,9 +158,6 @@ static int iwi_wme_update(struct ieee802 static uint16_t iwi_read_prom_word(struct iwi_softc *, uint8_t); static void iwi_frame_intr(struct iwi_softc *, struct iwi_rx_data *, int, struct iwi_frame *); -static void iwi_authsuccess(void *, int); -static void iwi_assocsuccess(void *, int); -static void iwi_assocfailed(void *, int); static void iwi_notification_intr(struct iwi_softc *, struct iwi_notif *); static void iwi_rx_intr(struct iwi_softc *); static void iwi_tx_intr(struct iwi_softc *, struct iwi_tx_ring *); @@ -186,16 +183,11 @@ static void iwi_put_firmware(struct iwi_ static int iwi_scanchan(struct iwi_softc *, unsigned long, int); static void iwi_scan_start(struct ieee80211com *); static void iwi_scan_end(struct ieee80211com *); -static void iwi_scanabort(void *, int); static void iwi_set_channel(struct ieee80211com *); static void iwi_scan_curchan(struct ieee80211_scan_state *, unsigned long maxdwell); -#if 0 -static void iwi_scan_allchan(struct ieee80211com *, unsigned long maxdwell); -#endif static void iwi_scan_mindwell(struct ieee80211_scan_state *); -static void iwi_ops(void *, int); -static int iwi_queue_cmd(struct iwi_softc *, int, unsigned long); static int iwi_auth_and_assoc(struct iwi_softc *, struct ieee80211vap *); +static void iwi_disassoc(void *, int); static int iwi_disassociate(struct iwi_softc *, int quiet); static void iwi_init_locked(struct iwi_softc *); static void iwi_init(void *); @@ -292,24 +284,14 @@ iwi_attach(device_t dev) ic = ifp->if_l2com; IWI_LOCK_INIT(sc); - IWI_CMD_LOCK_INIT(sc); sc->sc_unr = new_unrhdr(1, IWI_MAX_IBSSNODE-1, &sc->sc_mtx); - sc->sc_tq = taskqueue_create("iwi_taskq", M_NOWAIT | M_ZERO, - taskqueue_thread_enqueue, &sc->sc_tq); - taskqueue_start_threads(&sc->sc_tq, 1, PI_NET, "%s taskq", - device_get_nameunit(dev)); - sc->sc_tq2 = taskqueue_create("iwi_taskq2", M_NOWAIT | M_ZERO, - taskqueue_thread_enqueue, &sc->sc_tq2); - taskqueue_start_threads(&sc->sc_tq2, 1, PI_NET, "%s taskq2", - device_get_nameunit(dev)); - TASK_INIT(&sc->sc_radiontask, 0, iwi_radio_on, sc); TASK_INIT(&sc->sc_radiofftask, 0, iwi_radio_off, sc); TASK_INIT(&sc->sc_restarttask, 0, iwi_restart, sc); - TASK_INIT(&sc->sc_opstask, 0, iwi_ops, sc); - TASK_INIT(&sc->sc_scanaborttask, 0, iwi_scanabort, sc); + TASK_INIT(&sc->sc_disassoctask, 0, iwi_disassoc, sc); + callout_init_mtx(&sc->sc_wdtimer, &sc->sc_mtx, 0); callout_init_mtx(&sc->sc_rftimer, &sc->sc_mtx, 0); @@ -483,8 +465,10 @@ iwi_detach(device_t dev) ieee80211_ifdetach(ic); /* NB: do early to drain any pending tasks */ - taskqueue_free(sc->sc_tq); - taskqueue_free(sc->sc_tq2); + ieee80211_draintask(ic, &sc->sc_radiontask); + ieee80211_draintask(ic, &sc->sc_radiofftask); + ieee80211_draintask(ic, &sc->sc_restarttask); + ieee80211_draintask(ic, &sc->sc_disassoctask); iwi_put_firmware(sc); iwi_release_fw_dma(sc); @@ -504,7 +488,6 @@ iwi_detach(device_t dev) delete_unrhdr(sc->sc_unr); IWI_LOCK_DESTROY(sc); - IWI_CMD_LOCK_DESTROY(sc); if_free(ifp); @@ -552,10 +535,6 @@ iwi_vap_create(struct ieee80211com *ic, ivp->iwi_newstate = vap->iv_newstate; vap->iv_newstate = iwi_newstate; - TASK_INIT(&ivp->iwi_authsuccess_task, 0, iwi_authsuccess, vap); - TASK_INIT(&ivp->iwi_assocsuccess_task, 0, iwi_assocsuccess, vap); - TASK_INIT(&ivp->iwi_assocfailed_task, 0, iwi_assocfailed, vap); - /* complete setup */ ieee80211_vap_attach(vap, ieee80211_media_change, iwi_media_status); ic->ic_opmode = opmode; @@ -987,21 +966,21 @@ iwi_newstate(struct ieee80211vap *vap, e ieee80211_state_name[vap->iv_state], ieee80211_state_name[nstate], sc->flags)); + IEEE80211_UNLOCK(ic); + IWI_LOCK(sc); switch (nstate) { case IEEE80211_S_INIT: - IWI_LOCK(sc); /* * NB: don't try to do this if iwi_stop_master has * shutdown the firmware and disabled interrupts. */ if (vap->iv_state == IEEE80211_S_RUN && (sc->flags & IWI_FLAG_FW_INITED)) - iwi_queue_cmd(sc, IWI_DISASSOC, 1); - IWI_UNLOCK(sc); + iwi_disassociate(sc, 0); break; case IEEE80211_S_AUTH: - iwi_queue_cmd(sc, IWI_AUTH, arg); - return EINPROGRESS; + iwi_auth_and_assoc(sc, vap); + break; case IEEE80211_S_RUN: if (vap->iv_opmode == IEEE80211_M_IBSS && vap->iv_state == IEEE80211_S_SCAN) { @@ -1013,8 +992,7 @@ iwi_newstate(struct ieee80211vap *vap, e * AUTH -> RUN transition and we want to do nothing. * This is all totally bogus and needs to be redone. */ - iwi_queue_cmd(sc, IWI_ASSOC, 0); - return EINPROGRESS; + iwi_auth_and_assoc(sc, vap); } break; case IEEE80211_S_ASSOC: @@ -1025,11 +1003,13 @@ iwi_newstate(struct ieee80211vap *vap, e */ if (vap->iv_state == IEEE80211_S_AUTH) break; - iwi_queue_cmd(sc, IWI_ASSOC, arg); - return EINPROGRESS; + iwi_auth_and_assoc(sc, vap); + break; default: break; } + IWI_UNLOCK(sc); + IEEE80211_LOCK(ic); return ivp->iwi_newstate(vap, nstate, arg); } @@ -1106,6 +1086,7 @@ static int iwi_wme_update(struct ieee80211com *ic) { struct iwi_softc *sc = ic->ic_ifp->if_softc; + struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); /* * We may be called to update the WME parameters in @@ -1115,7 +1096,9 @@ iwi_wme_update(struct ieee80211com *ic) * will get sent down to the adapter as part of the * work iwi_auth_and_assoc does. */ - return iwi_queue_cmd(sc, IWI_SET_WME, 0); + if (vap->iv_state == IEEE80211_S_RUN) + (void) iwi_wme_setparams(sc, ic); + return (0); } static int @@ -1389,30 +1372,6 @@ iwi_checkforqos(struct ieee80211vap *vap */ static void -iwi_authsuccess(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_new_state(vap, IEEE80211_S_ASSOC, -1); -} - -static void -iwi_assocsuccess(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_new_state(vap, IEEE80211_S_RUN, -1); -} - -static void -iwi_assocfailed(void *arg, int npending) -{ - struct ieee80211vap *vap = arg; - - ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); -} - -static void iwi_notification_intr(struct iwi_softc *sc, struct iwi_notif *notif) { struct ifnet *ifp = sc->sc_ifp; @@ -1454,8 +1413,7 @@ iwi_notification_intr(struct iwi_softc * switch (auth->state) { case IWI_AUTH_SUCCESS: DPRINTFN(2, ("Authentication succeeeded\n")); - taskqueue_enqueue(taskqueue_swi, - &IWI_VAP(vap)->iwi_authsuccess_task); + ieee80211_new_state(vap, IEEE80211_S_ASSOC, -1); break; case IWI_AUTH_FAIL: /* @@ -1472,8 +1430,7 @@ iwi_notification_intr(struct iwi_softc * DPRINTFN(2, ("Deauthenticated\n")); vap->iv_stats.is_rx_deauth++; } - taskqueue_enqueue(taskqueue_swi, - &IWI_VAP(vap)->iwi_assocfailed_task); + ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); break; case IWI_AUTH_SENT_1: case IWI_AUTH_RECV_2: @@ -1506,8 +1463,7 @@ iwi_notification_intr(struct iwi_softc * iwi_checkforqos(vap, (const struct ieee80211_frame *)(assoc+1), le16toh(notif->len) - sizeof(*assoc)); - taskqueue_enqueue(taskqueue_swi, - &IWI_VAP(vap)->iwi_assocsuccess_task); + ieee80211_new_state(vap, IEEE80211_S_RUN, -1); break; case IWI_ASSOC_INIT: sc->flags &= ~IWI_FLAG_ASSOCIATED; @@ -1515,16 +1471,14 @@ iwi_notification_intr(struct iwi_softc * case IWI_FW_ASSOCIATING: DPRINTFN(2, ("Association failed\n")); IWI_STATE_END(sc, IWI_FW_ASSOCIATING); - taskqueue_enqueue(taskqueue_swi, - &IWI_VAP(vap)->iwi_assocfailed_task); + ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); break; case IWI_FW_DISASSOCIATING: DPRINTFN(2, ("Dissassociated\n")); IWI_STATE_END(sc, IWI_FW_DISASSOCIATING); vap->iv_stats.is_rx_disassoc++; - taskqueue_enqueue(taskqueue_swi, - &IWI_VAP(vap)->iwi_assocfailed_task); + ieee80211_new_state(vap, IEEE80211_S_SCAN, -1); break; } break; @@ -1563,7 +1517,7 @@ iwi_notification_intr(struct iwi_softc * * to disassociate and then on completion we'll * kick the state machine to scan. */ - iwi_queue_cmd(sc, IWI_DISASSOC, 1); + ieee80211_runtask(ic, &sc->sc_disassoctask); } } break; @@ -1664,6 +1618,29 @@ iwi_tx_intr(struct iwi_softc *sc, struct } static void +iwi_fatal_error_intr(struct iwi_softc *sc) +{ + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + + device_printf(sc->sc_dev, "firmware error\n"); + ieee80211_runtask(ic, &sc->sc_restarttask); + + sc->flags &= ~IWI_FLAG_BUSY; + sc->sc_busy_timer = 0; + wakeup(sc); +} + +static void +iwi_radio_off_intr(struct iwi_softc *sc) +{ + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + + ieee80211_runtask(ic, &sc->sc_radiofftask); +} + +static void iwi_intr(void *arg) { struct iwi_softc *sc = arg; @@ -1681,12 +1658,8 @@ iwi_intr(void *arg) CSR_WRITE_4(sc, IWI_CSR_INTR, r); if (r & IWI_INTR_FATAL_ERROR) { - device_printf(sc->sc_dev, "firmware error\n"); - taskqueue_enqueue(sc->sc_tq2, &sc->sc_restarttask); - - sc->flags &= ~IWI_FLAG_BUSY; - sc->sc_busy_timer = 0; - wakeup(sc); + iwi_fatal_error_intr(sc); + goto done; } if (r & IWI_INTR_FW_INITED) { @@ -1695,7 +1668,7 @@ iwi_intr(void *arg) } if (r & IWI_INTR_RADIO_OFF) - taskqueue_enqueue(sc->sc_tq, &sc->sc_radiofftask); + iwi_radio_off_intr(sc); if (r & IWI_INTR_CMD_DONE) { sc->flags &= ~IWI_FLAG_BUSY; @@ -1722,7 +1695,7 @@ iwi_intr(void *arg) /* XXX rate-limit */ device_printf(sc->sc_dev, "parity error\n"); } - +done: IWI_UNLOCK(sc); } @@ -2008,6 +1981,7 @@ iwi_watchdog(void *arg) { struct iwi_softc *sc = arg; struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; IWI_LOCK_ASSERT(sc); @@ -2015,25 +1989,25 @@ iwi_watchdog(void *arg) if (--sc->sc_tx_timer == 0) { if_printf(ifp, "device timeout\n"); ifp->if_oerrors++; - taskqueue_enqueue(sc->sc_tq2, &sc->sc_restarttask); + ieee80211_runtask(ic, &sc->sc_restarttask); } } if (sc->sc_state_timer > 0) { if (--sc->sc_state_timer == 0) { if_printf(ifp, "firmware stuck in state %d, resetting\n", sc->fw_state); - taskqueue_enqueue(sc->sc_tq2, &sc->sc_restarttask); if (sc->fw_state == IWI_FW_SCANNING) { struct ieee80211com *ic = ifp->if_l2com; ieee80211_cancel_scan(TAILQ_FIRST(&ic->ic_vaps)); } + ieee80211_runtask(ic, &sc->sc_restarttask); sc->sc_state_timer = 3; } } if (sc->sc_busy_timer > 0) { if (--sc->sc_busy_timer == 0) { if_printf(ifp, "firmware command timeout, resetting\n"); - taskqueue_enqueue(sc->sc_tq2, &sc->sc_restarttask); + ieee80211_runtask(ic, &sc->sc_restarttask); } } callout_reset(&sc->sc_wdtimer, hz, iwi_watchdog, sc); @@ -2665,7 +2639,7 @@ scan_band(const struct ieee80211_channel * Start a scan on the current channel or all channels. */ static int -iwi_scanchan(struct iwi_softc *sc, unsigned long maxdwell, int mode) +iwi_scanchan(struct iwi_softc *sc, unsigned long maxdwell, int allchan) { struct ieee80211com *ic; struct ieee80211_channel *chan; @@ -2712,7 +2686,7 @@ iwi_scanchan(struct iwi_softc *sc, unsig return (error); } - if (mode == IWI_SCAN_ALLCHAN) { + if (allchan) { int i, next, band, b, bstart; /* * Convert scan list to run-length encoded channel list @@ -2781,20 +2755,6 @@ iwi_scanchan(struct iwi_softc *sc, unsig return (iwi_cmd(sc, IWI_CMD_SCAN_EXT, &scan, sizeof scan)); } -static void -iwi_scanabort(void *arg, int npending) -{ - struct iwi_softc *sc = arg; - IWI_LOCK_DECL; - - IWI_LOCK(sc); - sc->flags &= ~IWI_FLAG_CHANNEL_SCAN; - /* NB: make sure we're still scanning */ - if (sc->fw_state == IWI_FW_SCANNING) - iwi_cmd(sc, IWI_CMD_ABORT_SCAN, NULL, 0); - IWI_UNLOCK(sc); -} - static int iwi_set_sensitivity(struct iwi_softc *sc, int8_t rssi_dbm) { @@ -2986,6 +2946,17 @@ done: return (error); } +static void +iwi_disassoc(void *arg, int pending) +{ + struct iwi_softc *sc = arg; + IWI_LOCK_DECL; + + IWI_LOCK(sc); + iwi_disassociate(sc, 0); + IWI_UNLOCK(sc); +} + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From hrs at FreeBSD.org Sat May 2 16:23:46 2009 From: hrs at FreeBSD.org (Hiroki Sato) Date: Sat May 2 16:23:58 2009 Subject: svn commit: r191748 - in stable/7/release/doc: en_US.ISO8859-1/errata en_US.ISO8859-1/relnotes share/sgml Message-ID: <200905021623.n42GNjvR089580@svn.freebsd.org> Author: hrs Date: Sat May 2 16:23:44 2009 New Revision: 191748 URL: http://svn.freebsd.org/changeset/base/191748 Log: - Update Errata for 7.2R: disc1 booting problem on some motherboards. - Update &release.*; - Fix a typo. Approved by: re (implicit) Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml stable/7/release/doc/en_US.ISO8859-1/relnotes/article.sgml stable/7/release/doc/share/sgml/release.ent Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml ============================================================================== --- stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Sat May 2 15:37:46 2009 (r191747) +++ stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Sat May 2 16:23:44 2009 (r191748) @@ -16,7 +16,7 @@ %release; - + ]>
@@ -163,191 +163,15 @@ Open Issues - [20090105] As in the Announcement of 7.1-RELEASE, certain Intel NICs - will come up as &man.igb.4; instead of &man.em.4; in this - release. There are only 3 PCI ID's that should have - their name changed from &man.em.4; to &man.igb.4;: - - - - 0x10A78086 - - - - 0x10A98086 - - - - 0x10D68086 - - - - You should be able to determine if your card will - change names by running the following command: - - &prompt.user; pciconf -l -. . . -em0@pci0:0:25:0: class=0x020000 card=0x02381028 chip=0x10c08086 rev=0x02 hdr=0x00 - - and for the line representing your NIC (should be named - em on older systems, - e.g. em0 or em1, etc) - check the fourth column. If that says - chip=0x10a78086 (or one of the other two IDs - given above) you will have the adapter's name change. - + [20090501] Some machines do not recognize the i386 disc1 as + bootable and fall through to booting off the next boot device. + All affected machines did see the other discs as bootable. As a + workaround, you can boot using the bootonly or livefs CDROM and + then swap in disc1 once sysinstall starts. Late-Breaking News and Corrections - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned that the &man.procstat.1; utility has been added. - This is a process inspection utility which provides both some of - the missing functionality from &man.procfs.5; and new - functionality for monitoring and debugging specific - processes. - - [20090105] The Release Notes for 7.1-RELEASE should have mentioned - changes that the &man.ae.4; driver has been added to provide support - for the Attansic/Atheros L2 FastEthernet controllers. - This driver is not enabled in GENERIC - kernels for this release. - - [20090105] The Release Notes for 7.1-RELEASE included the - following misdescriptions: - - - - In the entry of &man.linux.4; ABI support, - get_setaffinity() should have been - sched_setaffinity(). - - - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the &man.jme.4; driver has been added to - provide support for PCIe adapters based on JMicron JMC250 - gigabit Ethernet and JMC260 fast Ethernet controllers. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the &man.age.4; driver has been added to - provide support for Attansic/Atheros L1 gigabit Ethernet - controller. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the &man.malo.4; driver has been added to - provide support for Marvell Libertas 88W8335 based PCI network - adapters. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the bm(4) driver has been added to - provide support for Apple Big Mac (BMAC) Ethernet controller, - found on various Apple G3 models. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the et(4) driver has been added to - provide support for Agere ET1310 10/100/Gigabit Ethernet - controller. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned changes that the &man.glxsb.4; driver has been added - to provide support for the Security Block in AMD Geode LX - processors. - - [20090105] The Release Notes for 7.1-RELEASE should have - mentioned that &os; now supports multiple routing tables. To - enable this, the following steps are needed: - - - - Add the following kernel configuration option and - rebuild the kernel. The 2 is the number - of FIB (Forward Information Base, synonym for a routing - table here). The maximum value is 16. - - options ROUTETABLES=2 - - The procedure for rebuilding the &os; kernel is - described in the &os; - Handbook. - - This number can be modified on boot time. To do so, add - the following to /boot/loader.conf and - reboot the system: - - net.fibs=6 - - - - Set a loader tunable net.my_fibnum if - needed. This means the default number of routing tables. - If not specified, 0 will be used. - - - - Set a loader tunable - net.add_addr_allfibs if needed. This - enables to add routes to all FIBs for new interfaces by - default. When this is set to 0, it will - only allocate routes on interface changes for the FIB of the - caller when adding a new set of addresses to an interface. - Note that this tunable is set to 1 by - default. - - - - To select one of the FIBs, the new &man.setfib.1; utility - can be used. This set an associated FIB with the process. For - example: - - &prompt.root; setfib -3 ping target.example.com - - The FIB #3 will be used for the &man.ping.8; command. - - The FIB which the packet will be associated with will be - determined in the following rules: - - - - All packets which have a FIB associated with them will - use the FIB. If not, FIB #0 will be used. - - - - A packet received on an interface for forwarding uses - FIB #0. - - - - A TCP listen socket associated with an FIB will generate - accept sockets which are associated with the same FIB. - - - - A packet generated in response to other packet uses the - FIB associated with the packet being responded to. - - - - A packet generated on tunnel interfaces such as - &man.gif.4; and &man.tun.4; will be encapsulated using the - FIB of the process which set up the tunnel. - - - - Routing messages will be associated with the process's - FIB. - - - - Also, the &man.ipfw.8; now supports an action rule - setfib. The following action: - - setfib fibnum - - will make the matched packet use the FIB specified in - fibnum. The rule processing - continues at the next rule. + No news.
Modified: stable/7/release/doc/en_US.ISO8859-1/relnotes/article.sgml ============================================================================== --- stable/7/release/doc/en_US.ISO8859-1/relnotes/article.sgml Sat May 2 15:37:46 2009 (r191747) +++ stable/7/release/doc/en_US.ISO8859-1/relnotes/article.sgml Sat May 2 16:23:44 2009 (r191748) @@ -226,7 +226,7 @@ will update unmodified userland utilities, as well as unmodified GENERIC or SMP kernels distributed as a part of an official &os; release. The &man.freebsd-update.8; utility requires that the - host being upgraded have Internet connectivity. + host being upgraded has Internet connectivity. An older form of binary upgrade is supported through the Upgrade option from the main Modified: stable/7/release/doc/share/sgml/release.ent ============================================================================== --- stable/7/release/doc/share/sgml/release.ent Sat May 2 15:37:46 2009 (r191747) +++ stable/7/release/doc/share/sgml/release.ent Sat May 2 16:23:44 2009 (r191748) @@ -6,12 +6,12 @@ - + - + - + @@ -39,7 +39,7 @@ - + From marius at FreeBSD.org Sat May 2 18:06:16 2009 From: marius at FreeBSD.org (Marius Strobl) Date: Sat May 2 18:06:32 2009 Subject: svn commit: r191749 - in stable/6/sys: . contrib/pf dev/cxgb dev/dcons Message-ID: <200905021806.n42I6Fmh091535@svn.freebsd.org> Author: marius Date: Sat May 2 18:06:15 2009 New Revision: 191749 URL: http://svn.freebsd.org/changeset/base/191749 Log: MFC: r190756 Fix logic in MOD_LOAD handler to call dcons_attach after all successful dcons_drv_init invocations. Testing return value for 0 does not work for cases where dcons_drv_init was called already as part of low level console initialization. Modified: stable/6/sys/ (props changed) stable/6/sys/contrib/pf/ (props changed) stable/6/sys/dev/cxgb/ (props changed) stable/6/sys/dev/dcons/dcons_os.c Modified: stable/6/sys/dev/dcons/dcons_os.c ============================================================================== --- stable/6/sys/dev/dcons/dcons_os.c Sat May 2 16:23:44 2009 (r191748) +++ stable/6/sys/dev/dcons/dcons_os.c Sat May 2 18:06:15 2009 (r191749) @@ -674,8 +674,9 @@ dcons_modevent(module_t mode, int type, case MOD_LOAD: ret = dcons_drv_init(1); #if __FreeBSD_version >= 500000 - if (ret == 0) { + if (ret != -1) dcons_attach(); + if (ret == 0) { dcons_cnprobe(&dcons_consdev); dcons_cninit(&dcons_consdev); cnadd(&dcons_consdev); From sam at FreeBSD.org Sat May 2 20:16:56 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Sat May 2 20:17:09 2009 Subject: svn commit: r191753 - in head/sys: dev/ath net80211 Message-ID: <200905022016.n42KGtkM094138@svn.freebsd.org> Author: sam Date: Sat May 2 20:16:55 2009 New Revision: 191753 URL: http://svn.freebsd.org/changeset/base/191753 Log: make superg/fast-frames state dynamically-allocated (and indirect off the com structure instead of embedded); this reduces the overhead when not configured and reduces visibility of the contents Modified: head/sys/dev/ath/if_ath.c head/sys/net80211/ieee80211_superg.c head/sys/net80211/ieee80211_superg.h head/sys/net80211/ieee80211_var.h Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Sat May 2 20:13:37 2009 (r191752) +++ head/sys/dev/ath/if_ath.c Sat May 2 20:16:55 2009 (r191753) @@ -3995,12 +3995,7 @@ rx_next: if ((ifp->if_drv_flags & IFF_DRV_OACTIVE) == 0) { #ifdef IEEE80211_SUPPORT_SUPERG - if (ic->ic_stageqdepth) { - ieee80211_age_stageq(ic, WME_AC_VO, 100); - ieee80211_age_stageq(ic, WME_AC_VI, 100); - ieee80211_age_stageq(ic, WME_AC_BE, 100); - ieee80211_age_stageq(ic, WME_AC_BK, 100); - } + ieee80211_ff_age_all(ic, 100); #endif if (!IFQ_IS_EMPTY(&ifp->if_snd)) ath_start(ifp); @@ -4980,7 +4975,7 @@ ath_tx_processq(struct ath_softc *sc, st * Flush fast-frame staging queue when traffic slows. */ if (txq->axq_depth <= 1) - ieee80211_flush_stageq(ic, txq->axq_ac); + ieee80211_ff_flush(ic, txq->axq_ac); #endif return nacked; } Modified: head/sys/net80211/ieee80211_superg.c ============================================================================== --- head/sys/net80211/ieee80211_superg.c Sat May 2 20:13:37 2009 (r191752) +++ head/sys/net80211/ieee80211_superg.c Sat May 2 20:16:55 2009 (r191753) @@ -90,17 +90,38 @@ int ieee80211_ffagemax = -1; /* max time void ieee80211_superg_attach(struct ieee80211com *ic) { + struct ieee80211_superg *sg; + + if (ic->ic_caps & IEEE80211_C_FF) { + sg = (struct ieee80211_superg *) malloc( + sizeof(struct ieee80211_superg), M_80211_VAP, + M_NOWAIT | M_ZERO); + if (sg == NULL) { + printf("%s: cannot allocate SuperG state block\n", + __func__); + return; + } + ic->ic_superg = sg; + } ieee80211_ffagemax = msecs_to_ticks(150); } void ieee80211_superg_detach(struct ieee80211com *ic) { + if (ic->ic_superg != NULL) { + free(ic->ic_superg, M_80211_VAP); + ic->ic_superg = NULL; + } } void ieee80211_superg_vattach(struct ieee80211vap *vap) { + struct ieee80211com *ic = vap->iv_ic; + + if (ic->ic_superg == NULL) /* NB: can't do fast-frames w/o state */ + vap->iv_caps &= ~IEEE80211_C_FF; if (vap->iv_caps & IEEE80211_C_FF) vap->iv_flags |= IEEE80211_F_FF; /* NB: we only implement sta mode */ @@ -527,8 +548,10 @@ ff_flush(struct mbuf *head, struct mbuf * Age frames on the staging queue. */ void -ieee80211_ff_age(struct ieee80211com *ic, struct ieee80211_stageq *sq, int quanta) +ieee80211_ff_age(struct ieee80211com *ic, struct ieee80211_stageq *sq, + int quanta) { + struct ieee80211_superg *sg = ic->ic_superg; struct mbuf *m, *head; struct ieee80211_node *ni; struct ieee80211_tx_ampdu *tap; @@ -546,7 +569,7 @@ ieee80211_ff_age(struct ieee80211com *ic sq->head = m->m_nextpkt; sq->depth--; - ic->ic_stageqdepth--; + sg->ff_stageqdepth--; } if (m == NULL) sq->tail = NULL; @@ -631,6 +654,7 @@ ieee80211_ff_check(struct ieee80211_node { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_superg *sg = ic->ic_superg; const int pri = M_WME_GETAC(m); struct ieee80211_stageq *sq; struct ieee80211_tx_ampdu *tap; @@ -669,7 +693,7 @@ ieee80211_ff_check(struct ieee80211_node IEEE80211_UNLOCK(ic); return m; } - sq = &ic->ic_ff_stageq[pri]; + sq = &sg->ff_stageq[pri]; /* * Check the txop limit to insure the aggregate fits. */ @@ -730,7 +754,7 @@ ieee80211_ff_check(struct ieee80211_node tap->txa_private = m; stageq_add(sq, m); - ic->ic_stageqdepth++; + sg->ff_stageqdepth++; IEEE80211_UNLOCK(ic); IEEE80211_NOTE(vap, IEEE80211_MSG_SUPERG, ni, @@ -755,6 +779,7 @@ void ieee80211_ff_node_cleanup(struct ieee80211_node *ni) { struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_superg *sg = ic->ic_superg; struct ieee80211_tx_ampdu *tap; struct mbuf *m, *head; int ac; @@ -766,7 +791,7 @@ ieee80211_ff_node_cleanup(struct ieee802 m = tap->txa_private; if (m != NULL) { tap->txa_private = NULL; - stageq_remove(&ic->ic_ff_stageq[ac], m); + stageq_remove(&sg->ff_stageq[ac], m); m->m_nextpkt = head; head = m; } Modified: head/sys/net80211/ieee80211_superg.h ============================================================================== --- head/sys/net80211/ieee80211_superg.h Sat May 2 20:13:37 2009 (r191752) +++ head/sys/net80211/ieee80211_superg.h Sat May 2 20:16:55 2009 (r191753) @@ -57,6 +57,18 @@ struct ieee80211_ath_ie { #define ATH_OUI_SUBTYPE 0x01 #ifdef _KERNEL +struct ieee80211_stageq { + struct mbuf *head; /* frames linked w/ m_nextpkt */ + struct mbuf *tail; /* last frame in queue */ + int depth; /* # items on head */ +}; + +struct ieee80211_superg { + /* fast-frames staging q */ + struct ieee80211_stageq ff_stageq[WME_NUM_AC]; + int ff_stageqdepth; /* cumulative depth */ +}; + void ieee80211_superg_attach(struct ieee80211com *); void ieee80211_superg_detach(struct ieee80211com *); void ieee80211_superg_vattach(struct ieee80211vap *); @@ -72,20 +84,33 @@ void ieee80211_ff_node_init(struct ieee8 void ieee80211_ff_node_cleanup(struct ieee80211_node *); struct mbuf *ieee80211_ff_check(struct ieee80211_node *, struct mbuf *); -void ieee80211_ff_age(struct ieee80211com *, struct ieee80211_stageq *, int); +void ieee80211_ff_age(struct ieee80211com *, struct ieee80211_stageq *, + int quanta); static __inline void -ieee80211_flush_stageq(struct ieee80211com *ic, int ac) +ieee80211_ff_flush(struct ieee80211com *ic, int ac) { - if (ic->ic_ff_stageq[ac].depth) - ieee80211_ff_age(ic, &ic->ic_ff_stageq[ac], 0x7fffffff); + struct ieee80211_superg *sg = ic->ic_superg; + + if (sg != NULL && sg->ff_stageq[ac].depth) + ieee80211_ff_age(ic, &sg->ff_stageq[ac], 0x7fffffff); } static __inline void -ieee80211_age_stageq(struct ieee80211com *ic, int ac, int quanta) +ieee80211_ff_age_all(struct ieee80211com *ic, int quanta) { - if (ic->ic_ff_stageq[ac].depth) - ieee80211_ff_age(ic, &ic->ic_ff_stageq[ac], quanta); + struct ieee80211_superg *sg = ic->ic_superg; + + if (sg != NULL && sg->ff_stageqdepth) { + if (sg->ff_stageq[WME_AC_VO].depth) + ieee80211_ff_age(ic, &sg->ff_stageq[WME_AC_VO], quanta); + if (sg->ff_stageq[WME_AC_VI].depth) + ieee80211_ff_age(ic, &sg->ff_stageq[WME_AC_VI], quanta); + if (sg->ff_stageq[WME_AC_BE].depth) + ieee80211_ff_age(ic, &sg->ff_stageq[WME_AC_BE], quanta); + if (sg->ff_stageq[WME_AC_BK].depth) + ieee80211_ff_age(ic, &sg->ff_stageq[WME_AC_BK], quanta); + } } struct mbuf *ieee80211_ff_encap(struct ieee80211vap *, struct mbuf *, Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Sat May 2 20:13:37 2009 (r191752) +++ head/sys/net80211/ieee80211_var.h Sat May 2 20:16:55 2009 (r191753) @@ -110,12 +110,7 @@ struct ieee80211_tdma_param; struct ieee80211_rate_table; struct ieee80211_tx_ampdu; struct ieee80211_rx_ampdu; - -struct ieee80211_stageq { - struct mbuf *head; /* frames linked w/ m_nextpkt */ - struct mbuf *tail; /* last frame in queue */ - int depth; /* # items on head */ -}; +struct ieee80211_superg; struct ieee80211com { struct ifnet *ic_ifp; /* associated device */ @@ -211,9 +206,8 @@ struct ieee80211com { int ic_lastnonerp; /* last time non-ERP sta noted*/ int ic_lastnonht; /* last time non-HT sta noted */ - /* fast-frames staging q */ - struct ieee80211_stageq ic_ff_stageq[WME_NUM_AC]; - int ic_stageqdepth; /* cumulative depth */ + /* optional state for Atheros SuperG protocol extensions */ + struct ieee80211_superg *ic_superg; /* virtual ap create/delete */ struct ieee80211vap* (*ic_vap_create)(struct ieee80211com *, From sam at FreeBSD.org Sat May 2 20:18:19 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Sat May 2 20:18:31 2009 Subject: svn commit: r191754 - head/sys/net80211 Message-ID: <200905022018.n42KIIJM094213@svn.freebsd.org> Author: sam Date: Sat May 2 20:18:18 2009 New Revision: 191754 URL: http://svn.freebsd.org/changeset/base/191754 Log: whitespace Modified: head/sys/net80211/ieee80211_adhoc.c Modified: head/sys/net80211/ieee80211_adhoc.c ============================================================================== --- head/sys/net80211/ieee80211_adhoc.c Sat May 2 20:16:55 2009 (r191753) +++ head/sys/net80211/ieee80211_adhoc.c Sat May 2 20:18:18 2009 (r191754) @@ -648,6 +648,7 @@ adhoc_input(struct ieee80211_node *ni, s IEEE80211_NODE_STAT(ni, rx_ctrl); vap->iv_recv_ctl(ni, m, subtype); goto out; + default: IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, wh, "bad", "frame type 0x%x", type); From sam at FreeBSD.org Sat May 2 20:21:22 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Sat May 2 20:21:31 2009 Subject: svn commit: r191755 - head/sys/net80211 Message-ID: <200905022021.n42KLLc1094310@svn.freebsd.org> Author: sam Date: Sat May 2 20:21:21 2009 New Revision: 191755 URL: http://svn.freebsd.org/changeset/base/191755 Log: o dump tx/rx seq#'s for qos tid's o improve check for when to dump rx ampdu state Modified: head/sys/net80211/ieee80211_ddb.c Modified: head/sys/net80211/ieee80211_ddb.c ============================================================================== --- head/sys/net80211/ieee80211_ddb.c Sat May 2 20:18:18 2009 (r191754) +++ head/sys/net80211/ieee80211_ddb.c Sat May 2 20:21:21 2009 (r191755) @@ -238,6 +238,15 @@ _db_show_sta(const struct ieee80211_node ni->ni_ies.ath_ie); db_printf("\t htcap_ie %p htinfo_ie %p]\n", ni->ni_ies.htcap_ie, ni->ni_ies.htinfo_ie); + if (ni->ni_flags & IEEE80211_NODE_QOS) { + for (i = 0; i < WME_NUM_TID; i++) { + if (ni->ni_txseqs[i] || ni->ni_rxseqs[i]) + db_printf("\t[%u] txseq %u rxseq %u fragno %u\n", + i, ni->ni_txseqs[i], + ni->ni_rxseqs[i] >> IEEE80211_SEQ_SEQ_SHIFT, + ni->ni_rxseqs[i] & IEEE80211_SEQ_FRAG_MASK); + } + } db_printf("\ttxseq %u rxseq %u fragno %u rxfragstamp %u\n", ni->ni_txseqs[IEEE80211_NONQOS_TID], ni->ni_rxseqs[IEEE80211_NONQOS_TID] >> IEEE80211_SEQ_SEQ_SHIFT, @@ -271,8 +280,7 @@ _db_show_sta(const struct ieee80211_node if (ni->ni_tx_ampdu[i].txa_flags & IEEE80211_AGGR_SETUP) _db_show_txampdu("\t", i, &ni->ni_tx_ampdu[i]); for (i = 0; i < WME_NUM_TID; i++) - if (ni->ni_rx_ampdu[i].rxa_nframes || - ni->ni_rx_ampdu[i].rxa_qframes) + if (ni->ni_rx_ampdu[i].rxa_flags) _db_show_rxampdu("\t", i, &ni->ni_rx_ampdu[i]); db_printf("\tinact %u inact_reload %u txrate %u\n", From sam at FreeBSD.org Sat May 2 20:25:23 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Sat May 2 20:25:29 2009 Subject: svn commit: r191756 - head/sys/net80211 Message-ID: <200905022025.n42KPMqp094431@svn.freebsd.org> Author: sam Date: Sat May 2 20:25:22 2009 New Revision: 191756 URL: http://svn.freebsd.org/changeset/base/191756 Log: promote ieee80211_seq typedef Modified: head/sys/net80211/ieee80211.h head/sys/net80211/ieee80211_ht.h head/sys/net80211/ieee80211_node.h Modified: head/sys/net80211/ieee80211.h ============================================================================== --- head/sys/net80211/ieee80211.h Sat May 2 20:21:21 2009 (r191755) +++ head/sys/net80211/ieee80211.h Sat May 2 20:25:22 2009 (r191756) @@ -36,6 +36,8 @@ /* is 802.11 address multicast/broadcast? */ #define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01) +typedef uint16_t ieee80211_seq; + /* IEEE 802.11 PLCP header */ struct ieee80211_plcp_hdr { uint16_t i_sfd; Modified: head/sys/net80211/ieee80211_ht.h ============================================================================== --- head/sys/net80211/ieee80211_ht.h Sat May 2 20:21:21 2009 (r191755) +++ head/sys/net80211/ieee80211_ht.h Sat May 2 20:25:22 2009 (r191756) @@ -35,8 +35,6 @@ /* threshold for aging overlapping non-HT bss */ #define IEEE80211_NONHT_PRESENT_AGE msecs_to_ticks(60*1000) -typedef uint16_t ieee80211_seq; - struct ieee80211_tx_ampdu { struct ieee80211_node *txa_ni; /* back pointer */ u_short txa_flags; Modified: head/sys/net80211/ieee80211_node.h ============================================================================== --- head/sys/net80211/ieee80211_node.h Sat May 2 20:21:21 2009 (r191755) +++ head/sys/net80211/ieee80211_node.h Sat May 2 20:25:22 2009 (r191756) @@ -137,9 +137,9 @@ struct ieee80211_node { uint32_t *ni_challenge; /* shared-key challenge */ struct ieee80211_ies ni_ies; /* captured ie's */ /* tx seq per-tid */ - uint16_t ni_txseqs[IEEE80211_TID_SIZE]; + ieee80211_seq ni_txseqs[IEEE80211_TID_SIZE]; /* rx seq previous per-tid*/ - uint16_t ni_rxseqs[IEEE80211_TID_SIZE]; + ieee80211_seq ni_rxseqs[IEEE80211_TID_SIZE]; uint32_t ni_rxfragstamp; /* time stamp of last rx frag */ struct mbuf *ni_rxfrag[3]; /* rx frag reassembly */ struct ieee80211_key ni_ucastkey; /* unicast key */ From sam at FreeBSD.org Sat May 2 20:28:56 2009 From: sam at FreeBSD.org (Sam Leffler) Date: Sat May 2 20:29:07 2009 Subject: svn commit: r191757 - head/sys/net80211 Message-ID: <200905022028.n42KStE3094533@svn.freebsd.org> Author: sam Date: Sat May 2 20:28:55 2009 New Revision: 191757 URL: http://svn.freebsd.org/changeset/base/191757 Log: don't say "ac WME_AC_BE"; remove "ac" Modified: head/sys/net80211/ieee80211_ddb.c Modified: head/sys/net80211/ieee80211_ddb.c ============================================================================== --- head/sys/net80211/ieee80211_ddb.c Sat May 2 20:25:22 2009 (r191756) +++ head/sys/net80211/ieee80211_ddb.c Sat May 2 20:28:55 2009 (r191757) @@ -183,7 +183,7 @@ DB_SHOW_ALL_COMMAND(vaps, db_show_all_va static void _db_show_txampdu(const char *sep, int ix, const struct ieee80211_tx_ampdu *tap) { - db_printf("%stxampdu[%d]: %p flags %b ac %s\n", + db_printf("%stxampdu[%d]: %p flags %b %s\n", sep, ix, tap, tap->txa_flags, IEEE80211_AGGR_BITS, ieee80211_wme_acnames[tap->txa_ac]); db_printf("%s token %u lastsample %d pkts %d avgpps %d qbytes %d qframes %d\n", From imp at bsdimp.com Sat May 2 21:40:03 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Sat May 2 21:40:09 2009 Subject: svn commit: r191733 - in head/sys: amd64/isa isa In-Reply-To: <200905012143.n41Lh4uS054073@svn.freebsd.org> References: <200905012143.n41Lh4uS054073@svn.freebsd.org> Message-ID: <20090502.153808.-896932641.imp@bsdimp.com> In message: <200905012143.n41Lh4uS054073@svn.freebsd.org> Alexander Motin writes: : Author: mav : Date: Fri May 1 21:43:04 2009 : New Revision: 191733 : URL: http://svn.freebsd.org/changeset/base/191733 : : Log: : Add resume methods to i8254 and atrtc devices. This likely obviates the need for pmtimer.c now. You might want to investigate... : Modified: : head/sys/amd64/isa/clock.c : head/sys/isa/atrtc.c Shouldn't there be one for i386 too? Warner : Modified: head/sys/amd64/isa/clock.c : ============================================================================== : --- head/sys/amd64/isa/clock.c Fri May 1 21:31:39 2009 (r191732) : +++ head/sys/amd64/isa/clock.c Fri May 1 21:43:04 2009 (r191733) : @@ -376,6 +376,17 @@ set_i8254_freq(u_int freq, int intr_freq : mtx_unlock_spin(&clock_lock); : } : : +static void : +i8254_restore(void) : +{ : + : + mtx_lock_spin(&clock_lock); : + outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); : + outb(TIMER_CNTR0, i8254_real_max_count & 0xff); : + outb(TIMER_CNTR0, i8254_real_max_count >> 8); : + mtx_unlock_spin(&clock_lock); : +} : + : /* This is separate from startrtclock() so that it can be called early. */ : void : i8254_init(void) : @@ -558,6 +569,14 @@ attimer_attach(device_t dev) : return(0); : } : : +static int : +attimer_resume(device_t dev) : +{ : + : + i8254_restore(); : + return(0); : +} : + : static device_method_t attimer_methods[] = { : /* Device interface */ : DEVMETHOD(device_probe, attimer_probe), : @@ -565,7 +584,7 @@ static device_method_t attimer_methods[] : DEVMETHOD(device_detach, bus_generic_detach), : DEVMETHOD(device_shutdown, bus_generic_shutdown), : DEVMETHOD(device_suspend, bus_generic_suspend), : - DEVMETHOD(device_resume, bus_generic_resume), : + DEVMETHOD(device_resume, attimer_resume), : { 0, 0 } : }; : : : Modified: head/sys/isa/atrtc.c : ============================================================================== : --- head/sys/isa/atrtc.c Fri May 1 21:31:39 2009 (r191732) : +++ head/sys/isa/atrtc.c Fri May 1 21:43:04 2009 (r191733) : @@ -190,6 +190,13 @@ atrtc_attach(device_t dev) : return(0); : } : : +static int : +atrtc_resume(device_t dev) : +{ : + : + atrtc_restore(); : + return(0); : +} : : static int : atrtc_settime(device_t dev __unused, struct timespec *ts) : @@ -264,8 +271,7 @@ static device_method_t atrtc_methods[] = : DEVMETHOD(device_shutdown, bus_generic_shutdown), : DEVMETHOD(device_suspend, bus_generic_suspend), : /* XXX stop statclock? */ : - DEVMETHOD(device_resume, bus_generic_resume), : - /* XXX restart statclock? */ : + DEVMETHOD(device_resume, atrtc_resume), : : /* clock interface */ : DEVMETHOD(clock_gettime, atrtc_gettime), : From mav at FreeBSD.org Sat May 2 22:07:06 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sat May 2 22:07:17 2009 Subject: svn commit: r191733 - in head/sys: amd64/isa isa In-Reply-To: <20090502.153808.-896932641.imp@bsdimp.com> References: <200905012143.n41Lh4uS054073@svn.freebsd.org> <20090502.153808.-896932641.imp@bsdimp.com> Message-ID: <49FCC404.6090105@FreeBSD.org> M. Warner Losh wrote: > : Author: mav > : Date: Fri May 1 21:43:04 2009 > : New Revision: 191733 > : URL: http://svn.freebsd.org/changeset/base/191733 > : > : Log: > : Add resume methods to i8254 and atrtc devices. > > This likely obviates the need for pmtimer.c now. You might want to > investigate... Yes, I have seen it. > : Modified: > : head/sys/amd64/isa/clock.c > : head/sys/isa/atrtc.c > > Shouldn't there be one for i386 too? For i386 it is done by pmtimer now (that's why I haven't done it there), but there is no pmtimer driver for amd64. Actually both ways are not so perfect, as both restore timer interrupts quite late on resume process. In my case it is not fatal as i8254 is anyway ticking by default, just slower. But it seems to increase my system resume time to 10 seconds instead of usual 4-5. May be we should somehow enforce order of device resuming, or build some special event timers control infrastructure alike to PIC one. Also, except restoring clocks interrupts, pmtimer restores system time on wakeup. For amd64 it is implemented in MD resume code now. We should decide which way to go. I don't very like pmtimer approach, as there is no any newbus relations between it and i8254/atrtc drivers. -- Alexander Motin From kmacy at FreeBSD.org Sat May 2 22:22:01 2009 From: kmacy at FreeBSD.org (Kip Macy) Date: Sat May 2 22:22:07 2009 Subject: svn commit: r191759 - head/sys/i386/xen Message-ID: <200905022222.n42MM0QI096960@svn.freebsd.org> Author: kmacy Date: Sat May 2 22:22:00 2009 New Revision: 191759 URL: http://svn.freebsd.org/changeset/base/191759 Log: fix XEN compilation Modified: head/sys/i386/xen/mp_machdep.c Modified: head/sys/i386/xen/mp_machdep.c ============================================================================== --- head/sys/i386/xen/mp_machdep.c Sat May 2 20:39:43 2009 (r191758) +++ head/sys/i386/xen/mp_machdep.c Sat May 2 22:22:00 2009 (r191759) @@ -142,6 +142,9 @@ int apic_cpuids[MAX_APIC_ID + 1]; /* Holds pending bitmap based IPIs per CPU */ static volatile u_int cpu_ipi_pending[MAXCPU]; +static int cpu_logical; +static int cpu_cores; + static void assign_cpu_ids(void); static void set_interrupt_apic_ids(void); int start_all_aps(void); From mav at FreeBSD.org Sat May 2 22:30:33 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sat May 2 22:30:40 2009 Subject: svn commit: r191760 - head/sys/dev/acpica Message-ID: <200905022230.n42MUXAs097147@svn.freebsd.org> Author: mav Date: Sat May 2 22:30:33 2009 New Revision: 191760 URL: http://svn.freebsd.org/changeset/base/191760 Log: Avoid comparing negative signed to positive unsignad values. It was leading to a bug, when C-state does not decrease on sleep shorter then declared transition latency. Fixing this deprecates workaround for broken C-states on some hardware. By the way, change state selecting logic a bit. Instead of last sleep time use short-time average of it. Global interrupts rate in system is a quite random value, to corellate subsequent sleeps so directly. Modified: head/sys/dev/acpica/acpi_cpu.c Modified: head/sys/dev/acpica/acpi_cpu.c ============================================================================== --- head/sys/dev/acpica/acpi_cpu.c Sat May 2 22:22:00 2009 (r191759) +++ head/sys/dev/acpica/acpi_cpu.c Sat May 2 22:30:33 2009 (r191760) @@ -882,43 +882,13 @@ acpi_cpu_idle() return; } - /* - * If we slept 100 us or more, use the lowest Cx state. Otherwise, - * find the lowest state that has a latency less than or equal to - * the length of our last sleep. - */ - cx_next_idx = sc->cpu_cx_lowest; - if (sc->cpu_prev_sleep < 100) { - /* - * If we sleep too short all the time, this system may not implement - * C2/3 correctly (i.e. reads return immediately). In this case, - * back off and use the next higher level. - * It seems that when you have a dual core cpu (like the Intel Core Duo) - * that both cores will get out of C3 state as soon as one of them - * requires it. This breaks the sleep detection logic as the sleep - * counter is local to each cpu. Disable the sleep logic for now as a - * workaround if there's more than one CPU. The right fix would probably - * be to add quirks for system that don't really support C3 state. - */ - if (mp_ncpus < 2 && sc->cpu_prev_sleep <= 1) { - sc->cpu_short_slp++; - if (sc->cpu_short_slp == 1000 && sc->cpu_cx_lowest != 0) { - if (sc->cpu_non_c3 == sc->cpu_cx_lowest && sc->cpu_non_c3 != 0) - sc->cpu_non_c3--; - sc->cpu_cx_lowest--; - sc->cpu_short_slp = 0; - device_printf(sc->cpu_dev, - "too many short sleeps, backing off to C%d\n", - sc->cpu_cx_lowest + 1); - } - } else - sc->cpu_short_slp = 0; - - for (i = sc->cpu_cx_lowest; i >= 0; i--) - if (sc->cpu_cx_states[i].trans_lat <= sc->cpu_prev_sleep) { - cx_next_idx = i; - break; - } + /* Find the lowest state that has small enougth latency. */ + cx_next_idx = 0; + for (i = sc->cpu_cx_lowest; i >= 0; i--) { + if (sc->cpu_cx_states[i].trans_lat * 3 <= sc->cpu_prev_sleep) { + cx_next_idx = i; + break; + } } /* @@ -943,10 +913,10 @@ acpi_cpu_idle() /* * Execute HLT (or equivalent) and wait for an interrupt. We can't * calculate the time spent in C1 since the place we wake up is an - * ISR. Assume we slept one quantum and return. + * ISR. Assume we slept half of quantum and return. */ if (cx_next->type == ACPI_STATE_C1) { - sc->cpu_prev_sleep = 1000000 / hz; + sc->cpu_prev_sleep = (sc->cpu_prev_sleep * 3 + 500000 / hz) / 4; acpi_cpu_c1(); return; } @@ -989,9 +959,9 @@ acpi_cpu_idle() } ACPI_ENABLE_IRQS(); - /* Find the actual time asleep in microseconds, minus overhead. */ + /* Find the actual time asleep in microseconds. */ end_time = acpi_TimerDelta(end_time, start_time); - sc->cpu_prev_sleep = PM_USEC(end_time) - cx_next->trans_lat; + sc->cpu_prev_sleep = (sc->cpu_prev_sleep * 3 + PM_USEC(end_time)) / 4; } /* From imp at bsdimp.com Sun May 3 00:21:48 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Sun May 3 00:21:54 2009 Subject: svn commit: r191733 - in head/sys: amd64/isa isa In-Reply-To: <49FCC404.6090105@FreeBSD.org> References: <200905012143.n41Lh4uS054073@svn.freebsd.org> <20090502.153808.-896932641.imp@bsdimp.com> <49FCC404.6090105@FreeBSD.org> Message-ID: <20090502.182103.-895882057.imp@bsdimp.com> In message: <49FCC404.6090105@FreeBSD.org> Alexander Motin writes: : M. Warner Losh wrote: : > : Author: mav : > : Date: Fri May 1 21:43:04 2009 : > : New Revision: 191733 : > : URL: http://svn.freebsd.org/changeset/base/191733 : > : : > : Log: : > : Add resume methods to i8254 and atrtc devices. : > : > This likely obviates the need for pmtimer.c now. You might want to : > investigate... : : Yes, I have seen it. : : > : Modified: : > : head/sys/amd64/isa/clock.c : > : head/sys/isa/atrtc.c : > : > Shouldn't there be one for i386 too? : : For i386 it is done by pmtimer now (that's why I haven't done it there), : but there is no pmtimer driver for amd64. Actually both ways are not so : perfect, as both restore timer interrupts quite late on resume process. Yes. That's a problem... : In my case it is not fatal as i8254 is anyway ticking by default, just : slower. But it seems to increase my system resume time to 10 seconds : instead of usual 4-5. May be we should somehow enforce order of device : resuming, or build some special event timers control infrastructure : alike to PIC one. There's some work to do multi-pass probe/attach. Perhaps it should be generalized to do suspend/resume as well... : Also, except restoring clocks interrupts, pmtimer restores system time : on wakeup. For amd64 it is implemented in MD resume code now. We should : decide which way to go. I don't very like pmtimer approach, as there is : no any newbus relations between it and i8254/atrtc drivers. pmtimer should likely die, or at least be only used by APM. It was a hack that was tuned to APM and never really updated for ACPI... Warner From nyan at FreeBSD.org Sun May 3 02:37:14 2009 From: nyan at FreeBSD.org (Takahashi Yoshihiro) Date: Sun May 3 02:37:20 2009 Subject: svn commit: r191761 - head/sys/pc98/cbus Message-ID: <200905030237.n432bD2x001879@svn.freebsd.org> Author: nyan Date: Sun May 3 02:37:13 2009 New Revision: 191761 URL: http://svn.freebsd.org/changeset/base/191761 Log: MFi386: revision 191745 Add support for using i8254 and rtc timers as event sources for i386 SMP system. Redistribute hard-/stat-/profclock events to other CPUs using IPI. Modified: head/sys/pc98/cbus/clock.c Modified: head/sys/pc98/cbus/clock.c ============================================================================== --- head/sys/pc98/cbus/clock.c Sat May 2 22:30:33 2009 (r191760) +++ head/sys/pc98/cbus/clock.c Sun May 3 02:37:13 2009 (r191761) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -71,6 +72,7 @@ __FBSDID("$FreeBSD$"); #endif #include #include +#include #include #ifdef DEV_ISA @@ -123,6 +125,31 @@ static struct timecounter i8254_timecoun 0 /* quality */ }; +int +hardclockintr(struct trapframe *frame) +{ + + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); + return (FILTER_HANDLED); +} + +int +statclockintr(struct trapframe *frame) +{ + + return (FILTER_HANDLED); +} + +int +profclockintr(struct trapframe *frame) +{ + + return (FILTER_HANDLED); +} + static int clkintr(struct trapframe *frame) { @@ -151,7 +178,14 @@ clkintr(struct trapframe *frame) (*lapic_cyclic_clock_func[cpu])(frame); #endif - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); +#ifdef SMP + if (smp_started) + ipi_all_but_self(IPI_HARDCLOCK); +#endif + if (PCPU_GET(cpuid) == 0) + hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + else + hardclock_cpu(TRAPF_USERMODE(frame)); return (FILTER_HANDLED); } From rwatson at FreeBSD.org Sun May 3 03:57:04 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Sun May 3 03:57:16 2009 Subject: svn commit: r191742 - head/sys/compat/linux In-Reply-To: <200905021051.n42ApetI083033@svn.freebsd.org> References: <200905021051.n42ApetI083033@svn.freebsd.org> Message-ID: On Sat, 2 May 2009, Dmitry Chagin wrote: > Linux socketpair() call expects explicit specified protocol for > AF_LOCAL domain unlike FreeBSD which expects 0 in this case. ... > @@ -859,7 +859,10 @@ linux_socketpair(struct thread *td, stru > return (EINVAL); > > bsd_args.type = args->type; > - bsd_args.protocol = args->protocol; > + if (bsd_args.domain == AF_LOCAL && args->protocol == PF_UNIX) > + bsd_args.protocol = 0; > + else > + bsd_args.protocol = args->protocol; > bsd_args.rsv = (int *)PTRIN(args->rsv); > return (socketpair(td, &bsd_args)); > } I think I'd tweak this to be more like: if (bsd_args.domain == PF_LOCAL) { if (bsd_args.protocol == PF_UNIX) bsd_args.protocl = 0; else if (bsd_args.protocol != 0) return (EPROTONOSUPPORT); } Because (a) the domain argument takes a protocol family in FreeBSD and you're passing arguments into the BSD ABI without a mapping for that field, and (b) for the protocol family the use of PF_UNIX is weird but must be supported, so I'd consider it to be an entirely mapped namespace and avoid passing through values that aren't 0 to the BSD layer as it's not clear what that would mean. Robert N M Watson Computer Laboratory University of Cambridge From imp at FreeBSD.org Sun May 3 04:01:44 2009 From: imp at FreeBSD.org (Warner Losh) Date: Sun May 3 04:01:57 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi Message-ID: <200905030401.n4341h9W003803@svn.freebsd.org> Author: imp Date: Sun May 3 04:01:43 2009 New Revision: 191762 URL: http://svn.freebsd.org/changeset/base/191762 Log: Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for Broadcom BCM43xx chipsets. This driver uses the v3 firmware that needs to be fetched separately. A port will be committed to create the bwi firmware module. The driver matches the following chips: Broadcom BCM4301, BCM4307, BCM4306, BCM4309, BCM4311, BCM4312, BCM4318, BCM4319 The driver works for 802.11b and 802.11g. Limitations: This doesn't support the 802.11a or 802.11n portion of radios. Some BCM4306 and BCM4309 cards don't work with Channel 1, 2 or 3. Documenation for this firmware is reverse engineered from http://bcm.sipsolutions.net/ V4 of the firmware is needed for 11a or 11n support http://bcm-v4.sipsolutions.net/ Firmware needs to be fetched from a third party, port to be committed # I've tested this with a BCM4319 mini-pci and a BCM4318 CardBus card, and # not connected it to the build until the firmware port is committed. Obtained from: DragonFlyBSD, //depot/projects/vap Reviewed by: sam@, thompsa@ Added: head/sys/dev/bwi/ head/sys/dev/bwi/bitops.h (contents, props changed) head/sys/dev/bwi/bwimac.c (contents, props changed) head/sys/dev/bwi/bwimac.h (contents, props changed) head/sys/dev/bwi/bwiphy.c (contents, props changed) head/sys/dev/bwi/bwiphy.h (contents, props changed) head/sys/dev/bwi/bwirf.c (contents, props changed) head/sys/dev/bwi/bwirf.h (contents, props changed) head/sys/dev/bwi/if_bwi.c (contents, props changed) head/sys/dev/bwi/if_bwi_pci.c (contents, props changed) head/sys/dev/bwi/if_bwireg.h (contents, props changed) head/sys/dev/bwi/if_bwivar.h (contents, props changed) head/sys/modules/bwi/ head/sys/modules/bwi/Makefile (contents, props changed) Modified: head/sys/conf/files head/sys/conf/options Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sun May 3 02:37:13 2009 (r191761) +++ head/sys/conf/files Sun May 3 04:01:43 2009 (r191762) @@ -712,6 +712,11 @@ dev/buslogic/bt_eisa.c optional bt eisa dev/buslogic/bt_isa.c optional bt isa dev/buslogic/bt_mca.c optional bt mca dev/buslogic/bt_pci.c optional bt pci +dev/bwi/bwiirf.c optional bwi +dev/bwi/bwimac.c optional bwi +dev/bwi/bwiphy.c optional bwi +dev/bwi/if_bwi.c optional bwi +dev/bwi/if_bwi_pci.c optional bwi pci dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/cardbus/cardbus_device.c optional cardbus Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Sun May 3 02:37:13 2009 (r191761) +++ head/sys/conf/options Sun May 3 04:01:43 2009 (r191762) @@ -763,6 +763,10 @@ AH_NEED_DESC_SWAP opt_ah.h AH_USE_INIPDGAIN opt_ah.h AH_MAXCHAN opt_ah.h +# options for the Broadcom BCM43xx driver (bwi) +BWI_DEBUG opt_bwi.h +BWI_DEBUG_VERBOSE opt_bwi.h + # options for the Marvell 8335 wireless driver MALO_DEBUG opt_malo.h MALO_TXBUF opt_malo.h Added: head/sys/dev/bwi/bitops.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/bwi/bitops.h Sun May 3 04:01:43 2009 (r191762) @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2004, 2005 David Young. All rights reserved. + * + * Programmed for NetBSD by David Young. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of David Young may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL David + * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * $DragonFly: src/sys/dev/netif/bwi/bitops.h,v 1.1 2007/09/08 06:15:54 sephe Exp $ + * $FreeBSD$ + */ + +#ifndef _BITOPS_H +#define _BITOPS_H + +/* + * __BIT(n): Return a bitmask with bit m set, where the least + * significant bit is bit 0. + * + * __BITS(m, n): Return a bitmask with bits m through n, inclusive, + * set. It does not matter whether m>n or m<=n. The + * least significant bit is bit 0. + * + * A "bitfield" is a span of consecutive bits defined by a bitmask, + * where 1s select the bits in the bitfield. __SHIFTIN, __SHIFTOUT, + * and SHIFTOUT_MASK help read and write bitfields from device registers. + * + * __SHIFTIN(v, mask): Left-shift bits `v' into the bitfield + * defined by `mask', and return them. No + * side-effects. + * + * __SHIFTOUT(v, mask): Extract and return the bitfield selected + * by `mask' from `v', right-shifting the + * bits so that the rightmost selected bit + * is at bit 0. No side-effects. + * + * __SHIFTOUT_MASK(mask): Right-shift the bits in `mask' so that + * the rightmost non-zero bit is at bit + * 0. This is useful for finding the + * greatest unsigned value that a bitfield + * can hold. No side-effects. Note that + * SHIFTOUT_MASK(m) = SHIFTOUT(m, m). + */ + +/* __BIT(n): nth bit, where __BIT(0) == 0x1. */ +#define __BIT(__n) (((__n) == 32) ? 0 : ((uint32_t)1 << (__n))) + +/* __BITS(m, n): bits m through n, m < n. */ +#define __BITS(__m, __n) \ + ((__BIT(MAX((__m), (__n)) + 1) - 1) ^ (__BIT(MIN((__m), (__n))) - 1)) + +/* Find least significant bit that is set */ +#define __LOWEST_SET_BIT(__mask) ((((__mask) - 1) & (__mask)) ^ (__mask)) + +#define __SHIFTOUT(__x, __mask) (((__x) & (__mask)) / __LOWEST_SET_BIT(__mask)) +#define __SHIFTIN(__x, __mask) ((__x) * __LOWEST_SET_BIT(__mask)) +#define __SHIFTOUT_MASK(__mask) __SHIFTOUT((__mask), (__mask)) + +#endif /* !_BITOPS_H */ Added: head/sys/dev/bwi/bwimac.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/bwi/bwimac.c Sun May 3 04:01:43 2009 (r191762) @@ -0,0 +1,1982 @@ +/* + * Copyright (c) 2007 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Sepherosa Ziehau + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $DragonFly: src/sys/dev/netif/bwi/bwimac.c,v 1.13 2008/02/15 11:15:38 sephe Exp $ + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_inet.h" +#include "opt_bwi.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +struct bwi_retry_lim { + uint16_t shretry; + uint16_t shretry_fb; + uint16_t lgretry; + uint16_t lgretry_fb; +}; + +static int bwi_mac_test(struct bwi_mac *); +static int bwi_mac_get_property(struct bwi_mac *); + +static void bwi_mac_set_retry_lim(struct bwi_mac *, + const struct bwi_retry_lim *); +static void bwi_mac_set_ackrates(struct bwi_mac *, + const struct ieee80211_rate_table *rt, + const struct ieee80211_rateset *); + +static int bwi_mac_gpio_init(struct bwi_mac *); +static int bwi_mac_gpio_fini(struct bwi_mac *); +static void bwi_mac_opmode_init(struct bwi_mac *); +static void bwi_mac_hostflags_init(struct bwi_mac *); +static void bwi_mac_bss_param_init(struct bwi_mac *); + +static int bwi_mac_fw_alloc(struct bwi_mac *); +static void bwi_mac_fw_free(struct bwi_mac *); +static int bwi_mac_fw_load(struct bwi_mac *); +static int bwi_mac_fw_init(struct bwi_mac *); +static int bwi_mac_fw_load_iv(struct bwi_mac *, const struct firmware *); + +static void bwi_mac_setup_tpctl(struct bwi_mac *); +static void bwi_mac_adjust_tpctl(struct bwi_mac *, int, int); + +static void bwi_mac_lock(struct bwi_mac *); +static void bwi_mac_unlock(struct bwi_mac *); + +static const uint8_t bwi_sup_macrev[] = { 2, 4, 5, 6, 7, 9, 10 }; + +void +bwi_tmplt_write_4(struct bwi_mac *mac, uint32_t ofs, uint32_t val) +{ + struct bwi_softc *sc = mac->mac_sc; + + if (mac->mac_flags & BWI_MAC_F_BSWAP) + val = bswap32(val); + + CSR_WRITE_4(sc, BWI_MAC_TMPLT_CTRL, ofs); + CSR_WRITE_4(sc, BWI_MAC_TMPLT_DATA, val); +} + +void +bwi_hostflags_write(struct bwi_mac *mac, uint64_t flags) +{ + uint64_t val; + + val = flags & 0xffff; + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_LO, val); + + val = (flags >> 16) & 0xffff; + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_MI, val); + + /* HI has unclear meaning, so leave it as it is */ +} + +uint64_t +bwi_hostflags_read(struct bwi_mac *mac) +{ + uint64_t flags, val; + + /* HI has unclear meaning, so don't touch it */ + flags = 0; + + val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_MI); + flags |= val << 16; + + val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_LO); + flags |= val; + + return flags; +} + +uint16_t +bwi_memobj_read_2(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0) +{ + struct bwi_softc *sc = mac->mac_sc; + uint32_t data_reg; + int ofs; + + data_reg = BWI_MOBJ_DATA; + ofs = ofs0 / 4; + + if (ofs0 % 4 != 0) + data_reg = BWI_MOBJ_DATA_UNALIGN; + + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + return CSR_READ_2(sc, data_reg); +} + +uint32_t +bwi_memobj_read_4(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0) +{ + struct bwi_softc *sc = mac->mac_sc; + int ofs; + + ofs = ofs0 / 4; + if (ofs0 % 4 != 0) { + uint32_t ret; + + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + ret = CSR_READ_2(sc, BWI_MOBJ_DATA_UNALIGN); + ret <<= 16; + + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, + BWI_MOBJ_CTRL_VAL(obj_id, ofs + 1)); + ret |= CSR_READ_2(sc, BWI_MOBJ_DATA); + + return ret; + } else { + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + return CSR_READ_4(sc, BWI_MOBJ_DATA); + } +} + +void +bwi_memobj_write_2(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0, + uint16_t v) +{ + struct bwi_softc *sc = mac->mac_sc; + uint32_t data_reg; + int ofs; + + data_reg = BWI_MOBJ_DATA; + ofs = ofs0 / 4; + + if (ofs0 % 4 != 0) + data_reg = BWI_MOBJ_DATA_UNALIGN; + + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + CSR_WRITE_2(sc, data_reg, v); +} + +void +bwi_memobj_write_4(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0, + uint32_t v) +{ + struct bwi_softc *sc = mac->mac_sc; + int ofs; + + ofs = ofs0 / 4; + if (ofs0 % 4 != 0) { + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + CSR_WRITE_2(sc, BWI_MOBJ_DATA_UNALIGN, v >> 16); + + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, + BWI_MOBJ_CTRL_VAL(obj_id, ofs + 1)); + CSR_WRITE_2(sc, BWI_MOBJ_DATA, v & 0xffff); + } else { + CSR_WRITE_4(sc, BWI_MOBJ_CTRL, BWI_MOBJ_CTRL_VAL(obj_id, ofs)); + CSR_WRITE_4(sc, BWI_MOBJ_DATA, v); + } +} + +int +bwi_mac_lateattach(struct bwi_mac *mac) +{ + int error; + + if (mac->mac_rev >= 5) + CSR_READ_4(mac->mac_sc, BWI_STATE_HI); /* dummy read */ + + bwi_mac_reset(mac, 1); + + error = bwi_phy_attach(mac); + if (error) + return error; + + error = bwi_rf_attach(mac); + if (error) + return error; + + /* Link 11B/G PHY, unlink 11A PHY */ + if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) + bwi_mac_reset(mac, 0); + else + bwi_mac_reset(mac, 1); + + error = bwi_mac_test(mac); + if (error) + return error; + + error = bwi_mac_get_property(mac); + if (error) + return error; + + error = bwi_rf_map_txpower(mac); + if (error) + return error; + + bwi_rf_off(mac); + CSR_WRITE_2(mac->mac_sc, BWI_BBP_ATTEN, BWI_BBP_ATTEN_MAGIC); + bwi_regwin_disable(mac->mac_sc, &mac->mac_regwin, 0); + + return 0; +} + +int +bwi_mac_init(struct bwi_mac *mac) +{ + struct bwi_softc *sc = mac->mac_sc; + int error, i; + + /* Clear MAC/PHY/RF states */ + bwi_mac_setup_tpctl(mac); + bwi_rf_clear_state(&mac->mac_rf); + bwi_phy_clear_state(&mac->mac_phy); + + /* Enable MAC and linked it to PHY */ + if (!bwi_regwin_is_enabled(sc, &mac->mac_regwin)) + bwi_mac_reset(mac, 1); + + /* Initialize backplane */ + error = bwi_bus_init(sc, mac); + if (error) + return error; + + /* XXX work around for hardware bugs? */ + if (sc->sc_bus_regwin.rw_rev <= 5 && + sc->sc_bus_regwin.rw_type != BWI_REGWIN_T_BUSPCIE) { + CSR_SETBITS_4(sc, BWI_CONF_LO, + __SHIFTIN(BWI_CONF_LO_SERVTO, BWI_CONF_LO_SERVTO_MASK) | + __SHIFTIN(BWI_CONF_LO_REQTO, BWI_CONF_LO_REQTO_MASK)); + } + + /* Calibrate PHY */ + error = bwi_phy_calibrate(mac); + if (error) { + device_printf(sc->sc_dev, "PHY calibrate failed\n"); + return error; + } + + /* Prepare to initialize firmware */ + CSR_WRITE_4(sc, BWI_MAC_STATUS, + BWI_MAC_STATUS_UCODE_JUMP0 | + BWI_MAC_STATUS_IHREN); + + /* + * Load and initialize firmwares + */ + error = bwi_mac_fw_alloc(mac); + if (error) + return error; + + error = bwi_mac_fw_load(mac); + if (error) + return error; + + error = bwi_mac_gpio_init(mac); + if (error) + return error; + + error = bwi_mac_fw_init(mac); + if (error) + return error; + + /* + * Turn on RF + */ + bwi_rf_on(mac); + + /* TODO: LED, hardware rf enabled is only related to LED setting */ + + /* + * Initialize PHY + */ + CSR_WRITE_2(sc, BWI_BBP_ATTEN, 0); + bwi_phy_init(mac); + + /* TODO: interference mitigation */ + + /* + * Setup antenna mode + */ + bwi_rf_set_ant_mode(mac, mac->mac_rf.rf_ant_mode); + + /* + * Initialize operation mode (RX configuration) + */ + bwi_mac_opmode_init(mac); + + /* XXX what's these */ + if (mac->mac_rev < 3) { + CSR_WRITE_2(sc, 0x60e, 0); + CSR_WRITE_2(sc, 0x610, 0x8000); + CSR_WRITE_2(sc, 0x604, 0); + CSR_WRITE_2(sc, 0x606, 0x200); + } else { + CSR_WRITE_4(sc, 0x188, 0x80000000); + CSR_WRITE_4(sc, 0x18c, 0x2000000); + } + + /* + * Initialize TX/RX interrupts' mask + */ + CSR_WRITE_4(sc, BWI_MAC_INTR_STATUS, BWI_INTR_TIMER1); + for (i = 0; i < BWI_TXRX_NRING; ++i) { + uint32_t intrs; + + if (BWI_TXRX_IS_RX(i)) + intrs = BWI_TXRX_RX_INTRS; + else + intrs = BWI_TXRX_TX_INTRS; + CSR_WRITE_4(sc, BWI_TXRX_INTR_MASK(i), intrs); + } + + /* XXX what's this */ + CSR_SETBITS_4(sc, BWI_STATE_LO, 0x100000); + + /* Setup MAC power up delay */ + CSR_WRITE_2(sc, BWI_MAC_POWERUP_DELAY, sc->sc_pwron_delay); + + /* Set MAC regwin revision */ + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_MACREV, mac->mac_rev); + + /* + * Initialize host flags + */ + bwi_mac_hostflags_init(mac); + + /* + * Initialize BSS parameters + */ + bwi_mac_bss_param_init(mac); + + /* + * Initialize TX rings + */ + for (i = 0; i < BWI_TX_NRING; ++i) { + error = sc->sc_init_tx_ring(sc, i); + if (error) { + device_printf(sc->sc_dev, + "can't initialize %dth TX ring\n", i); + return error; + } + } + + /* + * Initialize RX ring + */ + error = sc->sc_init_rx_ring(sc); + if (error) { + device_printf(sc->sc_dev, "can't initialize RX ring\n"); + return error; + } + + /* + * Initialize TX stats if the current MAC uses that + */ + if (mac->mac_flags & BWI_MAC_F_HAS_TXSTATS) { + error = sc->sc_init_txstats(sc); + if (error) { + device_printf(sc->sc_dev, + "can't initialize TX stats ring\n"); + return error; + } + } + + /* XXX what's these */ + CSR_WRITE_2(sc, 0x612, 0x50); /* Force Pre-TBTT to 80? */ + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, 0x416, 0x50); + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, 0x414, 0x1f4); + + mac->mac_flags |= BWI_MAC_F_INITED; + return 0; +} + +void +bwi_mac_reset(struct bwi_mac *mac, int link_phy) +{ + struct bwi_softc *sc = mac->mac_sc; + uint32_t flags, state_lo, status; + + flags = BWI_STATE_LO_FLAG_PHYRST | BWI_STATE_LO_FLAG_PHYCLKEN; + if (link_phy) + flags |= BWI_STATE_LO_FLAG_PHYLNK; + bwi_regwin_enable(sc, &mac->mac_regwin, flags); + DELAY(2000); + + state_lo = CSR_READ_4(sc, BWI_STATE_LO); + state_lo |= BWI_STATE_LO_GATED_CLOCK; + state_lo &= ~__SHIFTIN(BWI_STATE_LO_FLAG_PHYRST, + BWI_STATE_LO_FLAGS_MASK); + CSR_WRITE_4(sc, BWI_STATE_LO, state_lo); + /* Flush pending bus write */ + CSR_READ_4(sc, BWI_STATE_LO); + DELAY(1000); + + state_lo &= ~BWI_STATE_LO_GATED_CLOCK; + CSR_WRITE_4(sc, BWI_STATE_LO, state_lo); + /* Flush pending bus write */ + CSR_READ_4(sc, BWI_STATE_LO); + DELAY(1000); + + CSR_WRITE_2(sc, BWI_BBP_ATTEN, 0); + + status = CSR_READ_4(sc, BWI_MAC_STATUS); + status |= BWI_MAC_STATUS_IHREN; + if (link_phy) + status |= BWI_MAC_STATUS_PHYLNK; + else + status &= ~BWI_MAC_STATUS_PHYLNK; + CSR_WRITE_4(sc, BWI_MAC_STATUS, status); + + if (link_phy) { + DPRINTF(sc, BWI_DBG_MAC | BWI_DBG_ATTACH | BWI_DBG_INIT, + "%s\n", "PHY is linked"); + mac->mac_phy.phy_flags |= BWI_PHY_F_LINKED; + } else { + DPRINTF(sc, BWI_DBG_MAC | BWI_DBG_ATTACH | BWI_DBG_INIT, + "%s\n", "PHY is unlinked"); + mac->mac_phy.phy_flags &= ~BWI_PHY_F_LINKED; + } +} + +void +bwi_mac_set_tpctl_11bg(struct bwi_mac *mac, const struct bwi_tpctl *new_tpctl) +{ + struct bwi_rf *rf = &mac->mac_rf; + struct bwi_tpctl *tpctl = &mac->mac_tpctl; + + if (new_tpctl != NULL) { + KASSERT(new_tpctl->bbp_atten <= BWI_BBP_ATTEN_MAX, + ("bbp_atten %d", new_tpctl->bbp_atten)); + KASSERT(new_tpctl->rf_atten <= + (rf->rf_rev < 6 ? BWI_RF_ATTEN_MAX0 + : BWI_RF_ATTEN_MAX1), + ("rf_atten %d", new_tpctl->rf_atten)); + KASSERT(new_tpctl->tp_ctrl1 <= BWI_TPCTL1_MAX, + ("tp_ctrl1 %d", new_tpctl->tp_ctrl1)); + + tpctl->bbp_atten = new_tpctl->bbp_atten; + tpctl->rf_atten = new_tpctl->rf_atten; + tpctl->tp_ctrl1 = new_tpctl->tp_ctrl1; + } + + /* Set BBP attenuation */ + bwi_phy_set_bbp_atten(mac, tpctl->bbp_atten); + + /* Set RF attenuation */ + RF_WRITE(mac, BWI_RFR_ATTEN, tpctl->rf_atten); + MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_RF_ATTEN, + tpctl->rf_atten); + + /* Set TX power */ + if (rf->rf_type == BWI_RF_T_BCM2050) { + RF_FILT_SETBITS(mac, BWI_RFR_TXPWR, ~BWI_RFR_TXPWR1_MASK, + __SHIFTIN(tpctl->tp_ctrl1, BWI_RFR_TXPWR1_MASK)); + } + + /* Adjust RF Local Oscillator */ + if (mac->mac_phy.phy_mode == IEEE80211_MODE_11G) + bwi_rf_lo_adjust(mac, tpctl); +} + +static int +bwi_mac_test(struct bwi_mac *mac) +{ + struct bwi_softc *sc = mac->mac_sc; + uint32_t orig_val, val; + +#define TEST_VAL1 0xaa5555aa +#define TEST_VAL2 0x55aaaa55 + + /* Save it for later restoring */ + orig_val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); + + /* Test 1 */ + MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, TEST_VAL1); + val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); + if (val != TEST_VAL1) { + device_printf(sc->sc_dev, "TEST1 failed\n"); + return ENXIO; + } + + /* Test 2 */ + MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, TEST_VAL2); + val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); + if (val != TEST_VAL2) { + device_printf(sc->sc_dev, "TEST2 failed\n"); + return ENXIO; + } + + /* Restore to the original value */ + MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, orig_val); + + val = CSR_READ_4(sc, BWI_MAC_STATUS); + if ((val & ~BWI_MAC_STATUS_PHYLNK) != BWI_MAC_STATUS_IHREN) { + device_printf(sc->sc_dev, "%s failed, MAC status 0x%08x\n", + __func__, val); + return ENXIO; + } + + val = CSR_READ_4(sc, BWI_MAC_INTR_STATUS); + if (val != 0) { + device_printf(sc->sc_dev, "%s failed, intr status %08x\n", + __func__, val); + return ENXIO; + } + +#undef TEST_VAL2 +#undef TEST_VAL1 + + return 0; +} + +static void +bwi_mac_setup_tpctl(struct bwi_mac *mac) +{ + struct bwi_softc *sc = mac->mac_sc; + struct bwi_rf *rf = &mac->mac_rf; + struct bwi_phy *phy = &mac->mac_phy; + struct bwi_tpctl *tpctl = &mac->mac_tpctl; + + /* Calc BBP attenuation */ + if (rf->rf_type == BWI_RF_T_BCM2050 && rf->rf_rev < 6) + tpctl->bbp_atten = 0; + else + tpctl->bbp_atten = 2; + + /* Calc TX power CTRL1?? */ + tpctl->tp_ctrl1 = 0; + if (rf->rf_type == BWI_RF_T_BCM2050) { + if (rf->rf_rev == 1) + tpctl->tp_ctrl1 = 3; + else if (rf->rf_rev < 6) + tpctl->tp_ctrl1 = 2; + else if (rf->rf_rev == 8) + tpctl->tp_ctrl1 = 1; + } + + /* Empty TX power CTRL2?? */ + tpctl->tp_ctrl2 = 0xffff; + + /* + * Calc RF attenuation + */ + if (phy->phy_mode == IEEE80211_MODE_11A) { + tpctl->rf_atten = 0x60; + goto back; + } + + if (BWI_IS_BRCM_BCM4309G(sc) && sc->sc_pci_revid < 0x51) { + tpctl->rf_atten = sc->sc_pci_revid < 0x43 ? 2 : 3; + goto back; + } + + tpctl->rf_atten = 5; + + if (rf->rf_type != BWI_RF_T_BCM2050) { + if (rf->rf_type == BWI_RF_T_BCM2053 && rf->rf_rev == 1) + tpctl->rf_atten = 6; + goto back; + } + + /* + * NB: If we reaches here and the card is BRCM_BCM4309G, + * then the card's PCI revision must >= 0x51 + */ + + /* BCM2050 RF */ + switch (rf->rf_rev) { + case 1: + if (phy->phy_mode == IEEE80211_MODE_11G) { + if (BWI_IS_BRCM_BCM4309G(sc) || BWI_IS_BRCM_BU4306(sc)) + tpctl->rf_atten = 3; + else + tpctl->rf_atten = 1; + } else { + if (BWI_IS_BRCM_BCM4309G(sc)) + tpctl->rf_atten = 7; + else + tpctl->rf_atten = 6; + } + break; + case 2: + if (phy->phy_mode == IEEE80211_MODE_11G) { + /* + * NOTE: Order of following conditions is critical + */ + if (BWI_IS_BRCM_BCM4309G(sc)) + tpctl->rf_atten = 3; + else if (BWI_IS_BRCM_BU4306(sc)) + tpctl->rf_atten = 5; + else if (sc->sc_bbp_id == BWI_BBPID_BCM4320) + tpctl->rf_atten = 4; + else + tpctl->rf_atten = 3; + } else { + tpctl->rf_atten = 6; + } + break; + case 4: + case 5: + tpctl->rf_atten = 1; + break; + case 8: + tpctl->rf_atten = 0x1a; + break; + } +back: + DPRINTF(sc, BWI_DBG_MAC | BWI_DBG_INIT | BWI_DBG_TXPOWER, + "bbp atten: %u, rf atten: %u, ctrl1: %u, ctrl2: %u\n", + tpctl->bbp_atten, tpctl->rf_atten, + tpctl->tp_ctrl1, tpctl->tp_ctrl2); +} + +void +bwi_mac_dummy_xmit(struct bwi_mac *mac) +{ +#define PACKET_LEN 5 + static const uint32_t packet_11a[PACKET_LEN] = + { 0x000201cc, 0x00d40000, 0x00000000, 0x01000000, 0x00000000 }; + static const uint32_t packet_11bg[PACKET_LEN] = + { 0x000b846e, 0x00d40000, 0x00000000, 0x01000000, 0x00000000 }; + + struct bwi_softc *sc = mac->mac_sc; + struct bwi_rf *rf = &mac->mac_rf; + const uint32_t *packet; + uint16_t val_50c; + int wait_max, i; + + if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) { + wait_max = 30; + packet = packet_11a; + val_50c = 1; + } else { + wait_max = 250; + packet = packet_11bg; + val_50c = 0; + } + + for (i = 0; i < PACKET_LEN; ++i) + TMPLT_WRITE_4(mac, i * 4, packet[i]); + + CSR_READ_4(sc, BWI_MAC_STATUS); /* dummy read */ + + CSR_WRITE_2(sc, 0x568, 0); + CSR_WRITE_2(sc, 0x7c0, 0); + CSR_WRITE_2(sc, 0x50c, val_50c); + CSR_WRITE_2(sc, 0x508, 0); + CSR_WRITE_2(sc, 0x50a, 0); + CSR_WRITE_2(sc, 0x54c, 0); + CSR_WRITE_2(sc, 0x56a, 0x14); + CSR_WRITE_2(sc, 0x568, 0x826); + CSR_WRITE_2(sc, 0x500, 0); + CSR_WRITE_2(sc, 0x502, 0x30); + + if (rf->rf_type == BWI_RF_T_BCM2050 && rf->rf_rev <= 5) + RF_WRITE(mac, 0x51, 0x17); + + for (i = 0; i < wait_max; ++i) { + if (CSR_READ_2(sc, 0x50e) & 0x80) + break; + DELAY(10); + } + for (i = 0; i < 10; ++i) { + if (CSR_READ_2(sc, 0x50e) & 0x400) + break; + DELAY(10); + } + for (i = 0; i < 10; ++i) { + if ((CSR_READ_2(sc, 0x690) & 0x100) == 0) + break; + DELAY(10); + } + + if (rf->rf_type == BWI_RF_T_BCM2050 && rf->rf_rev <= 5) + RF_WRITE(mac, 0x51, 0x37); +#undef PACKET_LEN +} + +void +bwi_mac_init_tpctl_11bg(struct bwi_mac *mac) +{ + struct bwi_softc *sc = mac->mac_sc; + struct bwi_phy *phy = &mac->mac_phy; + struct bwi_rf *rf = &mac->mac_rf; + struct bwi_tpctl tpctl_orig; + int restore_tpctl = 0; + + KASSERT(phy->phy_mode != IEEE80211_MODE_11A, + ("phy_mode %d", phy->phy_mode)); + + if (BWI_IS_BRCM_BU4306(sc)) + return; + + PHY_WRITE(mac, 0x28, 0x8018); + CSR_CLRBITS_2(sc, BWI_BBP_ATTEN, 0x20); + + if (phy->phy_mode == IEEE80211_MODE_11G) { + if ((phy->phy_flags & BWI_PHY_F_LINKED) == 0) + return; + PHY_WRITE(mac, 0x47a, 0xc111); + } + if (mac->mac_flags & BWI_MAC_F_TPCTL_INITED) + return; + + if (phy->phy_mode == IEEE80211_MODE_11B && phy->phy_rev >= 2 && + rf->rf_type == BWI_RF_T_BCM2050) { + RF_SETBITS(mac, 0x76, 0x84); + } else { + struct bwi_tpctl tpctl; + + /* Backup original TX power control variables */ + bcopy(&mac->mac_tpctl, &tpctl_orig, sizeof(tpctl_orig)); + restore_tpctl = 1; + + bcopy(&mac->mac_tpctl, &tpctl, sizeof(tpctl)); + tpctl.bbp_atten = 11; + tpctl.tp_ctrl1 = 0; +#ifdef notyet + if (rf->rf_rev >= 6 && rf->rf_rev <= 8) + tpctl.rf_atten = 31; + else +#endif + tpctl.rf_atten = 9; + + bwi_mac_set_tpctl_11bg(mac, &tpctl); + } + + bwi_mac_dummy_xmit(mac); + + mac->mac_flags |= BWI_MAC_F_TPCTL_INITED; + rf->rf_base_tssi = PHY_READ(mac, 0x29); + DPRINTF(sc, BWI_DBG_MAC | BWI_DBG_INIT | BWI_DBG_TXPOWER, + "base tssi %d\n", rf->rf_base_tssi); + + if (abs(rf->rf_base_tssi - rf->rf_idle_tssi) >= 20) { + device_printf(sc->sc_dev, "base tssi measure failed\n"); + mac->mac_flags |= BWI_MAC_F_TPCTL_ERROR; + } + + if (restore_tpctl) + bwi_mac_set_tpctl_11bg(mac, &tpctl_orig); + else + RF_CLRBITS(mac, 0x76, 0x84); + + bwi_rf_clear_tssi(mac); +} + +void +bwi_mac_detach(struct bwi_mac *mac) +{ + bwi_mac_fw_free(mac); +} + +static __inline int +bwi_fwimage_is_valid(struct bwi_softc *sc, const struct firmware *fw, + uint8_t fw_type) +{ + const struct bwi_fwhdr *hdr; + struct ifnet *ifp = sc->sc_ifp; + + if (fw->datasize < sizeof(*hdr)) { + if_printf(ifp, "invalid firmware (%s): invalid size %zu\n", + fw->name, fw->datasize); + return 0; + } + + hdr = (const struct bwi_fwhdr *)fw->data; + + if (fw_type != BWI_FW_T_IV) { + /* + * Don't verify IV's size, it has different meaning + */ + if (be32toh(hdr->fw_size) != fw->datasize - sizeof(*hdr)) { + if_printf(ifp, "invalid firmware (%s): size mismatch, " + "fw %u, real %zu\n", fw->name, + be32toh(hdr->fw_size), + fw->datasize - sizeof(*hdr)); + return 0; + } + } + + if (hdr->fw_type != fw_type) { + if_printf(ifp, "invalid firmware (%s): type mismatch, " + "fw \'%c\', target \'%c\'\n", fw->name, + hdr->fw_type, fw_type); + return 0; + } + + if (hdr->fw_gen != BWI_FW_GEN_1) { + if_printf(ifp, "invalid firmware (%s): wrong generation, " + "fw %d, target %d\n", fw->name, + hdr->fw_gen, BWI_FW_GEN_1); + return 0; + } + return 1; +} + +/* + * XXX Error cleanup + */ +static int +bwi_mac_fw_alloc(struct bwi_mac *mac) +{ + struct bwi_softc *sc = mac->mac_sc; + struct ifnet *ifp = sc->sc_ifp; + char fwname[64]; + int idx; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From thompsa at FreeBSD.org Sun May 3 04:28:45 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun May 3 04:28:52 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <200905030401.n4341h9W003803@svn.freebsd.org> References: <200905030401.n4341h9W003803@svn.freebsd.org> Message-ID: <20090503042838.GA11965@citylink.fud.org.nz> On Sun, May 03, 2009 at 04:01:43AM +0000, Warner Losh wrote: > Author: imp > Date: Sun May 3 04:01:43 2009 > New Revision: 191762 > URL: http://svn.freebsd.org/changeset/base/191762 > > Log: > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > Broadcom BCM43xx chipsets. Actually Sam did the initial port, I just tinkered later on. Kudos to him. Andrew From mav at FreeBSD.org Sun May 3 04:58:47 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sun May 3 04:58:58 2009 Subject: svn commit: r191763 - head/sys/dev/acpica Message-ID: <200905030458.n434wjrI004826@svn.freebsd.org> Author: mav Date: Sun May 3 04:58:44 2009 New Revision: 191763 URL: http://svn.freebsd.org/changeset/base/191763 Log: Remove unused variable and fix spelling in comment. Modified: head/sys/dev/acpica/acpi_cpu.c Modified: head/sys/dev/acpica/acpi_cpu.c ============================================================================== --- head/sys/dev/acpica/acpi_cpu.c Sun May 3 04:01:43 2009 (r191762) +++ head/sys/dev/acpica/acpi_cpu.c Sun May 3 04:58:44 2009 (r191763) @@ -79,7 +79,6 @@ struct acpi_cpu_softc { int cpu_features; /* Child driver supported features. */ /* Runtime state. */ int cpu_non_c3; /* Index of lowest non-C3 state. */ - int cpu_short_slp; /* Count of < 1us sleeps. */ u_int cpu_cx_stats[MAX_CX_STATES];/* Cx usage history. */ /* Values for sysctl. */ struct sysctl_ctx_list cpu_sysctl_ctx; @@ -882,7 +881,7 @@ acpi_cpu_idle() return; } - /* Find the lowest state that has small enougth latency. */ + /* Find the lowest state that has small enough latency. */ cx_next_idx = 0; for (i = sc->cpu_cx_lowest; i >= 0; i--) { if (sc->cpu_cx_states[i].trans_lat * 3 <= sc->cpu_prev_sleep) { From nwhitehorn at freebsd.org Sun May 3 05:15:31 2009 From: nwhitehorn at freebsd.org (Nathan Whitehorn) Date: Sun May 3 05:15:37 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <200905030401.n4341h9W003803@svn.freebsd.org> References: <200905030401.n4341h9W003803@svn.freebsd.org> Message-ID: <49FD1A5F.6090503@freebsd.org> Warner Losh wrote: > Author: imp > Date: Sun May 3 04:01:43 2009 > New Revision: 191762 > URL: http://svn.freebsd.org/changeset/base/191762 > > Log: > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > Broadcom BCM43xx chipsets. This driver uses the v3 firmware that > needs to be fetched separately. A port will be committed to create > the bwi firmware module. > > Thanks for this! It's quite a useful thing to have on PowerPC where NDIS is not an option. > Modified: head/sys/conf/files > ============================================================================== > --- head/sys/conf/files Sun May 3 02:37:13 2009 (r191761) > +++ head/sys/conf/files Sun May 3 04:01:43 2009 (r191762) > @@ -712,6 +712,11 @@ dev/buslogic/bt_eisa.c optional bt eisa > dev/buslogic/bt_isa.c optional bt isa > dev/buslogic/bt_mca.c optional bt mca > dev/buslogic/bt_pci.c optional bt pci > +dev/bwi/bwiirf.c optional bwi > I think you have too many i's here (should be bwirf.c not bwiirf.c). -Nathan From cvs-src at yandex.ru Sun May 3 05:21:40 2009 From: cvs-src at yandex.ru (R.Mahmatkhanov) Date: Sun May 3 05:21:47 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <200905030401.n4341h9W003803@svn.freebsd.org> References: <200905030401.n4341h9W003803@svn.freebsd.org> Message-ID: <49FD264F.3070104@yandex.ru> Warner Losh ?????: > Author: imp > Date: Sun May 3 04:01:43 2009 > New Revision: 191762 > URL: http://svn.freebsd.org/changeset/base/191762 > > Log: > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > Broadcom BCM43xx chipsets. This driver uses the v3 firmware that > needs to be fetched separately. A port will be committed to create > the bwi firmware module. > Yay! Great news! Any plans to MFC the driver? From mav at FreeBSD.org Sun May 3 06:25:38 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sun May 3 06:25:44 2009 Subject: svn commit: r191764 - head/sys/dev/acpica Message-ID: <200905030625.n436PbA3006490@svn.freebsd.org> Author: mav Date: Sun May 3 06:25:37 2009 New Revision: 191764 URL: http://svn.freebsd.org/changeset/base/191764 Log: Make dev.cpu.X.cx_usage sysctl also report current average of sleep time. Modified: head/sys/dev/acpica/acpi_cpu.c Modified: head/sys/dev/acpica/acpi_cpu.c ============================================================================== --- head/sys/dev/acpica/acpi_cpu.c Sun May 3 04:58:44 2009 (r191763) +++ head/sys/dev/acpica/acpi_cpu.c Sun May 3 06:25:37 2009 (r191764) @@ -1105,8 +1105,9 @@ acpi_cpu_usage_sysctl(SYSCTL_HANDLER_ARG sbuf_printf(&sb, "%u.%02u%% ", (u_int)(whole / sum), (u_int)(fract / sum)); } else - sbuf_printf(&sb, "0%% "); + sbuf_printf(&sb, "0.00%% "); } + sbuf_printf(&sb, "last %dus", sc->cpu_prev_sleep); sbuf_trim(&sb); sbuf_finish(&sb); sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req); From cokane at FreeBSD.org Sun May 3 13:21:01 2009 From: cokane at FreeBSD.org (Coleman Kane) Date: Sun May 3 13:21:08 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <20090503042838.GA11965@citylink.fud.org.nz> References: <200905030401.n4341h9W003803@svn.freebsd.org> <20090503042838.GA11965@citylink.fud.org.nz> Message-ID: <1241356730.1685.7.camel@localhost> On Sat, 2009-05-02 at 21:28 -0700, Andrew Thompson wrote: > On Sun, May 03, 2009 at 04:01:43AM +0000, Warner Losh wrote: > > Author: imp > > Date: Sun May 3 04:01:43 2009 > > New Revision: 191762 > > URL: http://svn.freebsd.org/changeset/base/191762 > > > > Log: > > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > > Broadcom BCM43xx chipsets. > > Actually Sam did the initial port, I just tinkered later on. Kudos to > him. > > Andrew Any idea what still needs to be done to support the 4321 b/g/n parts? Are they completely different than the others? -- Coleman Kane -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: This is a digitally signed message part Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090503/452a7854/attachment.pgp From dchagin at freebsd.org Sun May 3 16:36:17 2009 From: dchagin at freebsd.org (Chagin Dmitry) Date: Sun May 3 16:36:28 2009 Subject: svn commit: r191742 - head/sys/compat/linux In-Reply-To: References: <200905021051.n42ApetI083033@svn.freebsd.org> Message-ID: <20090503163607.GA30330@dchagin.static.corbina.ru> On Sun, May 03, 2009 at 04:57:03AM +0100, Robert Watson wrote: > > On Sat, 2 May 2009, Dmitry Chagin wrote: > > > Linux socketpair() call expects explicit specified protocol for > > AF_LOCAL domain unlike FreeBSD which expects 0 in this case. > ... > > @@ -859,7 +859,10 @@ linux_socketpair(struct thread *td, stru > > return (EINVAL); > > > > bsd_args.type = args->type; > > - bsd_args.protocol = args->protocol; > > + if (bsd_args.domain == AF_LOCAL && args->protocol == PF_UNIX) > > + bsd_args.protocol = 0; > > + else > > + bsd_args.protocol = args->protocol; > > bsd_args.rsv = (int *)PTRIN(args->rsv); > > return (socketpair(td, &bsd_args)); > > } > > I think I'd tweak this to be more like: > > if (bsd_args.domain == PF_LOCAL) { > if (bsd_args.protocol == PF_UNIX) > bsd_args.protocl = 0; > else if (bsd_args.protocol != 0) > return (EPROTONOSUPPORT); > } > > Because (a) the domain argument takes a protocol family in FreeBSD and you're > passing arguments into the BSD ABI without a mapping for that field, and (b) domain argument is mapped, I used value AF_LOCAL which is similar to the value of localdomain .dom_family member. It misleads :) > for the protocol family the use of PF_UNIX is weird but must be supported, so > I'd consider it to be an entirely mapped namespace and avoid passing through > values that aren't 0 to the BSD layer as it's not clear what that would mean. > agree. I send a new patch to the mentor. Thank you! -- Have fun! chd -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 196 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090503/d732eacc/attachment.pgp From mav at FreeBSD.org Sun May 3 17:47:22 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Sun May 3 17:47:35 2009 Subject: svn commit: r191766 - in head/sys: amd64/include amd64/isa i386/bios i386/include i386/isa i386/xen isa pc98/cbus Message-ID: <200905031747.n43HlLHD020054@svn.freebsd.org> Author: mav Date: Sun May 3 17:47:21 2009 New Revision: 191766 URL: http://svn.freebsd.org/changeset/base/191766 Log: Rename statclock_disable variable to atrtcclock_disable that it actually is, and hide it inside of atrtc driver. Add new tunable hint.atrtc.0.clock controlling it. Setting it to 0 disables using RTC clock as stat-/ profclock sources. Teach i386 and amd64 SMP platforms to emulate stat-/profclocks using i8254 hardclock, when LAPIC and RTC clocks are disabled. This allows to reduce global interrupt rate of idle system down to about 100 interrupts per core, permitting C3 and deeper C-states provide maximum CPU power efficiency. Modified: head/sys/amd64/include/clock.h head/sys/amd64/isa/clock.c head/sys/i386/bios/apm.c head/sys/i386/include/clock.h head/sys/i386/isa/clock.c head/sys/i386/xen/clock.c head/sys/isa/atrtc.c head/sys/isa/rtc.h head/sys/pc98/cbus/clock.c Modified: head/sys/amd64/include/clock.h ============================================================================== --- head/sys/amd64/include/clock.h Sun May 3 07:28:16 2009 (r191765) +++ head/sys/amd64/include/clock.h Sun May 3 17:47:21 2009 (r191766) @@ -15,7 +15,6 @@ * XXX large parts of the driver and its interface are misplaced. */ extern int clkintr_pending; -extern int statclock_disable; extern u_int i8254_freq; extern int i8254_max_count; extern uint64_t tsc_freq; Modified: head/sys/amd64/isa/clock.c ============================================================================== --- head/sys/amd64/isa/clock.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/amd64/isa/clock.c Sun May 3 17:47:21 2009 (r191766) @@ -76,7 +76,6 @@ __FBSDID("$FreeBSD$"); int clkintr_pending; static int pscnt = 1; static int psdiv = 1; -int statclock_disable; #ifndef TIMER_FREQ #define TIMER_FREQ 1193182 #endif @@ -91,6 +90,7 @@ static u_int32_t i8254_lastcount; static u_int32_t i8254_offset; static int (*i8254_pending)(struct intsrc *); static int i8254_ticked; +static int using_atrtc_timer; static int using_lapic_timer; /* Values for timerX_state: */ @@ -122,6 +122,8 @@ hardclockintr(struct trapframe *frame) hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); else hardclock_cpu(TRAPF_USERMODE(frame)); + if (!using_atrtc_timer) + statclockintr(frame); return (FILTER_HANDLED); } @@ -163,10 +165,7 @@ clkintr(struct trapframe *frame) if (smp_started) ipi_all_but_self(IPI_HARDCLOCK); #endif - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); - else - hardclock_cpu(TRAPF_USERMODE(frame)); + hardclockintr(frame); return (FILTER_HANDLED); } @@ -461,7 +460,6 @@ startrtclock() void cpu_initclocks() { - int diag; using_lapic_timer = lapic_setup_clock(); /* @@ -493,21 +491,17 @@ cpu_initclocks() * kernel clocks, then setup the RTC to periodically interrupt to * drive statclock() and profclock(). */ - if (!statclock_disable && !using_lapic_timer) { - diag = rtcin(RTC_DIAG); - if (diag != 0) - printf("RTC BIOS diagnostic error %b\n", - diag, RTCDG_BITS); - - /* Setting stathz to nonzero early helps avoid races. */ - stathz = RTC_NOPROFRATE; - profhz = RTC_PROFRATE; - - /* Enable periodic interrupts from the RTC. */ - intr_add_handler("rtc", 8, - (driver_filter_t *)rtcintr, NULL, NULL, - INTR_TYPE_CLK, NULL); - atrtc_enable_intr(); + if (!using_lapic_timer) { + using_atrtc_timer = atrtc_setup_clock(); + if (using_atrtc_timer) { + /* Enable periodic interrupts from the RTC. */ + intr_add_handler("rtc", 8, + (driver_filter_t *)rtcintr, NULL, NULL, + INTR_TYPE_CLK, NULL); + atrtc_enable_intr(); + } else { + profhz = stathz = hz; + } } init_TSC_tc(); Modified: head/sys/i386/bios/apm.c ============================================================================== --- head/sys/i386/bios/apm.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/i386/bios/apm.c Sun May 3 17:47:21 2009 (r191766) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include /* Used by the apm_saver screen saver module */ int apm_display(int newstate); @@ -1155,7 +1156,7 @@ apm_attach(device_t dev) cv_init(&sc->cv, "cbb cv"); if (device_get_flags(dev) & 0x20) - statclock_disable = 1; + atrtcclock_disable = 1; sc->initialized = 0; Modified: head/sys/i386/include/clock.h ============================================================================== --- head/sys/i386/include/clock.h Sun May 3 07:28:16 2009 (r191765) +++ head/sys/i386/include/clock.h Sun May 3 17:47:21 2009 (r191766) @@ -15,7 +15,6 @@ * XXX large parts of the driver and its interface are misplaced. */ extern int clkintr_pending; -extern int statclock_disable; extern u_int i8254_freq; extern int i8254_max_count; extern uint64_t tsc_freq; Modified: head/sys/i386/isa/clock.c ============================================================================== --- head/sys/i386/isa/clock.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/i386/isa/clock.c Sun May 3 17:47:21 2009 (r191766) @@ -91,7 +91,6 @@ __FBSDID("$FreeBSD$"); int clkintr_pending; static int pscnt = 1; static int psdiv = 1; -int statclock_disable; #ifndef TIMER_FREQ #define TIMER_FREQ 1193182 #endif @@ -106,6 +105,7 @@ static u_int32_t i8254_lastcount; static u_int32_t i8254_offset; static int (*i8254_pending)(struct intsrc *); static int i8254_ticked; +static int using_atrtc_timer; static int using_lapic_timer; /* Values for timerX_state: */ @@ -137,6 +137,8 @@ hardclockintr(struct trapframe *frame) hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); else hardclock_cpu(TRAPF_USERMODE(frame)); + if (!using_atrtc_timer) + statclockintr(frame); return (FILTER_HANDLED); } @@ -190,10 +192,7 @@ clkintr(struct trapframe *frame) if (smp_started) ipi_all_but_self(IPI_HARDCLOCK); #endif - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); - else - hardclock_cpu(TRAPF_USERMODE(frame)); + hardclockintr(frame); #ifdef DEV_MCA /* Reset clock interrupt by asserting bit 7 of port 0x61 */ if (MCA_system) @@ -508,7 +507,6 @@ startrtclock() void cpu_initclocks() { - int diag; #ifdef DEV_APIC using_lapic_timer = lapic_setup_clock(); @@ -542,21 +540,17 @@ cpu_initclocks() * kernel clocks, then setup the RTC to periodically interrupt to * drive statclock() and profclock(). */ - if (!statclock_disable && !using_lapic_timer) { - diag = rtcin(RTC_DIAG); - if (diag != 0) - printf("RTC BIOS diagnostic error %b\n", - diag, RTCDG_BITS); - - /* Setting stathz to nonzero early helps avoid races. */ - stathz = RTC_NOPROFRATE; - profhz = RTC_PROFRATE; - - /* Enable periodic interrupts from the RTC. */ - intr_add_handler("rtc", 8, - (driver_filter_t *)rtcintr, NULL, NULL, - INTR_TYPE_CLK, NULL); - atrtc_enable_intr(); + if (!using_lapic_timer) { + using_atrtc_timer = atrtc_setup_clock(); + if (using_atrtc_timer) { + /* Enable periodic interrupts from the RTC. */ + intr_add_handler("rtc", 8, + (driver_filter_t *)rtcintr, NULL, NULL, + INTR_TYPE_CLK, NULL); + atrtc_enable_intr(); + } else { + profhz = stathz = hz; + } } init_TSC_tc(); Modified: head/sys/i386/xen/clock.c ============================================================================== --- head/sys/i386/xen/clock.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/i386/xen/clock.c Sun May 3 17:47:21 2009 (r191766) @@ -120,7 +120,6 @@ int adjkerntz; /* local offset from GMT int clkintr_pending; int pscnt = 1; int psdiv = 1; -int statclock_disable; int wall_cmos_clock; u_int timer_freq = TIMER_FREQ; static int independent_wallclock; Modified: head/sys/isa/atrtc.c ============================================================================== --- head/sys/isa/atrtc.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/isa/atrtc.c Sun May 3 17:47:21 2009 (r191766) @@ -49,6 +49,8 @@ __FBSDID("$FreeBSD$"); #define RTC_LOCK mtx_lock_spin(&clock_lock) #define RTC_UNLOCK mtx_unlock_spin(&clock_lock) +int atrtcclock_disable = 0; + static int rtc_reg = -1; static u_char rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF; static u_char rtc_statusb = RTCSB_24HR; @@ -133,6 +135,27 @@ atrtc_restore(void) rtcin(RTC_INTR); } +int +atrtc_setup_clock(void) +{ + int diag; + + if (atrtcclock_disable) + return (0); + + diag = rtcin(RTC_DIAG); + if (diag != 0) { + printf("RTC BIOS diagnostic error %b\n", + diag, RTCDG_BITS); + return (0); + } + + stathz = RTC_NOPROFRATE; + profhz = RTC_PROFRATE; + + return (1); +} + /********************************************************************** * RTC driver for subr_rtc */ @@ -173,6 +196,7 @@ static int atrtc_attach(device_t dev) { struct atrtc_softc *sc; + int i; /* * Not that we need them or anything, but grab our resources @@ -187,6 +211,8 @@ atrtc_attach(device_t dev) &sc->intr_rid, 8, 8, 1, RF_ACTIVE))) device_printf(dev,"Warning: Couldn't map Interrupt.\n"); clock_register(dev, 1000000); + if (resource_int_value("atrtc", 0, "clock", &i) == 0 && i == 0) + atrtcclock_disable = 1; return(0); } Modified: head/sys/isa/rtc.h ============================================================================== --- head/sys/isa/rtc.h Sun May 3 07:28:16 2009 (r191765) +++ head/sys/isa/rtc.h Sun May 3 17:47:21 2009 (r191766) @@ -113,6 +113,8 @@ #ifdef _KERNEL extern struct mtx clock_lock; +extern int atrtcclock_disable; +int atrtc_setup_clock(void); int rtcin(int reg); void atrtc_start(void); void atrtc_rate(unsigned rate); Modified: head/sys/pc98/cbus/clock.c ============================================================================== --- head/sys/pc98/cbus/clock.c Sun May 3 07:28:16 2009 (r191765) +++ head/sys/pc98/cbus/clock.c Sun May 3 17:47:21 2009 (r191766) @@ -87,7 +87,6 @@ __FBSDID("$FreeBSD$"); #define TIMER_DIV(x) ((i8254_freq + (x) / 2) / (x)) int clkintr_pending; -int statclock_disable; #ifndef TIMER_FREQ #define TIMER_FREQ 2457600 #endif From kib at FreeBSD.org Sun May 3 17:51:39 2009 From: kib at FreeBSD.org (Konstantin Belousov) Date: Sun May 3 17:51:45 2009 Subject: svn commit: r191767 - in stable/7/lib/libc: . stdlib string Message-ID: <200905031751.n43HpcGV020175@svn.freebsd.org> Author: kib Date: Sun May 3 17:51:38 2009 New Revision: 191767 URL: http://svn.freebsd.org/changeset/base/191767 Log: MFC r185514 (by jasone): Fix a lock order reversal bug that could cause deadlock during fork(2). Reported and tested by: makc Approved by: re (kensmith) Modified: stable/7/lib/libc/ (props changed) stable/7/lib/libc/stdlib/malloc.c stable/7/lib/libc/string/ffsll.c (props changed) stable/7/lib/libc/string/flsll.c (props changed) Modified: stable/7/lib/libc/stdlib/malloc.c ============================================================================== --- stable/7/lib/libc/stdlib/malloc.c Sun May 3 17:47:21 2009 (r191766) +++ stable/7/lib/libc/stdlib/malloc.c Sun May 3 17:51:38 2009 (r191767) @@ -4715,16 +4715,41 @@ _malloc_thread_cleanup(void) void _malloc_prefork(void) { - unsigned i; + bool again; + unsigned i, j; + arena_t *larenas[narenas], *tarenas[narenas]; /* Acquire all mutexes in a safe order. */ - malloc_spin_lock(&arenas_lock); - for (i = 0; i < narenas; i++) { - if (arenas[i] != NULL) - malloc_spin_lock(&arenas[i]->lock); - } - malloc_spin_unlock(&arenas_lock); + /* + * arenas_lock must be acquired after all of the arena mutexes, in + * order to avoid potential deadlock with arena_lock_balance[_hard](). + * Since arenas_lock protects the arenas array, the following code has + * to race with arenas_extend() callers until it succeeds in locking + * all arenas before locking arenas_lock. + */ + memset(larenas, 0, sizeof(arena_t *) * narenas); + do { + again = false; + + malloc_spin_lock(&arenas_lock); + for (i = 0; i < narenas; i++) { + if (arenas[i] != larenas[i]) { + memcpy(tarenas, arenas, sizeof(arena_t *) * + narenas); + malloc_spin_unlock(&arenas_lock); + for (j = 0; j < narenas; j++) { + if (larenas[j] != tarenas[j]) { + larenas[j] = tarenas[j]; + malloc_spin_lock( + &larenas[j]->lock); + } + } + again = true; + break; + } + } + } while (again); malloc_mutex_lock(&base_mtx); @@ -4739,6 +4764,7 @@ void _malloc_postfork(void) { unsigned i; + arena_t *larenas[narenas]; /* Release all mutexes, now that fork() has completed. */ @@ -4750,12 +4776,12 @@ _malloc_postfork(void) malloc_mutex_unlock(&base_mtx); - malloc_spin_lock(&arenas_lock); + memcpy(larenas, arenas, sizeof(arena_t *) * narenas); + malloc_spin_unlock(&arenas_lock); for (i = 0; i < narenas; i++) { - if (arenas[i] != NULL) - malloc_spin_unlock(&arenas[i]->lock); + if (larenas[i] != NULL) + malloc_spin_unlock(&larenas[i]->lock); } - malloc_spin_unlock(&arenas_lock); } /* From kostikbel at gmail.com Sun May 3 17:55:17 2009 From: kostikbel at gmail.com (Kostik Belousov) Date: Sun May 3 17:55:23 2009 Subject: svn commit: r191767 - in stable/7/lib/libc: . stdlib string In-Reply-To: <200905031751.n43HpcGV020175@svn.freebsd.org> References: <200905031751.n43HpcGV020175@svn.freebsd.org> Message-ID: <20090503175506.GM17826@deviant.kiev.zoral.com.ua> On Sun, May 03, 2009 at 05:51:38PM +0000, Konstantin Belousov wrote: > Author: kib > Date: Sun May 3 17:51:38 2009 > New Revision: 191767 > URL: http://svn.freebsd.org/changeset/base/191767 > > Log: > MFC r185514 (by jasone): > Fix a lock order reversal bug that could cause deadlock during fork(2). > > Reported and tested by: makc > Approved by: re (kensmith) It was diagnosed and tested after the 7.2 release passed the point of no return. We expect to issue errata notice after the patch settles in stable/7 shortly. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090503/b5eaf317/attachment.pgp From thompsa at FreeBSD.org Sun May 3 17:58:10 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun May 3 17:58:16 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <1241356730.1685.7.camel@localhost> References: <200905030401.n4341h9W003803@svn.freebsd.org> <20090503042838.GA11965@citylink.fud.org.nz> <1241356730.1685.7.camel@localhost> Message-ID: <20090503175804.GC11965@citylink.fud.org.nz> On Sun, May 03, 2009 at 09:18:50AM -0400, Coleman Kane wrote: > On Sat, 2009-05-02 at 21:28 -0700, Andrew Thompson wrote: > > On Sun, May 03, 2009 at 04:01:43AM +0000, Warner Losh wrote: > > > Author: imp > > > Date: Sun May 3 04:01:43 2009 > > > New Revision: 191762 > > > URL: http://svn.freebsd.org/changeset/base/191762 > > > > > > Log: > > > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > > > Broadcom BCM43xx chipsets. > > > > Actually Sam did the initial port, I just tinkered later on. Kudos to > > him. > > > > Andrew > > Any idea what still needs to be done to support the 4321 b/g/n parts? > Are they completely different than the others? I believe we need to move to the v4 firmware for that. Andrew From imp at bsdimp.com Sun May 3 18:12:34 2009 From: imp at bsdimp.com (M. Warner Losh) Date: Sun May 3 18:12:40 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <20090503175804.GC11965@citylink.fud.org.nz> References: <20090503042838.GA11965@citylink.fud.org.nz> <1241356730.1685.7.camel@localhost> <20090503175804.GC11965@citylink.fud.org.nz> Message-ID: <20090503.121107.-1437680051.imp@bsdimp.com> In message: <20090503175804.GC11965@citylink.fud.org.nz> Andrew Thompson writes: : On Sun, May 03, 2009 at 09:18:50AM -0400, Coleman Kane wrote: : > On Sat, 2009-05-02 at 21:28 -0700, Andrew Thompson wrote: : > > On Sun, May 03, 2009 at 04:01:43AM +0000, Warner Losh wrote: : > > > Author: imp : > > > Date: Sun May 3 04:01:43 2009 : > > > New Revision: 191762 : > > > URL: http://svn.freebsd.org/changeset/base/191762 : > > > : > > > Log: : > > > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for : > > > Broadcom BCM43xx chipsets. : > > : > > Actually Sam did the initial port, I just tinkered later on. Kudos to : > > him. : > > : > > Andrew : > : > Any idea what still needs to be done to support the 4321 b/g/n parts? : > Are they completely different than the others? : : I believe we need to move to the v4 firmware for that. I believe so too.... Warner From thompsa at FreeBSD.org Sun May 3 18:29:05 2009 From: thompsa at FreeBSD.org (Andrew Thompson) Date: Sun May 3 18:29:11 2009 Subject: svn commit: r191768 - head/sys/net80211 Message-ID: <200905031829.n43IT4t9020977@svn.freebsd.org> Author: thompsa Date: Sun May 3 18:29:04 2009 New Revision: 191768 URL: http://svn.freebsd.org/changeset/base/191768 Log: Relax the condition for printing the lost state transition message. The new state will be set before the EXT_STATEWAIT flag is cleared and its ok to transition again at that point. Modified: head/sys/net80211/ieee80211_proto.c Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Sun May 3 17:51:38 2009 (r191767) +++ head/sys/net80211/ieee80211_proto.c Sun May 3 18:29:04 2009 (r191768) @@ -1722,19 +1722,21 @@ ieee80211_new_state_locked(struct ieee80 * state changes until this is completed. */ return -1; - } + } else if (vap->iv_state != vap->iv_nstate) { #if 0 - /* Warn if the previous state hasn't completed. */ - IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, - "%s: pending %s -> %s transition lost\n", __func__, - ieee80211_state_name[vap->iv_state], - ieee80211_state_name[vap->iv_nstate]); + /* Warn if the previous state hasn't completed. */ + IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, + "%s: pending %s -> %s transition lost\n", __func__, + ieee80211_state_name[vap->iv_state], + ieee80211_state_name[vap->iv_nstate]); #else - /* XXX temporarily enable to identify issues */ - if_printf(vap->iv_ifp, "%s: pending %s -> %s transition lost\n", - __func__, ieee80211_state_name[vap->iv_state], - ieee80211_state_name[vap->iv_nstate]); + /* XXX temporarily enable to identify issues */ + if_printf(vap->iv_ifp, + "%s: pending %s -> %s transition lost\n", + __func__, ieee80211_state_name[vap->iv_state], + ieee80211_state_name[vap->iv_nstate]); #endif + } } nrunning = nscanning = 0; From ddkprog at yahoo.com Sun May 3 18:43:56 2009 From: ddkprog at yahoo.com (ddk ddk) Date: Sun May 3 18:44:28 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <20090503.121107.-1437680051.imp@bsdimp.com> Message-ID: <21791.87592.qm@web59103.mail.re1.yahoo.com> --- On Sun, 5/3/09, M. Warner Losh wrote: > From: M. Warner Losh > Subject: Re: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi > To: thompsa@FreeBSD.org > Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, cokane@FreeBSD.org > Date: Sunday, May 3, 2009, 9:11 PM > In message: > <20090503175804.GC11965@citylink.fud.org.nz> > Andrew Thompson > writes: > : On Sun, May 03, 2009 at 09:18:50AM -0400, Coleman Kane > wrote: > : > On Sat, 2009-05-02 at 21:28 -0700, Andrew Thompson > wrote: > : > > On Sun, May 03, 2009 at 04:01:43AM +0000, > Warner Losh wrote: > : > > > Author: imp > : > > > Date: Sun May 3 04:01:43 2009 > : > > > New Revision: 191762 > : > > > URL: > http://svn.freebsd.org/changeset/base/191762 > : > > > > : > > > Log: > : > > > Bring in Andrew Thompson's port of > Sepherosa Ziehau's bwi driver for > : > > > Broadcom BCM43xx chipsets. > : > > > : > > Actually Sam did the initial port, I just > tinkered later on. Kudos to > : > > him. > : > > > : > > Andrew > : > > : > Any idea what still needs to be done to support the > 4321 b/g/n parts? > : > Are they completely different than the others? > : > : I believe we need to move to the v4 firmware for that. > > I believe so too.... > > Warner http://bcm.sipsolutions.net/ non exist correct http://bcm-specs.sipsolutions.net/ From cokane at FreeBSD.org Sun May 3 18:51:48 2009 From: cokane at FreeBSD.org (Coleman Kane) Date: Sun May 3 18:51:54 2009 Subject: svn commit: r191762 - in head/sys: conf dev/bwi modules/bwi In-Reply-To: <20090503.121107.-1437680051.imp@bsdimp.com> References: <20090503042838.GA11965@citylink.fud.org.nz> <1241356730.1685.7.camel@localhost> <20090503175804.GC11965@citylink.fud.org.nz> <20090503.121107.-1437680051.imp@bsdimp.com> Message-ID: <1241376567.1655.3.camel@localhost> On Sun, 2009-05-03 at 12:11 -0600, M. Warner Losh wrote: > In message: <20090503175804.GC11965@citylink.fud.org.nz> > Andrew Thompson writes: > : On Sun, May 03, 2009 at 09:18:50AM -0400, Coleman Kane wrote: > : > On Sat, 2009-05-02 at 21:28 -0700, Andrew Thompson wrote: > : > > On Sun, May 03, 2009 at 04:01:43AM +0000, Warner Losh wrote: > : > > > Author: imp > : > > > Date: Sun May 3 04:01:43 2009 > : > > > New Revision: 191762 > : > > > URL: http://svn.freebsd.org/changeset/base/191762 > : > > > > : > > > Log: > : > > > Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for > : > > > Broadcom BCM43xx chipsets. > : > > > : > > Actually Sam did the initial port, I just tinkered later on. Kudos to > : > > him. > : > > > : > > Andrew > : > > : > Any idea what still needs to be done to support the 4321 b/g/n parts? > : > Are they completely different than the others? > : > : I believe we need to move to the v4 firmware for that. > > I believe so too.... > > Warner > Well, I use one of these parts (0x14e4:0x4328) with if_ndis every day and I'd like to ditch that. I'm kind of ignorant of the bwi project, but would like to know where I could go to learn more.... I'd love to help. -- Coleman Kane -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: This is a digitally signed message part Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090503/2cc2441b/attachment.pgp From hrs at FreeBSD.org Sun May 3 21:21:18 2009 From: hrs at FreeBSD.org (Hiroki Sato) Date: Sun May 3 21:21:35 2009 Subject: svn commit: r191769 - stable/7/release/doc/en_US.ISO8859-1/errata Message-ID: <200905032121.n43LLHif024824@svn.freebsd.org> Author: hrs Date: Sun May 3 21:21:17 2009 New Revision: 191769 URL: http://svn.freebsd.org/changeset/base/191769 Log: Add an entry for a lock order reversal that can cause a deadlock. Reviewed by: kib Approved by: re (implicit) Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml ============================================================================== --- stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Sun May 3 18:29:04 2009 (r191768) +++ stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Sun May 3 21:21:17 2009 (r191769) @@ -169,6 +169,14 @@ workaround, you can boot using the bootonly or livefs CDROM and then swap in disc1 once sysinstall starts. + [20090504] A lock handling error has been found in + interaction between &man.malloc.3; implementation and threading + library. When a multi-threaded process calls the &man.fork.2; + system call in a thread and the &man.malloc.3; function in + another thread, it can cause a deadlock in the child process. + An Errata Notice to fix this problem is planned for this problem + after the release. + Late-Breaking News and Corrections From kensmith at FreeBSD.org Mon May 4 00:19:01 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Mon May 4 00:19:07 2009 Subject: svn commit: r191770 - stable/7/sys/conf Message-ID: <200905040019.n440J0JZ028259@svn.freebsd.org> Author: kensmith Date: Mon May 4 00:19:00 2009 New Revision: 191770 URL: http://svn.freebsd.org/changeset/base/191770 Log: 7.2-RELEASE is done, shift over to -STABLE. Approved by: re (implicit) Modified: stable/7/sys/conf/newvers.sh Modified: stable/7/sys/conf/newvers.sh ============================================================================== --- stable/7/sys/conf/newvers.sh Sun May 3 21:21:17 2009 (r191769) +++ stable/7/sys/conf/newvers.sh Mon May 4 00:19:00 2009 (r191770) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="7.2" -BRANCH="PRERELEASE" +BRANCH="STABLE" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi From obrien at FreeBSD.org Mon May 4 00:37:46 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Mon May 4 00:38:00 2009 Subject: svn commit: r191771 - in head: contrib/file contrib/file/Magdir contrib/file/tests lib/libmagic usr.bin/file Message-ID: <200905040037.n440biJ1028655@svn.freebsd.org> Author: obrien Date: Mon May 4 00:37:44 2009 New Revision: 191771 URL: http://svn.freebsd.org/changeset/base/191771 Log: Merge vendor/file/dist@191739, bringing FILE 5.00 to 8-CURRENT. Added: head/contrib/file/Magdir/wireless - copied unchanged from r191769, vendor/file/dist/Magdir/wireless head/contrib/file/Makefile.am-src - copied unchanged from r191769, vendor/file/dist/Makefile.am-src head/contrib/file/cdf.c - copied unchanged from r191769, vendor/file/dist/cdf.c head/contrib/file/cdf.h - copied unchanged from r191769, vendor/file/dist/cdf.h head/contrib/file/cdf_time.c - copied unchanged from r191769, vendor/file/dist/cdf_time.c head/contrib/file/encoding.c - copied unchanged from r191769, vendor/file/dist/encoding.c head/contrib/file/readcdf.c - copied unchanged from r191769, vendor/file/dist/readcdf.c Deleted: head/contrib/file/.cvsignore head/usr.bin/file/config.h Modified: head/contrib/file/ (props changed) head/contrib/file/ChangeLog head/contrib/file/Magdir/animation head/contrib/file/Magdir/audio head/contrib/file/Magdir/cafebabe head/contrib/file/Magdir/compress head/contrib/file/Magdir/elf head/contrib/file/Magdir/epoc head/contrib/file/Magdir/filesystems head/contrib/file/Magdir/graphviz head/contrib/file/Magdir/images head/contrib/file/Magdir/jpeg head/contrib/file/Magdir/mach head/contrib/file/Magdir/macintosh head/contrib/file/Magdir/msdos head/contrib/file/Magdir/perl head/contrib/file/Magdir/printer head/contrib/file/Magdir/timezone head/contrib/file/Magdir/xwindows head/contrib/file/Makefile.am head/contrib/file/Makefile.in head/contrib/file/README head/contrib/file/TODO head/contrib/file/apprentice.c head/contrib/file/apptype.c head/contrib/file/ascmagic.c head/contrib/file/asprintf.c (contents, props changed) head/contrib/file/compress.c head/contrib/file/config.h.in head/contrib/file/configure head/contrib/file/configure.ac head/contrib/file/elfclass.h (props changed) head/contrib/file/file.c head/contrib/file/file.h head/contrib/file/file.man head/contrib/file/file_opts.h head/contrib/file/fsmagic.c head/contrib/file/funcs.c head/contrib/file/getopt_long.c (contents, props changed) head/contrib/file/is_tar.c head/contrib/file/libmagic.man head/contrib/file/magic.c head/contrib/file/magic.h head/contrib/file/magic.man head/contrib/file/mygetopt.h (props changed) head/contrib/file/patchlevel.h head/contrib/file/print.c head/contrib/file/readelf.c head/contrib/file/softmagic.c head/contrib/file/tests/Makefile.am (props changed) head/contrib/file/tests/Makefile.in (props changed) head/contrib/file/tests/test.c (props changed) head/contrib/file/vasprintf.c (contents, props changed) head/lib/libmagic/Makefile head/lib/libmagic/config.h head/usr.bin/file/Makefile Modified: head/contrib/file/ChangeLog ============================================================================== --- head/contrib/file/ChangeLog Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/ChangeLog Mon May 4 00:37:44 2009 (r191771) @@ -1,9 +1,105 @@ +2008-12-12 15:50 Christos Zoulas + + * fix initial offset calculation for non 4K sector files + + * add loop limits to avoid DoS attacks by constructing + looping sector references. + +2008-12-03 13:05 Christos Zoulas + + * fix memory botches on cdf file parsing. + + * exit with non-zero value for any error, not just for the last + file processed. + +2008-11-09 20:42 Charles Longeau + + * Replace all str{cpy,cat} functions with strl{cpy,cat} + * Ensure that strl{cpy,cat} are included in libmagic, + as needed. + +2008-11-06 18:18 Christos Zoulas + + * Handle ID3 format files. + +2008-11-06 23:00 Reuben Thomas + + * Fix --mime, --mime-type and --mime-encoding under new scheme. + + * Rename "ascii" to "text" and add "encoding" test. + + * Return a precise ("utf-16le" or "utf-16be") MIME charset for + UTF-16. + + * Fix error in comment caused by automatic indentation adding + words! + +2008-11-06 10:35 Christos Zoulas + + * use memchr instead of strchr because the string + might not be NUL terminated (Scott MacVicar) + +2008-11-03 07:31 Reuben Thomas + + * Fix a printf with a non-literal format string. + + * Fix formatting and punctuation of help for "--apple". + +2008-10-30 11:00 Reuben Thomas + + * Correct words counts in comments of struct magic. + + * Fix handle_annotation to allow both Apple and MIME types to be + printed, and to return correct code if MIME type is + printed (1, not 0) or if there's an error (-1 not 1). + + * Fix output of charset for MIME type (precede with semi-colon; + fixes Debian bug #501460). + + * Fix potential attacks via conversion specifications in magic + strings. + + * Add a FIXME for Debian bug #488562 (magic files should be + read in a defined order, by sorting the names). + +2008-10-18 16:45 Christos Zoulas + + * Added APPLE file creator/type + +2008-10-12 10:20 Christos Zoulas + + * Added CDF parsing + +2008-10-09 16:40 Christos Zoulas + + * filesystem and msdos patches (Joerg Jenderek) + +2008-10-09 13:20 Christos Zoulas + + * correct --exclude documentation issues: remove troff and fortran + and rename "token" to "tokens". (Randy McMurchy) + +2008-10-01 10:30 Christos Zoulas + + * Read ~/.magic in addition to the default magic file not instead + of, as documented in the man page. + +2008-09-10 21:30 Reuben Thomas + + * Comment out graphviz patterns, as they match too many files. + 2008-08-30 12:54 Christos Zoulas * Don't eat trailing \n in magic enties. * Cast defines to allow compilation using a c++ compiler. +2008-08-25 23:56 Reuben Thomas + + * Add text/x-lua MIME type for Lua scripts. + + * Escape { in regex in graphviz patterns. + 2008-07-26 00:59 Reuben Thomas * Add MIME types for special files. @@ -55,22 +151,22 @@ 2008-05-06 00:13 Robert Byrnes - * src/Makefile.am: + * src/Makefile.am: Ensure that getopt_long and [v]asprintf are included in libmagic, as needed. Remove unnecessary EXTRA_DIST. - * src/Makefile.in: + * src/Makefile.in: Rerun automake. - * src/vasprintf.c (dispatch): + * src/vasprintf.c (dispatch): Fix variable precision bug: be sure to step past '*'. - * src/vasprintf.c (core): + * src/vasprintf.c (core): Remove unreachable code. - * src/apprentice.c (set_test_type): + * src/apprentice.c (set_test_type): Add cast to avoid compiler warning. 2008-04-22 23:45 Christos Zoulas @@ -81,12 +177,12 @@ 2008-04-04 11:00 Christos Zoulas - * >= <= is not supported, so fix the magic and warn about it. + * >= <= is not supported, so fix the magic and warn about it. reported by: Thien-Thi Nguyen 2008-03-27 16:16 Robert Byrnes - * src/readelf.c (donote): + * src/readelf.c (donote): ELF core file command name/line bug fixes and enhancements: Try larger offsets first to avoid false matches @@ -112,7 +208,7 @@ * Clarify UTF-8 BOM message (Reuben Thomas) * Add HTML comment to token list in names.h - + 2007-02-04 15:50 Christos Zoulas * Debian fixes (Reuben Thomas) @@ -152,7 +248,7 @@ 2007-10-28 20:48 Christos Zoulas - * float and double magic support (Behan Webster) + * float and double magic support (Behan Webster) 2007-10-28 20:48 Christos Zoulas @@ -199,7 +295,7 @@ be easily parsed: mimetype [charset=character-set] [encoding=encoding-mime-type] - Remove spurious extra text from some MIME type printouts + Remove spurious extra text from some MIME type printouts (mostly in is_tar). Fix one case where -i produced nothing at all (for a 1-byte file, @@ -229,7 +325,7 @@ 2007-03-15 10:51 Christos Zoulas * fix fortran and nroff reversed tests (Dmitry V. Levin) - + * fix exclude option (Dmitry V. Levin) 2007-02-08 17:30 Christos Zoulas @@ -248,7 +344,7 @@ * Add exclude flag. 2007-01-18 05:29 Anon Ymous - + * Move the "type" detection code from parse() into its own table driven routine. This avoids maintaining multiple lists in file.h. @@ -256,7 +352,7 @@ * Add an optional conditional field (ust before the type field). This code is wrapped in "#ifdef ENABLE_CONDITIONALS" as it is likely to go away. - + 2007-01-16 23:24 Anon Ymous * Fix an initialization bug in check_mem(). @@ -327,7 +423,7 @@ 2006-12-08 16:32 Christos Zoulas * store and print the line number of the magic - entry for debugging. + entry for debugging. * if the magic entry did not print anything, don't treat it as a match @@ -342,7 +438,7 @@ file_softmagic. 2006-11-25 13:35 Christos Zoulas - + * Don't store the current offset in the magic struct, because it needs to be restored and it was not done properly all the time. Bug @@ -432,7 +528,7 @@ * Look for note sections in non executables. 2005-09-20 13:33 Christos Zoulas - + * Don't print SVR4 Style in core files multiple times (Radek Vokál) @@ -443,9 +539,9 @@ 2005-08-18 09:53 Christos Zoulas * Remove erroreous mention of /etc/magic in the file man page - This is gentoo bug 101639. (Mike Frysinger) + This is gentoo bug 101639. (Mike Frysinger) - * Cross-compile support and detection (Mike Frysinger) + * Cross-compile support and detection (Mike Frysinger) 2005-08-12 10:17 Christos Zoulas @@ -477,20 +573,20 @@ * Avoid NULL pointer dereference in time conversion. 2005-03-06 00:00 Joerg Walter - + * Add indirect magic offset support, and search mode. 2005-01-12 00:00 Stepan Kasal - * src/ascmagic.c (file_ascmagic): Fix three bugs about text files: - If a CRLF text file happens to have CR at offset HOWMANY - 1 - (currently 0xffff), it should not be counted as CR line - terminator. - If a line has length exactly MAXLINELEN, it should not yet be - treated as a ``very long line'', as MAXLINELEN is ``longest sane - line length''. - With CRLF, the line length was not computed correctly, and even - lines of length MAXLINELEN - 1 were treated as ``very long''. + * src/ascmagic.c (file_ascmagic): Fix three bugs about text files: + If a CRLF text file happens to have CR at offset HOWMANY - 1 + (currently 0xffff), it should not be counted as CR line + terminator. + If a line has length exactly MAXLINELEN, it should not yet be + treated as a ``very long line'', as MAXLINELEN is ``longest sane + line length''. + With CRLF, the line length was not computed correctly, and even + lines of length MAXLINELEN - 1 were treated as ``very long''. 2004-12-07 14:15 Christos Zoulas @@ -525,12 +621,12 @@ * Remove 3rd and 4th copyright clause; approved by Ian Darwin. - * Fix small memory leaks; caught by: Tamas Sarlos + * Fix small memory leaks; caught by: Tamas Sarlos 2004-07-24 16:33 Christos Zoulas - * magic.mime update Danny Milosavljevic + * magic.mime update Danny Milosavljevic * FreeBSD version update Oliver Eikemeier Modified: head/contrib/file/Magdir/animation ============================================================================== --- head/contrib/file/Magdir/animation Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/animation Mon May 4 00:37:44 2009 (r191771) @@ -325,6 +325,7 @@ # MP2, M1A 0 beshort&0xFFFE 0xFFFC MPEG ADTS, layer II, v1 +!:mime audio/mpeg # rates >2 byte&0xF0 0x10 \b, 32 kbps >2 byte&0xF0 0x20 \b, 48 kbps @@ -399,6 +400,7 @@ # MP3, M2A 0 beshort&0xFFFE 0xFFF2 MPEG ADTS, layer III, v2 +!:mime audio/mpeg # rate >2 byte&0xF0 0x10 \b, 8 kbps >2 byte&0xF0 0x20 \b, 16 kbps @@ -790,3 +792,24 @@ 0 belong 0x00000001 >4 byte&0x1F 0x07 !:mime video/h264 + +# Type: Bink Video +# URL: http://wiki.multimedia.cx/index.php?title=3DBink_Container +# From: 2008-07-18 +0 string BIK Bink Video +>3 regex =[a-z] rev.%s +#>4 ulelong x size %d +>20 ulelong x \b, %d +>24 ulelong x \bx%d +>8 ulelong x \b, %d frames +>32 ulelong x at rate %d/ +>28 ulelong >1 \b%d +>40 ulelong =0 \b, no audio +>40 ulelong !0 \b, %d audio track +>>40 ulelong !1 \bs +# follow properties of the first audio track only +>>48 uleshort x %dHz +>>51 byte&0x20 0 mono +>>51 byte&0x20 !0 stereo +#>>51 byte&0x10 0 FFT +#>>51 byte&0x10 !0 DCT Modified: head/contrib/file/Magdir/audio ============================================================================== --- head/contrib/file/Magdir/audio Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/audio Mon May 4 00:37:44 2009 (r191771) @@ -286,43 +286,14 @@ # SGI SoundTrack 0 string _SGI_SoundTrack SGI SoundTrack project file # ID3 version 2 tags -0 string ID3 Audio file with ID3 version 2. -# ??? Normally such a file is an MP3 file, but this will give false positives -!:mime audio/mpeg ->3 ubyte <0xff \b%d -#>4 ubyte <0xff \b%d tag ->2584 string fLaC \b, FLAC encoding ->>2588 byte&0x7f >0 \b, unknown version ->>2588 byte&0x7f 0 \b -# some common bits/sample values ->>>2600 beshort&0x1f0 0x030 \b, 4 bit ->>>2600 beshort&0x1f0 0x050 \b, 6 bit ->>>2600 beshort&0x1f0 0x070 \b, 8 bit ->>>2600 beshort&0x1f0 0x0b0 \b, 12 bit ->>>2600 beshort&0x1f0 0x0f0 \b, 16 bit ->>>2600 beshort&0x1f0 0x170 \b, 24 bit ->>>2600 byte&0xe 0x0 \b, mono ->>>2600 byte&0xe 0x2 \b, stereo ->>>2600 byte&0xe 0x4 \b, 3 channels ->>>2600 byte&0xe 0x6 \b, 4 channels ->>>2600 byte&0xe 0x8 \b, 5 channels ->>>2600 byte&0xe 0xa \b, 6 channels ->>>2600 byte&0xe 0xc \b, 7 channels ->>>2600 byte&0xe 0xe \b, 8 channels -# some common sample rates ->>>2597 belong&0xfffff0 0x0ac440 \b, 44.1 kHz ->>>2597 belong&0xfffff0 0x0bb800 \b, 48 kHz ->>>2597 belong&0xfffff0 0x07d000 \b, 32 kHz ->>>2597 belong&0xfffff0 0x056220 \b, 22.05 kHz ->>>2597 belong&0xfffff0 0x05dc00 \b, 24 kHz ->>>2597 belong&0xfffff0 0x03e800 \b, 16 kHz ->>>2597 belong&0xfffff0 0x02b110 \b, 11.025 kHz ->>>2597 belong&0xfffff0 0x02ee00 \b, 12 kHz ->>>2597 belong&0xfffff0 0x01f400 \b, 8 kHz ->>>2597 belong&0xfffff0 0x177000 \b, 96 kHz ->>>2597 belong&0xfffff0 0x0fa000 \b, 64 kHz ->>>2601 byte&0xf >0 \b, >4G samples ->2584 string !fLaC \b, MP3 encoding +0 string ID3 Audio file with ID3 version 2 +>3 byte x \b.%d +>4 byte x \b.%d +>>5 byte &0x80 \b, unsynchronized frames +>>5 byte &0x40 \b, extended header +>>5 byte &0x20 \b, experimental +>>5 byte &0x10 \b, footer present +>(6.I) indirect x \b, contains: # NSF (NES sound file) magic 0 string NESM\x1a NES Sound File Modified: head/contrib/file/Magdir/cafebabe ============================================================================== --- head/contrib/file/Magdir/cafebabe Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/cafebabe Mon May 4 00:37:44 2009 (r191771) @@ -12,16 +12,18 @@ # (and use as a hack). Let's not use 18, because the Mach-O people # might add another one or two as time goes by... # -0 beshort 0xcafe ->2 beshort 0xbabe +0 belong 0xcafebabe !:mime application/x-java-applet ->>2 belong >30 compiled Java class data, ->>>6 beshort x version %d. ->>>4 beshort x \b%d ->>4 belong 1 Mach-O fat file with 1 architecture ->>4 belong >1 ->>>4 belong <20 Mach-O fat file with %ld architectures ->2 beshort 0xd00d JAR compressed with pack200, +>4 belong >30 compiled Java class data, +>>6 beshort x version %d. +>>4 beshort x \b%d + +0 belong 0xcafebabe +>4 belong 1 Mach-O fat file with 1 architecture +>4 belong >1 +>>4 belong <20 Mach-O fat file with %ld architectures + +0 belong 0xcafed00d JAR compressed with pack200, >>5 byte x version %d. >>4 byte x \b%d !:mime application/x-java-pack200 Modified: head/contrib/file/Magdir/compress ============================================================================== --- head/contrib/file/Magdir/compress Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/compress Mon May 4 00:37:44 2009 (r191771) @@ -11,6 +11,7 @@ # standard unix compress 0 string \037\235 compress'd data !:mime application/x-compress +!:apple LZIVZIVU >2 byte&0x80 >0 block compressed >2 byte&0x1f x %d bits @@ -76,6 +77,11 @@ !:mime application/x-bzip2 >3 byte >47 \b, block size = %c00k +# lzip +0 string LZIP lzip compressed data +!:mime application/x-lzip +>4 byte x \b, version: %d + # squeeze and crunch # Michael Haardt 0 beshort 0x76FF squeezed data, Modified: head/contrib/file/Magdir/elf ============================================================================== --- head/contrib/file/Magdir/elf Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/elf Mon May 4 00:37:44 2009 (r191771) @@ -143,11 +143,13 @@ >>18 leshort 91 picoJava, >>18 leshort 92 OpenRISC, >>18 leshort 93 ARC Cores Tangent-A5, ->>18 leshort 0x3426 OpenRISC (obsolete), ->>18 leshort 0x8472 OpenRISC (obsolete), >>18 leshort 94 Tensilica Xtensa, >>18 leshort 97 NatSemi 32k, >>18 leshort 106 Analog Devices Blackfin, +>>18 leshort 113 Altera Nios II, +>>18 leshort 0xae META, +>>18 leshort 0x3426 OpenRISC (obsolete), +>>18 leshort 0x8472 OpenRISC (obsolete), >>18 leshort 0x9026 Alpha (unofficial), >>20 lelong 0 invalid version >>20 lelong 1 version 1 Modified: head/contrib/file/Magdir/epoc ============================================================================== --- head/contrib/file/Magdir/epoc Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/epoc Mon May 4 00:37:44 2009 (r191771) @@ -1,10 +1,11 @@ - #------------------------------------------------------------------------------ -# Epoc 32 : file(1) magic for Epoc Documents [psion/osaris +# EPOC : file(1) magic for EPOC documents [Psion Series 5/Osaris/Geofox 1] # Stefan Praszalowicz (hpicollo@worldnet.fr) -#0 lelong 0x10000037 Epoc32 +# Useful information for improving this file can be found at: +# http://software.frodo.looijaard.name/psiconv/formats/Index.html +0 lelong 0x10000037 >4 lelong 0x1000006D ->>8 lelong 0x1000007F Word ->>8 lelong 0x10000088 Sheet ->>8 lelong 0x1000007D Sketch ->>8 lelong 0x10000085 TextEd +>>8 lelong 0x1000007F Psion Word +>>8 lelong 0x10000088 Psion Sheet +>>8 lelong 0x1000007D Psion Sketch +>>8 lelong 0x10000085 Psion TextEd Modified: head/contrib/file/Magdir/filesystems ============================================================================== --- head/contrib/file/Magdir/filesystems Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/filesystems Mon May 4 00:37:44 2009 (r191771) @@ -104,9 +104,32 @@ >>>346 string des\ Betriebssystems >>>>366 string Betriebssystem\ nicht\ vorhanden \b, Microsoft Windows XP MBR (german) >>>>>0x1B8 ulelong >0 \b, Serial 0x%-.4x ->0x145 string Default:\ F \b, FREE-DOS MBR +#>0x145 string Default:\ F \b, FREE-DOS MBR +#>0x14B string Default:\ F \b, FREE-DOS 1.0 MBR +>0x145 search/7 Default:\ F \b, FREE-DOS MBR +#>>313 string F0\ .\ .\ . +#>>>322 string disk\ 1 +#>>>>382 string FAT3 >64 string no\ active\ partition\ found >>96 string read\ error\ while\ reading\ drive \b, FREE-DOS Beta 0.9 MBR +# Ranish Partition Manager http://www.ranish.com/part/ +>387 search/4 \0\ Error!\r +>>378 search/7 Virus! +>>>397 search/4 Booting\ +>>>>408 search/4 HD1/\0 \b, Ranish MBR ( +>>>>>416 string Writing\ changes... \b2.37 +>>>>>>438 ubyte x \b,0x%x dots +>>>>>>440 ubyte >0 \b,virus check +>>>>>>441 ubyte >0 \b,partition %c +#2.38,2.42,2.44 +>>>>>416 string !Writing\ changes... \b +>>>>>>418 ubyte 1 \bvirus check, +>>>>>>419 ubyte x \b0x%x seconds +>>>>>>420 ubyte&0x0F >0 \b,partition +>>>>>>>420 ubyte&0x0F <5 \b %x +>>>>>>>420 ubyte&0x0F 0Xf \b ask +>>>>>420 ubyte x \b) +# >271 string Operating\ system\ loading >>296 string error\r \b, SYSLINUX MBR (2.10) # http://www.acronis.de/ @@ -124,18 +147,20 @@ >0x40 string SBML # label with 11 characters of FAT 12 bit filesystem >>43 string SMART\ BTMGR ->>>430 string SBMK\ Bad!\r ->>>>3 string SBM \b, Smart Boot Manager ->>>>>6 string >\0 \b, version %s +>>>430 string SBMK\ Bad!\r \b, Smart Boot Manager +# OEM-ID not always "SBM" +#>>>>3 strings SBM +>>>>6 string >\0 \b, version %s >382 string XOSLLOADXCF \b, eXtended Operating System Loader >6 string LILO \b, LInux i386 boot LOader >>120 string LILO \b, version 22.3.4 SuSe >>172 string LILO \b, version 22.5.8 Debian -# updated by Joerg Jenderek +# updated by Joerg Jenderek at Oct 2008 # variables according to grub-0.97/stage1/stage1.S or # http://www.gnu.org/software/grub/manual/grub.html#Embedded-data # usual values are marked with comments to get only informations of strange GRUB loaders ->0 ulelong 0x009048EB +>342 search/60 \0Geom\0 +#>0 ulelong x %x=0x009048EB , 0x2a9048EB 0 >>0x41 ubyte <2 >>>0x3E ubyte >2 \b; GRand Unified Bootloader # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90 @@ -178,15 +203,14 @@ >3 string BCDL >>498 string BCDL\ \ \ \ BIN \b, Bootable CD Loader (1.50Z) # mbr partion table entries -# OEM-ID not Microsoft,SYSLINUX,or MTOOLs +# OEM-ID does not contain MicroSoft,NEWLDR,DOS,SYSLINUX,or MTOOLs >3 string !MS >>3 string !SYSLINUX >>>3 string !MTOOL +>>>>3 string !NEWLDR +>>>>>5 string !DOS # not FAT (32 bit) ->>>>82 string !FAT32 -#not IO.SYS ->>>>>472 string !IO\ \ \ \ \ \ SYS ->>>>>>480 string !IO\ \ \ \ \ \ SYS +>>>>>>82 string !FAT32 #not Linux kernel >>>>>>>514 string !HdrS #not BeOS @@ -272,6 +296,11 @@ >>>>>>>>>(1.b+11) ubyte 0xb >>>>>>>>>>(1.b+12) ubyte 0x56 >>>>>>>>>>(1.b+13) ubyte 0xb4 \b, mkdosfs boot message display +>214 string Please\ try\ to\ install\ FreeDOS\ \b, DOS Emulator boot message display +#>>244 string from\ dosemu-freedos-*-bin.tgz\r +#>>>170 string Sorry,\ could\ not\ load\ an\ +#>>>>195 string operating\ system.\r\n +# >103 string This\ is\ not\ a\ bootable\ disk.\ >>132 string Please\ insert\ a\ bootable\ >>>157 string floppy\ and\r\n @@ -374,12 +403,22 @@ >430 string Datentr\204ger\ entfernen\xFF\r\n >>454 string Medienfehler\xFF\r\n >>>469 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (4.german) ->>>>368 ubyte&0xDF >0 ->>>>>368 string x %-.5s ->>>>>>373 ubyte&0xDF >0 ->>>>>>>373 string x \b%-.3s ->>>>>376 ubyte&0xDF >0 ->>>>>>376 string x \b.%-.3s +>>>>379 string \0 +>>>>>368 ubyte&0xDF >0 +>>>>>>368 string x %-.5s +>>>>>>>373 ubyte&0xDF >0 +>>>>>>>>373 string x \b%-.3s +>>>>>>376 ubyte&0xDF >0 +>>>>>>>376 string x \b.%-.3s +# variant +>>>>417 ubyte&0xDF >0 +>>>>>417 string x %-.5s +>>>>>>422 ubyte&0xDF >0 +>>>>>>>422 string x \b%-.3s +>>>>>425 ubyte&0xDF >0 +>>>>>>425 string >\ \b.%-.3s +# + #>3 string NTFS\ \ \ \ >389 string Fehler\ beim\ Lesen\ >>407 string des\ Datentr\204gers @@ -567,12 +606,27 @@ >>>489 string Any\ key\ to\ retry \b, DR-DOS Bootloader >>471 string Cannot\ load\ DOS\ >>487 string press\ key\ to\ retry \b, Open-DOS Bootloader +#?? >444 string KERNEL\ \ SYS >>314 string BOOT\ error! \b, FREE-DOS Bootloader >499 string KERNEL\ \ SYS >>305 string BOOT\ err!\0 \b, Free-DOS Bootloader >449 string KERNEL\ \ SYS >>319 string BOOT\ error! \b, FREE-DOS 0.5 Bootloader +# +>449 string Loading\ FreeDOS +>>0x1AF ulelong >0 \b, FREE-DOS 0.95,1.0 Bootloader +>>>497 ubyte&0xDF >0 +>>>>497 string x \b %-.6s +>>>>>503 ubyte&0xDF >0 +>>>>>>503 string x \b%-.1s +>>>>>>>504 ubyte&0xDF >0 +>>>>>>>>504 string x \b%-.1s +>>>>505 ubyte&0xDF >0 +>>>>>505 string x \b.%-.3s +# +>331 string Error!.0 \b, FREE-DOS 1.0 bootloader +# >125 string Loading\ FreeDOS...\r >>311 string BOOT\ error!\r \b, FREE-DOS bootloader >>>441 ubyte&0xDF >0 @@ -706,13 +760,7 @@ #it also hangs with another message ("NF"). >>>>>492 string RENF \b, FAT (12 bit) >>>>>495 string RENF \b, FAT (16 bit) -# added by Joerg Jenderek -# http://syslinux.zytor.com/iso.php -0 ulelong 0x7c40eafa isolinux Loader -# http://syslinux.zytor.com/pxe.php -0 ulelong 0x007c05ea pxelinux Loader -0 ulelong 0x60669c66 pxelinux Loader -# loader end +# x86 bootloader end # updated by Joerg Jenderek at Sep 2007 >3 ubyte 0 #no active flag @@ -732,6 +780,7 @@ # older drives may use Near JuMP instruction E9 xx xx >0 lelong&0x009000EB 0x009000EB >0 lelong&0x000000E9 0x000000E9 +# minimal short forward jump found 03cx?? # maximal short forward jump is 07fx >1 ubyte <0xff \b, code offset 0x%x # mtools-3.9.8/msdos.h @@ -740,91 +789,92 @@ >>11 uleshort&0x000f x >>>11 uleshort <32769 >>>>11 uleshort >31 ->>>>>3 string >\0 \b, OEM-ID "%8.8s" +>>>>>21 ubyte&0xf0 0xF0 +>>>>>>3 string >\0 \b, OEM-ID "%8.8s" #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC ->>>>>>8 string IHC \b cached by Windows 9M ->>>>>11 uleshort >512 \b, Bytes/sector %u -#>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual) ->>>>>11 uleshort <512 \b, Bytes/sector %u ->>>>>13 ubyte >1 \b, sectors/cluster %u -#>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies) ->>>>>14 uleshort >32 \b, reserved sectors %u -#>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32) -#>>>>>14 uleshort >1 \b, reserved sectors %u -#>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16) ->>>>>14 uleshort <1 \b, reserved sectors %u ->>>>>16 ubyte >2 \b, FATs %u -#>>>>>16 ubyte =2 \b, FATs %u (usual) ->>>>>16 ubyte =1 \b, FAT %u ->>>>>16 ubyte >0 ->>>>>17 uleshort >0 \b, root entries %u -#>>>>>17 uleshort =0 \b, root entries %u=0 (usual Fat32) ->>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) -#>>>>>19 uleshort =0 \b, sectors %u=0 (usual Fat32) ->>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x -#>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) ->>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x ->>>>>22 uleshort >0 \b, sectors/FAT %u -#>>>>>22 uleshort =0 \b, sectors/FAT %u=0 (usual Fat32) ->>>>>26 ubyte >2 \b, heads %u -#>>>>>26 ubyte =2 \b, heads %u (usual floppy) ->>>>>26 ubyte =1 \b, heads %u +>>>>>>>8 string IHC \b cached by Windows 9M +>>>>>>11 uleshort >512 \b, Bytes/sector %u +#>>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual) +>>>>>>11 uleshort <512 \b, Bytes/sector %u +>>>>>>13 ubyte >1 \b, sectors/cluster %u +#>>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies) +>>>>>>14 uleshort >32 \b, reserved sectors %u +#>>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32) +#>>>>>>14 uleshort >1 \b, reserved sectors %u +#>>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16) +>>>>>>14 uleshort <1 \b, reserved sectors %u +>>>>>>16 ubyte >2 \b, FATs %u +#>>>>>>16 ubyte =2 \b, FATs %u (usual) +>>>>>>16 ubyte =1 \b, FAT %u +>>>>>>16 ubyte >0 +>>>>>>17 uleshort >0 \b, root entries %u +#>>>>>>17 uleshort =0 \b, root entries %u=0 (usual Fat32) +>>>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) +#>>>>>>19 uleshort =0 \b, sectors %u=0 (usual Fat32) +>>>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x +#>>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) +>>>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x +>>>>>>22 uleshort >0 \b, sectors/FAT %u +#>>>>>>22 uleshort =0 \b, sectors/FAT %u=0 (usual Fat32) +>>>>>>26 ubyte >2 \b, heads %u +#>>>>>>26 ubyte =2 \b, heads %u (usual floppy) +>>>>>>26 ubyte =1 \b, heads %u #skip for Digital Research DOS (version 3.41) 1440 kB Bootdisk ->>>>>38 ubyte !0x70 ->>>>>>28 ulelong >0 \b, hidden sectors %u -#>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy) ->>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB) -#>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) +>>>>>>38 ubyte !0x70 +>>>>>>>28 ulelong >0 \b, hidden sectors %u +#>>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy) +>>>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB) +#>>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) # FAT<32 specific ->>>>>82 string !FAT32 -#>>>>>>36 ubyte 0x80 \b, physical drive 0x%x=0x80 (usual harddisk) -#>>>>>>36 ubyte 0 \b, physical drive 0x%x=0 (usual floppy) ->>>>>>36 ubyte !0x80 ->>>>>>>36 ubyte !0 \b, physical drive 0x%x ->>>>>>37 ubyte >0 \b, reserved 0x%x -#>>>>>>37 ubyte =0 \b, reserved 0x%x ->>>>>>38 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>38 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>38 ubyte =0x29 ->>>>>>>39 ulelong x \b, serial number 0x%x ->>>>>>>43 string >>>>>>43 string >NO\ NAME \b, label: "%11.11s" ->>>>>>>43 string =NO\ NAME \b, unlabeled ->>>>>>54 string FAT \b, FAT ->>>>>>>54 string FAT12 \b (12 bit) ->>>>>>>54 string FAT16 \b (16 bit) +>>>>>>82 string !FAT32 +#>>>>>>>36 ubyte 0x80 \b, physical drive 0x%x=0x80 (usual harddisk) +#>>>>>>>36 ubyte 0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>>36 ubyte !0x80 +>>>>>>>>36 ubyte !0 \b, physical drive 0x%x +>>>>>>>37 ubyte >0 \b, reserved 0x%x +#>>>>>>>37 ubyte =0 \b, reserved 0x%x +>>>>>>>38 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>38 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>38 ubyte =0x29 +>>>>>>>>39 ulelong x \b, serial number 0x%x +>>>>>>>>43 string >>>>>>>43 string >NO\ NAME \b, label: "%11.11s" +>>>>>>>>43 string =NO\ NAME \b, unlabeled +>>>>>>>54 string FAT \b, FAT +>>>>>>>>54 string FAT12 \b (12 bit) +>>>>>>>>54 string FAT16 \b (16 bit) # FAT32 specific ->>>>>82 string FAT32 \b, FAT (32 bit) ->>>>>>36 ulelong x \b, sectors/FAT %u ->>>>>>40 uleshort >0 \b, extension flags %u -#>>>>>>40 uleshort =0 \b, extension flags %u ->>>>>>42 uleshort >0 \b, fsVersion %u -#>>>>>>42 uleshort =0 \b, fsVersion %u (usual) ->>>>>>44 ulelong >2 \b, rootdir cluster %u -#>>>>>>44 ulelong =2 \b, rootdir cluster %u -#>>>>>>44 ulelong =1 \b, rootdir cluster %u ->>>>>>48 uleshort >1 \b, infoSector %u -#>>>>>>48 uleshort =1 \b, infoSector %u (usual) ->>>>>>48 uleshort <1 \b, infoSector %u ->>>>>>50 uleshort >6 \b, Backup boot sector %u -#>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual) ->>>>>>50 uleshort <6 \b, Backup boot sector %u ->>>>>>54 ulelong >0 \b, reserved1 0x%x ->>>>>>58 ulelong >0 \b, reserved2 0x%x ->>>>>>62 ulelong >0 \b, reserved3 0x%x +>>>>>>82 string FAT32 \b, FAT (32 bit) +>>>>>>>36 ulelong x \b, sectors/FAT %u +>>>>>>>40 uleshort >0 \b, extension flags %u +#>>>>>>>40 uleshort =0 \b, extension flags %u +>>>>>>>42 uleshort >0 \b, fsVersion %u +#>>>>>>>42 uleshort =0 \b, fsVersion %u (usual) +>>>>>>>44 ulelong >2 \b, rootdir cluster %u +#>>>>>>>44 ulelong =2 \b, rootdir cluster %u +#>>>>>>>44 ulelong =1 \b, rootdir cluster %u +>>>>>>>48 uleshort >1 \b, infoSector %u +#>>>>>>>48 uleshort =1 \b, infoSector %u (usual) +>>>>>>>48 uleshort <1 \b, infoSector %u +>>>>>>>50 uleshort >6 \b, Backup boot sector %u +#>>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual) +>>>>>>>50 uleshort <6 \b, Backup boot sector %u +>>>>>>>54 ulelong >0 \b, reserved1 0x%x +>>>>>>>58 ulelong >0 \b, reserved2 0x%x +>>>>>>>62 ulelong >0 \b, reserved3 0x%x # same structure as FAT1X ->>>>>>64 ubyte >0x80 \b, physical drive 0x%x -#>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) ->>>>>>64 ubyte&0x7F >0 \b, physical drive 0x%x -#>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) ->>>>>>65 ubyte >0 \b, reserved 0x%x ->>>>>>66 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>66 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) ->>>>>>66 ubyte =0x29 ->>>>>>>67 ulelong x \b, serial number 0x%x ->>>>>>>71 string >>>>>71 string >NO\ NAME \b, label: "%11.11s" ->>>>>>71 string =NO\ NAME \b, unlabeled +>>>>>>>64 ubyte >0x80 \b, physical drive 0x%x +#>>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) +>>>>>>>64 ubyte&0x7F >0 \b, physical drive 0x%x +#>>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) +>>>>>>>65 ubyte >0 \b, reserved 0x%x +>>>>>>>66 ubyte >0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>66 ubyte <0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>66 ubyte =0x29 +>>>>>>>>67 ulelong x \b, serial number 0x%x +>>>>>>>>71 string >>>>>>71 string >NO\ NAME \b, label: "%11.11s" +>>>>>>>71 string =NO\ NAME \b, unlabeled ### FATs end >0x200 lelong 0x82564557 \b, BSD disklabel # FATX @@ -854,6 +904,13 @@ 0x18b string OS/2 OS/2 Boot Manager +# updated by Joerg Jenderek at Oct 2008!! +# http://syslinux.zytor.com/iso.php +0 ulelong 0x7c40eafa isolinux Loader +# http://syslinux.zytor.com/pxe.php +0 ulelong 0x007c05ea pxelinux Loader +0 ulelong 0x60669c66 pxelinux Loader + # added by Joerg Jenderek # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or # grub-1.94/kern/i386/pc/startup.S @@ -1324,6 +1381,14 @@ >0x10024 belong x (blocksize %d, >0x10060 string >\0 lockproto %s) +# BTRFS +0x10040 string _BHRfS_M BTRFS Filesystem +>0x1012b string >\0 (label "%s", +>0x10090 lelong x sectorsize %d, +>0x10094 lelong x nodesize %d, +>0x10098 lelong x leafsize %d) + + # dvdisaster's .ecc # From: "Nelson A. de Oliveira" 0 string *dvdisaster* dvdisaster error correction file Modified: head/contrib/file/Magdir/graphviz ============================================================================== --- head/contrib/file/Magdir/graphviz Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/graphviz Mon May 4 00:37:44 2009 (r191771) @@ -1,7 +1,10 @@ - #------------------------------------------------------------------------------ # graphviz: file(1) magic for http://www.graphviz.org/ -0 regex/100 [\r\n\t\ ]*graph[\r\n\t\ ]*.*\\{ graphviz graph text -!:mime text/vnd.graphviz -0 regex/100 [\r\n\t\ ]*digraph[\r\n\t\ ]*.*\\{ graphviz digraph text -!:mime text/vnd.graphviz + +# FIXME: These patterns match too generally. For example, the first +# line matches a LaTeX file containing the word "graph" (with a { +# following later) and the second line matches this file. +#0 regex/100 [\r\n\t\ ]*graph[\r\n\t\ ]+.*\\{ graphviz graph text +#!:mime text/vnd.graphviz +#0 regex/100 [\r\n\t\ ]*digraph[\r\n\t\ ]+.*\\{ graphviz digraph text +#!:mime text/vnd.graphviz Modified: head/contrib/file/Magdir/images ============================================================================== --- head/contrib/file/Magdir/images Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/images Mon May 4 00:37:44 2009 (r191771) @@ -110,6 +110,7 @@ # GIF 0 string GIF8 GIF image data !:mime image/gif +!:apple 8BIMGIFf >4 string 7a \b, version 8%s, >4 string 9a \b, version 8%s, >6 leshort >0 %hd x @@ -600,3 +601,7 @@ # Wavelet Scalar Quantization format used in gray-scale fingerprint images # From Tano M Fotang 0 string \xff\xa0\xff\xa8\x00 Wavelet Scalar Quantization image data + +# JPEG 2000 Code Stream Bitmap +# From Petr Splichal +0 string \xFF\x4F\xFF\x51\x00 JPEG-2000 Code Stream Bitmap data Modified: head/contrib/file/Magdir/jpeg ============================================================================== --- head/contrib/file/Magdir/jpeg Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/jpeg Mon May 4 00:37:44 2009 (r191771) @@ -10,6 +10,7 @@ # 0 beshort 0xffd8 JPEG image data !:mime image/jpeg +!:apple 8BIMJPEG !:strength +1 >6 string JFIF \b, JFIF standard # The following added by Erik Rossen 1999-09-06 Modified: head/contrib/file/Magdir/mach ============================================================================== --- head/contrib/file/Magdir/mach Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/mach Mon May 4 00:37:44 2009 (r191771) @@ -4,7 +4,7 @@ # Java ByteCode, so they are both handled in the file "cafebabe". # The "feedface" ones are handled herein. #------------------------------------------------------------ -0 lelong&0xfeffffff 0xfeedface Mach-O +0 lelong&0xfffffffe 0xfeedface Mach-O >0 byte 0xcf 64-bit >12 lelong 1 object >12 lelong 2 executable Modified: head/contrib/file/Magdir/macintosh ============================================================================== --- head/contrib/file/Magdir/macintosh Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/macintosh Mon May 4 00:37:44 2009 (r191771) @@ -11,6 +11,8 @@ # Stuffit archives are the de facto standard of compression for Macintosh # files obtained from most archives. (franklsm@tuns.ca) 0 string SIT! StuffIt Archive (data) +!:mime application/x-stuffit +!:apple SIT!SIT! >2 string x : %s 0 string SITD StuffIt Deluxe (data) >2 string x : %s @@ -20,6 +22,7 @@ # Newer StuffIt archives (grant@netbsd.org) 0 string StuffIt StuffIt Archive !:mime application/x-stuffit +!:apple SIT!SIT! #>162 string >0 : %s # Macintosh Applications and Installation binaries (franklsm@tuns.ca) Modified: head/contrib/file/Magdir/msdos ============================================================================== --- head/contrib/file/Magdir/msdos Mon May 4 00:19:00 2009 (r191770) +++ head/contrib/file/Magdir/msdos Mon May 4 00:37:44 2009 (r191771) @@ -4,15 +4,15 @@ # # .BAT files (Daniel Quinlan, quinlan@yggdrasil.com) -# updated by Joerg Jenderek +# updated by Joerg Jenderek at Oct 2008 0 string @ ->1 string/cB \ echo\ off MS-DOS batch file text +>1 string/cB \ echo\ off DOS batch file text !:mime text/x-msdos-batch ->1 string/cB echo\ off MS-DOS batch file text +>1 string/cB echo\ off DOS batch file text !:mime text/x-msdos-batch ->1 string/cB rem\ MS-DOS batch file text +>1 string/cB rem\ DOS batch file text !:mime text/x-msdos-batch ->1 string/cB set\ MS-DOS batch file text +>1 string/cB set\ DOS batch file text !:mime text/x-msdos-batch @@ -285,8 +285,9 @@ # Uncommenting only the first two lines will cover about 2/3 of COM files, # but it isn't feasible to match all COM files since there must be at least # two dozen different one-byte "magics". -#0 byte 0xe9 DOS executable (COM) -#>0x1FE leshort 0xAA55 \b, boot code +# test too generic ? +0 byte 0xe9 DOS executable (COM) +>0x1FE leshort 0xAA55 \b, boot code >6 string SFX\ of\ LHarc (%s) 0 belong 0xffffffff DOS executable (device driver) #CMD640X2.SYS @@ -309,25 +310,38 @@ >>77 string >\x40 >>>77 string <\x5B >>>>77 string x \b, name: %.8s -#0 byte 0x8c DOS executable (COM) -# 0xeb conflicts with "sequent" magic -#0 byte 0xeb DOS executable (COM) -#>0x1FE leshort 0xAA55 \b, boot code -#>85 string UPX \b, UPX compressed -#>4 string \ $ARX \b, ARX self-extracting archive -#>4 string \ $LHarc \b, LHarc self-extracting archive -#>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive +# test too generic ? +0 byte 0x8c DOS executable (COM) +# updated by Joerg Jenderek at Oct 2008 +0 ulelong 0xffff10eb DR-DOS executable (COM) +# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb +0 ubeshort&0xeb8d >0xeb00 +# DR-DOS STACKER.COM SCREATE.SYS missed +>0 byte 0xeb DOS executable (COM) +>>0x1FE leshort 0xAA55 \b, boot code +>>85 string UPX \b, UPX compressed +>>4 string \ $ARX \b, ARX self-extracting archive +>>4 string \ $LHarc \b, LHarc self-extracting archive +>>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive +# updated by Joerg Jenderek at Oct 2008 #0 byte 0xb8 COM executable +0 uleshort&0x80ff 0x00b8 # modified by Joerg Jenderek ->1 lelong !0x21cd4cff for DOS +>1 lelong !0x21cd4cff COM executable for DOS # http://syslinux.zytor.com/comboot.php # (32-bit COMBOOT) programs *.C32 contain 32-bit code and run in flat-memory 32-bit protected mode # start with assembler instructions mov eax,21cd4cffh ->1 lelong 0x21cd4cff (32-bit COMBOOT) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From obrien at FreeBSD.org Mon May 4 00:38:02 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Mon May 4 00:38:16 2009 Subject: svn commit: r191772 - in vendor/file: 4.26 5.00 Message-ID: <200905040038.n440c1u4028708@svn.freebsd.org> Author: obrien Date: Mon May 4 00:38:00 2009 New Revision: 191772 URL: http://svn.freebsd.org/changeset/base/191772 Log: "Tag" the file 4.26 and 5.00 vendor imports. Added: vendor/file/4.26/ - copied from r186690, vendor/file/dist/ vendor/file/5.00/ - copied from r191769, vendor/file/dist/ From obrien at FreeBSD.org Mon May 4 00:41:09 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Mon May 4 00:41:21 2009 Subject: svn commit: r191773 - vendor/file/dist Message-ID: <200905040041.n440f82f028810@svn.freebsd.org> Author: obrien Date: Mon May 4 00:41:07 2009 New Revision: 191773 URL: http://svn.freebsd.org/changeset/base/191773 Log: Update for 5.00. Modified: vendor/file/dist/FREEBSD-upgrade Modified: vendor/file/dist/FREEBSD-upgrade ============================================================================== --- vendor/file/dist/FREEBSD-upgrade Mon May 4 00:38:00 2009 (r191772) +++ vendor/file/dist/FREEBSD-upgrade Mon May 4 00:41:07 2009 (r191773) @@ -8,23 +8,24 @@ Imported by: mv magic/* . rmdir magic - mv -i src/* . + mv -n src/* . + mv src/Makefile.am Makefile.am-src rm -rf src - mv -i doc/* . + mv -n doc/* . rm -rf doc rm -rf python rm -f lt* rm -f missing depcomp rm -f config.{guess,sub} - cvs import -m "Virgin import of Christos Zoulas's FILE 4.21." \ - src/contrib/file ZOULAS file_4_21 + cvs import -m "Virgin import of Christos Zoulas's FILE 5.00." \ + src/contrib/file ZOULAS file_5_00 Never make local changes to ZOULAS `file'. Christos is very willing to work with us to meet our FreeBSD needs. Thus submit any desired changes to him and wait for the next release and vendor import to get them. - + obrien@NUXI.com -15-Sept-2002 +15-April-2009 From obrien at FreeBSD.org Mon May 4 00:42:16 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Mon May 4 00:42:31 2009 Subject: svn commit: r191774 - head/contrib/file Message-ID: <200905040042.n440gFgS028866@svn.freebsd.org> Author: obrien Date: Mon May 4 00:42:15 2009 New Revision: 191774 URL: http://svn.freebsd.org/changeset/base/191774 Log: This belongs in //svn.freebsd.org/base/vendor/file/dist now. Deleted: head/contrib/file/FREEBSD-upgrade From obrien at FreeBSD.org Mon May 4 00:42:45 2009 From: obrien at FreeBSD.org (David E. O'Brien) Date: Mon May 4 00:42:57 2009 Subject: svn commit: r191775 - vendor/file/5.00 Message-ID: <200905040042.n440gjZs028910@svn.freebsd.org> Author: obrien Date: Mon May 4 00:42:44 2009 New Revision: 191775 URL: http://svn.freebsd.org/changeset/base/191775 Log: Update for 5.00. Modified: vendor/file/5.00/FREEBSD-upgrade Modified: vendor/file/5.00/FREEBSD-upgrade ============================================================================== --- vendor/file/5.00/FREEBSD-upgrade Mon May 4 00:42:15 2009 (r191774) +++ vendor/file/5.00/FREEBSD-upgrade Mon May 4 00:42:44 2009 (r191775) @@ -8,23 +8,24 @@ Imported by: mv magic/* . rmdir magic - mv -i src/* . + mv -n src/* . + mv src/Makefile.am Makefile.am-src rm -rf src - mv -i doc/* . + mv -n doc/* . rm -rf doc rm -rf python rm -f lt* rm -f missing depcomp rm -f config.{guess,sub} - cvs import -m "Virgin import of Christos Zoulas's FILE 4.21." \ - src/contrib/file ZOULAS file_4_21 + cvs import -m "Virgin import of Christos Zoulas's FILE 5.00." \ + src/contrib/file ZOULAS file_5_00 Never make local changes to ZOULAS `file'. Christos is very willing to work with us to meet our FreeBSD needs. Thus submit any desired changes to him and wait for the next release and vendor import to get them. - + obrien@NUXI.com -15-Sept-2002 +15-April-2009 From rwatson at FreeBSD.org Mon May 4 02:06:40 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon May 4 02:06:46 2009 Subject: svn commit: r191776 - head/sys/nfsclient Message-ID: <200905040206.n4426dvQ030642@svn.freebsd.org> Author: rwatson Date: Mon May 4 02:06:39 2009 New Revision: 191776 URL: http://svn.freebsd.org/changeset/base/191776 Log: Fix typo in comment. MFC after: 1 month Modified: head/sys/nfsclient/nfs_kdtrace.c Modified: head/sys/nfsclient/nfs_kdtrace.c ============================================================================== --- head/sys/nfsclient/nfs_kdtrace.c Mon May 4 00:42:44 2009 (r191775) +++ head/sys/nfsclient/nfs_kdtrace.c Mon May 4 02:06:39 2009 (r191776) @@ -71,7 +71,7 @@ static dtrace_pattr_t dtnfsclient_attr = }; /* - * Descrition of NFSv3 and (optional) NFSv2 probes for a procedure. + * Description of NFSv3 and (optional) NFSv2 probes for a procedure. */ struct dtnfsclient_rpc { char *nr_v3_name; From rwatson at FreeBSD.org Mon May 4 02:19:53 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon May 4 02:20:04 2009 Subject: svn commit: r191777 - head/sys/nfsclient Message-ID: <200905040219.n442Jq3V030903@svn.freebsd.org> Author: rwatson Date: Mon May 4 02:19:52 2009 New Revision: 191777 URL: http://svn.freebsd.org/changeset/base/191777 Log: Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC. MFC after: 1 month Modified: head/sys/nfsclient/nfs_krpc.c Modified: head/sys/nfsclient/nfs_krpc.c ============================================================================== --- head/sys/nfsclient/nfs_krpc.c Mon May 4 02:06:39 2009 (r191776) +++ head/sys/nfsclient/nfs_krpc.c Mon May 4 02:19:52 2009 (r191777) @@ -498,8 +498,7 @@ nfs_request(struct vnode *vp, struct mbu probe_procnum = procnum; } else { probe_id = nfsclient_nfs2_start_probes[procnum]; - probe_procnum = (nmp->nm_flag & NFSMNT_NFSV3) ? - procnum : nfsv2_procid[procnum]; + probe_procnum = nfsv2_procid[procnum]; } if (probe_id != 0) (dtrace_nfsclient_nfs23_start_probe)(probe_id, vp, From alc at FreeBSD.org Mon May 4 06:30:01 2009 From: alc at FreeBSD.org (Alan Cox) Date: Mon May 4 06:30:07 2009 Subject: svn commit: r191778 - head/sys/vm Message-ID: <200905040630.n446U0qg036055@svn.freebsd.org> Author: alc Date: Mon May 4 06:30:00 2009 New Revision: 191778 URL: http://svn.freebsd.org/changeset/base/191778 Log: Eliminate vnode_pager_input_smlfs()'s pointless call to pmap_clear_modify(). The page can't possibly have any modified page table entries because it isn't even mapped. Modified: head/sys/vm/vnode_pager.c Modified: head/sys/vm/vnode_pager.c ============================================================================== --- head/sys/vm/vnode_pager.c Mon May 4 02:19:52 2009 (r191777) +++ head/sys/vm/vnode_pager.c Mon May 4 06:30:00 2009 (r191778) @@ -559,9 +559,6 @@ vnode_pager_input_smlfs(object, m) } } sf_buf_free(sf); - vm_page_lock_queues(); - pmap_clear_modify(m); - vm_page_unlock_queues(); if (error) { return VM_PAGER_ERROR; } From ed at FreeBSD.org Mon May 4 08:06:53 2009 From: ed at FreeBSD.org (Ed Schouten) Date: Mon May 4 08:07:01 2009 Subject: svn commit: r191779 - head/lib/libc/gen Message-ID: <200905040806.n4486rec037988@svn.freebsd.org> Author: ed Date: Mon May 4 08:06:52 2009 New Revision: 191779 URL: http://svn.freebsd.org/changeset/base/191779 Log: Fix whitespace and sorting in Symbol.map. Modified: head/lib/libc/gen/Symbol.map Modified: head/lib/libc/gen/Symbol.map ============================================================================== --- head/lib/libc/gen/Symbol.map Mon May 4 06:30:00 2009 (r191778) +++ head/lib/libc/gen/Symbol.map Mon May 4 08:06:52 2009 (r191779) @@ -333,36 +333,36 @@ FBSD_1.1 { fdevname_r; fdopendir; feature_present; - fts_open; - fts_close; - fts_read; - fts_set; fts_children; + fts_close; fts_get_clientptr; fts_get_stream; + fts_open; + fts_read; + fts_set; fts_set_clientptr; + posix_spawn; + posix_spawn_file_actions_addclose; + posix_spawn_file_actions_adddup2; + posix_spawn_file_actions_addopen; + posix_spawn_file_actions_destroy; + posix_spawn_file_actions_init; + posix_spawnattr_destroy; + posix_spawnattr_getflags; + posix_spawnattr_getpgroup; + posix_spawnattr_getschedparam; + posix_spawnattr_getschedpolicy; + posix_spawnattr_getsigdefault; + posix_spawnattr_getsigmask; + posix_spawnattr_init; + posix_spawnattr_setflags; + posix_spawnattr_setpgroup; + posix_spawnattr_setschedparam; + posix_spawnattr_setschedpolicy; + posix_spawnattr_setsigdefault; + posix_spawnattr_setsigmask; + posix_spawnp; tcgetsid; - posix_spawn; - posix_spawn_file_actions_addclose; - posix_spawn_file_actions_adddup2; - posix_spawn_file_actions_addopen; - posix_spawn_file_actions_destroy; - posix_spawn_file_actions_init; - posix_spawnattr_destroy; - posix_spawnattr_getflags; - posix_spawnattr_getpgroup; - posix_spawnattr_getschedparam; - posix_spawnattr_getschedpolicy; - posix_spawnattr_getsigdefault; - posix_spawnattr_getsigmask; - posix_spawnattr_init; - posix_spawnattr_setflags; - posix_spawnattr_setpgroup; - posix_spawnattr_setschedparam; - posix_spawnattr_setschedpolicy; - posix_spawnattr_setsigdefault; - posix_spawnattr_setsigmask; - posix_spawnp; }; FBSDprivate_1.0 { From mav at FreeBSD.org Mon May 4 08:36:48 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Mon May 4 08:37:01 2009 Subject: svn commit: r191780 - head/sys/i386/bios Message-ID: <200905040836.n448alNp038683@svn.freebsd.org> Author: mav Date: Mon May 4 08:36:47 2009 New Revision: 191780 URL: http://svn.freebsd.org/changeset/base/191780 Log: There is no atrtc driver in pc98, so hide atrtcclock_disable variable usage in APM driver for this platform. This should fix pc98 build. Modified: head/sys/i386/bios/apm.c Modified: head/sys/i386/bios/apm.c ============================================================================== --- head/sys/i386/bios/apm.c Mon May 4 08:06:52 2009 (r191779) +++ head/sys/i386/bios/apm.c Mon May 4 08:36:47 2009 (r191780) @@ -1155,8 +1155,10 @@ apm_attach(device_t dev) mtx_init(&sc->mtx, device_get_nameunit(dev), "apm", MTX_DEF); cv_init(&sc->cv, "cbb cv"); +#ifdef PC98 if (device_get_flags(dev) & 0x20) atrtcclock_disable = 1; +#endif sc->initialized = 0; From mav at FreeBSD.org Mon May 4 08:41:54 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Mon May 4 08:42:21 2009 Subject: svn commit: r191781 - head/sys/i386/bios Message-ID: <200905040841.n448fsf2038814@svn.freebsd.org> Author: mav Date: Mon May 4 08:41:54 2009 New Revision: 191781 URL: http://svn.freebsd.org/changeset/base/191781 Log: Oops, sorry. Fix for fix. Modified: head/sys/i386/bios/apm.c Modified: head/sys/i386/bios/apm.c ============================================================================== --- head/sys/i386/bios/apm.c Mon May 4 08:36:47 2009 (r191780) +++ head/sys/i386/bios/apm.c Mon May 4 08:41:54 2009 (r191781) @@ -1155,7 +1155,7 @@ apm_attach(device_t dev) mtx_init(&sc->mtx, device_get_nameunit(dev), "apm", MTX_DEF); cv_init(&sc->cv, "cbb cv"); -#ifdef PC98 +#ifndef PC98 if (device_get_flags(dev) & 0x20) atrtcclock_disable = 1; #endif From rink at FreeBSD.org Mon May 4 10:15:35 2009 From: rink at FreeBSD.org (Rink Springer) Date: Mon May 4 10:15:52 2009 Subject: svn commit: r191767 - in stable/7/lib/libc: . stdlib string In-Reply-To: <20090503175506.GM17826@deviant.kiev.zoral.com.ua> References: <200905031751.n43HpcGV020175@svn.freebsd.org> <20090503175506.GM17826@deviant.kiev.zoral.com.ua> Message-ID: <20090504095806.GD78380@rink.nu> On Sun, May 03, 2009 at 08:55:06PM +0300, Kostik Belousov wrote: > On Sun, May 03, 2009 at 05:51:38PM +0000, Konstantin Belousov wrote: > > Author: kib > > Date: Sun May 3 17:51:38 2009 > > New Revision: 191767 > > URL: http://svn.freebsd.org/changeset/base/191767 > > > > Log: > > MFC r185514 (by jasone): > > Fix a lock order reversal bug that could cause deadlock during fork(2). > > > > Reported and tested by: makc > > Approved by: re (kensmith) > > It was diagnosed and tested after the 7.2 release passed the point of > no return. We expect to issue errata notice after the patch settles > in stable/7 shortly. Is this the same malloc/fork deadlock bug bug I reported about 6 months ago? -- Rink P.W. Springer - http://rink.nu "Talk to me." - Horatio Caine From ed at FreeBSD.org Mon May 4 11:11:19 2009 From: ed at FreeBSD.org (Ed Schouten) Date: Mon May 4 11:11:39 2009 Subject: svn commit: r191782 - head/sys/kern Message-ID: <200905041111.n44BBCts043760@svn.freebsd.org> Author: ed Date: Mon May 4 11:11:10 2009 New Revision: 191782 URL: http://svn.freebsd.org/changeset/base/191782 Log: Remove unneeded check for SESS_LEADER(). We perform the same check ~10 lines above. Modified: head/sys/kern/tty.c Modified: head/sys/kern/tty.c ============================================================================== --- head/sys/kern/tty.c Mon May 4 08:41:54 2009 (r191781) +++ head/sys/kern/tty.c Mon May 4 11:11:10 2009 (r191782) @@ -1473,7 +1473,7 @@ tty_generic_ioctl(struct tty *tp, u_long return (0); } - if (!SESS_LEADER(p) || p->p_session->s_ttyvp != NULL || + if (p->p_session->s_ttyvp != NULL || (tp->t_session != NULL && tp->t_session->s_ttyvp != NULL)) { /* * There is already a relation between a TTY and From Alexander at Leidinger.net Mon May 4 11:35:39 2009 From: Alexander at Leidinger.net (Alexander Leidinger) Date: Mon May 4 11:35:50 2009 Subject: svn commit: r191777 - head/sys/nfsclient In-Reply-To: <200905040219.n442Jq3V030903@svn.freebsd.org> References: <200905040219.n442Jq3V030903@svn.freebsd.org> Message-ID: <20090504133527.43351tf1iwwi5sro@webmail.leidinger.net> Quoting Robert Watson (from Mon, 4 May 2009 02:19:52 +0000 (UTC)): > Author: rwatson > Date: Mon May 4 02:19:52 2009 > New Revision: 191777 > URL: http://svn.freebsd.org/changeset/base/191777 > > Log: > Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC. BTW: I tried to load dtrace via modules after your nfs-dtrace commit, and it failed. I tried with ---snip--- dtrace_load="YES" dtnfsclient_load="YES" dtraceall_load="YES" ---snip--- and it moaned about some missing symbols. I also tried to not load the dtnfsclient module, but AFAIK it tries to load the dtnfsclient module as a dependency. I don't have NFS in the kernel or load it via modules there. Have you tried loading dtrace as modules? It seems there's something missing, either docs to tell what is necessary, or module dependencies or whatever. Bye, Alexander. -- A woman can look both moral and exciting -- if she also looks as if it were quite a struggle. -- Edna Ferber http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From kostikbel at gmail.com Mon May 4 11:39:03 2009 From: kostikbel at gmail.com (Kostik Belousov) Date: Mon May 4 11:39:09 2009 Subject: svn commit: r191767 - in stable/7/lib/libc: . stdlib string In-Reply-To: <20090504095806.GD78380@rink.nu> References: <200905031751.n43HpcGV020175@svn.freebsd.org> <20090503175506.GM17826@deviant.kiev.zoral.com.ua> <20090504095806.GD78380@rink.nu> Message-ID: <20090504113851.GA1948@deviant.kiev.zoral.com.ua> On Mon, May 04, 2009 at 11:58:06AM +0200, Rink Springer wrote: > On Sun, May 03, 2009 at 08:55:06PM +0300, Kostik Belousov wrote: > > On Sun, May 03, 2009 at 05:51:38PM +0000, Konstantin Belousov wrote: > > > Author: kib > > > Date: Sun May 3 17:51:38 2009 > > > New Revision: 191767 > > > URL: http://svn.freebsd.org/changeset/base/191767 > > > > > > Log: > > > MFC r185514 (by jasone): > > > Fix a lock order reversal bug that could cause deadlock during fork(2). > > > > > > Reported and tested by: makc > > > Approved by: re (kensmith) > > > > It was diagnosed and tested after the 7.2 release passed the point of > > no return. We expect to issue errata notice after the patch settles > > in stable/7 shortly. > > Is this the same malloc/fork deadlock bug bug I reported about 6 months > ago? This was one of the bugs that was fixed after the investigation of your issues. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20090504/20feca63/attachment.pgp From rwatson at FreeBSD.org Mon May 4 11:58:24 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon May 4 11:58:35 2009 Subject: svn commit: r191777 - head/sys/nfsclient In-Reply-To: <20090504133527.43351tf1iwwi5sro@webmail.leidinger.net> References: <200905040219.n442Jq3V030903@svn.freebsd.org> <20090504133527.43351tf1iwwi5sro@webmail.leidinger.net> Message-ID: On Mon, 4 May 2009, Alexander Leidinger wrote: >> Log: >> Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC. > > BTW: I tried to load dtrace via modules after your nfs-dtrace commit, and it > failed. I tried with Could you: (1) Confirm that you have options KDTRACE_HOOKS in your kernel (2) Try using just dtraceall_load Robert N M Watson Computer Laboratory University of Cambridge > ---snip--- > dtrace_load="YES" > dtnfsclient_load="YES" > dtraceall_load="YES" > ---snip--- > and it moaned about some missing symbols. I also tried to not load the > dtnfsclient module, but AFAIK it tries to load the dtnfsclient module as a > dependency. I don't have NFS in the kernel or load it via modules there. > > Have you tried loading dtrace as modules? It seems there's something missing, > either docs to tell what is necessary, or module dependencies or whatever. > > Bye, > Alexander. > > -- > A woman can look both moral and exciting -- if she also looks as if it > were quite a struggle. > -- Edna Ferber > > http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 > http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From Alexander at Leidinger.net Mon May 4 12:22:42 2009 From: Alexander at Leidinger.net (Alexander Leidinger) Date: Mon May 4 12:22:49 2009 Subject: svn commit: r191777 - head/sys/nfsclient In-Reply-To: References: <200905040219.n442Jq3V030903@svn.freebsd.org> <20090504133527.43351tf1iwwi5sro@webmail.leidinger.net> Message-ID: <20090504142227.11823qbind1lyyuc@webmail.leidinger.net> Quoting Robert Watson (from Mon, 4 May 2009 12:58:22 +0100 (BST)): > > On Mon, 4 May 2009, Alexander Leidinger wrote: > >>> Log: >>> Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC. >> >> BTW: I tried to load dtrace via modules after your nfs-dtrace >> commit, and it failed. I tried with > > Could you: > > (1) Confirm that you have options KDTRACE_HOOKS in your kernel # grep -i dtrace /usr/src/sys/i386/conf/M87 options KDTRACE_HOOKS # dtrace support > (2) Try using just dtraceall_load This is what I had initially. Just when I've seen the error messages about missing symbols, I added the dtnfsclient_load. Maybe there's a module dependency in dtraceall on dtnfsclient? Bye, Alexander. > Robert N M Watson > Computer Laboratory > University of Cambridge > >> ---snip--- >> dtrace_load="YES" >> dtnfsclient_load="YES" >> dtraceall_load="YES" >> ---snip--- >> and it moaned about some missing symbols. I also tried to not load >> the dtnfsclient module, but AFAIK it tries to load the dtnfsclient >> module as a dependency. I don't have NFS in the kernel or load it >> via modules there. >> >> Have you tried loading dtrace as modules? It seems there's >> something missing, either docs to tell what is necessary, or module >> dependencies or whatever. >> >> Bye, >> Alexander. >> >> -- >> A woman can look both moral and exciting -- if she also looks as if it >> were quite a struggle. >> -- Edna Ferber >> >> http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 >> http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 > > -- The seven year itch comes from fooling around during the fourth, fifth, and sixth years. http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From rwatson at FreeBSD.org Mon May 4 13:50:55 2009 From: rwatson at FreeBSD.org (Robert Watson) Date: Mon May 4 13:51:01 2009 Subject: svn commit: r191777 - head/sys/nfsclient In-Reply-To: <20090504142227.11823qbind1lyyuc@webmail.leidinger.net> References: <200905040219.n442Jq3V030903@svn.freebsd.org> <20090504133527.43351tf1iwwi5sro@webmail.leidinger.net> <20090504142227.11823qbind1lyyuc@webmail.leidinger.net> Message-ID: On Mon, 4 May 2009, Alexander Leidinger wrote: > Quoting Robert Watson (from Mon, 4 May 2009 12:58:22 > +0100 (BST)): > >> On Mon, 4 May 2009, Alexander Leidinger wrote: >> >>>> Log: Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC. >>> >>> BTW: I tried to load dtrace via modules after your nfs-dtrace commit, and >>> it failed. I tried with >> >> Could you: >> >> (1) Confirm that you have options KDTRACE_HOOKS in your kernel > > # grep -i dtrace /usr/src/sys/i386/conf/M87 > options KDTRACE_HOOKS # dtrace support > >> (2) Try using just dtraceall_load > > This is what I had initially. Just when I've seen the error messages about > missing symbols, I added the dtnfsclient_load. Maybe there's a module > dependency in dtraceall on dtnfsclient? Well, 'dtraceall' claims dependency on all the provider modules, so results in everything being loaded including dtnfsclient. In theory, dtnfsclient and other providers should contain the necessary module dependencies to cause them to load everything they depend on, but I also have the feeling I've run into the problem you're seeing. Could you provide the symbol missing errors from the console? It should be fairly easy to track down the missing graph edge using that. Robert N M Watson Computer Laboratory University of Cambridge From rmacklem at FreeBSD.org Mon May 4 15:24:00 2009 From: rmacklem at FreeBSD.org (Rick Macklem) Date: Mon May 4 15:24:07 2009 Subject: svn commit: r191783 - in head/sys/fs: nfs nfsclient nfsserver Message-ID: <200905041523.n44FNxdS048794@svn.freebsd.org> Author: rmacklem Date: Mon May 4 15:23:58 2009 New Revision: 191783 URL: http://svn.freebsd.org/changeset/base/191783 Log: Add the experimental nfs subtree to the kernel, that includes support for NFSv4 as well as NFSv2 and 3. It lives in 3 subdirs under sys/fs: nfs - functions that are common to the client and server nfsclient - a mutation of sys/nfsclient that call generic functions to do RPCs and handle state. As such, it retains the buffer cache handling characteristics and vnode semantics that are found in sys/nfsclient, for the most part. nfsserver - the server. It includes a DRC designed specifically for NFSv4, that is used instead of the generic DRC in sys/rpc. The build glue will be checked in later, so at this point, it consists of 3 new subdirs that should not affect kernel building. Approved by: kib (mentor) Added: head/sys/fs/nfs/ head/sys/fs/nfs/nfs.h (contents, props changed) head/sys/fs/nfs/nfs_commonacl.c (contents, props changed) head/sys/fs/nfs/nfs_commonkrpc.c (contents, props changed) head/sys/fs/nfs/nfs_commonport.c (contents, props changed) head/sys/fs/nfs/nfs_commonsubs.c (contents, props changed) head/sys/fs/nfs/nfs_var.h (contents, props changed) head/sys/fs/nfs/nfscl.h (contents, props changed) head/sys/fs/nfs/nfsclstate.h (contents, props changed) head/sys/fs/nfs/nfsdport.h (contents, props changed) head/sys/fs/nfs/nfskpiport.h (contents, props changed) head/sys/fs/nfs/nfsm_subs.h (contents, props changed) head/sys/fs/nfs/nfsport.h (contents, props changed) head/sys/fs/nfs/nfsproto.h (contents, props changed) head/sys/fs/nfs/nfsrvcache.h (contents, props changed) head/sys/fs/nfs/nfsrvstate.h (contents, props changed) head/sys/fs/nfs/nfsv4_errstr.h (contents, props changed) head/sys/fs/nfs/rpcv2.h (contents, props changed) head/sys/fs/nfs/xdr_subs.h (contents, props changed) head/sys/fs/nfsclient/ head/sys/fs/nfsclient/nfs.h (contents, props changed) head/sys/fs/nfsclient/nfs_clbio.c (contents, props changed) head/sys/fs/nfsclient/nfs_clcomsubs.c (contents, props changed) head/sys/fs/nfsclient/nfs_clkrpc.c (contents, props changed) head/sys/fs/nfsclient/nfs_cllock.c (contents, props changed) head/sys/fs/nfsclient/nfs_clnfsiod.c (contents, props changed) head/sys/fs/nfsclient/nfs_clnode.c (contents, props changed) head/sys/fs/nfsclient/nfs_clport.c (contents, props changed) head/sys/fs/nfsclient/nfs_clrpcops.c (contents, props changed) head/sys/fs/nfsclient/nfs_clstate.c (contents, props changed) head/sys/fs/nfsclient/nfs_clsubs.c (contents, props changed) head/sys/fs/nfsclient/nfs_clvfsops.c (contents, props changed) head/sys/fs/nfsclient/nfs_clvnops.c (contents, props changed) head/sys/fs/nfsclient/nfs_lock.h (contents, props changed) head/sys/fs/nfsclient/nfsargs.h (contents, props changed) head/sys/fs/nfsclient/nfsdiskless.h (contents, props changed) head/sys/fs/nfsclient/nfsmount.h (contents, props changed) head/sys/fs/nfsclient/nfsnode.h (contents, props changed) head/sys/fs/nfsclient/nlminfo.h (contents, props changed) head/sys/fs/nfsserver/ head/sys/fs/nfsserver/nfs_nfsdcache.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdkrpc.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdport.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdserv.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdsocket.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdstate.c (contents, props changed) head/sys/fs/nfsserver/nfs_nfsdsubs.c (contents, props changed) Added: head/sys/fs/nfs/nfs.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/fs/nfs/nfs.h Mon May 4 15:23:58 2009 (r191783) @@ -0,0 +1,704 @@ +/*- + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Rick Macklem at The University of Guelph. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _NFS_NFS_H_ +#define _NFS_NFS_H_ +/* + * Tunable constants for nfs + */ + +#define NFS_MAXIOVEC 34 +#define NFS_TICKINTVL 10 /* Desired time for a tick (msec) */ +#define NFS_HZ (hz / nfscl_ticks) /* Ticks/sec */ +#define NFS_TIMEO (1 * NFS_HZ) /* Default timeout = 1 second */ +#define NFS_MINTIMEO (1 * NFS_HZ) /* Min timeout to use */ +#define NFS_MAXTIMEO (60 * NFS_HZ) /* Max timeout to backoff to */ +#define NFS_TCPTIMEO 300 /* TCP timeout */ +#define NFS_MAXRCVTIMEO 60 /* 1 minute in seconds */ +#define NFS_MINIDEMTIMEO (5 * NFS_HZ) /* Min timeout for non-idempotent ops*/ +#define NFS_MAXREXMIT 100 /* Stop counting after this many */ +#define NFSV4_CALLBACKTIMEO (2 * NFS_HZ) /* Timeout in ticks */ +#define NFSV4_CALLBACKRETRY 5 /* Number of retries before failure */ +#define NFSV4_CBRETRYCNT 4 /* # of CBRecall retries upon err */ +#define NFSV4_UPCALLTIMEO (15 * NFS_HZ) /* Timeout in ticks for upcalls */ + /* to gssd or nfsuserd */ +#define NFSV4_UPCALLRETRY 4 /* Number of retries before failure */ +#define NFS_MAXWINDOW 1024 /* Max number of outstanding requests */ +#define NFS_RETRANS 10 /* Num of retrans for soft mounts */ +#define NFS_MAXGRPS 16 /* Max. size of groups list */ +#define NFS_TRYLATERDEL 15 /* Maximum delay timeout (sec) */ +#ifndef NFS_REMOVETIMEO +#define NFS_REMOVETIMEO 15 /* # sec to wait for delegret in local syscall */ +#endif +#ifndef NFS_MINATTRTIMO +#define NFS_MINATTRTIMO 5 /* Attribute cache timeout in sec */ +#endif +#ifndef NFS_MAXATTRTIMO +#define NFS_MAXATTRTIMO 60 +#endif +#define NFS_WSIZE 8192 /* Def. write data size <= 8192 */ +#define NFS_RSIZE 8192 /* Def. read data size <= 8192 */ +#define NFS_READDIRSIZE 8192 /* Def. readdir size */ +#define NFS_DEFRAHEAD 0 /* Def. read ahead # blocks */ +#define NFS_MAXRAHEAD 32 /* Max. read ahead # blocks */ +#define NFS_MAXUIDHASH 64 /* Max. # of hashed uid entries/mp */ +#ifndef NFSRV_LEASE +#define NFSRV_LEASE 120 /* Lease time in seconds for V4 */ +#endif /* assigned to nfsrv_lease */ +#ifndef NFSRV_STALELEASE +#define NFSRV_STALELEASE (5 * nfsrv_lease) +#endif +#ifndef NFSRV_MOULDYLEASE +#define NFSRV_MOULDYLEASE 604800 /* One week (in sec) */ +#endif +#ifndef NFSCLIENTHASHSIZE +#define NFSCLIENTHASHSIZE 20 /* Size of server client hash table */ +#endif +#ifndef NFSLOCKHASHSIZE +#define NFSLOCKHASHSIZE 20 /* Size of server nfslock hash table */ +#endif +#define NFSSTATEHASHSIZE 10 /* Size of server stateid hash table */ +#ifndef NFSUSERHASHSIZE +#define NFSUSERHASHSIZE 30 /* Size of user id hash table */ +#endif +#ifndef NFSGROUPHASHSIZE +#define NFSGROUPHASHSIZE 5 /* Size of group id hash table */ +#endif +#ifndef NFSCLDELEGHIGHWATER +#define NFSCLDELEGHIGHWATER 10000 /* limit for client delegations */ +#endif +#ifndef NFSNOOPEN /* Inactive open owner (sec) */ +#define NFSNOOPEN 120 +#endif +#define NFSRV_LEASEDELTA 15 /* # of seconds to delay beyond lease */ +#define NFS_IDMAXSIZE 4 /* max sizeof (in_addr_t) */ +#ifndef NFSRVCACHE_UDPTIMEOUT +#define NFSRVCACHE_UDPTIMEOUT 30 /* # of sec to hold cached rpcs(udp) */ +#endif +#ifndef NFSRVCACHE_UDPHIGHWATER +#define NFSRVCACHE_UDPHIGHWATER 500 /* Max # of udp cache entries */ +#endif +#ifndef NFSRVCACHE_TCPTIMEOUT +#define NFSRVCACHE_TCPTIMEOUT (3600*12) /*#of sec to hold cached rpcs(tcp) */ +#endif +#ifndef NFSRVCACHE_FLOODLEVEL +#define NFSRVCACHE_FLOODLEVEL 16384 /* Very high water mark for cache */ +#endif +#ifndef NFSRV_CLIENTHIGHWATER +#define NFSRV_CLIENTHIGHWATER 1000 +#endif +#ifndef NFSRV_MAXDUMPLIST +#define NFSRV_MAXDUMPLIST 10000 +#endif +#ifndef NFS_ACCESSCACHESIZE +#define NFS_ACCESSCACHESIZE 8 +#endif +#define NFSV4_CBPORT 7745 /* Callback port for testing */ + +/* + * This macro defines the high water mark for issuing V4 delegations. + * (It is currently set at a conservative 20% of NFSRV_V4STATELIMIT. This + * may want to increase when clients can make more effective use of + * delegations.) + */ +#define NFSRV_V4DELEGLIMIT(c) (((c) * 5) > NFSRV_V4STATELIMIT) + +#define NFS_READDIRBLKSIZ DIRBLKSIZ /* Minimal nm_readdirsize */ + +/* + * Oddballs + */ +#define NFS_CMPFH(n, f, s) \ + ((n)->n_fhp->nfh_len == (s) && !NFSBCMP((n)->n_fhp->nfh_fh, (caddr_t)(f), (s))) +#define NFSRV_CMPFH(nf, ns, f, s) \ + ((ns) == (s) && !NFSBCMP((caddr_t)(nf), (caddr_t)(f), (s))) +#define NFS_CMPTIME(t1, t2) \ + ((t1).tv_sec == (t2).tv_sec && (t1).tv_nsec == (t2).tv_nsec) +#define NFS_SETTIME(t) do { \ + (t).tv_sec = time.tv_sec; (t).tv_nsec = 1000 * time.tv_usec; } while (0) +#define NFS_SRVMAXDATA(n) \ + (((n)->nd_flag & (ND_NFSV3 | ND_NFSV4)) ? \ + NFS_MAXDATA : NFS_V2MAXDATA) +#define NFS64BITSSET 0xffffffffffffffffull +#define NFS64BITSMINUS1 0xfffffffffffffffeull + +/* + * Structures for the nfssvc(2) syscall. Not that anyone but nfsd, mount_nfs + * and nfsloaduser should ever try and use it. + */ +struct nfsd_args { + int sock; /* Socket to serve */ + caddr_t name; /* Client addr for connection based sockets */ + int namelen; /* Length of name */ +}; + +/* + * nfsd argument for new krpc. + */ +struct nfsd_nfsd_args { + const char *principal; /* GSS-API service principal name */ + int minthreads; /* minimum service thread count */ + int maxthreads; /* maximum service thread count */ +}; + +/* + * Arguments for use by the callback daemon. + */ +struct nfsd_nfscbd_args { + const char *principal; /* GSS-API service principal name */ +}; + +struct nfscbd_args { + int sock; /* Socket to serve */ + caddr_t name; /* Client addr for connection based sockets */ + int namelen; /* Length of name */ + u_short port; /* Port# for callbacks */ +}; + +struct nfsd_idargs { + int nid_flag; /* Flags (see below) */ + uid_t nid_uid; /* user/group id */ + gid_t nid_gid; + int nid_usermax; /* Upper bound on user name cache */ + int nid_usertimeout;/* User name timeout (minutes) */ + u_char *nid_name; /* Name */ + int nid_namelen; /* and its length */ +}; + +struct nfsd_clid { + int nclid_idlen; /* Length of client id */ + u_char nclid_id[NFSV4_OPAQUELIMIT]; /* and name */ +}; + +struct nfsd_dumplist { + int ndl_size; /* Number of elements */ + void *ndl_list; /* and the list of elements */ +}; + +struct nfsd_dumpclients { + u_int32_t ndcl_flags; /* LCL_xxx flags */ + u_int32_t ndcl_nopenowners; /* Number of openowners */ + u_int32_t ndcl_nopens; /* and opens */ + u_int32_t ndcl_nlockowners; /* and of lockowners */ + u_int32_t ndcl_nlocks; /* and of locks */ + u_int32_t ndcl_ndelegs; /* and of delegations */ + u_int32_t ndcl_nolddelegs; /* and old delegations */ + sa_family_t ndcl_addrfam; /* Callback address */ + union { + struct in_addr sin_addr; + struct in6_addr sin6_addr; + } ndcl_cbaddr; + struct nfsd_clid ndcl_clid; /* and client id */ +}; + +struct nfsd_dumplocklist { + char *ndllck_fname; /* File Name */ + int ndllck_size; /* Number of elements */ + void *ndllck_list; /* and the list of elements */ +}; + +struct nfsd_dumplocks { + u_int32_t ndlck_flags; /* state flags NFSLCK_xxx */ + nfsv4stateid_t ndlck_stateid; /* stateid */ + u_int64_t ndlck_first; /* lock byte range */ + u_int64_t ndlck_end; + struct nfsd_clid ndlck_owner; /* Owner of open/lock */ + sa_family_t ndlck_addrfam; /* Callback address */ + union { + struct in_addr sin_addr; + struct in6_addr sin6_addr; + } ndlck_cbaddr; + struct nfsd_clid ndlck_clid; /* and client id */ +}; + +/* + * Structure for referral information. + */ +struct nfsreferral { + u_char *nfr_srvlist; /* List of servers */ + int nfr_srvcnt; /* number of servers */ + vnode_t nfr_vp; /* vnode for referral */ + u_int32_t nfr_dfileno; /* assigned dir inode# */ +}; + +/* + * Flags for lc_flags and opsflags for nfsrv_getclient(). + */ +#define LCL_NEEDSCONFIRM 0x00000001 +#define LCL_DONTCLEAN 0x00000002 +#define LCL_WAKEUPWANTED 0x00000004 +#define LCL_TCPCALLBACK 0x00000008 +#define LCL_CALLBACKSON 0x00000010 +#define LCL_INDEXNOTOK 0x00000020 +#define LCL_STAMPEDSTABLE 0x00000040 +#define LCL_EXPIREIT 0x00000080 +#define LCL_CBDOWN 0x00000100 +#define LCL_KERBV 0x00000400 +#define LCL_NAME 0x00000800 +#define LCL_NEEDSCBNULL 0x00001000 +#define LCL_GSSINTEGRITY 0x00002000 +#define LCL_GSSPRIVACY 0x00004000 +#define LCL_ADMINREVOKED 0x00008000 + +#define LCL_GSS LCL_KERBV /* Or of all mechs */ + +/* + * Bits for flags in nfslock and nfsstate. + * The access, deny, NFSLCK_READ and NFSLCK_WRITE bits must be defined as + * below, in the correct order, so the shifts work for tests. + */ +#define NFSLCK_READACCESS 0x00000001 +#define NFSLCK_WRITEACCESS 0x00000002 +#define NFSLCK_ACCESSBITS (NFSLCK_READACCESS | NFSLCK_WRITEACCESS) +#define NFSLCK_SHIFT 2 +#define NFSLCK_READDENY 0x00000004 +#define NFSLCK_WRITEDENY 0x00000008 +#define NFSLCK_DENYBITS (NFSLCK_READDENY | NFSLCK_WRITEDENY) +#define NFSLCK_SHAREBITS \ + (NFSLCK_READACCESS|NFSLCK_WRITEACCESS|NFSLCK_READDENY|NFSLCK_WRITEDENY) +#define NFSLCK_LOCKSHIFT 4 +#define NFSLCK_READ 0x00000010 +#define NFSLCK_WRITE 0x00000020 +#define NFSLCK_BLOCKING 0x00000040 +#define NFSLCK_RECLAIM 0x00000080 +#define NFSLCK_OPENTOLOCK 0x00000100 +#define NFSLCK_TEST 0x00000200 +#define NFSLCK_LOCK 0x00000400 +#define NFSLCK_UNLOCK 0x00000800 +#define NFSLCK_OPEN 0x00001000 +#define NFSLCK_CLOSE 0x00002000 +#define NFSLCK_CHECK 0x00004000 +#define NFSLCK_RELEASE 0x00008000 +#define NFSLCK_NEEDSCONFIRM 0x00010000 +#define NFSLCK_CONFIRM 0x00020000 +#define NFSLCK_DOWNGRADE 0x00040000 +#define NFSLCK_DELEGREAD 0x00080000 +#define NFSLCK_DELEGWRITE 0x00100000 +#define NFSLCK_DELEGCUR 0x00200000 +#define NFSLCK_DELEGPREV 0x00400000 +#define NFSLCK_OLDDELEG 0x00800000 +#define NFSLCK_DELEGRECALL 0x01000000 +#define NFSLCK_SETATTR 0x02000000 +#define NFSLCK_DELEGPURGE 0x04000000 +#define NFSLCK_DELEGRETURN 0x08000000 + +/* And bits for nid_flag */ +#define NFSID_INITIALIZE 0x0001 +#define NFSID_ADDUID 0x0002 +#define NFSID_DELUID 0x0004 +#define NFSID_ADDUSERNAME 0x0008 +#define NFSID_DELUSERNAME 0x0010 +#define NFSID_ADDGID 0x0020 +#define NFSID_DELGID 0x0040 +#define NFSID_ADDGROUPNAME 0x0080 +#define NFSID_DELGROUPNAME 0x0100 + +/* + * Stats structure + */ +struct nfsstats { + int attrcache_hits; + int attrcache_misses; + int lookupcache_hits; + int lookupcache_misses; + int direofcache_hits; + int direofcache_misses; + int accesscache_hits; + int accesscache_misses; + int biocache_reads; + int read_bios; + int read_physios; + int biocache_writes; + int write_bios; + int write_physios; + int biocache_readlinks; + int readlink_bios; + int biocache_readdirs; + int readdir_bios; + int rpccnt[NFS_NPROCS]; + int rpcretries; + int srvrpccnt[NFSV4OP_NOPS + NFSV4OP_FAKENOPS]; + int srvrpc_errs; + int srv_errs; + int rpcrequests; + int rpctimeouts; + int rpcunexpected; + int rpcinvalid; + int srvcache_inproghits; + int srvcache_idemdonehits; + int srvcache_nonidemdonehits; + int srvcache_misses; + int srvcache_tcppeak; + int srvcache_size; + int srvclients; + int srvopenowners; + int srvopens; + int srvlockowners; + int srvlocks; + int srvdelegates; + int cbrpccnt[NFSV4OP_CBNOPS]; + int clopenowners; + int clopens; + int cllockowners; + int cllocks; + int cldelegates; + int cllocalopenowners; + int cllocalopens; + int cllocallockowners; + int cllocallocks; +}; + +/* + * fs.nfs sysctl(3) identifiers + */ +#define NFS_NFSSTATS 1 /* struct: struct nfsstats */ + +#define FS_NFS_NAMES { \ + { 0, 0 }, \ + { "nfsstats", CTLTYPE_STRUCT }, \ +} + +/* + * Here is the definition of the attribute bits array and macros that + * manipulate it. + * THE MACROS MUST BE MANUALLY MODIFIED IF NFSATTRBIT_MAXWORDS CHANGES!! + * It is (NFSATTRBIT_MAX + 31) / 32. + */ +#define NFSATTRBIT_MAXWORDS 2 + +typedef struct { + u_int32_t bits[NFSATTRBIT_MAXWORDS]; +} nfsattrbit_t; + +#define NFSZERO_ATTRBIT(b) do { (b)->bits[0] = 0; (b)->bits[1] = 0; } while (0) +#define NFSSET_ATTRBIT(t, f) do { (t)->bits[0] = (f)->bits[0]; \ + (t)->bits[1] = (f)->bits[1]; } while (0) +#define NFSSETSUPP_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_SUPP0; \ + (b)->bits[1] = (NFSATTRBIT_SUPP1 | NFSATTRBIT_SUPPSETONLY); } while (0) +#define NFSISSET_ATTRBIT(b, p) ((b)->bits[(p) / 32] & (1 << ((p) % 32))) +#define NFSSETBIT_ATTRBIT(b, p) ((b)->bits[(p) / 32] |= (1 << ((p) % 32))) +#define NFSCLRBIT_ATTRBIT(b, p) ((b)->bits[(p) / 32] &= ~(1 << ((p) % 32))) +#define NFSCLRALL_ATTRBIT(b, a) do { \ + (b)->bits[0] &= ~((a)->bits[0]); \ + (b)->bits[1] &= ~((a)->bits[1]); \ + } while (0) +#define NFSCLRNOT_ATTRBIT(b, a) do { \ + (b)->bits[0] &= ((a)->bits[0]); \ + (b)->bits[1] &= ((a)->bits[1]); \ + } while (0) +#define NFSCLRNOTFILLABLE_ATTRBIT(b) do { \ + (b)->bits[0] &= NFSATTRBIT_SUPP0; \ + (b)->bits[1] &= NFSATTRBIT_SUPP1; } while (0) +#define NFSCLRNOTSETABLE_ATTRBIT(b) do { \ + (b)->bits[0] &= NFSATTRBIT_SETABLE0; \ + (b)->bits[1] &= NFSATTRBIT_SETABLE1; } while (0) +#define NFSNONZERO_ATTRBIT(b) ((b)->bits[0] || (b)->bits[1]) +#define NFSEQUAL_ATTRBIT(b, p) \ + ((b)->bits[0] == (p)->bits[0] && (b)->bits[1] == (p)->bits[1]) +#define NFSGETATTR_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_GETATTR0; \ + (b)->bits[1] = NFSATTRBIT_GETATTR1; } while (0) +#define NFSWCCATTR_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_WCCATTR0; \ + (b)->bits[1] = NFSATTRBIT_WCCATTR1; } while (0) +#define NFSWRITEGETATTR_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_WRITEGETATTR0; \ + (b)->bits[1] = NFSATTRBIT_WRITEGETATTR1; } while (0) +#define NFSCBGETATTR_ATTRBIT(b, c) do { \ + (c)->bits[0] = ((b)->bits[0] & NFSATTRBIT_CBGETATTR0); \ + (c)->bits[1] = ((b)->bits[1] & NFSATTRBIT_CBGETATTR1); } while (0) +#define NFSPATHCONF_GETATTRBIT(b) do { \ + (b)->bits[0] = NFSGETATTRBIT_PATHCONF0; \ + (b)->bits[1] = NFSGETATTRBIT_PATHCONF1; } while (0) +#define NFSSTATFS_GETATTRBIT(b) do { \ + (b)->bits[0] = NFSGETATTRBIT_STATFS0; \ + (b)->bits[1] = NFSGETATTRBIT_STATFS1; } while (0) +#define NFSISSETSTATFS_ATTRBIT(b) \ + (((b)->bits[0] & NFSATTRBIT_STATFS0) || \ + ((b)->bits[1] & NFSATTRBIT_STATFS1)) +#define NFSCLRSTATFS_ATTRBIT(b) do { \ + (b)->bits[0] &= ~NFSATTRBIT_STATFS0; \ + (b)->bits[1] &= ~NFSATTRBIT_STATFS1; } while (0) +#define NFSREADDIRPLUS_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_READDIRPLUS0; \ + (b)->bits[1] = NFSATTRBIT_READDIRPLUS1; } while (0) +#define NFSREFERRAL_ATTRBIT(b) do { \ + (b)->bits[0] = NFSATTRBIT_REFERRAL0; \ + (b)->bits[1] = NFSATTRBIT_REFERRAL1; } while (0) + +/* + * Store uid, gid creds that handle maps to. + * Since some BSDen define cr_gid as cr_groups[0], I'll just keep them + * all in nfsc_groups[NGROUPS + 1]. + */ +struct nfscred { + uid_t nfsc_uid; + gid_t nfsc_groups[NGROUPS + 1]; + int nfsc_ngroups; +}; + +/* + * Constants that define the file handle for the V4 root directory. + * (The FSID must never be used by other file systems that are exported.) + */ +#define NFSV4ROOT_FSID0 ((int32_t) -1) +#define NFSV4ROOT_FSID1 ((int32_t) -1) +#define NFSV4ROOT_REFERRAL ((int32_t) -2) +#define NFSV4ROOT_INO 2 /* It's traditional */ +#define NFSV4ROOT_GEN 1 + +/* + * The set of signals the interrupt an I/O in progress for NFSMNT_INT mounts. + * What should be in this set is open to debate, but I believe that since + * I/O system calls on ufs are never interrupted by signals the set should + * be minimal. My reasoning is that many current programs that use signals + * such as SIGALRM will not expect file I/O system calls to be interrupted + * by them and break. + */ +#if defined(_KERNEL) || defined(KERNEL) + +struct uio; struct buf; struct vattr; struct nameidata; /* XXX */ + +/* + * Socket errors ignored for connectionless sockets? + * For now, ignore them all + */ +#define NFSIGNORE_SOERROR(s, e) \ + ((e) != EINTR && (e) != ERESTART && (e) != EWOULDBLOCK && \ + ((s) & PR_CONNREQUIRED) == 0) + + +/* + * This structure holds socket information for a connection. Used by the + * client and the server for callbacks. + */ +struct nfssockreq { + NFSSOCKADDR_T nr_nam; + int nr_sotype; + int nr_soproto; + int nr_soflags; + struct ucred *nr_cred; + int nr_lock; + NFSMUTEX_T nr_mtx; + u_int32_t nr_prog; + u_int32_t nr_vers; + struct __rpc_client *nr_client; +}; + +/* + * And associated nr_lock bits. + */ +#define NFSR_SNDLOCK 0x01 +#define NFSR_WANTSND 0x02 +#define NFSR_RCVLOCK 0x04 +#define NFSR_WANTRCV 0x08 +#define NFSR_RESERVEDPORT 0x10 +#define NFSR_LOCALHOST 0x20 + +/* + * Queue head for nfsreq's + */ +TAILQ_HEAD(nfsreqhead, nfsreq); + +/* First 8 R_xxx flags defined in rpc/rpcclnt.h, the rest are here */ +#define R_DONTRECOVER 0x00000100 /* don't initiate recovery when this + rpc gets a stale state reply */ + +/* + * Network address hash list element + */ +union nethostaddr { + struct in_addr had_inet; + struct in6_addr had_inet6; +}; + +/* + * Structure of list of mechanisms. + */ +struct nfsgss_mechlist { + int len; + const u_char *str; + int totlen; +}; +#define KERBV_MECH 0 /* position in list */ + +/* + * This structure is used by the server for describing each request. + */ +struct nfsrv_descript { + mbuf_t nd_mrep; /* Request mbuf list */ + mbuf_t nd_md; /* Current dissect mbuf */ + mbuf_t nd_mreq; /* Reply mbuf list */ + mbuf_t nd_mb; /* Current build mbuf */ + NFSSOCKADDR_T nd_nam; /* and socket addr */ + NFSSOCKADDR_T nd_nam2; /* return socket addr */ + caddr_t nd_dpos; /* Current dissect pos */ + caddr_t nd_bpos; /* Current build pos */ + u_int16_t nd_procnum; /* RPC # */ + u_int32_t nd_flag; /* nd_flag */ + u_int32_t nd_repstat; /* Reply status */ + int *nd_errp; /* Pointer to ret status */ + u_int32_t nd_retxid; /* Reply xid */ + struct nfsrvcache *nd_rp; /* Assoc. cache entry */ + struct timeval nd_starttime; /* Time RPC initiated */ + fhandle_t nd_fh; /* File handle */ + struct ucred *nd_cred; /* Credentials */ + uid_t nd_saveduid; /* Saved uid */ + u_int64_t nd_sockref; /* Rcv socket ref# */ + u_int64_t nd_compref; /* Compound RPC ref# */ + time_t nd_tcpconntime; /* Time TCP connection est. */ + nfsquad_t nd_clientid; /* Implied clientid */ + int nd_credflavor; /* credential flavor */ + int nd_gssnamelen; /* principal name length */ + char *nd_gssname; /* principal name */ +}; + +#define nd_princlen nd_gssnamelen +#define nd_principal nd_gssname + +/* Bits for "nd_flag" */ +#define ND_DONTSAVEREPLY 0x00000001 +#define ND_SAVEREPLY 0x00000002 +#define ND_NFSV2 0x00000004 +#define ND_NFSV3 0x00000008 +#define ND_NFSV4 0x00000010 +#define ND_KERBV 0x00000020 +#define ND_GSSINTEGRITY 0x00000040 +#define ND_GSSPRIVACY 0x00000080 +#define ND_WINDOWVERF 0x00000100 +#define ND_GSSINITREPLY 0x00000200 +#define ND_STREAMSOCK 0x00000400 +#define ND_PUBLOOKUP 0x00000800 +#define ND_USEGSSNAME 0x00001000 +#define ND_SAMETCPCONN 0x00002000 +#define ND_IMPLIEDCLID 0x00004000 +#define ND_NOMOREDATA 0x00008000 +#define ND_V4WCCATTR 0x00010000 +#define ND_NFSCB 0x00020000 +#define ND_AUTHNONE 0x00040000 +#define ND_EXGSSONLY 0x00080000 +#define ND_INCRSEQID 0x00100000 + +/* + * ND_GSS should be the "or" of all GSS type authentications. + */ +#define ND_GSS (ND_KERBV) + +struct nfsv4_opflag { + int retfh; + int needscfh; + int savereply; + int modifyfs; +}; + +/* + * Flags used to indicate what to do w.r.t. seqid checking. + */ +#define NFSRVSEQID_FIRST 0x01 +#define NFSRVSEQID_LAST 0x02 +#define NFSRVSEQID_OPEN 0x04 + +/* + * MNT_EXGSSONLY is the Or of all the EXGSS bits. + */ +#define MNT_EXGSSONLY MNT_EXGSSKRB5 + +/* + * assign a doubly linked list to a new head + * and prepend one list into another. + */ +#define LIST_NEWHEAD(nhead, ohead, field) do { \ + if (((nhead)->lh_first = (ohead)->lh_first) != NULL) \ + (ohead)->lh_first->field.le_prev = &(nhead)->lh_first; \ + (ohead)->lh_first = NULL; \ + } while (0) + +#define LIST_PREPEND(head, phead, lelm, field) do { \ + if ((head)->lh_first != NULL) { \ + (lelm)->field.le_next = (head)->lh_first; \ + (lelm)->field.le_next->field.le_prev = \ + &(lelm)->field.le_next; \ + } \ + (head)->lh_first = (phead)->lh_first; \ + (head)->lh_first->field.le_prev = &(head)->lh_first; \ + } while (0) + +/* + * File handle structure for client. Malloc'd to the correct length with + * malloc type M_NFSFH. + */ +struct nfsfh { + u_int16_t nfh_len; /* Length of file handle */ + u_int8_t nfh_fh[1]; /* and the file handle */ +}; + +/* + * File handle structure for server. The NFSRV_MAXFH constant is + * set in nfsdport.h. I use a 32bit length, so that alignment is + * preserved. + */ +struct nfsrvfh { + u_int32_t nfsrvfh_len; + u_int8_t nfsrvfh_data[NFSRV_MAXFH]; +}; + +/* + * This structure is used for sleep locks on the NFSv4 nfsd threads and + * NFSv4 client data structures. + */ +struct nfsv4lock { + u_int32_t nfslock_usecnt; + u_int8_t nfslock_lock; +}; +#define NFSV4LOCK_LOCK 0x01 +#define NFSV4LOCK_LOCKWANTED 0x02 +#define NFSV4LOCK_WANTED 0x04 + +/* + * Values for the override argument for nfsvno_accchk(). + */ +#define NFSACCCHK_NOOVERRIDE 0 +#define NFSACCCHK_ALLOWROOT 1 +#define NFSACCCHK_ALLOWOWNER 2 + +/* + * and values for the vpislocked argument for nfsvno_accchk(). + */ +#define NFSACCCHK_VPNOTLOCKED 0 +#define NFSACCCHK_VPISLOCKED 1 + +#endif /* _KERNEL */ + +#endif /* _NFS_NFS_H */ Added: head/sys/fs/nfs/nfs_commonacl.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/fs/nfs/nfs_commonacl.c Mon May 4 15:23:58 2009 (r191783) @@ -0,0 +1,750 @@ +/*- + * Copyright (c) 2009 Rick Macklem, University of Guelph + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#ifndef APPLEKEXT +#include + +extern int nfsrv_useacl; +#endif + +static int nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner, + enum vtype type, acl_perm_t *permp); + +#if defined(NFS4_ACL_EXTATTR_NAME) +/* + * Handle xdr for an ace. + */ +APPLESTATIC int +nfsrv_dissectace(struct nfsrv_descript *nd, struct acl_entry *acep, + int *aceerrp, int *acesizep, NFSPROC_T *p) +{ + u_int32_t *tl; + int len, gotid = 0, owner = 0, error = 0, aceerr = 0; + u_char *name, namestr[NFSV4_SMALLSTR + 1]; + u_int32_t flag, mask, acetype; + gid_t gid; + uid_t uid; + + *aceerrp = 0; + acep->ae_flags = 0; + NFSM_DISSECT(tl, u_int32_t *, 4 * NFSX_UNSIGNED); + acetype = fxdr_unsigned(u_int32_t, *tl++); + flag = fxdr_unsigned(u_int32_t, *tl++); + mask = fxdr_unsigned(u_int32_t, *tl++); + len = fxdr_unsigned(int, *tl); + if (len < 0) { + return (NFSERR_BADXDR); + } else if (len == 0) { + /* Netapp filers return a 0 length who for nil users */ + acep->ae_tag = ACL_UNDEFINED_TAG; + acep->ae_id = ACL_UNDEFINED_ID; + acep->ae_perm = (acl_perm_t)0; + acep->ae_extended = ACL_EXTENDED_DENY; + if (acesizep) + *acesizep = 4 * NFSX_UNSIGNED; + return (0); + } + if (len > NFSV4_SMALLSTR) + name = malloc(len + 1, M_NFSSTRING, M_WAITOK); + else + name = namestr; + error = nfsrv_mtostr(nd, name, len); + if (error) { + if (len > NFSV4_SMALLSTR) + free(name, M_NFSSTRING); + return (error); + } + if (len == 6) { + if (!NFSBCMP(name, "OWNER@", 6)) { + acep->ae_tag = ACL_USER_OBJ; + acep->ae_id = ACL_UNDEFINED_ID; + owner = 1; + gotid = 1; + } else if (!NFSBCMP(name, "GROUP@", 6)) { + acep->ae_tag = ACL_GROUP_OBJ; + acep->ae_id = ACL_UNDEFINED_ID; + gotid = 1; + } + } else if (len == 9 && !NFSBCMP(name, "EVERYONE@", 9)) { + acep->ae_tag = ACL_EVERYONE; + acep->ae_id = ACL_UNDEFINED_ID; + gotid = 1; + } + if (gotid == 0) { + if (flag & NFSV4ACE_IDENTIFIERGROUP) { + acep->ae_tag = ACL_GROUP; + aceerr = nfsv4_strtogid(name, len, &gid, p); + if (aceerr == 0) + acep->ae_id = (uid_t)gid; + } else { + acep->ae_tag = ACL_USER; + aceerr = nfsv4_strtouid(name, len, &uid, p); + if (aceerr == 0) + acep->ae_id = uid; + } + } + if (len > NFSV4_SMALLSTR) + free(name, M_NFSSTRING); + + if (aceerr == 0) { + /* + * Handle the flags. + */ + flag &= ~NFSV4ACE_IDENTIFIERGROUP; + if (flag & NFSV4ACE_FILEINHERIT) { + flag &= ~NFSV4ACE_FILEINHERIT; + acep->ae_flags |= ACL_ENTRY_FILE_INHERIT; + } + if (flag & NFSV4ACE_DIRECTORYINHERIT) { + flag &= ~NFSV4ACE_DIRECTORYINHERIT; + acep->ae_flags |= ACL_ENTRY_DIRECTORY_INHERIT; + } + if (flag & NFSV4ACE_NOPROPAGATEINHERIT) { + flag &= ~NFSV4ACE_NOPROPAGATEINHERIT; + acep->ae_flags |= ACL_ENTRY_LIMIT_INHERIT; + } + if (flag & NFSV4ACE_INHERITONLY) { + flag &= ~NFSV4ACE_INHERITONLY; + acep->ae_flags |= ACL_ENTRY_ONLY_INHERIT; + } + if (flag & NFSV4ACE_SUCCESSFULACCESS) { + flag &= ~NFSV4ACE_SUCCESSFULACCESS; + acep->ae_flags |= ACL_ENTRY_SUCCESSFUL_ACCESS; + } + if (flag & NFSV4ACE_FAILEDACCESS) { + flag &= ~NFSV4ACE_FAILEDACCESS; + acep->ae_flags |= ACL_ENTRY_FAILED_ACCESS; + } + /* + * Set ae_extended. + */ + if (acetype == NFSV4ACE_ALLOWEDTYPE) + acep->ae_extended = ACL_EXTENDED_ALLOW; + else if (acetype == NFSV4ACE_DENIEDTYPE) + acep->ae_extended = ACL_EXTENDED_DENY; + else if (acetype == NFSV4ACE_AUDITTYPE) + acep->ae_extended = ACL_EXTENDED_AUDIT; + else if (acetype == NFSV4ACE_ALARMTYPE) + acep->ae_extended = ACL_EXTENDED_ALARM; + else + aceerr = NFSERR_ATTRNOTSUPP; + } + + /* + * Now, check for unsupported flag bits. + */ + if (aceerr == 0 && flag != 0) + aceerr = NFSERR_ATTRNOTSUPP; + + /* + * And turn the mask into perm bits. + */ + if (aceerr == 0) + aceerr = nfsrv_acemasktoperm(acetype, mask, owner, VREG, + &acep->ae_perm); + *aceerrp = aceerr; + if (acesizep) + *acesizep = NFSM_RNDUP(len) + (4 * NFSX_UNSIGNED); + return (0); +nfsmout: + return (error); +} + +/* + * Turn an NFSv4 ace mask into R/W/X flag bits. + */ +static int +nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner, + enum vtype type, acl_perm_t *permp) +{ + acl_perm_t perm = 0x0; + + if (mask & NFSV4ACE_READDATA) { + mask &= ~NFSV4ACE_READDATA; + perm |= ACL_READ_DATA; + } + if (mask & NFSV4ACE_LISTDIRECTORY) { + mask &= ~NFSV4ACE_LISTDIRECTORY; + perm |= ACL_LIST_DIRECTORY; + } + if (mask & NFSV4ACE_WRITEDATA) { + mask &= ~NFSV4ACE_WRITEDATA; + perm |= ACL_WRITE_DATA; + } + if (mask & NFSV4ACE_ADDFILE) { + mask &= ~NFSV4ACE_ADDFILE; + perm |= ACL_ADD_FILE; + } + if (mask & NFSV4ACE_APPENDDATA) { + mask &= ~NFSV4ACE_APPENDDATA; + perm |= ACL_APPEND_DATA; + } + if (mask & NFSV4ACE_ADDSUBDIRECTORY) { + mask &= ~NFSV4ACE_ADDSUBDIRECTORY; + perm |= ACL_ADD_SUBDIRECTORY; + } + if (mask & NFSV4ACE_READNAMEDATTR) { + mask &= ~NFSV4ACE_READNAMEDATTR; + perm |= ACL_READ_NAMED_ATTRS; + } + if (mask & NFSV4ACE_WRITENAMEDATTR) { + mask &= ~NFSV4ACE_WRITENAMEDATTR; + perm |= ACL_WRITE_NAMED_ATTRS; + } + if (mask & NFSV4ACE_EXECUTE) { + mask &= ~NFSV4ACE_EXECUTE; + perm |= ACL_EXECUTE; + } + if (mask & NFSV4ACE_SEARCH) { + mask &= ~NFSV4ACE_SEARCH; + perm |= ACL_SEARCH; + } + if (mask & NFSV4ACE_DELETECHILD) { + mask &= ~NFSV4ACE_DELETECHILD; + perm |= ACL_DELETE_CHILD; + } + if (mask & NFSV4ACE_READATTRIBUTES) { + mask &= ~NFSV4ACE_READATTRIBUTES; + perm |= ACL_READ_ATTRIBUTES; + } + if (mask & NFSV4ACE_WRITEATTRIBUTES) { + mask &= ~NFSV4ACE_WRITEATTRIBUTES; + perm |= ACL_WRITE_ATTRIBUTES; + } + if (mask & NFSV4ACE_DELETE) { + mask &= ~NFSV4ACE_DELETE; + perm |= ACL_DELETE; + } + if (mask & NFSV4ACE_READACL) { + mask &= ~NFSV4ACE_READACL; + perm |= ACL_READ_ACL; + } + if (mask & NFSV4ACE_WRITEACL) { + mask &= ~NFSV4ACE_WRITEACL; + perm |= ACL_WRITE_ACL; + } + if (mask & NFSV4ACE_WRITEOWNER) { + mask &= ~NFSV4ACE_WRITEOWNER; + perm |= ACL_WRITE_OWNER; + } + if (mask & NFSV4ACE_SYNCHRONIZE) { + mask &= ~NFSV4ACE_SYNCHRONIZE; + perm |= ACL_SYNCHRONIZE; + } + if (mask != 0) + return (NFSERR_ATTRNOTSUPP); + *permp = perm; + return (0); +} +#else +/* + * Handle xdr for an ace. + */ +APPLESTATIC int +nfsrv_dissectace(struct nfsrv_descript *nd, struct acl_entry *acep, + int *aceerrp, int *acesizep, NFSPROC_T *p) +{ + u_int32_t *tl; + int len, gotid = 0, owner = 0, error = 0, aceerr = 0; + u_char *name, namestr[NFSV4_SMALLSTR + 1]; + u_int32_t flag, mask, acetype; + gid_t gid; + uid_t uid; + + *aceerrp = 0; + NFSM_DISSECT(tl, u_int32_t *, 4 * NFSX_UNSIGNED); + acetype = fxdr_unsigned(u_int32_t, *tl++); + flag = fxdr_unsigned(u_int32_t, *tl++); + mask = fxdr_unsigned(u_int32_t, *tl++); + len = fxdr_unsigned(int, *tl); + if (len < 0) { + return (NFSERR_BADXDR); + } else if (len == 0) { + /* Netapp filers return a 0 length who for nil users */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From kensmith at FreeBSD.org Mon May 4 16:10:39 2009 From: kensmith at FreeBSD.org (Ken Smith) Date: Mon May 4 16:10:45 2009 Subject: svn commit: r191784 - svnadmin/conf Message-ID: <200905041610.n44GAc3r049750@svn.freebsd.org> Author: kensmith Date: Mon May 4 16:10:37 2009 New Revision: 191784 URL: http://svn.freebsd.org/changeset/base/191784 Log: Open stable/7 up to normal developer activity. Approved by: core (implicit) Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Mon May 4 15:23:58 2009 (r191783) +++ svnadmin/conf/approvers Mon May 4 16:10:37 2009 (r191784) @@ -17,7 +17,7 @@ # $FreeBSD$ # #^head/ re -^stable/7/ re +#^stable/7/ re #^stable/6/ re ^releng/7.2/ re ^releng/7.[0-1]/ (security-officer|so) From jhb at FreeBSD.org Mon May 4 17:25:54 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 17:26:17 2009 Subject: svn commit: r191785 - stable/7/lib/libstand Message-ID: <200905041725.n44HPrft051559@svn.freebsd.org> Author: jhb Date: Mon May 4 17:25:53 2009 New Revision: 191785 URL: http://svn.freebsd.org/changeset/base/191785 Log: MFC: Fix an off-by-one buffer overflow in ngets(). Modified: stable/7/lib/libstand/ (props changed) stable/7/lib/libstand/gets.c Modified: stable/7/lib/libstand/gets.c ============================================================================== --- stable/7/lib/libstand/gets.c Mon May 4 16:10:37 2009 (r191784) +++ stable/7/lib/libstand/gets.c Mon May 4 17:25:53 2009 (r191785) @@ -74,7 +74,7 @@ ngets(char *buf, int n) putchar('\n'); break; default: - if ((n < 1) || ((lp - buf) < n)) { + if ((n < 1) || ((lp - buf) < n - 1)) { *lp++ = c; putchar(c); } From jhb at FreeBSD.org Mon May 4 17:26:04 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 17:26:17 2009 Subject: svn commit: r191786 - stable/6/lib/libstand Message-ID: <200905041726.n44HQ12l051599@svn.freebsd.org> Author: jhb Date: Mon May 4 17:26:01 2009 New Revision: 191786 URL: http://svn.freebsd.org/changeset/base/191786 Log: MFC: Fix an off-by-one buffer overflow in ngets(). Modified: stable/6/lib/libstand/ (props changed) stable/6/lib/libstand/gets.c Modified: stable/6/lib/libstand/gets.c ============================================================================== --- stable/6/lib/libstand/gets.c Mon May 4 17:25:53 2009 (r191785) +++ stable/6/lib/libstand/gets.c Mon May 4 17:26:01 2009 (r191786) @@ -78,7 +78,7 @@ ngets(char *buf, int n) putchar('\n'); break; default: - if ((n < 1) || ((lp - buf) < n)) { + if ((n < 1) || ((lp - buf) < n - 1)) { *lp++ = c; putchar(c); } From lulf at FreeBSD.org Mon May 4 17:30:20 2009 From: lulf at FreeBSD.org (Ulf Lilleengen) Date: Mon May 4 17:30:27 2009 Subject: svn commit: r191787 - head/sys/geom/vinum Message-ID: <200905041730.n44HUK3T051762@svn.freebsd.org> Author: lulf Date: Mon May 4 17:30:20 2009 New Revision: 191787 URL: http://svn.freebsd.org/changeset/base/191787 Log: - Make the gvinum softc invisible to userland, as it is not needed. Modified: head/sys/geom/vinum/geom_vinum_var.h Modified: head/sys/geom/vinum/geom_vinum_var.h ============================================================================== --- head/sys/geom/vinum/geom_vinum_var.h Mon May 4 17:26:01 2009 (r191786) +++ head/sys/geom/vinum/geom_vinum_var.h Mon May 4 17:30:20 2009 (r191787) @@ -221,7 +221,6 @@ struct gv_event { intmax_t arg4; TAILQ_ENTRY(gv_event) events; }; -#endif /* This struct contains the main vinum config. */ struct gv_softc { @@ -234,13 +233,10 @@ struct gv_softc { TAILQ_HEAD(,gv_event) equeue; /* Event queue. */ struct mtx queue_mtx; /* Queue lock. */ struct mtx config_mtx; /* Configuration lock. */ -#ifdef _KERNEL struct bio_queue_head *bqueue; /* BIO queue. */ -#else - char *padding; -#endif struct g_geom *geom; /* Pointer to our VINUM geom. */ }; +#endif /* softc for a drive. */ struct gv_drive { From jkim at FreeBSD.org Mon May 4 18:05:28 2009 From: jkim at FreeBSD.org (Jung-uk Kim) Date: Mon May 4 18:05:40 2009 Subject: svn commit: r191788 - in head/sys: amd64/amd64 i386/i386 Message-ID: <200905041805.n44I5R1W052656@svn.freebsd.org> Author: jkim Date: Mon May 4 18:05:27 2009 New Revision: 191788 URL: http://svn.freebsd.org/changeset/base/191788 Log: Unlock the largest standard CPUID on Intel CPUs for both amd64 and i386 and fix SMP topology detection. On i386, we extend it to cover Core, Core 2, and Core i7 processors, not just Pentium 4 family, and move it to better place. On amd64, all supported Intel CPUs should have this MSR. Modified: head/sys/amd64/amd64/identcpu.c head/sys/i386/i386/identcpu.c Modified: head/sys/amd64/amd64/identcpu.c ============================================================================== --- head/sys/amd64/amd64/identcpu.c Mon May 4 17:30:20 2009 (r191787) +++ head/sys/amd64/amd64/identcpu.c Mon May 4 18:05:27 2009 (r191788) @@ -472,6 +472,22 @@ identify_cpu(void) cpu_feature = regs[3]; cpu_feature2 = regs[2]; + /* + * Clear "Limit CPUID Maxval" bit and get the largest standard CPUID + * function number again if it is set from BIOS. It is necessary + * for probing correct CPU topology later. + * XXX This is only done on the BSP package. + */ + if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4) { + uint64_t msr; + msr = rdmsr(MSR_IA32_MISC_ENABLE); + if ((msr & 0x400000ULL) != 0) { + wrmsr(MSR_IA32_MISC_ENABLE, msr & ~0x400000ULL); + do_cpuid(0, regs); + cpu_high = regs[0]; + } + } + if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || cpu_vendor_id == CPU_VENDOR_CENTAUR) { Modified: head/sys/i386/i386/identcpu.c ============================================================================== --- head/sys/i386/i386/identcpu.c Mon May 4 17:30:20 2009 (r191787) +++ head/sys/i386/i386/identcpu.c Mon May 4 18:05:27 2009 (r191788) @@ -209,7 +209,6 @@ printcpuinfo(void) if (cpu_vendor_id == CPU_VENDOR_INTEL) { if ((cpu_id & 0xf00) > 0x300) { u_int brand_index; - u_int model; cpu_model[0] = '\0'; @@ -322,16 +321,6 @@ printcpuinfo(void) case 0xf00: strcat(cpu_model, "Pentium 4"); cpu = CPU_P4; - model = (cpu_id & 0x0f0) >> 4; - if (model == 3 || model == 4 || model == 6) { - uint64_t tmp; - - tmp = rdmsr(MSR_IA32_MISC_ENABLE); - wrmsr(MSR_IA32_MISC_ENABLE, - tmp & ~(1LL << 22)); - do_cpuid(0, regs); - cpu_high = regs[0]; - } break; default: strcat(cpu_model, "unknown"); @@ -1110,6 +1099,24 @@ finishidentcpu(void) cpu_vendor_id = find_cpu_vendor_id(); + /* + * Clear "Limit CPUID Maxval" bit and get the largest standard CPUID + * function number again if it is set from BIOS. It is necessary + * for probing correct CPU topology later. + * XXX This is only done on the BSP package. + */ + if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4 && + ((I386_CPU_FAMILY(cpu_id) == 0xf && I386_CPU_MODEL(cpu_id) >= 0x3) || + (I386_CPU_FAMILY(cpu_id) == 0x6 && I386_CPU_MODEL(cpu_id) >= 0xe))) { + uint64_t msr; + msr = rdmsr(MSR_IA32_MISC_ENABLE); + if ((msr & 0x400000ULL) != 0) { + wrmsr(MSR_IA32_MISC_ENABLE, msr & ~0x400000ULL); + do_cpuid(0, regs); + cpu_high = regs[0]; + } + } + /* Detect AMD features (PTE no-execute bit, 3dnow, 64 bit mode etc) */ if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD) { From ed at FreeBSD.org Mon May 4 18:14:46 2009 From: ed at FreeBSD.org (Ed Schouten) Date: Mon May 4 18:14:53 2009 Subject: svn commit: r191789 - head/lib/libc/stdlib Message-ID: <200905041814.n44IEjn5052898@svn.freebsd.org> Author: ed Date: Mon May 4 18:14:45 2009 New Revision: 191789 URL: http://svn.freebsd.org/changeset/base/191789 Log: Our grantpt(3) and unlockpt(3) don't comply with POSIX. Modified: head/lib/libc/stdlib/ptsname.3 Modified: head/lib/libc/stdlib/ptsname.3 ============================================================================== --- head/lib/libc/stdlib/ptsname.3 Mon May 4 18:05:27 2009 (r191788) +++ head/lib/libc/stdlib/ptsname.3 Mon May 4 18:14:45 2009 (r191789) @@ -132,12 +132,16 @@ The slave pseudo-terminal device could n .Xr tty 4 .Sh STANDARDS The -.Fn grantpt , .Fn ptsname +function conforms to +.St -p1003.1-2001 . +.Pp +This implementation of +.Fn grantpt and .Fn unlockpt -functions conform to -.St -p1003.1-2001 . +does not comply with any standard, because these functions assume the +pseudo-terminal has the correct attributes upon creation. .Sh HISTORY The .Fn grantpt , From lulf at FreeBSD.org Mon May 4 18:35:53 2009 From: lulf at FreeBSD.org (Ulf Lilleengen) Date: Mon May 4 18:36:14 2009 Subject: svn commit: r191790 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb geom Message-ID: <200905041835.n44IZqJS053600@svn.freebsd.org> Author: lulf Date: Mon May 4 18:35:52 2009 New Revision: 191790 URL: http://svn.freebsd.org/changeset/base/191790 Log: MFC r179094: Play nice with DDB pager. Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/geom/geom_subr.c Modified: stable/7/sys/geom/geom_subr.c ============================================================================== --- stable/7/sys/geom/geom_subr.c Mon May 4 18:14:45 2009 (r191789) +++ stable/7/sys/geom/geom_subr.c Mon May 4 18:35:52 2009 (r191790) @@ -1157,8 +1157,11 @@ db_show_geom_provider(int indent, struct printf("\n"); } if (!LIST_EMPTY(&pp->consumers)) { - LIST_FOREACH(cp, &pp->consumers, consumers) + LIST_FOREACH(cp, &pp->consumers, consumers) { db_show_geom_consumer(indent + 2, cp); + if (db_pager_quit) + break; + } } } @@ -1189,12 +1192,18 @@ db_show_geom_geom(int indent, struct g_g printf("\n"); } if (!LIST_EMPTY(&gp->provider)) { - LIST_FOREACH(pp, &gp->provider, provider) + LIST_FOREACH(pp, &gp->provider, provider) { db_show_geom_provider(indent + 2, pp); + if (db_pager_quit) + break; + } } if (!LIST_EMPTY(&gp->consumer)) { - LIST_FOREACH(cp, &gp->consumer, consumer) + LIST_FOREACH(cp, &gp->consumer, consumer) { db_show_geom_consumer(indent + 2, cp); + if (db_pager_quit) + break; + } } } @@ -1204,8 +1213,11 @@ db_show_geom_class(struct g_class *mp) struct g_geom *gp; printf("class: %s (%p)\n", mp->name, mp); - LIST_FOREACH(gp, &mp->geom, geom) + LIST_FOREACH(gp, &mp->geom, geom) { db_show_geom_geom(2, gp); + if (db_pager_quit) + break; + } } /* @@ -1220,6 +1232,8 @@ DB_SHOW_COMMAND(geom, db_show_geom) LIST_FOREACH(mp, &g_classes, class) { db_show_geom_class(mp); printf("\n"); + if (db_pager_quit) + break; } } else { switch (g_valid_obj((void *)addr)) { From hrs at FreeBSD.org Mon May 4 19:00:30 2009 From: hrs at FreeBSD.org (Hiroki Sato) Date: Mon May 4 19:00:36 2009 Subject: svn commit: r191791 - stable/7/release/doc/en_US.ISO8859-1/errata Message-ID: <200905041900.n44J0PlF054228@svn.freebsd.org> Author: hrs Date: Mon May 4 19:00:25 2009 New Revision: 191791 URL: http://svn.freebsd.org/changeset/base/191791 Log: Update 7.2R Errata: Document bce(4) + lagg(4) issue, and A patch for lock order reversal committed. Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Modified: stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml ============================================================================== --- stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Mon May 4 18:35:52 2009 (r191790) +++ stable/7/release/doc/en_US.ISO8859-1/errata/article.sgml Mon May 4 19:00:25 2009 (r191791) @@ -167,19 +167,28 @@ bootable and fall through to booting off the next boot device. All affected machines did see the other discs as bootable. As a workaround, you can boot using the bootonly or livefs CDROM and - then swap in disc1 once sysinstall starts. + then swap in disc1 once &man.sysinstall.8; starts. [20090504] A lock handling error has been found in interaction between &man.malloc.3; implementation and threading library. When a multi-threaded process calls the &man.fork.2; system call in a thread and the &man.malloc.3; function in another thread, it can cause a deadlock in the child process. - An Errata Notice to fix this problem is planned for this problem - after the release. + An Errata Notice to fix this problem is planned after the + release. + + [20090505] A bug was found in the &man.bce.4; driver. This + prevents it from working with the &man.lagg.4; driver in the + LACP (IEEE 802.3ad Link Aggregation Control Protocol) mode. An + Errata Notice to fix this problem is planned after the + release. Late-Breaking News and Corrections - No news. + [20090504] A patch to solve the locking issue in the + &man.malloc.3; implementation and threading library has been + committed to the RELENG_7 branch for public + testing. From jamie at FreeBSD.org Mon May 4 19:06:07 2009 From: jamie at FreeBSD.org (Jamie Gritton) Date: Mon May 4 19:06:16 2009 Subject: svn commit: r191792 - head/sys/compat/linux Message-ID: <200905041906.n44J662C054379@svn.freebsd.org> Author: jamie Date: Mon May 4 19:06:05 2009 New Revision: 191792 URL: http://svn.freebsd.org/changeset/base/191792 Log: Mark Linux MIB sysctls MPSAFE. Reviewed by: dchagin, kib Approved by: bz (mentor) Modified: head/sys/compat/linux/linux_mib.c Modified: head/sys/compat/linux/linux_mib.c ============================================================================== --- head/sys/compat/linux/linux_mib.c Mon May 4 19:00:25 2009 (r191791) +++ head/sys/compat/linux/linux_mib.c Mon May 4 19:06:05 2009 (r191792) @@ -78,7 +78,7 @@ linux_sysctl_osname(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_compat_linux, OID_AUTO, osname, - CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, 0, 0, linux_sysctl_osname, "A", "Linux kernel OS name"); @@ -100,7 +100,7 @@ linux_sysctl_osrelease(SYSCTL_HANDLER_AR } SYSCTL_PROC(_compat_linux, OID_AUTO, osrelease, - CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, 0, 0, linux_sysctl_osrelease, "A", "Linux kernel OS release"); @@ -121,7 +121,7 @@ linux_sysctl_oss_version(SYSCTL_HANDLER_ } SYSCTL_PROC(_compat_linux, OID_AUTO, oss_version, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_PRISON, + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, 0, 0, linux_sysctl_oss_version, "I", "Linux OSS version"); From jhb at FreeBSD.org Mon May 4 19:19:14 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 19:19:40 2009 Subject: svn commit: r191793 - in stable/7/sys: . amd64/amd64 contrib/pf dev/ath/ath_hal dev/cxgb i386/isa Message-ID: <200905041919.n44JJDws054687@svn.freebsd.org> Author: jhb Date: Mon May 4 19:19:13 2009 New Revision: 191793 URL: http://svn.freebsd.org/changeset/base/191793 Log: MFC: More refinements to the x86 FPU support: - Rename (fpu|npx)_cleanstate to (fpu|npx)_initialstate to better reflect their purpose. - Fix a few nits in the earlier changes to prevent local information leakage in AMD FPUs. Modified: stable/7/sys/ (props changed) stable/7/sys/amd64/amd64/fpu.c stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/i386/isa/npx.c Modified: stable/7/sys/amd64/amd64/fpu.c ============================================================================== --- stable/7/sys/amd64/amd64/fpu.c Mon May 4 19:06:05 2009 (r191792) +++ stable/7/sys/amd64/amd64/fpu.c Mon May 4 19:19:13 2009 (r191793) @@ -101,7 +101,7 @@ static void fpu_clean_state(void); SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD, NULL, 1, "Floating point instructions executed in hardware"); -static struct savefpu fpu_cleanstate; +static struct savefpu fpu_initialstate; /* * Initialize the floating point unit. On the boot CPU we generate a @@ -123,13 +123,13 @@ fpuinit(void) mxcsr = __INITIAL_MXCSR__; ldmxcsr(mxcsr); if (PCPU_GET(cpuid) == 0) { - fxsave(&fpu_cleanstate); - if (fpu_cleanstate.sv_env.en_mxcsr_mask) - cpu_mxcsr_mask = fpu_cleanstate.sv_env.en_mxcsr_mask; + fxsave(&fpu_initialstate); + if (fpu_initialstate.sv_env.en_mxcsr_mask) + cpu_mxcsr_mask = fpu_initialstate.sv_env.en_mxcsr_mask; else cpu_mxcsr_mask = 0xFFBF; - bzero(fpu_cleanstate.sv_fp, sizeof(fpu_cleanstate.sv_fp)); - bzero(fpu_cleanstate.sv_xmm, sizeof(fpu_cleanstate.sv_xmm)); + bzero(fpu_initialstate.sv_fp, sizeof(fpu_initialstate.sv_fp)); + bzero(fpu_initialstate.sv_xmm, sizeof(fpu_initialstate.sv_xmm)); } start_emulating(); intr_restore(savecrit); @@ -416,10 +416,11 @@ fpudna(void) if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) { /* - * This is the first time this thread has used the FPU, - * explicitly load sanitized registers. + * This is the first time this thread has used the FPU or + * the PCB doesn't contain a clean FPU state. Explicitly + * load an initial state. */ - fxrstor(&fpu_cleanstate); + fxrstor(&fpu_initialstate); if (pcb->pcb_initial_fpucw != __INITIAL_FPUCW__) fldcw(&pcb->pcb_initial_fpucw); pcb->pcb_flags |= PCB_FPUINITDONE; @@ -453,7 +454,7 @@ fpugetregs(struct thread *td, struct sav register_t s; if ((td->td_pcb->pcb_flags & PCB_FPUINITDONE) == 0) { - bcopy(&fpu_cleanstate, addr, sizeof(fpu_cleanstate)); + bcopy(&fpu_initialstate, addr, sizeof(fpu_initialstate)); addr->sv_env.en_cw = td->td_pcb->pcb_initial_fpucw; return (_MC_FPOWNED_NONE); } @@ -479,7 +480,6 @@ fpusetregs(struct thread *td, struct sav s = intr_disable(); if (td == PCPU_GET(fpcurthread)) { - fpu_clean_state(); fxrstor(addr); intr_restore(s); } else { @@ -498,10 +498,10 @@ fpusetregs(struct thread *td, struct sav * In order to avoid leaking this information across processes, we clean * these values by performing a dummy load before executing fxrstor(). */ -static double dummy_variable = 0.0; static void fpu_clean_state(void) { + static float dummy_variable = 0.0; u_short status; /* Modified: stable/7/sys/i386/isa/npx.c ============================================================================== --- stable/7/sys/i386/isa/npx.c Mon May 4 19:06:05 2009 (r191792) +++ stable/7/sys/i386/isa/npx.c Mon May 4 19:19:13 2009 (r191793) @@ -172,7 +172,7 @@ SYSCTL_INT(_hw, HW_FLOATINGPT, floatingp static volatile u_int npx_intrs_while_probing; static volatile u_int npx_traps_while_probing; -static union savefpu npx_cleanstate; +static union savefpu npx_initialstate; static bool_t npx_ex16; static bool_t npx_exists; static bool_t npx_irq13; @@ -414,24 +414,24 @@ npx_attach(dev) s = intr_disable(); stop_emulating(); - fpusave(&npx_cleanstate); + fpusave(&npx_initialstate); start_emulating(); #ifdef CPU_ENABLE_SSE if (cpu_fxsr) { - if (npx_cleanstate.sv_xmm.sv_env.en_mxcsr_mask) + if (npx_initialstate.sv_xmm.sv_env.en_mxcsr_mask) cpu_mxcsr_mask = - npx_cleanstate.sv_xmm.sv_env.en_mxcsr_mask; + npx_initialstate.sv_xmm.sv_env.en_mxcsr_mask; else cpu_mxcsr_mask = 0xFFBF; - bzero(npx_cleanstate.sv_xmm.sv_fp, - sizeof(npx_cleanstate.sv_xmm.sv_fp)); - bzero(npx_cleanstate.sv_xmm.sv_xmm, - sizeof(npx_cleanstate.sv_xmm.sv_xmm)); + bzero(npx_initialstate.sv_xmm.sv_fp, + sizeof(npx_initialstate.sv_xmm.sv_fp)); + bzero(npx_initialstate.sv_xmm.sv_xmm, + sizeof(npx_initialstate.sv_xmm.sv_xmm)); /* XXX might need even more zeroing. */ } else #endif - bzero(npx_cleanstate.sv_87.sv_ac, - sizeof(npx_cleanstate.sv_87.sv_ac)); + bzero(npx_initialstate.sv_87.sv_ac, + sizeof(npx_initialstate.sv_87.sv_ac)); intr_restore(s); #ifdef I586_CPU_XXX if (cpu_class == CPUCLASS_586 && npx_ex16 && @@ -785,13 +785,18 @@ npxdna(void) PCPU_SET(fpcurthread, curthread); pcb = PCPU_GET(curpcb); +#ifdef CPU_ENABLE_SSE + if (cpu_fxsr) + fpu_clean_state(); +#endif + if ((pcb->pcb_flags & PCB_NPXINITDONE) == 0) { /* * This is the first time this thread has used the FPU or * the PCB doesn't contain a clean FPU state. Explicitly - * load sanitized registers. + * load an initial state. */ - fpurstor(&npx_cleanstate); + fpurstor(&npx_initialstate); if (pcb->pcb_initial_npxcw != __INITIAL_NPXCW__) fldcw(&pcb->pcb_initial_npxcw); pcb->pcb_flags |= PCB_NPXINITDONE; @@ -891,7 +896,7 @@ npxgetregs(td, addr) return (_MC_FPOWNED_NONE); if ((td->td_pcb->pcb_flags & PCB_NPXINITDONE) == 0) { - bcopy(&npx_cleanstate, addr, sizeof(npx_cleanstate)); + bcopy(&npx_initialstate, addr, sizeof(npx_initialstate)); SET_FPU_CW(addr, td->td_pcb->pcb_initial_npxcw); return (_MC_FPOWNED_NONE); } @@ -967,10 +972,10 @@ fpusave(addr) * In order to avoid leaking this information across processes, we clean * these values by performing a dummy load before executing fxrstor(). */ -static double dummy_variable = 0.0; static void fpu_clean_state(void) { + static float dummy_variable = 0.0; u_short status; /* @@ -996,10 +1001,9 @@ fpurstor(addr) { #ifdef CPU_ENABLE_SSE - if (cpu_fxsr) { - fpu_clean_state(); + if (cpu_fxsr) fxrstor(addr); - } else + else #endif frstor(addr); } From jhb at freebsd.org Mon May 4 19:22:17 2009 From: jhb at freebsd.org (John Baldwin) Date: Mon May 4 19:22:28 2009 Subject: svn commit: r191766 - in head/sys: amd64/include amd64/isa i386/bios i386/include i386/isa i386/xen isa pc98/cbus In-Reply-To: <200905031747.n43HlLHD020054@svn.freebsd.org> References: <200905031747.n43HlLHD020054@svn.freebsd.org> Message-ID: <200905040941.00641.jhb@freebsd.org> On Sunday 03 May 2009 1:47:21 pm Alexander Motin wrote: > Author: mav > Date: Sun May 3 17:47:21 2009 > New Revision: 191766 > URL: http://svn.freebsd.org/changeset/base/191766 > > Log: > Rename statclock_disable variable to atrtcclock_disable that it actually is, > and hide it inside of atrtc driver. Add new tunable hint.atrtc.0.clock > controlling it. Setting it to 0 disables using RTC clock as stat-/ > profclock sources. > > Teach i386 and amd64 SMP platforms to emulate stat-/profclocks using i8254 > hardclock, when LAPIC and RTC clocks are disabled. > > This allows to reduce global interrupt rate of idle system down to about > 100 interrupts per core, permitting C3 and deeper C-states provide maximum > CPU power efficiency. Note that IRQ0 is not going to work for many systems with the local APIC since I removed the mixed-mode handling from the x86 interrupt code. -- John Baldwin From jhb at FreeBSD.org Mon May 4 20:25:57 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 20:26:09 2009 Subject: svn commit: r191794 - head/sys/conf Message-ID: <200905042025.n44KPuHj056072@svn.freebsd.org> Author: jhb Date: Mon May 4 20:25:56 2009 New Revision: 191794 URL: http://svn.freebsd.org/changeset/base/191794 Log: Always compute the root of the kernel source tree and explicitly pass it to module builds. This avoids having to have the module builds walk up the tree to find the kernel sources. It also allows a kernel + module build to succeed when a new level of module subdirectories is added without requiring that the /usr/share/mk/bsd.kmod.mk file on the machine be patched. MFC after: 1 week Modified: head/sys/conf/kern.post.mk Modified: head/sys/conf/kern.post.mk ============================================================================== --- head/sys/conf/kern.post.mk Mon May 4 19:19:13 2009 (r191793) +++ head/sys/conf/kern.post.mk Mon May 4 20:25:56 2009 (r191794) @@ -12,7 +12,8 @@ .if defined(DESTDIR) MKMODULESENV+= DESTDIR="${DESTDIR}" .endif -MKMODULESENV+= KERNBUILDDIR="${.CURDIR}" +SYSDIR?= ${S:C;^[^/];${.CURDIR}/&;} +MKMODULESENV+= KERNBUILDDIR="${.CURDIR}" SYSDIR="${SYSDIR}" .MAIN: all @@ -29,7 +30,6 @@ modules-${target}: # Handle out of tree ports .if !defined(NO_MODULES) && defined(PORTS_MODULES) -SYSDIR?= ${S:C;^[^/];${.CURDIR}/&;} PORTSMODULESENV=SYSDIR=${SYSDIR} .for __target in all install reinstall clean ${__target}: ports-${__target} From jhb at FreeBSD.org Mon May 4 20:36:01 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 20:36:07 2009 Subject: svn commit: r191795 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb dev/pci Message-ID: <200905042036.n44Ka08v056369@svn.freebsd.org> Author: jhb Date: Mon May 4 20:35:59 2009 New Revision: 191795 URL: http://svn.freebsd.org/changeset/base/191795 Log: MFC: Various fixes to the PCI resource allocation code: - Disabling decoding of BARs via the PCI command register before writing to the BARs to size them. - Don't free resources decoded by a BAR when the device driver releases a BAR. Instead, the PCI bus now owns unclaimed BARs and gives them to drivers on demand. When a driver releases a BAR, the PCI bus reclaims it and leaves the resource range allocated. This also prevents drivers from allocating the same resource multiple times. - Move the activation of BARs by enabling decoding in the PCI command register into bus_activate_resource() so that it always happens after the BAR is fully programmed. - Always read/write the full 64-bit value of 64-bit BARs. - Consolidate duplicated code for reading and sizing BARs and writing base address to BARs. Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/dev/pci/pci.c stable/7/sys/dev/pci/pci_private.h stable/7/sys/dev/pci/pcireg.h Modified: stable/7/sys/dev/pci/pci.c ============================================================================== --- stable/7/sys/dev/pci/pci.c Mon May 4 20:25:56 2009 (r191794) +++ stable/7/sys/dev/pci/pci.c Mon May 4 20:35:59 2009 (r191795) @@ -71,18 +71,17 @@ __FBSDID("$FreeBSD$"); #define ACPI_PWR_FOR_SLEEP(x, y, z) #endif -static uint32_t pci_mapbase(unsigned mapreg); -static const char *pci_maptype(unsigned mapreg); -static int pci_mapsize(unsigned testval); -static int pci_maprange(unsigned mapreg); +static pci_addr_t pci_mapbase(uint64_t mapreg); +static const char *pci_maptype(uint64_t mapreg); +static int pci_mapsize(uint64_t testval); +static int pci_maprange(uint64_t mapreg); static void pci_fixancient(pcicfgregs *cfg); -static int pci_porten(device_t pcib, int b, int s, int f); -static int pci_memen(device_t pcib, int b, int s, int f); +static int pci_porten(device_t dev); +static int pci_memen(device_t dev); static void pci_assign_interrupt(device_t bus, device_t dev, int force_route); -static int pci_add_map(device_t pcib, device_t bus, device_t dev, - int b, int s, int f, int reg, +static int pci_add_map(device_t bus, device_t dev, int reg, struct resource_list *rl, int force, int prefetch); static int pci_probe(device_t dev); static int pci_attach(device_t dev); @@ -136,7 +135,7 @@ static device_method_t pci_methods[] = { DEVMETHOD(bus_delete_resource, pci_delete_resource), DEVMETHOD(bus_alloc_resource, pci_alloc_resource), DEVMETHOD(bus_release_resource, bus_generic_rl_release_resource), - DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), + DEVMETHOD(bus_activate_resource, pci_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), DEVMETHOD(bus_child_pnpinfo_str, pci_child_pnpinfo_str_method), DEVMETHOD(bus_child_location_str, pci_child_location_str_method), @@ -316,8 +315,8 @@ pci_find_device(uint16_t vendor, uint16_ /* return base address of memory or port map */ -static uint32_t -pci_mapbase(uint32_t mapreg) +static pci_addr_t +pci_mapbase(uint64_t mapreg) { if (PCI_BAR_MEM(mapreg)) @@ -329,7 +328,7 @@ pci_mapbase(uint32_t mapreg) /* return map type of memory or port map */ static const char * -pci_maptype(unsigned mapreg) +pci_maptype(uint64_t mapreg) { if (PCI_BAR_IO(mapreg)) @@ -342,7 +341,7 @@ pci_maptype(unsigned mapreg) /* return log2 of map size decoded for memory or port map */ static int -pci_mapsize(uint32_t testval) +pci_mapsize(uint64_t testval) { int ln2size; @@ -361,7 +360,7 @@ pci_mapsize(uint32_t testval) /* return log2 of address range supported by map register */ static int -pci_maprange(unsigned mapreg) +pci_maprange(uint64_t mapreg) { int ln2range = 0; @@ -2257,17 +2256,75 @@ pci_print_verbose(struct pci_devinfo *di } static int -pci_porten(device_t pcib, int b, int s, int f) +pci_porten(device_t dev) { - return (PCIB_READ_CONFIG(pcib, b, s, f, PCIR_COMMAND, 2) - & PCIM_CMD_PORTEN) != 0; + return (pci_read_config(dev, PCIR_COMMAND, 2) & PCIM_CMD_PORTEN) != 0; } static int -pci_memen(device_t pcib, int b, int s, int f) +pci_memen(device_t dev) { - return (PCIB_READ_CONFIG(pcib, b, s, f, PCIR_COMMAND, 2) - & PCIM_CMD_MEMEN) != 0; + return (pci_read_config(dev, PCIR_COMMAND, 2) & PCIM_CMD_MEMEN) != 0; +} + +static void +pci_read_bar(device_t dev, int reg, pci_addr_t *mapp, pci_addr_t *testvalp) +{ + pci_addr_t map, testval; + int ln2range; + uint16_t cmd; + + map = pci_read_config(dev, reg, 4); + ln2range = pci_maprange(map); + if (ln2range == 64) + map |= (pci_addr_t)pci_read_config(dev, reg + 4, 4) << 32; + + /* + * Disable decoding via the command register before + * determining the BAR's length since we will be placing it in + * a weird state. + */ + cmd = pci_read_config(dev, PCIR_COMMAND, 2); + pci_write_config(dev, PCIR_COMMAND, + cmd & ~(PCI_BAR_MEM(map) ? PCIM_CMD_MEMEN : PCIM_CMD_PORTEN), 2); + + /* + * Determine the BAR's length by writing all 1's. The bottom + * log_2(size) bits of the BAR will stick as 0 when we read + * the value back. + */ + pci_write_config(dev, reg, 0xffffffff, 4); + testval = pci_read_config(dev, reg, 4); + if (ln2range == 64) { + pci_write_config(dev, reg + 4, 0xffffffff, 4); + testval |= (pci_addr_t)pci_read_config(dev, reg + 4, 4) << 32; + } + + /* + * Restore the original value of the BAR. We may have reprogrammed + * the BAR of the low-level console device and when booting verbose, + * we need the console device addressable. + */ + pci_write_config(dev, reg, map, 4); + if (ln2range == 64) + pci_write_config(dev, reg + 4, map >> 32, 4); + pci_write_config(dev, PCIR_COMMAND, cmd, 2); + + *mapp = map; + *testvalp = testval; +} + +static void +pci_write_bar(device_t dev, int reg, pci_addr_t base) +{ + pci_addr_t map; + int ln2range; + + map = pci_read_config(dev, reg, 4); + ln2range = pci_maprange(map); + pci_write_config(dev, reg, base, 4); + if (ln2range == 64) + pci_write_config(dev, reg + 4, base >> 32, 4); } /* @@ -2275,36 +2332,26 @@ pci_memen(device_t pcib, int b, int s, i * register is a 32bit map register or 2 if it is a 64bit register. */ static int -pci_add_map(device_t pcib, device_t bus, device_t dev, - int b, int s, int f, int reg, struct resource_list *rl, int force, - int prefetch) +pci_add_map(device_t bus, device_t dev, int reg, struct resource_list *rl, + int force, int prefetch) { - uint32_t map; - pci_addr_t base; + pci_addr_t base, map, testval; pci_addr_t start, end, count; - uint8_t ln2size; - uint8_t ln2range; - uint32_t testval; + int barlen, maprange, mapsize, type; uint16_t cmd; - int type; - int barlen; struct resource *res; - map = PCIB_READ_CONFIG(pcib, b, s, f, reg, 4); - PCIB_WRITE_CONFIG(pcib, b, s, f, reg, 0xffffffff, 4); - testval = PCIB_READ_CONFIG(pcib, b, s, f, reg, 4); - PCIB_WRITE_CONFIG(pcib, b, s, f, reg, map, 4); - + pci_read_bar(dev, reg, &map, &testval); if (PCI_BAR_MEM(map)) { type = SYS_RES_MEMORY; if (map & PCIM_BAR_MEM_PREFETCH) prefetch = 1; } else type = SYS_RES_IOPORT; - ln2size = pci_mapsize(testval); - ln2range = pci_maprange(testval); + mapsize = pci_mapsize(testval); base = pci_mapbase(map); - barlen = ln2range == 64 ? 2 : 1; + maprange = pci_maprange(map); + barlen = maprange == 64 ? 2 : 1; /* * For I/O registers, if bottom bit is set, and the next bit up @@ -2315,19 +2362,16 @@ pci_add_map(device_t pcib, device_t bus, */ if (PCI_BAR_IO(testval) && (testval & PCIM_BAR_IO_RESERVED) != 0) return (barlen); - if ((type == SYS_RES_MEMORY && ln2size < 4) || - (type == SYS_RES_IOPORT && ln2size < 2)) + if ((type == SYS_RES_MEMORY && mapsize < 4) || + (type == SYS_RES_IOPORT && mapsize < 2)) return (barlen); - if (ln2range == 64) - /* Read the other half of a 64bit map register */ - base |= (uint64_t) PCIB_READ_CONFIG(pcib, b, s, f, reg + 4, 4) << 32; if (bootverbose) { printf("\tmap[%02x]: type %s, range %2d, base %#jx, size %2d", - reg, pci_maptype(map), ln2range, (uintmax_t)base, ln2size); - if (type == SYS_RES_IOPORT && !pci_porten(pcib, b, s, f)) + reg, pci_maptype(map), maprange, (uintmax_t)base, mapsize); + if (type == SYS_RES_IOPORT && !pci_porten(dev)) printf(", port disabled\n"); - else if (type == SYS_RES_MEMORY && !pci_memen(pcib, b, s, f)) + else if (type == SYS_RES_MEMORY && !pci_memen(dev)) printf(", memory disabled\n"); else printf(", enabled\n"); @@ -2349,7 +2393,8 @@ pci_add_map(device_t pcib, device_t bus, if ((u_long)base != base) { device_printf(bus, "pci%d:%d:%d:%d bar %#x too many address bits", - pci_get_domain(dev), b, s, f, reg); + pci_get_domain(dev), pci_get_bus(dev), pci_get_slot(dev), + pci_get_function(dev), reg); return (barlen); } @@ -2362,30 +2407,30 @@ pci_add_map(device_t pcib, device_t bus, */ if (pci_enable_io_modes) { /* Turn on resources that have been left off by a lazy BIOS */ - if (type == SYS_RES_IOPORT && !pci_porten(pcib, b, s, f)) { - cmd = PCIB_READ_CONFIG(pcib, b, s, f, PCIR_COMMAND, 2); + if (type == SYS_RES_IOPORT && !pci_porten(dev)) { + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_PORTEN; - PCIB_WRITE_CONFIG(pcib, b, s, f, PCIR_COMMAND, cmd, 2); + pci_write_config(dev, PCIR_COMMAND, cmd, 2); } - if (type == SYS_RES_MEMORY && !pci_memen(pcib, b, s, f)) { - cmd = PCIB_READ_CONFIG(pcib, b, s, f, PCIR_COMMAND, 2); + if (type == SYS_RES_MEMORY && !pci_memen(dev)) { + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_MEMEN; - PCIB_WRITE_CONFIG(pcib, b, s, f, PCIR_COMMAND, cmd, 2); + pci_write_config(dev, PCIR_COMMAND, cmd, 2); } } else { - if (type == SYS_RES_IOPORT && !pci_porten(pcib, b, s, f)) + if (type == SYS_RES_IOPORT && !pci_porten(dev)) return (barlen); - if (type == SYS_RES_MEMORY && !pci_memen(pcib, b, s, f)) + if (type == SYS_RES_MEMORY && !pci_memen(dev)) return (barlen); } - count = 1 << ln2size; + count = 1 << mapsize; if (base == 0 || base == pci_mapbase(testval)) { start = 0; /* Let the parent decide. */ end = ~0ULL; } else { start = base; - end = base + (1 << ln2size) - 1; + end = base + (1 << mapsize) - 1; } resource_list_add(rl, type, reg, start, end, count); @@ -2406,11 +2451,11 @@ pci_add_map(device_t pcib, device_t bus, */ resource_list_delete(rl, type, reg); start = 0; - } else + } else { start = rman_get_start(res); - pci_write_config(dev, reg, start, 4); - if (ln2range == 64) - pci_write_config(dev, reg + 4, start >> 32, 4); + rman_set_device(res, bus); + } + pci_write_bar(dev, reg, start); return (barlen); } @@ -2422,9 +2467,10 @@ pci_add_map(device_t pcib, device_t bus, * addressing mode. */ static void -pci_ata_maps(device_t pcib, device_t bus, device_t dev, int b, - int s, int f, struct resource_list *rl, int force, uint32_t prefetchmask) +pci_ata_maps(device_t bus, device_t dev, struct resource_list *rl, int force, + uint32_t prefetchmask) { + struct resource *r; int rid, type, progif; #if 0 /* if this device supports PCI native addressing use it */ @@ -2440,38 +2486,42 @@ pci_ata_maps(device_t pcib, device_t bus progif = pci_read_config(dev, PCIR_PROGIF, 1); type = SYS_RES_IOPORT; if (progif & PCIP_STORAGE_IDE_MODEPRIM) { - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(0), rl, force, + pci_add_map(bus, dev, PCIR_BAR(0), rl, force, prefetchmask & (1 << 0)); - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(1), rl, force, + pci_add_map(bus, dev, PCIR_BAR(1), rl, force, prefetchmask & (1 << 1)); } else { rid = PCIR_BAR(0); resource_list_add(rl, type, rid, 0x1f0, 0x1f7, 8); - resource_list_alloc(rl, bus, dev, type, &rid, 0x1f0, 0x1f7, 8, - 0); + r = resource_list_alloc(rl, bus, dev, type, &rid, 0x1f0, 0x1f7, + 8, 0); + rman_set_device(r, bus); rid = PCIR_BAR(1); resource_list_add(rl, type, rid, 0x3f6, 0x3f6, 1); - resource_list_alloc(rl, bus, dev, type, &rid, 0x3f6, 0x3f6, 1, - 0); + r = resource_list_alloc(rl, bus, dev, type, &rid, 0x3f6, 0x3f6, + 1, 0); + rman_set_device(r, bus); } if (progif & PCIP_STORAGE_IDE_MODESEC) { - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(2), rl, force, + pci_add_map(bus, dev, PCIR_BAR(2), rl, force, prefetchmask & (1 << 2)); - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(3), rl, force, + pci_add_map(bus, dev, PCIR_BAR(3), rl, force, prefetchmask & (1 << 3)); } else { rid = PCIR_BAR(2); resource_list_add(rl, type, rid, 0x170, 0x177, 8); - resource_list_alloc(rl, bus, dev, type, &rid, 0x170, 0x177, 8, - 0); + r = resource_list_alloc(rl, bus, dev, type, &rid, 0x170, 0x177, + 8, 0); + rman_set_device(r, bus); rid = PCIR_BAR(3); resource_list_add(rl, type, rid, 0x376, 0x376, 1); - resource_list_alloc(rl, bus, dev, type, &rid, 0x376, 0x376, 1, - 0); + r = resource_list_alloc(rl, bus, dev, type, &rid, 0x376, 0x376, + 1, 0); + rman_set_device(r, bus); } - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(4), rl, force, + pci_add_map(bus, dev, PCIR_BAR(4), rl, force, prefetchmask & (1 << 4)); - pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(5), rl, force, + pci_add_map(bus, dev, PCIR_BAR(5), rl, force, prefetchmask & (1 << 5)); } @@ -2526,18 +2576,11 @@ pci_assign_interrupt(device_t bus, devic void pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) { - device_t pcib; struct pci_devinfo *dinfo = device_get_ivars(dev); pcicfgregs *cfg = &dinfo->cfg; struct resource_list *rl = &dinfo->resources; struct pci_quirk *q; - int b, i, f, s; - - pcib = device_get_parent(bus); - - b = cfg->bus; - s = cfg->slot; - f = cfg->func; + int i; /* ATA devices needs special map treatment */ if ((pci_get_class(dev) == PCIC_STORAGE) && @@ -2545,11 +2588,11 @@ pci_add_resources(device_t bus, device_t ((pci_get_progif(dev) & PCIP_STORAGE_IDE_MASTERDEV) || (!pci_read_config(dev, PCIR_BAR(0), 4) && !pci_read_config(dev, PCIR_BAR(2), 4))) ) - pci_ata_maps(pcib, bus, dev, b, s, f, rl, force, prefetchmask); + pci_ata_maps(bus, dev, rl, force, prefetchmask); else for (i = 0; i < cfg->nummaps;) - i += pci_add_map(pcib, bus, dev, b, s, f, PCIR_BAR(i), - rl, force, prefetchmask & (1 << i)); + i += pci_add_map(bus, dev, PCIR_BAR(i), rl, force, + prefetchmask & (1 << i)); /* * Add additional, quirked resources. @@ -2557,8 +2600,7 @@ pci_add_resources(device_t bus, device_t for (q = &pci_quirks[0]; q->devid; q++) { if (q->devid == ((cfg->device << 16) | cfg->vendor) && q->type == PCI_QUIRK_MAP_REG) - pci_add_map(pcib, bus, dev, b, s, f, q->arg1, rl, - force, 0); + pci_add_map(bus, dev, q->arg1, rl, force, 0); } if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) { @@ -3401,21 +3443,12 @@ pci_alloc_map(device_t dev, device_t chi * it fails here, that other code is broken. */ res = NULL; - map = pci_read_config(child, *rid, 4); - pci_write_config(child, *rid, 0xffffffff, 4); - testval = pci_read_config(child, *rid, 4); - if (pci_maprange(testval) == 64) - map |= (pci_addr_t)pci_read_config(child, *rid + 4, 4) << 32; + pci_read_bar(child, *rid, &map, &testval); + + /* Ignore a BAR with a base of 0. */ if (pci_mapbase(testval) == 0) goto out; - /* - * Restore the original value of the BAR. We may have reprogrammed - * the BAR of the low-level console device and when booting verbose, - * we need the console device addressable. - */ - pci_write_config(child, *rid, map, 4); - if (PCI_BAR_MEM(testval)) { if (type != SYS_RES_MEMORY) { if (bootverbose) @@ -3435,6 +3468,7 @@ pci_alloc_map(device_t dev, device_t chi goto out; } } + /* * For real BARs, we need to override the size that * the driver requests, because that's what the BAR @@ -3454,13 +3488,14 @@ pci_alloc_map(device_t dev, device_t chi * appropriate bar for that resource. */ res = BUS_ALLOC_RESOURCE(device_get_parent(dev), child, type, rid, - start, end, count, flags); + start, end, count, flags & ~RF_ACTIVE); if (res == NULL) { device_printf(child, "%#lx bytes of rid %#x res %d failed (%#lx, %#lx).\n", count, *rid, type, start, end); goto out; } + rman_set_device(res, dev); resource_list_add(rl, type, *rid, start, end, count); rle = resource_list_find(rl, type, *rid); if (rle == NULL) @@ -3474,10 +3509,8 @@ pci_alloc_map(device_t dev, device_t chi "Lazy allocation of %#lx bytes rid %#x type %d at %#lx\n", count, *rid, type, rman_get_start(res)); map = rman_get_start(res); + pci_write_bar(child, *rid, map); out:; - pci_write_config(child, *rid, map, 4); - if (pci_maprange(testval) == 64) - pci_write_config(child, *rid + 4, map >> 32, 4); return (res); } @@ -3489,68 +3522,63 @@ pci_alloc_resource(device_t dev, device_ struct pci_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; struct resource_list_entry *rle; + struct resource *res; pcicfgregs *cfg = &dinfo->cfg; + if (device_get_parent(child) != dev) + return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, + type, rid, start, end, count, flags)); + /* * Perform lazy resource allocation */ - if (device_get_parent(child) == dev) { - switch (type) { - case SYS_RES_IRQ: - /* - * Can't alloc legacy interrupt once MSI messages - * have been allocated. - */ - if (*rid == 0 && (cfg->msi.msi_alloc > 0 || - cfg->msix.msix_alloc > 0)) + switch (type) { + case SYS_RES_IRQ: + /* + * Can't alloc legacy interrupt once MSI messages have + * been allocated. + */ + if (*rid == 0 && (cfg->msi.msi_alloc > 0 || + cfg->msix.msix_alloc > 0)) + return (NULL); + + /* + * If the child device doesn't have an interrupt + * routed and is deserving of an interrupt, try to + * assign it one. + */ + if (*rid == 0 && !PCI_INTERRUPT_VALID(cfg->intline) && + (cfg->intpin != 0)) + pci_assign_interrupt(dev, child, 0); + break; + case SYS_RES_IOPORT: + case SYS_RES_MEMORY: + /* Allocate resources for this BAR if needed. */ + rle = resource_list_find(rl, type, *rid); + if (rle == NULL) { + res = pci_alloc_map(dev, child, type, rid, start, end, + count, flags); + if (res == NULL) return (NULL); - /* - * If the child device doesn't have an - * interrupt routed and is deserving of an - * interrupt, try to assign it one. - */ - if (*rid == 0 && !PCI_INTERRUPT_VALID(cfg->intline) && - (cfg->intpin != 0)) - pci_assign_interrupt(dev, child, 0); - break; - case SYS_RES_IOPORT: - case SYS_RES_MEMORY: - if (*rid < PCIR_BAR(cfg->nummaps)) { - /* - * Enable the I/O mode. We should - * also be assigning resources too - * when none are present. The - * resource_list_alloc kind of sorta does - * this... - */ - if (PCI_ENABLE_IO(dev, child, type)) - return (NULL); - } rle = resource_list_find(rl, type, *rid); - if (rle == NULL) - return (pci_alloc_map(dev, child, type, rid, - start, end, count, flags)); - break; } + /* - * If we've already allocated the resource, then - * return it now. But first we may need to activate - * it, since we don't allocate the resource as active - * above. Normally this would be done down in the - * nexus, but since we short-circuit that path we have - * to do its job here. Not sure if we should free the - * resource if it fails to activate. + * If the resource belongs to the bus, then give it to + * the child. We need to activate it if requested + * since the bus always allocates inactive resources. */ - rle = resource_list_find(rl, type, *rid); - if (rle != NULL && rle->res != NULL) { + if (rle != NULL && rle->res != NULL && + rman_get_device(rle->res) == dev) { if (bootverbose) device_printf(child, "Reserved %#lx bytes for rid %#x type %d at %#lx\n", rman_get_size(rle->res), *rid, type, rman_get_start(rle->res)); + rman_set_device(rle->res, child); if ((flags & RF_ACTIVE) && - bus_generic_activate_resource(dev, child, type, - *rid, rle->res) != 0) + bus_activate_resource(child, type, *rid, + rle->res) != 0) return (NULL); return (rle->res); } @@ -3559,6 +3587,59 @@ pci_alloc_resource(device_t dev, device_ start, end, count, flags)); } +int +pci_release_resource(device_t dev, device_t child, int type, int rid, + struct resource *r) +{ + int error; + + if (device_get_parent(child) != dev) + return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child, + type, rid, r)); + + /* + * For BARs we don't actually want to release the resource. + * Instead, we deactivate the resource if needed and then give + * ownership of the BAR back to the bus. + */ + switch (type) { + case SYS_RES_IOPORT: + case SYS_RES_MEMORY: + if (rman_get_device(r) != child) + return (EINVAL); + if (rman_get_flags(r) & RF_ACTIVE) { + error = bus_deactivate_resource(child, type, rid, r); + if (error) + return (error); + } + rman_set_device(r, dev); + return (0); + } + return (bus_generic_rl_release_resource(dev, child, type, rid, r)); +} + +int +pci_activate_resource(device_t dev, device_t child, int type, int rid, + struct resource *r) +{ + int error; + + error = bus_generic_activate_resource(dev, child, type, rid, r); + if (error) + return (error); + + /* Enable decoding in the command register when activating BARs. */ + if (device_get_parent(child) == dev) { + switch (type) { + case SYS_RES_IOPORT: + case SYS_RES_MEMORY: + error = PCI_ENABLE_IO(dev, child, type); + break; + } + } + return (error); +} + void pci_delete_resource(device_t dev, device_t child, int type, int rid) { @@ -3572,27 +3653,33 @@ pci_delete_resource(device_t dev, device dinfo = device_get_ivars(child); rl = &dinfo->resources; rle = resource_list_find(rl, type, rid); - if (rle) { - if (rle->res) { - if (rman_get_device(rle->res) != dev || - rman_get_flags(rle->res) & RF_ACTIVE) { - device_printf(dev, "delete_resource: " - "Resource still owned by child, oops. " - "(type=%d, rid=%d, addr=%lx)\n", - rle->type, rle->rid, - rman_get_start(rle->res)); - return; - } - bus_release_resource(dev, type, rid, rle->res); + if (rle == NULL) + return; + + if (rle->res) { + if (rman_get_device(rle->res) != dev || + rman_get_flags(rle->res) & RF_ACTIVE) { + device_printf(dev, "delete_resource: " + "Resource still owned by child, oops. " + "(type=%d, rid=%d, addr=%lx)\n", + rle->type, rle->rid, + rman_get_start(rle->res)); + return; } - resource_list_delete(rl, type, rid); + + /* + * If this is a BAR, clear the BAR so it stops + * decoding before releasing the resource. + */ + switch (type) { + case SYS_RES_IOPORT: + case SYS_RES_MEMORY: + pci_write_bar(child, rid, 0); + break; + } + bus_release_resource(dev, type, rid, rle->res); } - /* - * Why do we turn off the PCI configuration BAR when we delete a - * resource? -- imp - */ - pci_write_config(child, rid, 0, 4); - BUS_DELETE_RESOURCE(device_get_parent(dev), child, type, rid); + resource_list_delete(rl, type, rid); } struct resource_list * Modified: stable/7/sys/dev/pci/pci_private.h ============================================================================== --- stable/7/sys/dev/pci/pci_private.h Mon May 4 20:25:56 2009 (r191794) +++ stable/7/sys/dev/pci/pci_private.h Mon May 4 20:35:59 2009 (r191795) @@ -82,6 +82,10 @@ int pci_msix_count_method(device_t dev, struct resource *pci_alloc_resource(device_t dev, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags); +int pci_release_resource(device_t dev, device_t child, int type, + int rid, struct resource *r); +int pci_activate_resource(device_t dev, device_t child, int type, + int rid, struct resource *r); void pci_delete_resource(device_t dev, device_t child, int type, int rid); struct resource_list *pci_get_resource_list (device_t dev, device_t child); Modified: stable/7/sys/dev/pci/pcireg.h ============================================================================== --- stable/7/sys/dev/pci/pcireg.h Mon May 4 20:25:56 2009 (r191794) +++ stable/7/sys/dev/pci/pcireg.h Mon May 4 20:35:59 2009 (r191795) @@ -130,7 +130,7 @@ #define PCIM_BAR_MEM_1MB 2 /* Locate below 1MB in PCI <= 2.1 */ #define PCIM_BAR_MEM_64 4 #define PCIM_BAR_MEM_PREFETCH 0x00000008 -#define PCIM_BAR_MEM_BASE 0xfffffff0 +#define PCIM_BAR_MEM_BASE 0xfffffffffffffff0ULL #define PCIM_BAR_IO_RESERVED 0x00000002 #define PCIM_BAR_IO_BASE 0xfffffffc #define PCIR_CIS 0x28 From emax at FreeBSD.org Mon May 4 20:48:08 2009 From: emax at FreeBSD.org (Maksim Yevmenkin) Date: Mon May 4 20:48:16 2009 Subject: svn commit: r191796 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb kern Message-ID: <200905042048.n44Km7tA056703@svn.freebsd.org> Author: emax Date: Mon May 4 20:48:07 2009 New Revision: 191796 URL: http://svn.freebsd.org/changeset/base/191796 Log: MFC r191366 Fix sbappendrecord_locked(). The main problem is that sbappendrecord_locked() relies on sbcompress() to set sb_mbtail. This will not happen if sbappendrecord_locked() is called with mbuf chain made of exactly one mbuf (i.e. m0->m_next == NULL). In this case sbcompress() will be called with m == NULL and will do nothing. I'm not entirely sure if m == NULL is a valid argument for sbcompress(), and, it rather pointless to call it like that, but keep calling it so it can do SBLASTMBUFCHK(). PR: kern/126742 Investigated by: pluknet < pluknet -at- gmail -dot- com > No response from: freebsd-current@, freebsd-bluetooth@ Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/kern/uipc_sockbuf.c Modified: stable/7/sys/kern/uipc_sockbuf.c ============================================================================== --- stable/7/sys/kern/uipc_sockbuf.c Mon May 4 20:35:59 2009 (r191795) +++ stable/7/sys/kern/uipc_sockbuf.c Mon May 4 20:48:07 2009 (r191796) @@ -576,10 +576,6 @@ sbappendrecord_locked(struct sockbuf *sb if (m0 == 0) return; - m = sb->sb_mb; - if (m) - while (m->m_nextpkt) - m = m->m_nextpkt; /* * Put the first mbuf on the queue. Note this permits zero length * records. @@ -587,16 +583,14 @@ sbappendrecord_locked(struct sockbuf *sb sballoc(sb, m0); SBLASTRECORDCHK(sb); SBLINKRECORD(sb, m0); - if (m) - m->m_nextpkt = m0; - else - sb->sb_mb = m0; + sb->sb_mbtail = m0; m = m0->m_next; m0->m_next = 0; if (m && (m0->m_flags & M_EOR)) { m0->m_flags &= ~M_EOR; m->m_flags |= M_EOR; } + /* always call sbcompress() so it can do SBLASTMBUFCHK() */ sbcompress(sb, m, m0); } From emax at FreeBSD.org Mon May 4 20:53:21 2009 From: emax at FreeBSD.org (Maksim Yevmenkin) Date: Mon May 4 20:53:34 2009 Subject: svn commit: r191797 - stable/7/lib/libbluetooth Message-ID: <200905042053.n44KrJjg056851@svn.freebsd.org> Author: emax Date: Mon May 4 20:53:19 2009 New Revision: 191797 URL: http://svn.freebsd.org/changeset/base/191797 Log: MFC r191388 Implement low-level Bluetooth HCI API. This should make it easier to make Linux BlueZ libhci port. Reviewed by: Iain Hibbert < plunky -at- rya-online -dot- net > of NetBSD Inspired by: Linux BlueZ Inspired by: NetBSD Modified: stable/7/lib/libbluetooth/ (props changed) stable/7/lib/libbluetooth/Makefile stable/7/lib/libbluetooth/bluetooth.3 stable/7/lib/libbluetooth/bluetooth.h stable/7/lib/libbluetooth/hci.c Modified: stable/7/lib/libbluetooth/Makefile ============================================================================== --- stable/7/lib/libbluetooth/Makefile Mon May 4 20:48:07 2009 (r191796) +++ stable/7/lib/libbluetooth/Makefile Mon May 4 20:53:19 2009 (r191797) @@ -33,6 +33,19 @@ MLINKS+= bluetooth.3 bt_devname.3 MLINKS+= bluetooth.3 bt_devinfo.3 MLINKS+= bluetooth.3 bt_devenum.3 +MLINKS+= bluetooth.3 bt_devopen.3 +MLINKS+= bluetooth.3 bt_devclose.3 +MLINKS+= bluetooth.3 bt_devsend.3 +MLINKS+= bluetooth.3 bt_devreq.3 +MLINKS+= bluetooth.3 bt_devfilter.3 +MLINKS+= bluetooth.3 bt_devfilter_pkt_set.3 +MLINKS+= bluetooth.3 bt_devfilter_pkt_clr.3 +MLINKS+= bluetooth.3 bt_devfilter_pkt_tst.3 +MLINKS+= bluetooth.3 bt_devfilter_evt_set.3 +MLINKS+= bluetooth.3 bt_devfilter_evt_clr.3 +MLINKS+= bluetooth.3 bt_devfilter_evt_tst.3 +MLINKS+= bluetooth.3 bt_devinquiry.3 + MLINKS+= bluetooth.3 bdaddr_same.3 MLINKS+= bluetooth.3 bdaddr_any.3 MLINKS+= bluetooth.3 bdaddr_copy.3 Modified: stable/7/lib/libbluetooth/bluetooth.3 ============================================================================== --- stable/7/lib/libbluetooth/bluetooth.3 Mon May 4 20:48:07 2009 (r191796) +++ stable/7/lib/libbluetooth/bluetooth.3 Mon May 4 20:53:19 2009 (r191797) @@ -25,7 +25,7 @@ .\" $Id: bluetooth.3,v 1.5 2003/05/20 23:04:30 max Exp $ .\" $FreeBSD$ .\" -.Dd February 13, 2009 +.Dd April 9, 2009 .Dt BLUETOOTH 3 .Os .Sh NAME @@ -41,6 +41,23 @@ .Nm bt_endprotoent , .Nm bt_aton , .Nm bt_ntoa , +.Nm bt_devaddr , +.Nm bt_devname , +.Nm bt_devinfo , +.Nm bt_devenum , +.Nm bt_devopen , +.Nm bt_devclose , +.Nm bt_devsend , +.Nm bt_devrecv , +.Nm bt_devreq , +.Nm bt_devfilter , +.Nm bt_devfilter_pkt_set , +.Nm bt_devfilter_pkt_clr , +.Nm bt_devfilter_pkt_tst , +.Nm bt_devfilter_evt_set , +.Nm bt_devfilter_evt_clr , +.Nm bt_devfilter_evt_tst , +.Nm bt_devinquiry , .Nm bdaddr_same , .Nm bdaddr_any , .Nm bdaddr_copy @@ -84,6 +101,32 @@ .Ft int .Fn bt_devenum "bt_devenum_cb_t *cb" "void *arg" .Ft int +.Fn bt_devopen "char const *devname" +.Ft int +.Fn bt_devclose "int s" +.Ft int +.Fn bt_devsend "int s" "uint16_t opcode" "void *param" "size_t plen" +.Ft ssize_t +.Fn bt_devrecv "int s" "void *buf" "size_t size" "time_t to" +.Ft int +.Fn bt_devreq "int s" "struct bt_devreq *r" "time_t to" +.Ft int +.Fn bt_devfilter "int s" "struct bt_devfilter const *new" "struct bt_devfilter *old" +.Ft void +.Fn bt_devfilter_pkt_set "struct bt_devfilter *filter" "uint8_t type" +.Ft void +.Fn bt_devfilter_pkt_clt "struct bt_devfilter *filter" "uint8_t type" +.Ft int +.Fn bt_devfilter_pkt_tst "struct bt_devfilter const *filter" "uint8_t type" +.Ft void +.Fn bt_devfilter_evt_set "struct bt_devfilter *filter" "uint8_t event" +.Ft void +.Fn bt_devfilter_evt_clt "struct bt_devfilter *filter" "uint8_t event" +.Ft int +.Fn bt_devfilter_evt_tst "struct bt_devfilter const *filter" "uint8_t event" +.Ft int +.Fn bt_devinquiry "char const *devname" "time_t length" "int num_rsp" "struct bt_devinquiry **ii" +.Ft int .Fn bdaddr_same "const bdaddr_t *a" "const bdaddr_t *b" .Ft int .Fn bdaddr_any "const bdaddr_t *a" @@ -311,6 +354,240 @@ The function returns number of successfu or -1 if an error occurred. .Pp The +.Fn bt_devopen +function opens a Bluetooth device with the given +.Fa devname +and returns a connected and bound +.Dv HCI +socket handle. +The function returns -1 if an error has occurred. +.Pp +The +.Fn bt_devclose +closes the passed +.Dv HCI +socket handle +.Fa s , +previously obtained with +.Xr bt_devopen 3 . +.Pp +The +.Fn bt_devsend +function sends a Bluetooth +.Dv HCI +command with the given +.Fa opcode +to the provided socket +.Fa s , +previously obtained with +.Xr bt_devopen 3 . +The +.Fa opcode +parameter is exppected to be in the host byte order. +The +.Fa param +and +.Fa plen +parameters specify command parameters. +The +.Fn bt_devsend +function does not modify the +.Dv HCI +filter on the provided socket +.Fa s . +The function returns 0 on success, +or -1 if an error occurred. +.Pp +The +.Fn bt_devrecv +function receives one Bluetooth +.Dv HCI +packet from the socket +.Fa s , +previously obtained with +.Xr bt_devopen 3 . +The packet is placed into the provided buffer +.Fa buf +of size +.Fa size . +The +.Fa to +parameter specifies receive timeout in seconds. +Infinite timeout can be specified by passing negative value in the +.Fa to +parameter. +The +.Fn bt_devrecv +function does not modify the +.Dv HCI +filter on the provided socket +.Fa s . +The function returns total number of bytes recevied, +or -1 if an error occurred. +.Pp +The +.Fn bt_devreq +function makes a Bluetooth +.Dv HCI +request to the socket +.Fa s , +previously obtained with +.Xr bt_devopen 3 . +The function will send the specified command and will wait for the specified +event, +or timeout +.Fa to +seconds to occur. +The +.Vt bt_devreq +structure is defined as follows +.Bd -literal -offset indent +struct bt_devreq +{ + uint16_t opcode; + uint8_t event; + void *cparam; + size_t clen; + void *rparam; + size_t rlen; +}; +.Ed +.Pp +The +.Fa opcode +field specifies the command and is expected to be in the host byte order. +The +.Fa cparam +and +.Fa clen +fields specify command parameters data and command parameters data size +respectively. +The +.Fa event +field specifies which Bluetooth +.Dv HCI +event ID the function should wait for, otherwise it should be set to zero. +The +.Dv HCI +Command Complete and Command Status events are enabled by default. +The +.Fa rparam +and +.Fa rlen +parameters specify buffer and buffer size respectively where return +parameters should be placed. +The +.Fn bt_devreq +function temporarily modifies filter on the provided +.Dv HCI +socket +.Fa s . +The function returns 0 on success, or -1 if an error occurred. +.Pp +The +.Fn bt_devfilter +controls the local +.Dv HCI +filter associated with the socket +.Fa s , +previously obtained with +.Xr bt_devopen 3 . +Filtering can be done on packet types, i.e. +.Dv ACL , +.Dv SCO or +.Dv HCI , +command and event packets, and, in addition, on +.Dv HCI +event IDs. +Before applying the +.Fa new +filter (if provided) the function will try to obtain the current filter +from the socket +.Fa s +and place it into the +.Fa old +parameter (if provided). +The function returns 0 on success, or -1 if an error occurred. +.Pp +The +.Fn bt_devfilter_pkt_set , +.Fn bt_devfilter_pkt_clr +and +.Fn bt_devfilter_pkt_tst +functions can be used to modify and test the +.Dv HCI +filter +.Fa filter . +The +.Fa type +parameter specifies +.Dv HCI +packet type. +.Pp +The +.Fn bt_devfilter_evt_set , +.Fn bt_devfilter_evt_clr +and +.Fn bt_devfilter_evt_tst +functions can be used to modify and test the +.Dv HCI +event filter +.Fa filter . +The +.Fa event +parameter specifies +.Dv HCI +event ID. +.Pp +The +.Fn bt_devinquiry +function performs Bluetooth inquiry. +The +.Fa devname +parameter specifies which local Bluetooth device should perform an inquiry. +If not secified, i.e. +.Dv NULL , +then first available device will be used. +The +.Fa length +parameters specifies the total length of an inquiry in seconds. +If not specified, i.e. 0, default value will be used. +The +.Fa num_rsp +parameter specifies the number of responses that can be received before +the inquiry is halted. +If not specified, i.e. 0, default value will be used. +The +.Fa ii +parameter specifies where to place inquiry results. +On success, the function will return total number of inquiry results, +will allocate, +using +.Xr calloc 3 , +buffer to store all the inquiry results and +will return pointer to the allocated buffer in the +.Fa ii +parameter. +It is up to the caller of the function to dispose of the buffer using +.Xr free 3 +call. +The function returns -1 if an error has occurred. +The +.Vt bt_devinquiry +structure is defined as follows +.Bd -literal -offset indent +struct bt_devinquiry { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; + int8_t rssi; + uint8_t data[240]; +}; +.Ed +.Pp +The .Fn bdaddr_same , .Fn bdaddr_any and @@ -444,6 +721,6 @@ will be bound and connected to the Bluet .Sh AUTHORS .An Maksim Yevmenkin Aq m_evmenkin@yahoo.com .Sh BUGS -These functions use static data storage; +Some of those functions use static data storage; if the data is needed for future use, it should be copied before any subsequent calls overwrite it. Modified: stable/7/lib/libbluetooth/bluetooth.h ============================================================================== --- stable/7/lib/libbluetooth/bluetooth.h Mon May 4 20:48:07 2009 (r191796) +++ stable/7/lib/libbluetooth/bluetooth.h Mon May 4 20:53:19 2009 (r191797) @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,7 @@ #include #include #include +#include __BEGIN_DECLS @@ -129,8 +131,48 @@ struct bt_devinfo uint8_t _padding[20]; /* leave space for future additions */ }; +struct bt_devreq +{ + uint16_t opcode; + uint8_t event; + void *cparam; + size_t clen; + void *rparam; + size_t rlen; +}; + +struct bt_devfilter { + bitstr_t bit_decl(packet_mask, 8); + bitstr_t bit_decl(event_mask, 256); +}; + +struct bt_devinquiry { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; + int8_t rssi; + uint8_t data[240]; +}; + typedef int (bt_devenum_cb_t)(int, struct bt_devinfo const *, void *); +int bt_devopen (char const *devname); +int bt_devclose(int s); +int bt_devsend (int s, uint16_t opcode, void *param, size_t plen); +ssize_t bt_devrecv (int s, void *buf, size_t size, time_t to); +int bt_devreq (int s, struct bt_devreq *r, time_t to); +int bt_devfilter(int s, struct bt_devfilter const *new, + struct bt_devfilter *old); +void bt_devfilter_pkt_set(struct bt_devfilter *filter, uint8_t type); +void bt_devfilter_pkt_clr(struct bt_devfilter *filter, uint8_t type); +int bt_devfilter_pkt_tst(struct bt_devfilter const *filter, uint8_t type); +void bt_devfilter_evt_set(struct bt_devfilter *filter, uint8_t event); +void bt_devfilter_evt_clr(struct bt_devfilter *filter, uint8_t event); +int bt_devfilter_evt_tst(struct bt_devfilter const *filter, uint8_t event); +int bt_devinquiry(char const *devname, time_t length, int num_rsp, + struct bt_devinquiry **ii); int bt_devinfo (struct bt_devinfo *di); int bt_devenum (bt_devenum_cb_t *cb, void *arg); Modified: stable/7/lib/libbluetooth/hci.c ============================================================================== --- stable/7/lib/libbluetooth/hci.c Mon May 4 20:48:07 2009 (r191796) +++ stable/7/lib/libbluetooth/hci.c Mon May 4 20:53:19 2009 (r191797) @@ -30,15 +30,505 @@ * $FreeBSD$ */ +#include #include +#include #include #include #include #include +#undef MIN +#define MIN(a, b) (((a) < (b))? (a) : (b)) + +static int bt_devany_cb(int s, struct bt_devinfo const *di, void *xdevname); static char * bt_dev2node (char const *devname, char *nodename, int nnlen); int +bt_devopen(char const *devname) +{ + struct sockaddr_hci ha; + bdaddr_t ba; + int s; + + if (devname == NULL) { + errno = EINVAL; + return (-1); + } + + memset(&ha, 0, sizeof(ha)); + ha.hci_len = sizeof(ha); + ha.hci_family = AF_BLUETOOTH; + + if (bt_aton(devname, &ba)) { + if (!bt_devname(ha.hci_node, &ba)) + return (-1); + } else if (bt_dev2node(devname, ha.hci_node, + sizeof(ha.hci_node)) == NULL) { + errno = ENXIO; + return (-1); + } + + s = socket(PF_BLUETOOTH, SOCK_RAW, BLUETOOTH_PROTO_HCI); + if (s < 0) + return (-1); + + if (bind(s, (struct sockaddr *) &ha, sizeof(ha)) < 0 || + connect(s, (struct sockaddr *) &ha, sizeof(ha)) < 0) { + close(s); + return (-1); + } + + return (s); +} + +int +bt_devclose(int s) +{ + return (close(s)); +} + +int +bt_devsend(int s, uint16_t opcode, void *param, size_t plen) +{ + ng_hci_cmd_pkt_t h; + struct iovec iv[2]; + int ivn; + + if ((plen == 0 && param != NULL) || + (plen > 0 && param == NULL) || + plen > UINT8_MAX) { + errno = EINVAL; + return (-1); + } + + iv[0].iov_base = &h; + iv[0].iov_len = sizeof(h); + ivn = 1; + + h.type = NG_HCI_CMD_PKT; + h.opcode = htole16(opcode); + if (plen > 0) { + h.length = plen; + + iv[1].iov_base = param; + iv[1].iov_len = plen; + ivn = 2; + } else + h.length = 0; + + while (writev(s, iv, ivn) < 0) { + if (errno == EAGAIN || errno == EINTR) + continue; + + return (-1); + } + + return (0); +} + +ssize_t +bt_devrecv(int s, void *buf, size_t size, time_t to) +{ + ssize_t n; + + if (buf == NULL || size == 0) { + errno = EINVAL; + return (-1); + } + + if (to >= 0) { + fd_set rfd; + struct timeval tv; + + FD_ZERO(&rfd); + FD_SET(s, &rfd); + + tv.tv_sec = to; + tv.tv_usec = 0; + + while ((n = select(s + 1, &rfd, NULL, NULL, &tv)) < 0) { + if (errno == EAGAIN || errno == EINTR) + continue; + + return (-1); + } + + if (n == 0) { + errno = ETIMEDOUT; + return (-1); + } + + assert(FD_ISSET(s, &rfd)); + } + + while ((n = read(s, buf, size)) < 0) { + if (errno == EAGAIN || errno == EINTR) + continue; + + return (-1); + } + + switch (*((uint8_t *) buf)) { + case NG_HCI_CMD_PKT: { + ng_hci_cmd_pkt_t *h = (ng_hci_cmd_pkt_t *) buf; + + if (n >= sizeof(*h) && n == (sizeof(*h) + h->length)) + return (n); + } break; + + case NG_HCI_ACL_DATA_PKT: { + ng_hci_acldata_pkt_t *h = (ng_hci_acldata_pkt_t *) buf; + + if (n >= sizeof(*h) && n == (sizeof(*h) + le16toh(h->length))) + return (n); + } break; + + case NG_HCI_SCO_DATA_PKT: { + ng_hci_scodata_pkt_t *h = (ng_hci_scodata_pkt_t *) buf; + + if (n >= sizeof(*h) && n == (sizeof(*h) + h->length)) + return (n); + } break; + + case NG_HCI_EVENT_PKT: { + ng_hci_event_pkt_t *h = (ng_hci_event_pkt_t *) buf; + + if (n >= sizeof(*h) && n == (sizeof(*h) + h->length)) + return (n); + } break; + } + + errno = EIO; + return (-1); +} + +int +bt_devreq(int s, struct bt_devreq *r, time_t to) +{ + uint8_t buf[320]; /* more than enough */ + ng_hci_event_pkt_t *e = (ng_hci_event_pkt_t *) buf; + ng_hci_command_compl_ep *cc = (ng_hci_command_compl_ep *)(e+1); + ng_hci_command_status_ep *cs = (ng_hci_command_status_ep*)(e+1); + struct bt_devfilter old, new; + time_t t_end; + uint16_t opcode; + ssize_t n; + int error; + + if (s < 0 || r == NULL || to < 0) { + errno = EINVAL; + return (-1); + } + + if ((r->rlen == 0 && r->rparam != NULL) || + (r->rlen > 0 && r->rparam == NULL)) { + errno = EINVAL; + return (-1); + } + + memset(&new, 0, sizeof(new)); + bt_devfilter_pkt_set(&new, NG_HCI_EVENT_PKT); + bt_devfilter_evt_set(&new, NG_HCI_EVENT_COMMAND_COMPL); + bt_devfilter_evt_set(&new, NG_HCI_EVENT_COMMAND_STATUS); + if (r->event != 0) + bt_devfilter_evt_set(&new, r->event); + + if (bt_devfilter(s, &new, &old) < 0) + return (-1); + + error = 0; + + n = bt_devsend(s, r->opcode, r->cparam, r->clen); + if (n < 0) { + error = errno; + goto out; + } + + opcode = htole16(r->opcode); + t_end = time(NULL) + to; + + do { + to = t_end - time(NULL); + if (to < 0) + to = 0; + + n = bt_devrecv(s, buf, sizeof(buf), to); + if (n < 0) { + error = errno; + goto out; + } + + if (e->type != NG_HCI_EVENT_PKT) { + error = EIO; + goto out; + } + + n -= sizeof(*e); + + switch (e->event) { + case NG_HCI_EVENT_COMMAND_COMPL: + if (cc->opcode == opcode) { + n -= sizeof(*cc); + + if (r->rlen >= n) { + r->rlen = n; + memcpy(r->rparam, cc + 1, r->rlen); + } + + goto out; + } + break; + + case NG_HCI_EVENT_COMMAND_STATUS: + if (cs->opcode == opcode) { + if (r->event != NG_HCI_EVENT_COMMAND_STATUS) { + if (cs->status != 0) { + error = EIO; + goto out; + } + } else { + if (r->rlen >= n) { + r->rlen = n; + memcpy(r->rparam, cs, r->rlen); + } + + goto out; + } + } + break; + + default: + if (e->event == r->event) { + if (r->rlen >= n) { + r->rlen = n; + memcpy(r->rparam, e + 1, r->rlen); + } + + goto out; + } + break; + } + } while (to > 0); + + error = ETIMEDOUT; +out: + bt_devfilter(s, &old, NULL); + + if (error != 0) { + errno = error; + return (-1); + } + + return (0); +} + +int +bt_devfilter(int s, struct bt_devfilter const *new, struct bt_devfilter *old) +{ + struct ng_btsocket_hci_raw_filter f; + socklen_t len; + + if (new == NULL && old == NULL) { + errno = EINVAL; + return (-1); + } + + if (old != NULL) { + len = sizeof(f); + if (getsockopt(s, SOL_HCI_RAW, SO_HCI_RAW_FILTER, &f, &len) < 0) + return (-1); + + memset(old, 0, sizeof(*old)); + memcpy(old->packet_mask, &f.packet_mask, + MIN(sizeof(old->packet_mask), sizeof(f.packet_mask))); + memcpy(old->event_mask, &f.event_mask, + MIN(sizeof(old->event_mask), sizeof(f.packet_mask))); + } + + if (new != NULL) { + memset(&f, 0, sizeof(f)); + memcpy(&f.packet_mask, new->packet_mask, + MIN(sizeof(f.packet_mask), sizeof(new->event_mask))); + memcpy(&f.event_mask, new->event_mask, + MIN(sizeof(f.event_mask), sizeof(new->event_mask))); + + len = sizeof(f); + if (setsockopt(s, SOL_HCI_RAW, SO_HCI_RAW_FILTER, &f, len) < 0) + return (-1); + } + + return (0); +} + +void +bt_devfilter_pkt_set(struct bt_devfilter *filter, uint8_t type) +{ + bit_set(filter->packet_mask, type - 1); +} + +void +bt_devfilter_pkt_clr(struct bt_devfilter *filter, uint8_t type) +{ + bit_clear(filter->packet_mask, type - 1); +} + +int +bt_devfilter_pkt_tst(struct bt_devfilter const *filter, uint8_t type) +{ + return (bit_test(filter->packet_mask, type - 1)); +} + +void +bt_devfilter_evt_set(struct bt_devfilter *filter, uint8_t event) +{ + bit_set(filter->event_mask, event - 1); +} + +void +bt_devfilter_evt_clr(struct bt_devfilter *filter, uint8_t event) +{ + bit_clear(filter->event_mask, event - 1); +} + +int +bt_devfilter_evt_tst(struct bt_devfilter const *filter, uint8_t event) +{ + return (bit_test(filter->event_mask, event - 1)); +} + +int +bt_devinquiry(char const *devname, time_t length, int num_rsp, + struct bt_devinquiry **ii) +{ + uint8_t buf[320]; + char _devname[HCI_DEVNAME_SIZE]; + struct bt_devfilter f; + ng_hci_inquiry_cp *cp = (ng_hci_inquiry_cp *) buf; + ng_hci_event_pkt_t *e = (ng_hci_event_pkt_t *) buf; + ng_hci_inquiry_result_ep *ep = (ng_hci_inquiry_result_ep *)(e+1); + ng_hci_inquiry_response *ir; + struct bt_devinquiry *i; + int s, n; + time_t to; + + if (ii == NULL) { + errno = EINVAL; + return (-1); + } + + if (devname == NULL) { + memset(_devname, 0, sizeof(_devname)); + devname = _devname; + + n = bt_devenum(bt_devany_cb, _devname); + if (n <= 0) { + if (n == 0) + *ii = NULL; + + return (n); + } + } + + s = bt_devopen(devname); + if (s < 0) + return (-1); + + if (bt_devfilter(s, NULL, &f) < 0) { + bt_devclose(s); + return (-1); + } + + bt_devfilter_evt_set(&f, NG_HCI_EVENT_INQUIRY_COMPL); + bt_devfilter_evt_set(&f, NG_HCI_EVENT_INQUIRY_RESULT); + + if (bt_devfilter(s, &f, NULL) < 0) { + bt_devclose(s); + return (-1); + } + + /* Always use GIAC LAP */ + cp->lap[0] = 0x33; + cp->lap[1] = 0x8b; + cp->lap[2] = 0x9e; + + /* Calculate inquire length in 1.28 second units */ + to = (time_t) ((double) length / 1.28); + if (to <= 0) + cp->inquiry_length = 4; /* 5.12 seconds */ + else if (to > 254) + cp->inquiry_length = 255; /* 326.40 seconds */ + else + cp->inquiry_length = to + 1; + + to = (time_t)((double) cp->inquiry_length * 1.28) + 1; + + if (num_rsp <= 0 || num_rsp > 255) + num_rsp = 8; + cp->num_responses = (uint8_t) num_rsp; + + i = *ii = calloc(num_rsp, sizeof(struct bt_devinquiry)); + if (i == NULL) { + bt_devclose(s); + errno = ENOMEM; + return (-1); + } + + if (bt_devsend(s, + NG_HCI_OPCODE(NG_HCI_OGF_LINK_CONTROL, NG_HCI_OCF_INQUIRY), + cp, sizeof(*cp)) < 0) { + free(i); + bt_devclose(s); + return (-1); + } + +wait_for_more: + + n = bt_devrecv(s, buf, sizeof(buf), to); + if (n < 0) { + free(i); + bt_devclose(s); + return (-1); + } + + if (n < sizeof(ng_hci_event_pkt_t)) { + free(i); + bt_devclose(s); + errno = EIO; + return (-1); + } + + switch (e->event) { + case NG_HCI_EVENT_INQUIRY_COMPL: + break; + + case NG_HCI_EVENT_INQUIRY_RESULT: + ir = (ng_hci_inquiry_response *)(ep + 1); + + for (n = 0; n < MIN(ep->num_responses, num_rsp); n ++) { + bdaddr_copy(&i->bdaddr, &ir->bdaddr); + i->pscan_rep_mode = ir->page_scan_rep_mode; + i->pscan_period_mode = ir->page_scan_period_mode; + memcpy(i->dev_class, ir->uclass, sizeof(i->dev_class)); + i->clock_offset = le16toh(ir->clock_offset); + + ir ++; + i ++; + num_rsp --; + } + /* FALLTHROUGH */ + + default: + goto wait_for_more; + /* NOT REACHED */ + } + + bt_devclose(s); + + return (i - *ii); +} + +int bt_devinfo(struct bt_devinfo *di) { union { @@ -53,6 +543,7 @@ bt_devinfo(struct bt_devinfo *di) struct ng_btsocket_hci_raw_node_debug r8; } rp; struct sockaddr_hci ha; + socklen_t halen; int s, rval; if (di == NULL) { @@ -60,27 +551,14 @@ bt_devinfo(struct bt_devinfo *di) return (-1); } - memset(&ha, 0, sizeof(ha)); - ha.hci_len = sizeof(ha); - ha.hci_family = AF_BLUETOOTH; - - if (bt_aton(di->devname, &rp.r1.bdaddr)) { - if (!bt_devname(ha.hci_node, &rp.r1.bdaddr)) - return (-1); - } else if (bt_dev2node(di->devname, ha.hci_node, - sizeof(ha.hci_node)) == NULL) { - errno = ENXIO; - return (-1); - } - - s = socket(PF_BLUETOOTH, SOCK_RAW, BLUETOOTH_PROTO_HCI); + s = bt_devopen(di->devname); if (s < 0) return (-1); rval = -1; - if (bind(s, (struct sockaddr *) &ha, sizeof(ha)) < 0 || - connect(s, (struct sockaddr *) &ha, sizeof(ha)) < 0) + halen = sizeof(ha); + if (getsockname(s, (struct sockaddr *) &ha, &halen) < 0) goto bad; strlcpy(di->devname, ha.hci_node, sizeof(di->devname)); @@ -138,7 +616,7 @@ bt_devinfo(struct bt_devinfo *di) rval = 0; bad: - close(s); + bt_devclose(s); return (rval); } @@ -205,6 +683,13 @@ bt_devenum(bt_devenum_cb_t cb, void *arg return (count); } +static int +bt_devany_cb(int s, struct bt_devinfo const *di, void *xdevname) +{ + strlcpy((char *) xdevname, di->devname, HCI_DEVNAME_SIZE); + return (1); +} + static char * bt_dev2node(char const *devname, char *nodename, int nnlen) { From emax at FreeBSD.org Mon May 4 21:00:45 2009 From: emax at FreeBSD.org (Maksim Yevmenkin) Date: Mon May 4 21:00:56 2009 Subject: svn commit: r191798 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb dev/syscons Message-ID: <200905042100.n44L0icR057077@svn.freebsd.org> Author: emax Date: Mon May 4 21:00:43 2009 New Revision: 191798 URL: http://svn.freebsd.org/changeset/base/191798 Log: MFC r190868 Remove obsolete/bogus layering. Reviewed by: freebsd-current@, freebsd-hackers@ Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/dev/syscons/syscons.c Modified: stable/7/sys/dev/syscons/syscons.c ============================================================================== --- stable/7/sys/dev/syscons/syscons.c Mon May 4 20:53:19 2009 (r191797) +++ stable/7/sys/dev/syscons/syscons.c Mon May 4 21:00:43 2009 (r191798) @@ -184,7 +184,6 @@ static void scshutdown(void *arg, int ho static u_int scgetc(sc_softc_t *sc, u_int flags); #define SCGETC_CN 1 #define SCGETC_NONBLOCK 2 -static int sccngetch(int flags); static void sccnupdate(scr_stat *scp); static scr_stat *alloc_scp(sc_softc_t *sc, int vty); static void init_scp(sc_softc_t *sc, int vty, scr_stat *scp); @@ -1569,12 +1568,6 @@ sc_cnputc(struct consdev *cd, int c) static int sc_cngetc(struct consdev *cd) { - return sccngetch(SCGETC_NONBLOCK); -} - -static int -sccngetch(int flags) -{ static struct fkeytab fkey; static int fkeycp; scr_stat *scp; @@ -1615,7 +1608,7 @@ sccngetch(int flags) kbd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode); kbd_poll(scp->sc->kbd, TRUE); - c = scgetc(scp->sc, SCGETC_CN | flags); + c = scgetc(scp->sc, SCGETC_CN | SCGETC_NONBLOCK); kbd_poll(scp->sc->kbd, FALSE); scp->kbd_mode = cur_mode; From jhb at FreeBSD.org Mon May 4 21:04:30 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 21:04:48 2009 Subject: svn commit: r191799 - in stable/7/sys: . amd64/include amd64/pci contrib/pf dev/acpica dev/ath/ath_hal dev/cxgb i386/include i386/pci Message-ID: <200905042104.n44L4TcW057206@svn.freebsd.org> Author: jhb Date: Mon May 4 21:04:29 2009 New Revision: 191799 URL: http://svn.freebsd.org/changeset/base/191799 Log: MFC: Expand the support for PCI-e memory mapped configuration space access. Note that unlike in HEAD, this defaults to off and must be explicitly enabled by setting the loader tunable hw.pci.mcfg=1. - Add support for the Intel 915GM chipsets by reading the BAR. - Add parsing of the ACPI MCFG table to discover memory mapped configuration access on modern machines. - Port the memory mapped config acess to amd64. On amd64 it uses the direct map. - For config requests to busses not listed in ACPI's min/max valid buses, fall back to using type #1 configuration access instead. - Add a workaround for some K8 chipsets that do not expose all devices on bus 0 via MCFG and fall back to type #1 for those devices instead. Modified: stable/7/sys/ (props changed) stable/7/sys/amd64/include/pci_cfgreg.h stable/7/sys/amd64/pci/pci_cfgreg.c stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/acpica/acpi.c stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/i386/include/pci_cfgreg.h stable/7/sys/i386/pci/pci_cfgreg.c Modified: stable/7/sys/amd64/include/pci_cfgreg.h ============================================================================== --- stable/7/sys/amd64/include/pci_cfgreg.h Mon May 4 21:00:43 2009 (r191798) +++ stable/7/sys/amd64/include/pci_cfgreg.h Mon May 4 21:04:29 2009 (r191799) @@ -37,6 +37,7 @@ #define CONF1_ENABLE_MSK1 0x80000001ul #define CONF1_ENABLE_RES1 0x80000000ul +int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes); Modified: stable/7/sys/amd64/pci/pci_cfgreg.c ============================================================================== --- stable/7/sys/amd64/pci/pci_cfgreg.c Mon May 4 21:00:43 2009 (r191798) +++ stable/7/sys/amd64/pci/pci_cfgreg.c Mon May 4 21:04:29 2009 (r191799) @@ -33,15 +33,36 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include +#include +#include #include +enum { + CFGMECH_NONE = 0, + CFGMECH_1, + CFGMECH_PCIE, +}; + +static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, + int bytes); +static int pciereg_cfgread(int bus, unsigned slot, unsigned func, + unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); +static int cfgmech; +static vm_offset_t pcie_base; +static int pcie_minbus, pcie_maxbus; +static uint32_t pcie_badslots; static struct mtx pcicfg_mtx; +static int mcfg_enable = 0; +TUNABLE_INT("hw.pci.mcfg", &mcfg_enable); /* * Initialise access to PCI configuration space @@ -49,15 +70,62 @@ static struct mtx pcicfg_mtx; int pci_cfgregopen(void) { - static int opened = 0; + static int once = 0; + uint64_t pciebar; + uint16_t did, vid; + + if (!once) { + mtx_init(&pcicfg_mtx, "pcicfg", NULL, MTX_SPIN); + once = 1; + } - if (opened) + if (cfgmech != CFGMECH_NONE) return (1); - mtx_init(&pcicfg_mtx, "pcicfg", NULL, MTX_SPIN); - opened = 1; + cfgmech = CFGMECH_1; + + /* + * Grope around in the PCI config space to see if this is a + * chipset that is capable of doing memory-mapped config cycles. + * This also implies that it can do PCIe extended config cycles. + */ + + /* Check for supported chipsets */ + vid = pci_cfgregread(0, 0, 0, PCIR_VENDOR, 2); + did = pci_cfgregread(0, 0, 0, PCIR_DEVICE, 2); + switch (vid) { + case 0x8086: + switch (did) { + case 0x3590: + case 0x3592: + /* Intel 7520 or 7320 */ + pciebar = pci_cfgregread(0, 0, 0, 0xce, 2) << 16; + pcie_cfgregopen(pciebar, 0, 255); + break; + case 0x2580: + case 0x2584: + case 0x2590: + /* Intel 915, 925, or 915GM */ + pciebar = pci_cfgregread(0, 0, 0, 0x48, 4); + pcie_cfgregopen(pciebar, 0, 255); + break; + } + } + return (1); } +static uint32_t +pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +{ + + if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && + (bus != 0 || !(1 << slot & pcie_badslots))) + return (pciereg_cfgread(bus, slot, func, reg, bytes)); + else + return (pcireg_cfgread(bus, slot, func, reg, bytes)); +} + /* * Read configuration space register */ @@ -75,12 +143,12 @@ pci_cfgregread(int bus, int slot, int fu * as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pcireg_cfgread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); if (line == 0 || line >= 128) line = PCI_INVALID_IRQ; return (line); } - return (pcireg_cfgread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(bus, slot, func, reg, bytes)); } /* @@ -90,7 +158,12 @@ void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) { - pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && + (bus != 0 || !(1 << slot & pcie_badslots))) + pciereg_cfgwrite(bus, slot, func, reg, data, bytes); + else + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } /* @@ -173,3 +246,106 @@ pcireg_cfgwrite(int bus, int slot, int f } mtx_unlock_spin(&pcicfg_mtx); } + +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) +{ + uint32_t val1, val2; + int slot; + + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + + if (bootverbose) + printf("PCIe: Memory Mapped configuration base @ 0x%lx\n", + base); + + /* XXX: We should make sure this really fits into the direct map. */ + pcie_base = (vm_offset_t)pmap_mapdev(base, (maxbus + 1) << 20); + pcie_minbus = minbus; + pcie_maxbus = maxbus; + cfgmech = CFGMECH_PCIE; + + /* + * On some AMD systems, some of the devices on bus 0 are + * inaccessible using memory-mapped PCI config access. Walk + * bus 0 looking for such devices. For these devices, we will + * fall back to using type 1 config access instead. + */ + if (pci_cfgregopen() != 0) { + for (slot = 0; slot < 32; slot++) { + val1 = pcireg_cfgread(0, slot, 0, 0, 4); + if (val1 == 0xffffffff) + continue; + + val2 = pciereg_cfgread(0, slot, 0, 0, 4); + if (val2 != val1) + pcie_badslots |= (1 << slot); + } + } + + return (1); +} + +#define PCIE_VADDR(base, reg, bus, slot, func) \ + ((base) + \ + ((((bus) & 0xff) << 20) | \ + (((slot) & 0x1f) << 15) | \ + (((func) & 0x7) << 12) | \ + ((reg) & 0xfff))) + +static int +pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, + unsigned bytes) +{ + volatile vm_offset_t va; + int data = -1; + + if (bus < pcie_minbus || bus > pcie_maxbus || slot >= 32 || + func > PCI_FUNCMAX || reg >= 0x1000) + return (-1); + + va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + + switch (bytes) { + case 4: + data = *(volatile uint32_t *)(va); + break; + case 2: + data = *(volatile uint16_t *)(va); + break; + case 1: + data = *(volatile uint8_t *)(va); + break; + } + + return (data); +} + +static void +pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes) +{ + volatile vm_offset_t va; + + if (bus < pcie_minbus || bus > pcie_maxbus || slot >= 32 || + func > PCI_FUNCMAX || reg >= 0x1000) + return; + + va = PCIE_VADDR(pcie_base, reg, bus, slot, func); + + switch (bytes) { + case 4: + *(volatile uint32_t *)(va) = data; + break; + case 2: + *(volatile uint16_t *)(va) = data; + break; + case 1: + *(volatile uint8_t *)(va) = data; + break; + } +} Modified: stable/7/sys/dev/acpica/acpi.c ============================================================================== --- stable/7/sys/dev/acpica/acpi.c Mon May 4 21:00:43 2009 (r191798) +++ stable/7/sys/dev/acpica/acpi.c Mon May 4 21:04:29 2009 (r191799) @@ -48,6 +48,9 @@ __FBSDID("$FreeBSD$"); #include #include +#if defined(__i386__) || defined(__amd64__) +#include +#endif #include #include #include @@ -153,6 +156,9 @@ static int acpi_child_location_str_metho char *buf, size_t buflen); static int acpi_child_pnpinfo_str_method(device_t acdev, device_t child, char *buf, size_t buflen); +#if defined(__i386__) || defined(__amd64__) +static void acpi_enable_pcie(void); +#endif static device_method_t acpi_methods[] = { /* Device interface */ @@ -455,6 +461,11 @@ acpi_attach(device_t dev) goto out; } +#if defined(__i386__) || defined(__amd64__) + /* Handle MCFG table if present. */ + acpi_enable_pcie(); +#endif + /* Install the default address space handlers. */ status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_DEFAULT_HANDLER, NULL, NULL); @@ -1473,6 +1484,36 @@ acpi_isa_pnp_probe(device_t bus, device_ return_VALUE (result); } +#if defined(__i386__) || defined(__amd64__) +/* + * Look for a MCFG table. If it is present, use the settings for + * domain (segment) 0 to setup PCI config space access via the memory + * map. + */ +static void +acpi_enable_pcie(void) +{ + ACPI_TABLE_HEADER *hdr; + ACPI_MCFG_ALLOCATION *alloc, *end; + ACPI_STATUS status; + + status = AcpiGetTable(ACPI_SIG_MCFG, 1, &hdr); + if (ACPI_FAILURE(status)) + return; + + end = (ACPI_MCFG_ALLOCATION *)((char *)hdr + hdr->Length); + alloc = (ACPI_MCFG_ALLOCATION *)((ACPI_TABLE_MCFG *)hdr + 1); + while (alloc < end) { + if (alloc->PciSegment == 0) { + pcie_cfgregopen(alloc->Address, alloc->StartBusNumber, + alloc->EndBusNumber); + return; + } + alloc++; + } +} +#endif + /* * Scan all of the ACPI namespace and attach child devices. * Modified: stable/7/sys/i386/include/pci_cfgreg.h ============================================================================== --- stable/7/sys/i386/include/pci_cfgreg.h Mon May 4 21:00:43 2009 (r191798) +++ stable/7/sys/i386/include/pci_cfgreg.h Mon May 4 21:04:29 2009 (r191799) @@ -43,6 +43,7 @@ #define CONF2_ENABLE_CHK 0x0e #define CONF2_ENABLE_RES 0x0e +int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus); int pci_cfgregopen(void); u_int32_t pci_cfgregread(int bus, int slot, int func, int reg, int bytes); void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes); Modified: stable/7/sys/i386/pci/pci_cfgreg.c ============================================================================== --- stable/7/sys/i386/pci/pci_cfgreg.c Mon May 4 21:00:43 2009 (r191798) +++ stable/7/sys/i386/pci/pci_cfgreg.c Mon May 4 21:04:29 2009 (r191799) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -75,20 +76,24 @@ enum { }; static TAILQ_HEAD(pcie_cfg_list, pcie_cfg_elem) pcie_list[MAXCPU]; -static uint32_t pciebar; +static uint64_t pcie_base; +static int pcie_minbus, pcie_maxbus; +static uint32_t pcie_badslots; static int cfgmech; static int devmax; static struct mtx pcicfg_mtx; +static int mcfg_enable = 0; +TUNABLE_INT("hw.pci.mcfg", &mcfg_enable); +static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, + int bytes); static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes); static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes); static int pcireg_cfgopen(void); - -static int pciereg_cfgopen(void); -static int pciereg_cfgread(int bus, int slot, int func, int reg, - int bytes); -static void pciereg_cfgwrite(int bus, int slot, int func, int reg, - int data, int bytes); +static int pciereg_cfgread(int bus, unsigned slot, unsigned func, + unsigned reg, unsigned bytes); +static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, + unsigned reg, int data, unsigned bytes); /* * Some BIOS writers seem to want to ignore the spec and put @@ -133,14 +138,15 @@ int pci_cfgregopen(void) { static int opened = 0; + uint64_t pciebar; u_int16_t vid, did; u_int16_t v; if (opened) - return(1); + return (1); - if (pcireg_cfgopen() == 0) - return(0); + if (cfgmech == CFGMECH_NONE && pcireg_cfgopen() == 0) + return (0); v = pcibios_get_version(); if (v > 0) @@ -153,6 +159,9 @@ pci_cfgregopen(void) if (v >= 0x0210) pci_pir_open(); + if (cfgmech == CFGMECH_PCIE) + return (1); + /* * Grope around in the PCI config space to see if this is a * chipset that is capable of doing memory-mapped config cycles. @@ -162,21 +171,40 @@ pci_cfgregopen(void) /* Check for supported chipsets */ vid = pci_cfgregread(0, 0, 0, PCIR_VENDOR, 2); did = pci_cfgregread(0, 0, 0, PCIR_DEVICE, 2); - if (vid == 0x8086) { - if (did == 0x3590 || did == 0x3592) { + switch (vid) { + case 0x8086: + switch (did) { + case 0x3590: + case 0x3592: /* Intel 7520 or 7320 */ pciebar = pci_cfgregread(0, 0, 0, 0xce, 2) << 16; - pciereg_cfgopen(); - } else if (did == 0x2580 || did == 0x2584) { - /* Intel 915 or 925 */ + pcie_cfgregopen(pciebar, 0, 255); + break; + case 0x2580: + case 0x2584: + case 0x2590: + /* Intel 915, 925, or 915GM */ pciebar = pci_cfgregread(0, 0, 0, 0x48, 4); - pciereg_cfgopen(); + pcie_cfgregopen(pciebar, 0, 255); + break; } } return(1); } +static uint32_t +pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +{ + + if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && + (bus != 0 || !(1 << slot & pcie_badslots))) + return (pciereg_cfgread(bus, slot, func, reg, bytes)); + else + return (pcireg_cfgread(bus, slot, func, reg, bytes)); +} + /* * Read configuration space register */ @@ -191,10 +219,10 @@ pci_cfgregread(int bus, int slot, int fu * the code uses 255 as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pcireg_cfgread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); return (pci_i386_map_intline(line)); } - return (pcireg_cfgread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(bus, slot, func, reg, bytes)); } /* @@ -204,7 +232,12 @@ void pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) { - pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + if (cfgmech == CFGMECH_PCIE && + (bus >= pcie_minbus && bus <= pcie_maxbus) && + (bus != 0 || !(1 << slot & pcie_badslots))) + pciereg_cfgwrite(bus, slot, func, reg, data, bytes); + else + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } /* @@ -258,6 +291,7 @@ pci_cfgenable(unsigned bus, unsigned slo && (unsigned) bytes <= 4 && (reg & (bytes - 1)) == 0) { switch (cfgmech) { + case CFGMECH_PCIE: case CFGMECH_1: outl(CONF1_ADDR_PORT, (1 << 31) | (bus << 16) | (slot << 11) @@ -279,6 +313,7 @@ static void pci_cfgdisable(void) { switch (cfgmech) { + case CFGMECH_PCIE: case CFGMECH_1: /* * Do nothing for the config mechanism 1 case. @@ -299,11 +334,6 @@ pcireg_cfgread(int bus, int slot, int fu int data = -1; int port; - if (cfgmech == CFGMECH_PCIE) { - data = pciereg_cfgread(bus, slot, func, reg, bytes); - return (data); - } - mtx_lock_spin(&pcicfg_mtx); port = pci_cfgenable(bus, slot, func, reg, bytes); if (port != 0) { @@ -329,11 +359,6 @@ pcireg_cfgwrite(int bus, int slot, int f { int port; - if (cfgmech == CFGMECH_PCIE) { - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - return; - } - mtx_lock_spin(&pcicfg_mtx); port = pci_cfgenable(bus, slot, func, reg, bytes); if (port != 0) { @@ -481,8 +506,8 @@ pcireg_cfgopen(void) return (cfgmech); } -static int -pciereg_cfgopen(void) +int +pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) { struct pcie_cfg_list *pcielist; struct pcie_cfg_elem *pcie_array, *elem; @@ -490,10 +515,28 @@ pciereg_cfgopen(void) struct pcpu *pc; #endif vm_offset_t va; - int i; + uint32_t val1, val2; + int i, slot; + if (!mcfg_enable) + return (0); + + if (minbus != 0) + return (0); + +#ifndef PAE + if (base >= 0x100000000) { + if (bootverbose) + printf( + "PCI: Memory Mapped PCI configuration area base 0x%jx too high\n", + (uintmax_t)base); + return (0); + } +#endif + if (bootverbose) - printf("Setting up PCIe mappings for BAR 0x%x\n", pciebar); + printf("PCIe: Memory Mapped configuration base @ 0x%jx\n", + (uintmax_t)base); #ifdef SMP SLIST_FOREACH(pc, &cpuhead, pc_allcpu) @@ -525,9 +568,30 @@ pciereg_cfgopen(void) } } - + pcie_base = base; + pcie_minbus = minbus; + pcie_maxbus = maxbus; cfgmech = CFGMECH_PCIE; devmax = 32; + + /* + * On some AMD systems, some of the devices on bus 0 are + * inaccessible using memory-mapped PCI config access. Walk + * bus 0 looking for such devices. For these devices, we will + * fall back to using type 1 config access instead. + */ + if (pci_cfgregopen() != 0) { + for (slot = 0; slot < 32; slot++) { + val1 = pcireg_cfgread(0, slot, 0, 0, 4); + if (val1 == 0xffffffff) + continue; + + val2 = pciereg_cfgread(0, slot, 0, 0, 4); + if (val2 != val1) + pcie_badslots |= (1 << slot); + } + } + return (1); } @@ -574,15 +638,20 @@ pciereg_findelem(vm_paddr_t papage) } static int -pciereg_cfgread(int bus, int slot, int func, int reg, int bytes) +pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, + unsigned bytes) { struct pcie_cfg_elem *elem; volatile vm_offset_t va; vm_paddr_t pa, papage; - int data; + int data = -1; + + if (bus < pcie_minbus || bus > pcie_maxbus || slot >= 32 || + func > PCI_FUNCMAX || reg >= 0x1000 || bytes > 4 || bytes == 3) + return (-1); critical_enter(); - pa = PCIE_PADDR(pciebar, reg, bus, slot, func); + pa = PCIE_PADDR(pcie_base, reg, bus, slot, func); papage = pa & ~PAGE_MASK; elem = pciereg_findelem(papage); va = elem->vapage | (pa & PAGE_MASK); @@ -597,8 +666,6 @@ pciereg_cfgread(int bus, int slot, int f case 1: data = *(volatile uint8_t *)(va); break; - default: - panic("pciereg_cfgread: invalid width"); } critical_exit(); @@ -606,14 +673,19 @@ pciereg_cfgread(int bus, int slot, int f } static void -pciereg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes) +pciereg_cfgwrite(int bus, unsigned slot, unsigned func, unsigned reg, int data, + unsigned bytes) { struct pcie_cfg_elem *elem; volatile vm_offset_t va; vm_paddr_t pa, papage; + if (bus < pcie_minbus || bus > pcie_maxbus || slot >= 32 || + func > PCI_FUNCMAX || reg >= 0x1000) + return; + critical_enter(); - pa = PCIE_PADDR(pciebar, reg, bus, slot, func); + pa = PCIE_PADDR(pcie_base, reg, bus, slot, func); papage = pa & ~PAGE_MASK; elem = pciereg_findelem(papage); va = elem->vapage | (pa & PAGE_MASK); @@ -628,8 +700,6 @@ pciereg_cfgwrite(int bus, int slot, int case 1: *(volatile uint8_t *)(va) = data; break; - default: - panic("pciereg_cfgwrite: invalid width"); } critical_exit(); From emax at FreeBSD.org Mon May 4 21:13:07 2009 From: emax at FreeBSD.org (Maksim Yevmenkin) Date: Mon May 4 21:13:14 2009 Subject: svn commit: r191800 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb dev/kbd Message-ID: <200905042113.n44LD6gt057440@svn.freebsd.org> Author: emax Date: Mon May 4 21:13:06 2009 New Revision: 191800 URL: http://svn.freebsd.org/changeset/base/191800 Log: MFC r190869 Introduce KB_POLLED flag to struct keyboard's kb_flags field. Reviewed by: freebsd-current@, freebsd-hackers@ Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/dev/kbd/kbdreg.h Modified: stable/7/sys/dev/kbd/kbdreg.h ============================================================================== --- stable/7/sys/dev/kbd/kbdreg.h Mon May 4 21:04:29 2009 (r191799) +++ stable/7/sys/dev/kbd/kbdreg.h Mon May 4 21:13:06 2009 (r191800) @@ -60,6 +60,7 @@ struct keyboard { #define KB_INITIALIZED (1 << 19) /* device initialized */ #define KB_REGISTERED (1 << 20) /* device registered to kbdio */ #define KB_BUSY (1 << 21) /* device used by a client */ +#define KB_POLLED (1 << 22) /* device is polled */ int kb_active; /* 0: inactive */ void *kb_token; /* id of the current client */ keyboard_callback_t kb_callback;/* callback function */ @@ -107,6 +108,9 @@ struct keyboard { #define KBD_IS_BUSY(k) ((k)->kb_flags & KB_BUSY) #define KBD_BUSY(k) ((k)->kb_flags |= KB_BUSY) #define KBD_UNBUSY(k) ((k)->kb_flags &= ~KB_BUSY) +#define KBD_IS_POLLED(k) ((k)->kb_flags & KB_POLLED) +#define KBD_POLL(k) ((k)->kb_flags |= KB_POLLED) +#define KBD_UNPOLL(k) ((k)->kb_flags &= ~KB_POLLED) #define KBD_IS_ACTIVE(k) ((k)->kb_active) #define KBD_ACTIVATE(k) (++(k)->kb_active) #define KBD_DEACTIVATE(k) (--(k)->kb_active) From jhb at FreeBSD.org Mon May 4 21:58:33 2009 From: jhb at FreeBSD.org (John Baldwin) Date: Mon May 4 21:58:50 2009 Subject: svn commit: r191801 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb kern Message-ID: <200905042158.n44LwWjX058513@svn.freebsd.org> Author: jhb Date: Mon May 4 21:58:32 2009 New Revision: 191801 URL: http://svn.freebsd.org/changeset/base/191801 Log: MFC: When a file lookup fails due to encountering a doomed vnode from a forced unmount, consistently return ENOENT rather than EBADF. Modified: stable/7/sys/ (props changed) stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/kern/vfs_cache.c stable/7/sys/kern/vfs_lookup.c Modified: stable/7/sys/kern/vfs_cache.c ============================================================================== --- stable/7/sys/kern/vfs_cache.c Mon May 4 21:13:06 2009 (r191800) +++ stable/7/sys/kern/vfs_cache.c Mon May 4 21:58:32 2009 (r191801) @@ -318,7 +318,7 @@ cache_zap(ncp) * (negative cacheing), a status of ENOENT is returned. If the lookup * fails, a status of zero is returned. If the directory vnode is * recycled out from under us due to a forced unmount, a status of - * EBADF is returned. + * ENOENT is returned. * * vpp is locked and ref'd on return. If we're looking up DOTDOT, dvp is * unlocked. If we're looking up . an extra ref is taken, but the lock is @@ -466,7 +466,7 @@ success: /* forced unmount */ vrele(*vpp); *vpp = NULL; - return (EBADF); + return (ENOENT); } } else vn_lock(*vpp, LK_DOWNGRADE | LK_RETRY, td); @@ -939,7 +939,7 @@ vn_fullpath1(struct thread *td, struct v while (vp != rdir && vp != rootvnode) { if (vp->v_vflag & VV_ROOT) { if (vp->v_iflag & VI_DOOMED) { /* forced unmount */ - error = EBADF; + error = ENOENT; break; } vp = vp->v_mount->mnt_vnodecovered; Modified: stable/7/sys/kern/vfs_lookup.c ============================================================================== --- stable/7/sys/kern/vfs_lookup.c Mon May 4 21:13:06 2009 (r191800) +++ stable/7/sys/kern/vfs_lookup.c Mon May 4 21:58:32 2009 (r191801) @@ -532,7 +532,7 @@ dirloop: if ((dp->v_vflag & VV_ROOT) == 0) break; if (dp->v_iflag & VI_DOOMED) { /* forced unmount */ - error = EBADF; + error = ENOENT; goto bad; } tdp = dp; @@ -691,9 +691,11 @@ unionlookup: *ndp->ni_next == '/')) { cnp->cn_flags |= ISSYMLINK; if (dp->v_iflag & VI_DOOMED) { - /* We can't know whether the directory was mounted with - * NOSYMFOLLOW, so we can't follow safely. */ - error = EBADF; + /* + * We can't know whether the directory was mounted with + * NOSYMFOLLOW, so we can't follow safely. + */ + error = ENOENT; goto bad2; } if (dp->v_mount->mnt_flag & MNT_NOSYMFOLLOW) { From mav at FreeBSD.org Tue May 5 01:13:21 2009 From: mav at FreeBSD.org (Alexander Motin) Date: Tue May 5 01:13:28 2009 Subject: svn commit: r191803 - in head/sys: amd64/amd64 i386/i386 Message-ID: <200905050113.n451DK6D062907@svn.freebsd.org> Author: mav Date: Tue May 5 01:13:20 2009 New Revision: 191803 URL: http://svn.freebsd.org/changeset/base/191803 Log: Do not try to initialize LAPIC timer if we are not going to use it. It solves assertion, when kernel built with INVARIANTS configured to use i8254 timer. Modified: head/sys/amd64/amd64/local_apic.c head/sys/i386/i386/local_apic.c Modified: head/sys/amd64/amd64/local_apic.c ============================================================================== --- head/sys/amd64/amd64/local_apic.c Mon May 4 23:36:20 2009 (r191802) +++ head/sys/amd64/amd64/local_apic.c Tue May 5 01:13:20 2009 (r191803) @@ -319,7 +319,7 @@ lapic_setup(int boot) } /* We don't setup the timer during boot on the BSP until later. */ - if (!(boot && PCPU_GET(cpuid) == 0)) { + if (!(boot && PCPU_GET(cpuid) == 0) && lapic_timer_hz != 0) { KASSERT(lapic_timer_period != 0, ("lapic%u: zero divisor", lapic_id())); lapic_timer_set_divisor(lapic_timer_divisor); Modified: head/sys/i386/i386/local_apic.c ============================================================================== --- head/sys/i386/i386/local_apic.c Mon May 4 23:36:20 2009 (r191802) +++ head/sys/i386/i386/local_apic.c Tue May 5 01:13:20 2009 (r191803) @@ -321,7 +321,7 @@ lapic_setup(int boot) } /* We don't setup the timer during boot on the BSP until later. */ - if (!(boot && PCPU_GET(cpuid) == 0)) { + if (!(boot && PCPU_GET(cpuid) == 0) && lapic_timer_hz != 0) { KASSERT(lapic_timer_period != 0, ("lapic%u: zero divisor", lapic_id())); lapic_timer_set_divisor(lapic_timer_divisor); From dchagin at FreeBSD.org Tue May 5 03:49:31 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Tue May 5 03:49:42 2009 Subject: svn commit: r191804 - in stable/7/sys: . amd64/linux32 contrib/pf dev/ath/ath_hal dev/cxgb i386/linux Message-ID: <200905050349.n453nUCR066177@svn.freebsd.org> Author: dchagin Date: Tue May 5 03:49:30 2009 New Revision: 191804 URL: http://svn.freebsd.org/changeset/base/191804 Log: Merge r178257 (jkim) from HEAD to stable/7: Add stubs for syscalls introduced in Linux 2.6.17 kernel. Some GNU libc version started using them before 2.6.17 was officially out. Approved by: kib (mentor) Modified: stable/7/sys/ (props changed) stable/7/sys/amd64/linux32/linux32_dummy.c stable/7/sys/amd64/linux32/syscalls.master stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/i386/linux/linux_dummy.c stable/7/sys/i386/linux/syscalls.master Modified: stable/7/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- stable/7/sys/amd64/linux32/linux32_dummy.c Tue May 5 01:13:20 2009 (r191803) +++ stable/7/sys/amd64/linux32/linux32_dummy.c Tue May 5 03:49:30 2009 (r191804) @@ -111,6 +111,12 @@ DUMMY(faccessat); DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); +DUMMY(set_robust_list); +DUMMY(get_robust_list); +DUMMY(splice); +DUMMY(sync_file_range); +DUMMY(tee); +DUMMY(vmsplice); #define DUMMY_XATTR(s) \ int \ Modified: stable/7/sys/amd64/linux32/syscalls.master ============================================================================== --- stable/7/sys/amd64/linux32/syscalls.master Tue May 5 01:13:20 2009 (r191803) +++ stable/7/sys/amd64/linux32/syscalls.master Tue May 5 03:49:30 2009 (r191804) @@ -482,3 +482,9 @@ 308 AUE_NULL STD { int linux_pselect6(void); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } +311 AUE_NULL STD { int linux_set_robust_list(void); } +312 AUE_NULL STD { int linux_get_robust_list(void); } +313 AUE_NULL STD { int linux_splice(void); } +314 AUE_NULL STD { int linux_sync_file_range(void); } +315 AUE_NULL STD { int linux_tee(void); } +316 AUE_NULL STD { int linux_vmsplice(void); } Modified: stable/7/sys/i386/linux/linux_dummy.c ============================================================================== --- stable/7/sys/i386/linux/linux_dummy.c Tue May 5 01:13:20 2009 (r191803) +++ stable/7/sys/i386/linux/linux_dummy.c Tue May 5 03:49:30 2009 (r191804) @@ -102,6 +102,12 @@ DUMMY(faccessat); DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); +DUMMY(set_robust_list); +DUMMY(get_robust_list); +DUMMY(splice); +DUMMY(sync_file_range); +DUMMY(tee); +DUMMY(vmsplice); #define DUMMY_XATTR(s) \ int \ Modified: stable/7/sys/i386/linux/syscalls.master ============================================================================== --- stable/7/sys/i386/linux/syscalls.master Tue May 5 01:13:20 2009 (r191803) +++ stable/7/sys/i386/linux/syscalls.master Tue May 5 03:49:30 2009 (r191804) @@ -492,3 +492,9 @@ 308 AUE_NULL STD { int linux_pselect6(void); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } +311 AUE_NULL STD { int linux_set_robust_list(void); } +312 AUE_NULL STD { int linux_get_robust_list(void); } +313 AUE_NULL STD { int linux_splice(void); } +314 AUE_NULL STD { int linux_sync_file_range(void); } +315 AUE_NULL STD { int linux_tee(void); } +316 AUE_NULL STD { int linux_vmsplice(void); } From dchagin at FreeBSD.org Tue May 5 03:51:42 2009 From: dchagin at FreeBSD.org (Dmitry Chagin) Date: Tue May 5 03:52:00 2009 Subject: svn commit: r191805 - in stable/7/sys: amd64/linux32 i386/linux Message-ID: <200905050351.n453pfbQ066263@svn.freebsd.org> Author: dchagin Date: Tue May 5 03:51:41 2009 New Revision: 191805 URL: http://svn.freebsd.org/changeset/base/191805 Log: Regenerate syscall table after r191804. Approved by: kib (mentor) Modified: stable/7/sys/amd64/linux32/linux32_proto.h stable/7/sys/amd64/linux32/linux32_syscall.h stable/7/sys/amd64/linux32/linux32_sysent.c stable/7/sys/i386/linux/linux_proto.h stable/7/sys/i386/linux/linux_syscall.h stable/7/sys/i386/linux/linux_sysent.c Modified: stable/7/sys/amd64/linux32/linux32_proto.h ============================================================================== --- stable/7/sys/amd64/linux32/linux32_proto.h Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/amd64/linux32/linux32_proto.h Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -936,6 +936,24 @@ struct linux_ppoll_args { struct linux_unshare_args { register_t dummy; }; +struct linux_set_robust_list_args { + register_t dummy; +}; +struct linux_get_robust_list_args { + register_t dummy; +}; +struct linux_splice_args { + register_t dummy; +}; +struct linux_sync_file_range_args { + register_t dummy; +}; +struct linux_tee_args { + register_t dummy; +}; +struct linux_vmsplice_args { + register_t dummy; +}; #define nosys linux_nosys int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); @@ -1172,6 +1190,12 @@ int linux_faccessat(struct thread *, str int linux_pselect6(struct thread *, struct linux_pselect6_args *); int linux_ppoll(struct thread *, struct linux_ppoll_args *); int linux_unshare(struct thread *, struct linux_unshare_args *); +int linux_set_robust_list(struct thread *, struct linux_set_robust_list_args *); +int linux_get_robust_list(struct thread *, struct linux_get_robust_list_args *); +int linux_splice(struct thread *, struct linux_splice_args *); +int linux_sync_file_range(struct thread *, struct linux_sync_file_range_args *); +int linux_tee(struct thread *, struct linux_tee_args *); +int linux_vmsplice(struct thread *, struct linux_vmsplice_args *); #ifdef COMPAT_43 @@ -1428,6 +1452,12 @@ int linux_unshare(struct thread *, struc #define LINUX_SYS_AUE_linux_pselect6 AUE_NULL #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL +#define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_splice AUE_NULL +#define LINUX_SYS_AUE_linux_sync_file_range AUE_NULL +#define LINUX_SYS_AUE_linux_tee AUE_NULL +#define LINUX_SYS_AUE_linux_vmsplice AUE_NULL #undef PAD_ #undef PADL_ Modified: stable/7/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- stable/7/sys/amd64/linux32/linux32_syscall.h Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/amd64/linux32/linux32_syscall.h Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #define LINUX_SYS_exit 1 @@ -283,4 +283,10 @@ #define LINUX_SYS_linux_pselect6 308 #define LINUX_SYS_linux_ppoll 309 #define LINUX_SYS_linux_unshare 310 -#define LINUX_SYS_MAXSYSCALL 311 +#define LINUX_SYS_linux_set_robust_list 311 +#define LINUX_SYS_linux_get_robust_list 312 +#define LINUX_SYS_linux_splice 313 +#define LINUX_SYS_linux_sync_file_range 314 +#define LINUX_SYS_linux_tee 315 +#define LINUX_SYS_linux_vmsplice 316 +#define LINUX_SYS_MAXSYSCALL 317 Modified: stable/7/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- stable/7/sys/amd64/linux32/linux32_sysent.c Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/amd64/linux32/linux32_sysent.c Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #include "opt_compat.h" @@ -330,4 +330,10 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 }, /* 310 = linux_unshare */ + { 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 }, /* 311 = linux_set_robust_list */ + { 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 }, /* 312 = linux_get_robust_list */ + { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 }, /* 313 = linux_splice */ + { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 }, /* 315 = linux_tee */ + { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0 }, /* 316 = linux_vmsplice */ }; Modified: stable/7/sys/i386/linux/linux_proto.h ============================================================================== --- stable/7/sys/i386/linux/linux_proto.h Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/i386/linux/linux_proto.h Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -955,6 +955,24 @@ struct linux_ppoll_args { struct linux_unshare_args { register_t dummy; }; +struct linux_set_robust_list_args { + register_t dummy; +}; +struct linux_get_robust_list_args { + register_t dummy; +}; +struct linux_splice_args { + register_t dummy; +}; +struct linux_sync_file_range_args { + register_t dummy; +}; +struct linux_tee_args { + register_t dummy; +}; +struct linux_vmsplice_args { + register_t dummy; +}; #define nosys linux_nosys int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); @@ -1192,6 +1210,12 @@ int linux_faccessat(struct thread *, str int linux_pselect6(struct thread *, struct linux_pselect6_args *); int linux_ppoll(struct thread *, struct linux_ppoll_args *); int linux_unshare(struct thread *, struct linux_unshare_args *); +int linux_set_robust_list(struct thread *, struct linux_set_robust_list_args *); +int linux_get_robust_list(struct thread *, struct linux_get_robust_list_args *); +int linux_splice(struct thread *, struct linux_splice_args *); +int linux_sync_file_range(struct thread *, struct linux_sync_file_range_args *); +int linux_tee(struct thread *, struct linux_tee_args *); +int linux_vmsplice(struct thread *, struct linux_vmsplice_args *); #ifdef COMPAT_43 @@ -1449,6 +1473,12 @@ int linux_unshare(struct thread *, struc #define LINUX_SYS_AUE_linux_pselect6 AUE_NULL #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL +#define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_splice AUE_NULL +#define LINUX_SYS_AUE_linux_sync_file_range AUE_NULL +#define LINUX_SYS_AUE_linux_tee AUE_NULL +#define LINUX_SYS_AUE_linux_vmsplice AUE_NULL #undef PAD_ #undef PADL_ Modified: stable/7/sys/i386/linux/linux_syscall.h ============================================================================== --- stable/7/sys/i386/linux/linux_syscall.h Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/i386/linux/linux_syscall.h Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #define LINUX_SYS_exit 1 @@ -290,4 +290,10 @@ #define LINUX_SYS_linux_pselect6 308 #define LINUX_SYS_linux_ppoll 309 #define LINUX_SYS_linux_unshare 310 -#define LINUX_SYS_MAXSYSCALL 311 +#define LINUX_SYS_linux_set_robust_list 311 +#define LINUX_SYS_linux_get_robust_list 312 +#define LINUX_SYS_linux_splice 313 +#define LINUX_SYS_linux_sync_file_range 314 +#define LINUX_SYS_linux_tee 315 +#define LINUX_SYS_linux_vmsplice 316 +#define LINUX_SYS_MAXSYSCALL 317 Modified: stable/7/sys/i386/linux/linux_sysent.c ============================================================================== --- stable/7/sys/i386/linux/linux_sysent.c Tue May 5 03:49:30 2009 (r191804) +++ stable/7/sys/i386/linux/linux_sysent.c Tue May 5 03:51:41 2009 (r191805) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 184075 2008-10-20 11:15:57Z kib + * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin */ #include @@ -329,4 +329,10 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 }, /* 310 = linux_unshare */ + { 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 }, /* 311 = linux_set_robust_list */ + { 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 }, /* 312 = linux_get_robust_list */ + { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 }, /* 313 = linux_splice */ + { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 }, /* 315 = linux_tee */ + { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0 }, /* 316 = linux_vmsplice */ }; From jamie at FreeBSD.org Tue May 5 05:49:09 2009 From: jamie at FreeBSD.org (Jamie Gritton) Date: Tue May 5 05:49:15 2009 Subject: svn commit: r191806 - in head/sys: kern sys Message-ID: <200905050549.n455n9mU068587@svn.freebsd.org> Author: jamie Date: Tue May 5 05:49:08 2009 New Revision: 191806 URL: http://svn.freebsd.org/changeset/base/191806 Log: Add a constant PR_MAXMETHOD to better define the jail/OSD interface. Reviewed by: dchagin, kib Approved by: bz (mentor) Modified: head/sys/kern/kern_osd.c head/sys/sys/jail.h Modified: head/sys/kern/kern_osd.c ============================================================================== --- head/sys/kern/kern_osd.c Tue May 5 03:51:41 2009 (r191805) +++ head/sys/kern/kern_osd.c Tue May 5 05:49:08 2009 (r191806) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -73,7 +74,7 @@ static osd_method_t *osd_methods[OSD_LAS static u_int osd_nslots[OSD_LAST + 1]; /* (m) */ static osd_destructor_t *osd_destructors[OSD_LAST + 1]; /* (o) */ static const u_int osd_nmethods[OSD_LAST + 1] = { - [OSD_JAIL] = 5, + [OSD_JAIL] = PR_MAXMETHOD, }; static struct sx osd_module_lock[OSD_LAST + 1]; Modified: head/sys/sys/jail.h ============================================================================== --- head/sys/sys/jail.h Tue May 5 03:51:41 2009 (r191805) +++ head/sys/sys/jail.h Tue May 5 05:49:08 2009 (r191806) @@ -189,6 +189,7 @@ struct prison { #define PR_METHOD_SET 2 #define PR_METHOD_CHECK 3 #define PR_METHOD_ATTACH 4 +#define PR_MAXMETHOD 5 /* * Sysctl-set variables that determine global jail policy From edwin at FreeBSD.org Tue May 5 07:05:14 2009 From: edwin at FreeBSD.org (Edwin Groothuis) Date: Tue May 5 07:05:31 2009 Subject: svn commit: r191807 - stable/7/share/zoneinfo Message-ID: <200905050705.n4575Dtk070167@svn.freebsd.org> Author: edwin Date: Tue May 5 07:05:13 2009 New Revision: 191807 URL: http://svn.freebsd.org/changeset/base/191807 Log: MFC of tzdata2009g: Egypt will have DST till the end of September the coming years. Modified: stable/7/share/zoneinfo/ (props changed) stable/7/share/zoneinfo/africa Modified: stable/7/share/zoneinfo/africa ============================================================================== --- stable/7/share/zoneinfo/africa Tue May 5 05:49:08 2009 (r191806) +++ stable/7/share/zoneinfo/africa Tue May 5 07:05:13 2009 (r191807) @@ -1,4 +1,4 @@ -# @(#)africa 8.18 +# @(#)africa 8.19 #
 
 # This data is by no means authoritative; if you think you know better,
@@ -236,7 +236,46 @@ Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s
 # unless discontinued, next DST may end Thursday 28 August 2008.
 # From Paul Eggert (2007-08-17):
 # For lack of better info, assume the new rule is last Thursday in August.
-Rule	Egypt	2008	max	-	Aug	lastThu	23:00s	0	-
+
+# From Petr Machata (2009-04-06):
+# The following appeared in Red Hat bugzilla[1] (edited):
+#
+# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 21:59:59 2009 UTC =3D Thu =
+# Apr 23
+# > 23:59:59 2009 EET isdst=3D0 gmtoff=3D7200
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 22:00:00 2009 UTC =3D Fri =
+# Apr 24
+# > 01:00:00 2009 EEST isdst=3D1 gmtoff=3D10800
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 20:59:59 2009 UTC =3D Thu =
+# Aug 27
+# > 23:59:59 2009 EEST isdst=3D1 gmtoff=3D10800
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 21:00:00 2009 UTC =3D Thu =
+# Aug 27
+# > 23:00:00 2009 EET isdst=3D0 gmtoff=3D7200
+#
+# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=
+# :59)
+# > http://support.microsoft.com/kb/958729/
+#
+# timeanddate[2] and another site I've found[3] also support that.
+#
+# [1] 
+# https://bugzilla.redhat.com/show_bug.cgi?id=3D492263
+# 
+# [2] 
+# http://www.timeanddate.com/worldclock/clockchange.html?n=3D53
+# 
+# [3] 
+# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+# 
+
+# From Arthur David Olson (2009-04-20):
+# In 2009 (and for the next several years), Ramadan ends before the fourth
+# Thursday in September; Egypt is expected to revert to the last Thursday
+# in September.
+Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
+Rule	Egypt	2009	max	-	Sep	lastThu	23:00s	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
From dwmalone at FreeBSD.org  Tue May  5 08:30:39 2009
From: dwmalone at FreeBSD.org (David Malone)
Date: Tue May  5 08:30:45 2009
Subject: svn commit: r191808 - svnadmin/conf
Message-ID: <200905050830.n458Udrb071885@svn.freebsd.org>

Author: dwmalone
Date: Tue May  5 08:30:38 2009
New Revision: 191808
URL: http://svn.freebsd.org/changeset/base/191808

Log:
  chmod u+c snb
  
  Nick will be working on improving the memory allocation code in
  dirhash.  He's already implemented and tested a set of changes on
  last year's summer of code, and we'll be looking to get those changes
  into the tree soon. I will be Nick's mentor.
  
  Approved by:	core

Modified:
  svnadmin/conf/access
  svnadmin/conf/mentors

Modified: svnadmin/conf/access
==============================================================================
--- svnadmin/conf/access	Tue May  5 07:05:13 2009	(r191807)
+++ svnadmin/conf/access	Tue May  5 08:30:38 2009	(r191808)
@@ -194,6 +194,7 @@ sepotvin
 silby
 simokawa
 simon
+snb
 sobomax
 sos	commit@deepcore.dk
 sson

Modified: svnadmin/conf/mentors
==============================================================================
--- svnadmin/conf/mentors	Tue May  5 07:05:13 2009	(r191807)
+++ svnadmin/conf/mentors	Tue May  5 08:30:38 2009	(r191808)
@@ -23,6 +23,7 @@ rdivacky	ed
 remko		imp
 rmacklem	rwatson		Co-mentor: kib
 sbruno		scottl
+snb		dwmalone
 sson		jb
 vanhu		gnn
 versus		dds
From kib at FreeBSD.org  Tue May  5 09:08:38 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 09:08:54 2009
Subject: svn commit: r191809 - in stable/7/sys: . amd64/amd64 arm/arm
	contrib/pf dev/ath/ath_hal dev/cxgb i386/i386 ia64/ia64
Message-ID: <200905050908.n4598bHc072718@svn.freebsd.org>

Author: kib
Date: Tue May  5 09:08:37 2009
New Revision: 191809
URL: http://svn.freebsd.org/changeset/base/191809

Log:
  MFC r191011:
  The bus_dmamap_load_uio(9) shall use pmap of the thread recorded in the
  uio_td to extract pages from, instead of unconditionally use kernel
  pmap.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/amd64/amd64/busdma_machdep.c
  stable/7/sys/arm/arm/busdma_machdep.c
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/i386/i386/busdma_machdep.c
  stable/7/sys/ia64/ia64/busdma_machdep.c

Modified: stable/7/sys/amd64/amd64/busdma_machdep.c
==============================================================================
--- stable/7/sys/amd64/amd64/busdma_machdep.c	Tue May  5 08:30:38 2009	(r191808)
+++ stable/7/sys/amd64/amd64/busdma_machdep.c	Tue May  5 09:08:37 2009	(r191809)
@@ -602,7 +602,10 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm
 		vendaddr = (vm_offset_t)buf + buflen;
 
 		while (vaddr < vendaddr) {
-			paddr = pmap_kextract(vaddr);
+			if (pmap)
+				paddr = pmap_extract(pmap, vaddr);
+			else
+				paddr = pmap_kextract(vaddr);
 			if (run_filter(dmat, paddr) != 0)
 				map->pagesneeded++;
 			vaddr += PAGE_SIZE;

Modified: stable/7/sys/arm/arm/busdma_machdep.c
==============================================================================
--- stable/7/sys/arm/arm/busdma_machdep.c	Tue May  5 08:30:38 2009	(r191808)
+++ stable/7/sys/arm/arm/busdma_machdep.c	Tue May  5 09:08:37 2009	(r191809)
@@ -663,8 +663,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void
 }
 
 static int
-_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
-			bus_size_t buflen, int flags)
+_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, pmap_t pmap,
+    void *buf, bus_size_t buflen, int flags)
 {
 	vm_offset_t vaddr;
 	vm_offset_t vendaddr;
@@ -683,7 +683,10 @@ _bus_dmamap_count_pages(bus_dma_tag_t dm
 		vendaddr = (vm_offset_t)buf + buflen;
 
 		while (vaddr < vendaddr) {
-			paddr = pmap_kextract(vaddr);
+			if (pmap != NULL)
+				paddr = pmap_extract(pmap, vaddr);
+			else
+				paddr = pmap_kextract(vaddr);
 			if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
 			    run_filter(dmat, paddr) != 0)
 				map->pagesneeded++;
@@ -739,7 +742,8 @@ bus_dmamap_load_buffer(bus_dma_tag_t dma
 	bmask = ~(dmat->boundary - 1);
 
 	if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) {
-		error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags);
+		error = _bus_dmamap_count_pages(dmat, map, pmap, buf, buflen,
+		    flags);
 		if (error)
 			return (error);
 	}

Modified: stable/7/sys/i386/i386/busdma_machdep.c
==============================================================================
--- stable/7/sys/i386/i386/busdma_machdep.c	Tue May  5 08:30:38 2009	(r191808)
+++ stable/7/sys/i386/i386/busdma_machdep.c	Tue May  5 09:08:37 2009	(r191809)
@@ -141,8 +141,8 @@ static bus_addr_t add_bounce_page(bus_dm
 				   vm_offset_t vaddr, bus_size_t size);
 static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage);
 int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr);
-int _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
-			    bus_size_t buflen, int flags);
+int _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, pmap_t pmap,
+    void *buf, bus_size_t buflen, int flags);
 
 /*
  * Return true if a match is made.
@@ -568,8 +568,8 @@ bus_dmamem_free(bus_dma_tag_t dmat, void
 }
 
 int
-_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
-			bus_size_t buflen, int flags)
+_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, pmap_t pmap,
+    void *buf, bus_size_t buflen, int flags)
 {
 	vm_offset_t vaddr;
 	vm_offset_t vendaddr;
@@ -589,7 +589,10 @@ _bus_dmamap_count_pages(bus_dma_tag_t dm
 		vendaddr = (vm_offset_t)buf + buflen;
 
 		while (vaddr < vendaddr) {
-			paddr = pmap_kextract(vaddr);
+			if (pmap)
+				paddr = pmap_extract(pmap, vaddr);
+			else
+				paddr = pmap_kextract(vaddr);
 			if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
 			    run_filter(dmat, paddr) != 0) {
 				map->pagesneeded++;
@@ -651,7 +654,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm
 		map = &nobounce_dmamap;
 
 	if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) {
-		error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags);
+		error = _bus_dmamap_count_pages(dmat, map, pmap, buf, buflen, flags);
 		if (error)
 			return (error);
 	}

Modified: stable/7/sys/ia64/ia64/busdma_machdep.c
==============================================================================
--- stable/7/sys/ia64/ia64/busdma_machdep.c	Tue May  5 08:30:38 2009	(r191808)
+++ stable/7/sys/ia64/ia64/busdma_machdep.c	Tue May  5 09:08:37 2009	(r191809)
@@ -527,7 +527,10 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm
 		vendaddr = (vm_offset_t)buf + buflen;
 
 		while (vaddr < vendaddr) {
-			paddr = pmap_kextract(vaddr);
+			if (pmap != NULL)
+				paddr = pmap_extract(pmap, vaddr);
+			else
+				paddr = pmap_kextract(vaddr);
 			if (run_filter(dmat, paddr, 0) != 0)
 				map->pagesneeded++;
 			vaddr += PAGE_SIZE;
From kib at FreeBSD.org  Tue May  5 09:16:58 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 09:17:09 2009
Subject: svn commit: r191810 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb vm
Message-ID: <200905050916.n459GvbI072939@svn.freebsd.org>

Author: kib
Date: Tue May  5 09:16:57 2009
New Revision: 191810
URL: http://svn.freebsd.org/changeset/base/191810

Log:
  MFC r190886:
  When vm_map_wire(9) is allowed to skip holes in the wired region, skip
  the mappings without any of read and execution rights, in particular,
  the PROT_NONE entries. This makes mlockall(2) work for the process
  address space that has such mappings.
  
  Since protection mode of the entry may change between setting
  MAP_ENTRY_IN_TRANSITION and final pass over the region that records
  the wire status of the entries, allocate new map entry flag
  MAP_ENTRY_WIRE_SKIPPED to mark the skipped PROT_NONE entries.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/vm/vm_map.c
  stable/7/sys/vm/vm_map.h

Modified: stable/7/sys/vm/vm_map.c
==============================================================================
--- stable/7/sys/vm/vm_map.c	Tue May  5 09:08:37 2009	(r191809)
+++ stable/7/sys/vm/vm_map.c	Tue May  5 09:16:57 2009	(r191810)
@@ -2059,6 +2059,16 @@ vm_map_wire(vm_map_t map, vm_offset_t st
 		 *
 		 */
 		if (entry->wired_count == 0) {
+			if ((entry->protection & (VM_PROT_READ|VM_PROT_EXECUTE))
+			    == 0) {
+				if ((flags & VM_MAP_WIRE_HOLESOK) == 0) {
+					end = entry->end;
+					rv = KERN_INVALID_ADDRESS;
+					goto done;
+				}
+				entry->eflags |= MAP_ENTRY_WIRE_SKIPPED;
+				goto next_entry;
+			}
 			entry->wired_count++;
 			saved_start = entry->start;
 			saved_end = entry->end;
@@ -2116,6 +2126,7 @@ vm_map_wire(vm_map_t map, vm_offset_t st
 		 * Check the map for holes in the specified region.
 		 * If VM_MAP_WIRE_HOLESOK was specified, skip this check.
 		 */
+	next_entry:
 		if (((flags & VM_MAP_WIRE_HOLESOK) == 0) &&
 		    (entry->end < end && (entry->next == &map->header ||
 		    entry->next->start > entry->end))) {
@@ -2137,6 +2148,8 @@ done:
 	}
 	entry = first_entry;
 	while (entry != &map->header && entry->start < end) {
+		if ((entry->eflags & MAP_ENTRY_WIRE_SKIPPED) != 0)
+			goto next_entry_done;
 		if (rv == KERN_SUCCESS) {
 			if (user_wire)
 				entry->eflags |= MAP_ENTRY_USER_WIRED;
@@ -2159,9 +2172,10 @@ done:
 				    entry->object.vm_object->type == OBJT_DEVICE);
 			}
 		}
+	next_entry_done:
 		KASSERT(entry->eflags & MAP_ENTRY_IN_TRANSITION,
 			("vm_map_wire: in-transition flag missing"));
-		entry->eflags &= ~MAP_ENTRY_IN_TRANSITION;
+		entry->eflags &= ~(MAP_ENTRY_IN_TRANSITION|MAP_ENTRY_WIRE_SKIPPED);
 		if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) {
 			entry->eflags &= ~MAP_ENTRY_NEEDS_WAKEUP;
 			need_wakeup = TRUE;

Modified: stable/7/sys/vm/vm_map.h
==============================================================================
--- stable/7/sys/vm/vm_map.h	Tue May  5 09:08:37 2009	(r191809)
+++ stable/7/sys/vm/vm_map.h	Tue May  5 09:16:57 2009	(r191810)
@@ -138,6 +138,8 @@ struct vm_map_entry {
 #define	MAP_ENTRY_GROWS_DOWN		0x1000	/* Top-down stacks */
 #define	MAP_ENTRY_GROWS_UP		0x2000	/* Bottom-up stacks */
 
+#define	MAP_ENTRY_WIRE_SKIPPED		0x4000
+
 #ifdef	_KERNEL
 static __inline u_char
 vm_map_entry_behavior(vm_map_entry_t entry)
From kib at FreeBSD.org  Tue May  5 09:20:09 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 09:20:21 2009
Subject: svn commit: r191811 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb ufs/ffs
Message-ID: <200905050920.n459K7Tg073052@svn.freebsd.org>

Author: kib
Date: Tue May  5 09:20:07 2009
New Revision: 191811
URL: http://svn.freebsd.org/changeset/base/191811

Log:
  MFC r190690:
  When removing or renaming snaphost, do not delve into request_cleanup().
  The later may need blocks from the underlying device that belongs
  to normal files, that should not be locked while snap lock is held.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/ufs/ffs/ffs_softdep.c

Modified: stable/7/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- stable/7/sys/ufs/ffs/ffs_softdep.c	Tue May  5 09:16:57 2009	(r191810)
+++ stable/7/sys/ufs/ffs/ffs_softdep.c	Tue May  5 09:20:07 2009	(r191811)
@@ -3315,7 +3315,7 @@ newdirrem(bp, dp, ip, isrmdir, prevdirre
 	 * the number of freefile and freeblks structures.
 	 */
 	ACQUIRE_LOCK(&lk);
-	if (num_dirrem > max_softdeps / 2)
+	if (!(ip->i_flags & SF_SNAPSHOT) && num_dirrem > max_softdeps / 2)
 		(void) request_cleanup(ITOV(dp)->v_mount, FLUSH_REMOVE);
 	num_dirrem += 1;
 	FREE_LOCK(&lk);
From kib at FreeBSD.org  Tue May  5 09:24:21 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 09:24:27 2009
Subject: svn commit: r191812 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb kern
Message-ID: <200905050924.n459OK2f073193@svn.freebsd.org>

Author: kib
Date: Tue May  5 09:24:20 2009
New Revision: 191812
URL: http://svn.freebsd.org/changeset/base/191812

Log:
  MFC r191313:
  On the exit of the child process which parent either set SA_NOCLDWAIT
  or ignored SIGCHLD, unconditionally wake up the parent instead of doing
  this only when the child is a last child.
  
  MFC r191319:
  Fix typo.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/kern/kern_exit.c

Modified: stable/7/sys/kern/kern_exit.c
==============================================================================
--- stable/7/sys/kern/kern_exit.c	Tue May  5 09:20:07 2009	(r191811)
+++ stable/7/sys/kern/kern_exit.c	Tue May  5 09:24:20 2009	(r191812)
@@ -511,13 +511,13 @@ retry:
 		proc_reparent(p, initproc);
 		p->p_sigparent = SIGCHLD;
 		PROC_LOCK(p->p_pptr);
+
 		/*
-		 * If this was the last child of our parent, notify
-		 * parent, so in case he was wait(2)ing, he will
+		 * Notify parent, so in case he was wait(2)ing or
+		 * executing waitpid(2) with our pid, he will
 		 * continue.
 		 */
-		if (LIST_EMPTY(&pp->p_children))
-			wakeup(pp);
+		wakeup(pp);
 	} else
 		mtx_unlock(&p->p_pptr->p_sigacts->ps_mtx);
 
From kib at FreeBSD.org  Tue May  5 10:34:44 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 10:35:02 2009
Subject: svn commit: r191813 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb gnu/fs/xfs/FreeBSD kern sys ufs/ffs
Message-ID: <200905051034.n45AYild074736@svn.freebsd.org>

Author: kib
Date: Tue May  5 10:34:43 2009
New Revision: 191813
URL: http://svn.freebsd.org/changeset/base/191813

Log:
  MFC r189878:
  Fix two issues with bufdaemon, often causing the processes to hang in
  the "nbufkv" sleep.
  
  Do not retry request for the new block from ffs_bufwrite() when write is done
  from bufdaemon and there is a buffer shortage.
  
  In getnewbuf(), help bufdaemon to flush dirty buffers owned by the vnode
  locked by curthread.
  
  For MFC, default value for sysctl vfs.flushbufqtarget is set to -1,
  disabling the helpers. The TDP_BUFNEED flag value from HEAD conflicts
  with TDP_UPCALLING KSE bit, so it is moved to the end of allocated bits.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c
  stable/7/sys/kern/vfs_bio.c
  stable/7/sys/sys/buf.h
  stable/7/sys/sys/proc.h
  stable/7/sys/ufs/ffs/ffs_vfsops.c

Modified: stable/7/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c
==============================================================================
--- stable/7/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c	Tue May  5 09:24:20 2009	(r191812)
+++ stable/7/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c	Tue May  5 10:34:43 2009	(r191813)
@@ -81,7 +81,7 @@ xfs_buf_get_empty(size_t size,  xfs_buft
 {
 	struct buf *bp;
 
-	bp = geteblk(0);
+	bp = geteblk(0, 0);
 	if (bp != NULL) {
 		bp->b_bufsize = size;
 		bp->b_bcount = size;
@@ -101,7 +101,7 @@ xfs_buf_get_noaddr(size_t len, xfs_bufta
 	if (len >= MAXPHYS)
 		return (NULL);
 
-	bp = geteblk(len);
+	bp = geteblk(len, 0);
 	if (bp != NULL) {
 		KASSERT(BUF_REFCNT(bp) == 1,
 			("xfs_buf_get_empty: bp %p not locked",bp));

Modified: stable/7/sys/kern/vfs_bio.c
==============================================================================
--- stable/7/sys/kern/vfs_bio.c	Tue May  5 09:24:20 2009	(r191812)
+++ stable/7/sys/kern/vfs_bio.c	Tue May  5 10:34:43 2009	(r191813)
@@ -105,7 +105,8 @@ static void vfs_setdirty_locked_object(s
 static void vfs_vmio_release(struct buf *bp);
 static int vfs_bio_clcheck(struct vnode *vp, int size,
 		daddr_t lblkno, daddr_t blkno);
-static int flushbufqueues(int, int);
+static int buf_do_flush(struct vnode *vp);
+static int flushbufqueues(struct vnode *, int, int);
 static void buf_daemon(void);
 static void bremfreel(struct buf *bp);
 
@@ -187,6 +188,9 @@ SYSCTL_INT(_vfs, OID_AUTO, getnewbufcall
 static int getnewbufrestarts;
 SYSCTL_INT(_vfs, OID_AUTO, getnewbufrestarts, CTLFLAG_RW, &getnewbufrestarts, 0,
     "Number of times getnewbuf has had to restart a buffer aquisition");
+static int flushbufqtarget = -1;
+SYSCTL_INT(_vfs, OID_AUTO, flushbufqtarget, CTLFLAG_RW, &flushbufqtarget, 0,
+    "Amount of work to do in flushbufqueues when helping bufdaemon");
 
 /*
  * Wakeup point for bufdaemon, as well as indicator of whether it is already
@@ -258,6 +262,7 @@ static struct mtx bpinlock;
 #define QUEUE_DIRTY_GIANT 3	/* B_DELWRI buffers that need giant */
 #define QUEUE_EMPTYKVA	4	/* empty buffer headers w/KVA assignment */
 #define QUEUE_EMPTY	5	/* empty buffer headers */
+#define QUEUE_SENTINEL	1024	/* not an queue index, but mark for sentinel */
 
 /* Queues for free buffers with various properties */
 static TAILQ_HEAD(bqueues, buf) bufqueues[BUFFER_QUEUES] = { { 0 } };
@@ -1707,21 +1712,23 @@ vfs_bio_awrite(struct buf *bp)
  */
 
 static struct buf *
-getnewbuf(int slpflag, int slptimeo, int size, int maxsize)
+getnewbuf(struct vnode *vp, int slpflag, int slptimeo, int size, int maxsize,
+    int gbflags)
 {
+	struct thread *td;
 	struct buf *bp;
 	struct buf *nbp;
 	int defrag = 0;
 	int nqindex;
 	static int flushingbufs;
 
+	td = curthread;
 	/*
 	 * We can't afford to block since we might be holding a vnode lock,
 	 * which may prevent system daemons from running.  We deal with
 	 * low-memory situations by proactively returning memory and running
 	 * async I/O rather then sync I/O.
 	 */
-
 	atomic_add_int(&getnewbufcalls, 1);
 	atomic_subtract_int(&getnewbufrestarts, 1);
 restart:
@@ -1953,8 +1960,9 @@ restart:
 	 */
 
 	if (bp == NULL) {
-		int flags;
+		int flags, norunbuf;
 		char *waitmsg;
+		int fl;
 
 		if (defrag) {
 			flags = VFS_BIO_NEED_BUFSPACE;
@@ -1972,9 +1980,35 @@ restart:
 		mtx_unlock(&bqlock);
 
 		bd_speedup();	/* heeeelp */
+		if (gbflags & GB_NOWAIT_BD)
+			return (NULL);
 
 		mtx_lock(&nblock);
 		while (needsbuffer & flags) {
+			if (vp != NULL && (td->td_pflags & TDP_BUFNEED) == 0) {
+				mtx_unlock(&nblock);
+				/*
+				 * getblk() is called with a vnode
+				 * locked, and some majority of the
+				 * dirty buffers may as well belong to
+				 * the vnode. Flushing the buffers
+				 * there would make a progress that
+				 * cannot be achieved by the
+				 * buf_daemon, that cannot lock the
+				 * vnode.
+				 */
+				norunbuf = ~(TDP_BUFNEED | TDP_NORUNNINGBUF) |
+				    (td->td_pflags & TDP_NORUNNINGBUF);
+				/* play bufdaemon */
+				td->td_pflags |= TDP_BUFNEED | TDP_NORUNNINGBUF;
+				fl = buf_do_flush(vp);
+				td->td_pflags &= norunbuf;
+				mtx_lock(&nblock);
+				if (fl != 0)
+					continue;
+				if ((needsbuffer & flags) == 0)
+					break;
+			}
 			if (msleep(&needsbuffer, &nblock,
 			    (PRIBIO + 4) | slpflag, waitmsg, slptimeo)) {
 				mtx_unlock(&nblock);
@@ -2043,6 +2077,35 @@ static struct kproc_desc buf_kp = {
 };
 SYSINIT(bufdaemon, SI_SUB_KTHREAD_BUF, SI_ORDER_FIRST, kproc_start, &buf_kp);
 
+static int
+buf_do_flush(struct vnode *vp)
+{
+	int flushed;
+
+	flushed = flushbufqueues(vp, QUEUE_DIRTY, 0);
+	/* The list empty check here is slightly racy */
+	if (!TAILQ_EMPTY(&bufqueues[QUEUE_DIRTY_GIANT])) {
+		mtx_lock(&Giant);
+		flushed += flushbufqueues(vp, QUEUE_DIRTY_GIANT, 0);
+		mtx_unlock(&Giant);
+	}
+	if (flushed == 0) {
+		/*
+		 * Could not find any buffers without rollback
+		 * dependencies, so just write the first one
+		 * in the hopes of eventually making progress.
+		 */
+		flushbufqueues(vp, QUEUE_DIRTY, 1);
+		if (!TAILQ_EMPTY(
+			    &bufqueues[QUEUE_DIRTY_GIANT])) {
+			mtx_lock(&Giant);
+			flushbufqueues(vp, QUEUE_DIRTY_GIANT, 1);
+			mtx_unlock(&Giant);
+		}
+	}
+	return (flushed);
+}
+
 static void
 buf_daemon()
 {
@@ -2056,7 +2119,7 @@ buf_daemon()
 	/*
 	 * This process is allowed to take the buffer cache to the limit
 	 */
-	curthread->td_pflags |= TDP_NORUNNINGBUF;
+	curthread->td_pflags |= TDP_NORUNNINGBUF | TDP_BUFNEED;
 	mtx_lock(&bdlock);
 	for (;;) {
 		bd_request = 0;
@@ -2071,30 +2134,8 @@ buf_daemon()
 		 * normally would so they can run in parallel with our drain.
 		 */
 		while (numdirtybuffers > lodirtybuffers) {
-			int flushed;
-
-			flushed = flushbufqueues(QUEUE_DIRTY, 0);
-			/* The list empty check here is slightly racy */
-			if (!TAILQ_EMPTY(&bufqueues[QUEUE_DIRTY_GIANT])) {
-				mtx_lock(&Giant);
-				flushed += flushbufqueues(QUEUE_DIRTY_GIANT, 0);
-				mtx_unlock(&Giant);
-			}
-			if (flushed == 0) {
-				/*
-				 * Could not find any buffers without rollback
-				 * dependencies, so just write the first one
-				 * in the hopes of eventually making progress.
-				 */
-				flushbufqueues(QUEUE_DIRTY, 1);
-				if (!TAILQ_EMPTY(
-				    &bufqueues[QUEUE_DIRTY_GIANT])) {
-					mtx_lock(&Giant);
-					flushbufqueues(QUEUE_DIRTY_GIANT, 1);
-					mtx_unlock(&Giant);
-				}
+			if (buf_do_flush(NULL) == 0)
 				break;
-			}
 			uio_yield();
 		}
 
@@ -2140,7 +2181,7 @@ SYSCTL_INT(_vfs, OID_AUTO, flushwithdeps
     0, "Number of buffers flushed with dependecies that require rollbacks");
 
 static int
-flushbufqueues(int queue, int flushdeps)
+flushbufqueues(struct vnode *lvp, int queue, int flushdeps)
 {
 	struct thread *td = curthread;
 	struct buf sentinel;
@@ -2151,20 +2192,37 @@ flushbufqueues(int queue, int flushdeps)
 	int flushed;
 	int target;
 
-	target = numdirtybuffers - lodirtybuffers;
-	if (flushdeps && target > 2)
-		target /= 2;
+	if (lvp == NULL) {
+		target = numdirtybuffers - lodirtybuffers;
+		if (flushdeps && target > 2)
+			target /= 2;
+	} else
+		target = flushbufqtarget;
 	flushed = 0;
 	bp = NULL;
+	sentinel.b_qindex = QUEUE_SENTINEL;
 	mtx_lock(&bqlock);
-	TAILQ_INSERT_TAIL(&bufqueues[queue], &sentinel, b_freelist);
+	TAILQ_INSERT_HEAD(&bufqueues[queue], &sentinel, b_freelist);
 	while (flushed != target) {
-		bp = TAILQ_FIRST(&bufqueues[queue]);
-		if (bp == &sentinel)
+		bp = TAILQ_NEXT(&sentinel, b_freelist);
+		if (bp != NULL) {
+			TAILQ_REMOVE(&bufqueues[queue], &sentinel, b_freelist);
+			TAILQ_INSERT_AFTER(&bufqueues[queue], bp, &sentinel,
+			    b_freelist);
+		} else
 			break;
-		TAILQ_REMOVE(&bufqueues[queue], bp, b_freelist);
-		TAILQ_INSERT_TAIL(&bufqueues[queue], bp, b_freelist);
-
+		/*
+		 * Skip sentinels inserted by other invocations of the
+		 * flushbufqueues(), taking care to not reorder them.
+		 */
+		if (bp->b_qindex == QUEUE_SENTINEL)
+			continue;
+		/*
+		 * Only flush the buffers that belong to the
+		 * vnode locked by the curthread.
+		 */
+		if (lvp != NULL && bp->b_vp != lvp)
+			continue;
 		if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT, NULL) != 0)
 			continue;
 		if (bp->b_pin_count > 0) {
@@ -2212,16 +2270,28 @@ flushbufqueues(int queue, int flushdeps)
 			BUF_UNLOCK(bp);
 			continue;
 		}
-		if (vn_lock(vp, LK_EXCLUSIVE | LK_NOWAIT, td) == 0) {
+		if (vn_lock(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_CANRECURSE,
+		    td) == 0) {
 			mtx_unlock(&bqlock);
 			CTR3(KTR_BUF, "flushbufqueue(%p) vp %p flags %X",
 			    bp, bp->b_vp, bp->b_flags);
-			vfs_bio_awrite(bp);
+			if (curproc == bufdaemonproc)
+				vfs_bio_awrite(bp);
+			else {
+				bremfree(bp);
+				bwrite(bp);
+			}
 			vn_finished_write(mp);
 			VOP_UNLOCK(vp, 0, td);
 			flushwithdeps += hasdeps;
 			flushed++;
-			waitrunningbufspace();
+
+			/*
+			 * Sleeping on runningbufspace while holding
+			 * vnode lock leads to deadlock.
+			 */
+			if (curproc == bufdaemonproc)
+				waitrunningbufspace();
 			numdirtywakeup((lodirtybuffers + hidirtybuffers) / 2);
 			mtx_lock(&bqlock);
 			continue;
@@ -2603,7 +2673,7 @@ loop:
 		maxsize = vmio ? size + (offset & PAGE_MASK) : size;
 		maxsize = imax(maxsize, bsize);
 
-		bp = getnewbuf(slpflag, slptimeo, size, maxsize);
+		bp = getnewbuf(vp, slpflag, slptimeo, size, maxsize, flags);
 		if (bp == NULL) {
 			if (slpflag || slptimeo)
 				return NULL;
@@ -2678,14 +2748,17 @@ loop:
  * set to B_INVAL.
  */
 struct buf *
-geteblk(int size)
+geteblk(int size, int flags)
 {
 	struct buf *bp;
 	int maxsize;
 
 	maxsize = (size + BKVAMASK) & ~BKVAMASK;
-	while ((bp = getnewbuf(0, 0, size, maxsize)) == 0)
-		continue;
+	while ((bp = getnewbuf(NULL, 0, 0, size, maxsize, flags)) == NULL) {
+		if ((flags & GB_NOWAIT_BD) &&
+		    (curthread->td_pflags & TDP_BUFNEED) != 0)
+			return (NULL);
+	}
 	allocbuf(bp, size);
 	bp->b_flags |= B_INVAL;	/* b_dep cleared by getnewbuf() */
 	KASSERT(BUF_REFCNT(bp) == 1, ("geteblk: bp %p not locked",bp));

Modified: stable/7/sys/sys/buf.h
==============================================================================
--- stable/7/sys/sys/buf.h	Tue May  5 09:24:20 2009	(r191812)
+++ stable/7/sys/sys/buf.h	Tue May  5 10:34:43 2009	(r191813)
@@ -475,6 +475,7 @@ buf_countdeps(struct buf *bp, int i)
  */
 #define	GB_LOCK_NOWAIT	0x0001		/* Fail if we block on a buf lock. */
 #define	GB_NOCREAT	0x0002		/* Don't create a buf if not found. */
+#define	GB_NOWAIT_BD	0x0004		/* Do not wait for bufdaemon */
 
 #ifdef _KERNEL
 extern int	nbuf;			/* The number of buffer headers */
@@ -519,7 +520,7 @@ struct buf *     getpbuf(int *);
 struct buf *incore(struct bufobj *, daddr_t);
 struct buf *gbincore(struct bufobj *, daddr_t);
 struct buf *getblk(struct vnode *, daddr_t, int, int, int, int);
-struct buf *geteblk(int);
+struct buf *geteblk(int, int);
 int	bufwait(struct buf *);
 int	bufwrite(struct buf *);
 void	bufdone(struct buf *);

Modified: stable/7/sys/sys/proc.h
==============================================================================
--- stable/7/sys/sys/proc.h	Tue May  5 09:24:20 2009	(r191812)
+++ stable/7/sys/sys/proc.h	Tue May  5 10:34:43 2009	(r191813)
@@ -380,6 +380,7 @@ do {									\
 #define	TDP_INBDFLUSH	0x00100000 /* Already in BO_BDFLUSH, do not recurse */
 #define	TDP_IGNSUSP	0x00800000 /* Permission to ignore the MNTK_SUSPEND* */
 #define	TDP_AUDITREC	0x01000000 /* Audit record pending on thread */
+#define	TDP_BUFNEED	0x02000000 /* Do not recurse into the buf flush */
 
 /*
  * Reasons that the current thread can not be run yet.

Modified: stable/7/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- stable/7/sys/ufs/ffs/ffs_vfsops.c	Tue May  5 09:24:20 2009	(r191812)
+++ stable/7/sys/ufs/ffs/ffs_vfsops.c	Tue May  5 10:34:43 2009	(r191813)
@@ -1842,7 +1842,9 @@ ffs_bufwrite(struct buf *bp)
 		    ("bufwrite: needs chained iodone (%p)", bp->b_iodone));
 
 		/* get a new block */
-		newbp = geteblk(bp->b_bufsize);
+		newbp = geteblk(bp->b_bufsize, GB_NOWAIT_BD);
+		if (newbp == NULL)
+			goto normal_write;
 
 		/*
 		 * set it to be identical to the old block.  We have to
@@ -1882,6 +1884,7 @@ ffs_bufwrite(struct buf *bp)
 	}
 
 	/* Let the normal bufwrite do the rest for us */
+normal_write:
 	return (bufwrite(bp));
 }
 
From kib at FreeBSD.org  Tue May  5 10:43:15 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 10:43:21 2009
Subject: svn commit: r191814 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb kern
Message-ID: <200905051043.n45AhE9E078962@svn.freebsd.org>

Author: kib
Date: Tue May  5 10:43:14 2009
New Revision: 191814
URL: http://svn.freebsd.org/changeset/base/191814

Log:
  MFC r191135:
  Export the number of times bufdaemon got help from the normal threads.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/kern/vfs_bio.c

Modified: stable/7/sys/kern/vfs_bio.c
==============================================================================
--- stable/7/sys/kern/vfs_bio.c	Tue May  5 10:34:43 2009	(r191813)
+++ stable/7/sys/kern/vfs_bio.c	Tue May  5 10:43:14 2009	(r191814)
@@ -191,6 +191,9 @@ SYSCTL_INT(_vfs, OID_AUTO, getnewbufrest
 static int flushbufqtarget = -1;
 SYSCTL_INT(_vfs, OID_AUTO, flushbufqtarget, CTLFLAG_RW, &flushbufqtarget, 0,
     "Amount of work to do in flushbufqueues when helping bufdaemon");
+static long notbufdflashes;
+SYSCTL_LONG(_vfs, OID_AUTO, notbufdflashes, CTLFLAG_RD, ¬bufdflashes, 0,
+    "Number of dirty buffer flushes done by the bufdaemon helpers");
 
 /*
  * Wakeup point for bufdaemon, as well as indicator of whether it is already
@@ -2280,6 +2283,7 @@ flushbufqueues(struct vnode *lvp, int qu
 			else {
 				bremfree(bp);
 				bwrite(bp);
+				notbufdflashes++;
 			}
 			vn_finished_write(mp);
 			VOP_UNLOCK(vp, 0, td);
From kib at FreeBSD.org  Tue May  5 10:46:50 2009
From: kib at FreeBSD.org (Konstantin Belousov)
Date: Tue May  5 10:46:57 2009
Subject: svn commit: r191815 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb kern
Message-ID: <200905051046.n45Akn7l079094@svn.freebsd.org>

Author: kib
Date: Tue May  5 10:46:49 2009
New Revision: 191815
URL: http://svn.freebsd.org/changeset/base/191815

Log:
  MFC r191136:
  In flushbufqueues(), do not allocate sentinel buffer on the stack,
  struct buf is large. Use sleeping malloc(9) call, and zero the allocated
  buf as a debugging feature.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/kern/vfs_bio.c

Modified: stable/7/sys/kern/vfs_bio.c
==============================================================================
--- stable/7/sys/kern/vfs_bio.c	Tue May  5 10:43:14 2009	(r191814)
+++ stable/7/sys/kern/vfs_bio.c	Tue May  5 10:46:49 2009	(r191815)
@@ -2187,7 +2187,7 @@ static int
 flushbufqueues(struct vnode *lvp, int queue, int flushdeps)
 {
 	struct thread *td = curthread;
-	struct buf sentinel;
+	struct buf *sentinel;
 	struct vnode *vp;
 	struct mount *mp;
 	struct buf *bp;
@@ -2203,14 +2203,15 @@ flushbufqueues(struct vnode *lvp, int qu
 		target = flushbufqtarget;
 	flushed = 0;
 	bp = NULL;
-	sentinel.b_qindex = QUEUE_SENTINEL;
+	sentinel = malloc(sizeof(struct buf), M_TEMP, M_WAITOK | M_ZERO);
+	sentinel->b_qindex = QUEUE_SENTINEL;
 	mtx_lock(&bqlock);
-	TAILQ_INSERT_HEAD(&bufqueues[queue], &sentinel, b_freelist);
+	TAILQ_INSERT_HEAD(&bufqueues[queue], sentinel, b_freelist);
 	while (flushed != target) {
-		bp = TAILQ_NEXT(&sentinel, b_freelist);
+		bp = TAILQ_NEXT(sentinel, b_freelist);
 		if (bp != NULL) {
-			TAILQ_REMOVE(&bufqueues[queue], &sentinel, b_freelist);
-			TAILQ_INSERT_AFTER(&bufqueues[queue], bp, &sentinel,
+			TAILQ_REMOVE(&bufqueues[queue], sentinel, b_freelist);
+			TAILQ_INSERT_AFTER(&bufqueues[queue], bp, sentinel,
 			    b_freelist);
 		} else
 			break;
@@ -2303,8 +2304,9 @@ flushbufqueues(struct vnode *lvp, int qu
 		vn_finished_write(mp);
 		BUF_UNLOCK(bp);
 	}
-	TAILQ_REMOVE(&bufqueues[queue], &sentinel, b_freelist);
+	TAILQ_REMOVE(&bufqueues[queue], sentinel, b_freelist);
 	mtx_unlock(&bqlock);
+	free(sentinel, M_TEMP);
 	return (flushed);
 }
 
From zec at FreeBSD.org  Tue May  5 10:56:14 2009
From: zec at FreeBSD.org (Marko Zec)
Date: Tue May  5 10:57:23 2009
Subject: svn commit: r191816 - in head/sys: conf dev/cxgb/ulp/tom kern net
	net80211 netgraph netinet netinet6 netipsec nfsclient sys
Message-ID: <200905051056.n45AuCho079307@svn.freebsd.org>

Author: zec
Date: Tue May  5 10:56:12 2009
New Revision: 191816
URL: http://svn.freebsd.org/changeset/base/191816

Log:
  Change the curvnet variable from a global const struct vnet *,
  previously always pointing to the default vnet context, to a
  dynamically changing thread-local one.  The currvnet context
  should be set on entry to networking code via CURVNET_SET() macros,
  and reverted to previous state via CURVNET_RESTORE().  Recursions
  on curvnet are permitted, though strongly discuouraged.
  
  This change should have no functional impact on nooptions VIMAGE
  kernel builds, where CURVNET_* macros expand to whitespace.
  
  The curthread->td_vnet (aka curvnet) variable's purpose is to be an
  indicator of the vnet context in which the current network-related
  operation takes place, in case we cannot deduce the current vnet
  context from any other source, such as by looking at mbuf's
  m->m_pkthdr.rcvif->if_vnet, sockets's so->so_vnet etc.  Moreover, so
  far curvnet has turned out to be an invaluable consistency checking
  aid: it helps to catch cases when sockets, ifnets or any other
  vnet-aware structures may have leaked from one vnet to another.
  
  The exact placement of the CURVNET_SET() / CURVNET_RESTORE() macros
  was a result of an empirical iterative process, whith an aim to
  reduce recursions on CURVNET_SET() to a minimum, while still reducing
  the scope of CURVNET_SET() to networking only operations - the
  alternative would be calling CURVNET_SET() on each system call entry.
  In general, curvnet has to be set in three typicall cases: when
  processing socket-related requests from userspace or from within the
  kernel; when processing inbound traffic flowing from device drivers
  to upper layers of the networking stack, and when executing
  timer-driven networking functions.
  
  This change also introduces a DDB subcommand to show the list of all
  vnet instances.
  
  Approved by:	julian (mentor)

Modified:
  head/sys/conf/files
  head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c
  head/sys/kern/init_main.c
  head/sys/kern/kern_fork.c
  head/sys/kern/kern_linker.c
  head/sys/kern/kern_vimage.c
  head/sys/kern/subr_pcpu.c
  head/sys/kern/sys_socket.c
  head/sys/kern/uipc_socket.c
  head/sys/kern/uipc_syscalls.c
  head/sys/kern/uipc_usrreq.c
  head/sys/net/bpf.c
  head/sys/net/if.c
  head/sys/net/if_clone.c
  head/sys/net/if_ethersubr.c
  head/sys/net/if_var.h
  head/sys/net/netisr.c
  head/sys/net/rtsock.c
  head/sys/net80211/ieee80211_freebsd.c
  head/sys/netgraph/netgraph.h
  head/sys/netinet/if_ether.c
  head/sys/netinet/igmp.c
  head/sys/netinet/in_rmx.c
  head/sys/netinet/ip_input.c
  head/sys/netinet/tcp_hostcache.c
  head/sys/netinet6/in6_rmx.c
  head/sys/netinet6/ip6_mroute.c
  head/sys/netinet6/mld6.c
  head/sys/netinet6/nd6.c
  head/sys/netinet6/nd6_nbr.c
  head/sys/netipsec/xform_tcp.c
  head/sys/nfsclient/nfs_vnops.c
  head/sys/sys/proc.h
  head/sys/sys/ucred.h
  head/sys/sys/vimage.h

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/conf/files	Tue May  5 10:56:12 2009	(r191816)
@@ -1952,8 +1952,8 @@ kern/kern_time.c		standard
 kern/kern_timeout.c		standard
 kern/kern_umtx.c		standard
 kern/kern_uuid.c		standard
-kern/kern_xxx.c			standard
 kern/kern_vimage.c		standard
+kern/kern_xxx.c			standard
 kern/link_elf.c			standard
 kern/linker_if.m		standard
 kern/md4c.c			optional netsmb

Modified: head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c
==============================================================================
--- head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c	Tue May  5 10:56:12 2009	(r191816)
@@ -1217,7 +1217,7 @@ install_offload_ops(struct socket *so)
  * receive window.
  */
 static __inline int
-select_rcv_wscale(int space)
+select_rcv_wscale(int space, struct vnet *vnet)
 {
 	INIT_VNET_INET(so->so_vnet);
 	int wscale = 0;
@@ -1326,7 +1326,7 @@ static inline unsigned int
 calc_opt0h(struct socket *so, int mtu_idx)
 {
 	struct tcpcb *tp = so_sototcpcb(so);
-	int wscale = select_rcv_wscale(tp->rcv_wnd);
+	int wscale = select_rcv_wscale(tp->rcv_wnd, so->so_vnet);
 	
 	return V_NAGLE((tp->t_flags & TF_NODELAY) == 0) |
 	    V_KEEP_ALIVE((so_options_get(so) & SO_KEEPALIVE) != 0) | F_TCAM_BYPASS |

Modified: head/sys/kern/init_main.c
==============================================================================
--- head/sys/kern/init_main.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/init_main.c	Tue May  5 10:56:12 2009	(r191816)
@@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -452,6 +453,9 @@ proc0_init(void *dummy __unused)
 	p->p_ucred->cr_uidinfo = uifind(0);
 	p->p_ucred->cr_ruidinfo = uifind(0);
 	p->p_ucred->cr_prison = NULL;	/* Don't jail it. */
+#ifdef VIMAGE
+	p->p_ucred->cr_vnet = LIST_FIRST(&vnet_head);
+#endif
 #ifdef AUDIT
 	audit_cred_kproc0(p->p_ucred);
 #endif

Modified: head/sys/kern/kern_fork.c
==============================================================================
--- head/sys/kern/kern_fork.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/kern_fork.c	Tue May  5 10:56:12 2009	(r191816)
@@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -523,6 +524,11 @@ again:
 	td2->td_sigmask = td->td_sigmask;
 	td2->td_flags = TDF_INMEM;
 
+#ifdef VIMAGE
+	td2->td_vnet = NULL;
+	td2->td_vnet_lpush = NULL;
+#endif
+
 	/*
 	 * Duplicate sub-structures as needed.
 	 * Increase reference counts on shared objects.

Modified: head/sys/kern/kern_linker.c
==============================================================================
--- head/sys/kern/kern_linker.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/kern_linker.c	Tue May  5 10:56:12 2009	(r191816)
@@ -993,6 +993,12 @@ kern_kldload(struct thread *td, const ch
 		return (error);
 
 	/*
+	 * It's possible that kldloaded module will attach a new ifnet,
+	 * so vnet context must be set when this ocurs.
+	 */
+	CURVNET_SET(TD_TO_VNET(td));
+
+	/*
 	 * If file does not contain a qualified name or any dot in it
 	 * (kldname.ko, or kldname.ver.ko) treat it as an interface
 	 * name.
@@ -1019,6 +1025,7 @@ kern_kldload(struct thread *td, const ch
 		*fileid = lf->id;
 unlock:
 	KLD_UNLOCK();
+	CURVNET_RESTORE();
 	return (error);
 }
 
@@ -1056,6 +1063,7 @@ kern_kldunload(struct thread *td, int fi
 	if ((error = priv_check(td, PRIV_KLD_UNLOAD)) != 0)
 		return (error);
 
+	CURVNET_SET(TD_TO_VNET(td));
 	KLD_LOCK();
 	lf = linker_find_file_by_id(fileid);
 	if (lf) {
@@ -1092,6 +1100,7 @@ kern_kldunload(struct thread *td, int fi
 		PMC_CALL_HOOK(td, PMC_FN_KLD_UNLOAD, (void *) &pkm);
 #endif
 	KLD_UNLOCK();
+	CURVNET_RESTORE();
 	return (error);
 }
 

Modified: head/sys/kern/kern_vimage.c
==============================================================================
--- head/sys/kern/kern_vimage.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/kern_vimage.c	Tue May  5 10:56:12 2009	(r191816)
@@ -31,6 +31,8 @@
 #include 
 __FBSDID("$FreeBSD$");
 
+#include "opt_ddb.h"
+
 #include 
 #include 
 #include 
@@ -38,6 +40,9 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#ifdef DDB
+#include 
+#endif
 
 #ifndef VIMAGE_GLOBALS
 
@@ -51,8 +56,6 @@ static int vnet_mod_constructor(struct v
 static int vnet_mod_destructor(struct vnet_modlink *);
 
 #ifdef VIMAGE
-/* curvnet should be thread-local - this is only a temporary step. */
-struct vnet *curvnet;
 struct vnet_list_head vnet_head;
 #endif
 
@@ -183,7 +186,8 @@ vnet_mod_deregister_multi(const struct v
 	free(vml, M_VIMAGE);
 }
 
-static int vnet_mod_constructor(struct vnet_modlink *vml)
+static int
+vnet_mod_constructor(struct vnet_modlink *vml)
 {
 	const struct vnet_modinfo *vmi = vml->vml_modinfo;
 
@@ -303,7 +307,9 @@ vi_init(void *unused)
 	if (vnet == NULL)
 		panic("vi_alloc: malloc failed");
 	LIST_INSERT_HEAD(&vnet_head, vnet, vnet_le);
+	vnet->vnet_magic_n = VNET_MAGIC_N;
 
+	/* We MUST clear curvnet in vi_init_done before going SMP. */
 	curvnet = LIST_FIRST(&vnet_head);
 #endif
 }
@@ -313,6 +319,10 @@ vi_init_done(void *unused)
 {
 	struct vnet_modlink *vml_iter;
 
+#ifdef VIMAGE
+	curvnet = NULL;
+#endif
+
 	if (TAILQ_EMPTY(&vnet_modpending_head))
 		return;
 
@@ -327,5 +337,45 @@ vi_init_done(void *unused)
 
 SYSINIT(vimage, SI_SUB_VIMAGE, SI_ORDER_FIRST, vi_init, NULL);
 SYSINIT(vimage_done, SI_SUB_VIMAGE_DONE, SI_ORDER_FIRST, vi_init_done, NULL);
-
 #endif /* !VIMAGE_GLOBALS */
+
+#ifdef VIMAGE
+#ifdef DDB
+static void
+db_vnet_ptr(void *arg)
+{
+
+	if (arg)
+		db_printf(" %p", arg);
+	else
+#if SIZE_MAX == UINT32_MAX /* 32-bit arch */
+		db_printf("          0");
+#else /* 64-bit arch, most probaly... */
+		db_printf("                  0");
+#endif
+}
+
+DB_SHOW_COMMAND(vnets, db_show_vnets)
+{
+	VNET_ITERATOR_DECL(vnet_iter);
+
+#if SIZE_MAX == UINT32_MAX /* 32-bit arch */
+	db_printf("      vnet ifs socks");
+	db_printf("        net       inet      inet6      ipsec   netgraph\n");
+#else /* 64-bit arch, most probaly... */
+	db_printf("              vnet ifs socks");
+	db_printf("                net               inet              inet6              ipsec           netgraph\n");
+#endif
+	VNET_FOREACH(vnet_iter) {
+		db_printf("%p %3d %5d",
+		    vnet_iter, vnet_iter->ifccnt, vnet_iter->sockcnt);
+		db_vnet_ptr(vnet_iter->mod_data[VNET_MOD_NET]);
+		db_vnet_ptr(vnet_iter->mod_data[VNET_MOD_INET]);
+		db_vnet_ptr(vnet_iter->mod_data[VNET_MOD_INET6]);
+		db_vnet_ptr(vnet_iter->mod_data[VNET_MOD_IPSEC]);
+		db_vnet_ptr(vnet_iter->mod_data[VNET_MOD_NETGRAPH]);
+		db_printf("\n");
+	}
+}
+#endif
+#endif /* VIMAGE */

Modified: head/sys/kern/subr_pcpu.c
==============================================================================
--- head/sys/kern/subr_pcpu.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/subr_pcpu.c	Tue May  5 10:56:12 2009	(r191816)
@@ -135,6 +135,10 @@ show_pcpu(struct pcpu *pc)
 		db_printf("none\n");
 	db_show_mdpcpu(pc);
 		
+#ifdef VIMAGE
+	db_printf("curvnet      = %p\n", pc->pc_curthread->td_vnet);
+#endif
+
 #ifdef WITNESS
 	db_printf("spin locks held:\n");
 	witness_list_locks(&pc->pc_spinlocks);

Modified: head/sys/kern/sys_socket.c
==============================================================================
--- head/sys/kern/sys_socket.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/sys_socket.c	Tue May  5 10:56:12 2009	(r191816)
@@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -74,16 +75,19 @@ soo_read(struct file *fp, struct uio *ui
     int flags, struct thread *td)
 {
 	struct socket *so = fp->f_data;
-#ifdef MAC
 	int error;
 
+#ifdef MAC
 	SOCK_LOCK(so);
 	error = mac_socket_check_receive(active_cred, so);
 	SOCK_UNLOCK(so);
 	if (error)
 		return (error);
 #endif
-	return (soreceive(so, 0, uio, 0, 0, 0));
+	CURVNET_SET(so->so_vnet);
+	error = soreceive(so, 0, uio, 0, 0, 0);
+	CURVNET_RESTORE();
+	return (error);
 }
 
 /* ARGSUSED */
@@ -125,6 +129,7 @@ soo_ioctl(struct file *fp, u_long cmd, v
 	struct socket *so = fp->f_data;
 	int error = 0;
 
+	CURVNET_SET(so->so_vnet);
 	switch (cmd) {
 	case FIONBIO:
 		SOCK_LOCK(so);
@@ -205,6 +210,7 @@ soo_ioctl(struct file *fp, u_long cmd, v
 			    (so, cmd, data, 0, td));
 		break;
 	}
+	CURVNET_RESTORE();
 	return (error);
 }
 

Modified: head/sys/kern/uipc_socket.c
==============================================================================
--- head/sys/kern/uipc_socket.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/uipc_socket.c	Tue May  5 10:56:12 2009	(r191816)
@@ -264,7 +264,7 @@ SYSINIT(param, SI_SUB_TUNABLES, SI_ORDER
  * soalloc() returns a socket with a ref count of 0.
  */
 static struct socket *
-soalloc(void)
+soalloc(struct vnet *vnet)
 {
 	struct socket *so;
 
@@ -286,7 +286,8 @@ soalloc(void)
 	so->so_gencnt = ++so_gencnt;
 	++numopensockets;
 #ifdef VIMAGE
-	so->so_vnet = curvnet;
+	++vnet->sockcnt;	/* locked with so_global_mtx */
+	so->so_vnet = vnet;
 #endif
 	mtx_unlock(&so_global_mtx);
 	return (so);
@@ -307,6 +308,9 @@ sodealloc(struct socket *so)
 	mtx_lock(&so_global_mtx);
 	so->so_gencnt = ++so_gencnt;
 	--numopensockets;	/* Could be below, but faster here. */
+#ifdef VIMAGE
+	--so->so_vnet->sockcnt;
+#endif
 	mtx_unlock(&so_global_mtx);
 	if (so->so_rcv.sb_hiwat)
 		(void)chgsbsize(so->so_cred->cr_uidinfo,
@@ -356,7 +360,7 @@ socreate(int dom, struct socket **aso, i
 
 	if (prp->pr_type != type)
 		return (EPROTOTYPE);
-	so = soalloc();
+	so = soalloc(TD_TO_VNET(td));
 	if (so == NULL)
 		return (ENOBUFS);
 
@@ -382,7 +386,9 @@ socreate(int dom, struct socket **aso, i
 	 * Auto-sizing of socket buffers is managed by the protocols and
 	 * the appropriate flags must be set in the pru_attach function.
 	 */
+	CURVNET_SET(so->so_vnet);
 	error = (*prp->pr_usrreqs->pru_attach)(so, proto, td);
+	CURVNET_RESTORE();
 	if (error) {
 		KASSERT(so->so_count == 1, ("socreate: so_count %d",
 		    so->so_count));
@@ -424,7 +430,8 @@ sonewconn(struct socket *head, int conns
 	if (over)
 #endif
 		return (NULL);
-	so = soalloc();
+	VNET_ASSERT(head->so_vnet);
+	so = soalloc(head->so_vnet);
 	if (so == NULL)
 		return (NULL);
 	if ((head->so_options & SO_ACCEPTFILTER) != 0)
@@ -496,8 +503,12 @@ sonewconn(struct socket *head, int conns
 int
 sobind(struct socket *so, struct sockaddr *nam, struct thread *td)
 {
+	int error;
 
-	return ((*so->so_proto->pr_usrreqs->pru_bind)(so, nam, td));
+	CURVNET_SET(so->so_vnet);
+	error = (*so->so_proto->pr_usrreqs->pru_bind)(so, nam, td);
+	CURVNET_RESTORE();
+	return error;
 }
 
 /*
@@ -645,6 +656,7 @@ soclose(struct socket *so)
 
 	KASSERT(!(so->so_state & SS_NOFDREF), ("soclose: SS_NOFDREF on enter"));
 
+	CURVNET_SET(so->so_vnet);
 	funsetown(&so->so_sigio);
 	if (so->so_state & SS_ISCONNECTED) {
 		if ((so->so_state & SS_ISDISCONNECTING) == 0) {
@@ -696,6 +708,7 @@ drop:
 	KASSERT((so->so_state & SS_NOFDREF) == 0, ("soclose: NOFDREF"));
 	so->so_state |= SS_NOFDREF;
 	sorele(so);
+	CURVNET_RESTORE();
 	return (error);
 }
 
@@ -771,7 +784,9 @@ soconnect(struct socket *so, struct sock
 		 * biting us.
 		 */
 		so->so_error = 0;
+		CURVNET_SET(so->so_vnet);
 		error = (*so->so_proto->pr_usrreqs->pru_connect)(so, nam, td);
+		CURVNET_RESTORE();
 	}
 
 	return (error);
@@ -1287,9 +1302,13 @@ int
 sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
     struct mbuf *top, struct mbuf *control, int flags, struct thread *td)
 {
+	int error;
 
-	return (so->so_proto->pr_usrreqs->pru_sosend(so, addr, uio, top,
-	    control, flags, td));
+	CURVNET_SET(so->so_vnet);
+	error = so->so_proto->pr_usrreqs->pru_sosend(so, addr, uio, top,
+		control, flags, td);
+	CURVNET_RESTORE();
+	return (error);
 }
 
 /*
@@ -2037,6 +2056,7 @@ int
 soshutdown(struct socket *so, int how)
 {
 	struct protosw *pr = so->so_proto;
+	int error;
 
 	if (!(how == SHUT_RD || how == SHUT_WR || how == SHUT_RDWR))
 		return (EINVAL);
@@ -2045,8 +2065,12 @@ soshutdown(struct socket *so, int how)
 	}
 	if (how != SHUT_WR)
 		sorflush(so);
-	if (how != SHUT_RD)
-		return ((*pr->pr_usrreqs->pru_shutdown)(so));
+	if (how != SHUT_RD) {
+		CURVNET_SET(so->so_vnet);
+		error = (*pr->pr_usrreqs->pru_shutdown)(so);
+		CURVNET_RESTORE();
+		return (error);
+	}
 	return (0);
 }
 
@@ -2070,6 +2094,7 @@ sorflush(struct socket *so)
 	 * socket buffer.  Don't let our acquire be interrupted by a signal
 	 * despite any existing socket disposition on interruptable waiting.
 	 */
+	CURVNET_SET(so->so_vnet);
 	socantrcvmore(so);
 	(void) sblock(sb, SBL_WAIT | SBL_NOINTR);
 
@@ -2093,6 +2118,7 @@ sorflush(struct socket *so)
 	if (pr->pr_flags & PR_RIGHTS && pr->pr_domain->dom_dispose != NULL)
 		(*pr->pr_domain->dom_dispose)(asb.sb_mb);
 	sbrelease_internal(&asb, so);
+	CURVNET_RESTORE();
 }
 
 /*

Modified: head/sys/kern/uipc_syscalls.c
==============================================================================
--- head/sys/kern/uipc_syscalls.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/uipc_syscalls.c	Tue May  5 10:56:12 2009	(r191816)
@@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 #ifdef KTRACE
 #include 
 #endif
@@ -264,7 +265,9 @@ listen(td, uap)
 		if (error)
 			goto done;
 #endif
+		CURVNET_SET(so->so_vnet);
 		error = solisten(so, uap->backlog, td);
+		CURVNET_RESTORE();
 #ifdef MAC
 done:
 #endif
@@ -429,7 +432,9 @@ kern_accept(struct thread *td, int s, st
 	tmp = fflag & FASYNC;
 	(void) fo_ioctl(nfp, FIOASYNC, &tmp, td->td_ucred, td);
 	sa = 0;
+	CURVNET_SET(so->so_vnet);
 	error = soaccept(so, &sa);
+	CURVNET_RESTORE();
 	if (error) {
 		/*
 		 * return a namelen of zero for older code which might
@@ -976,9 +981,11 @@ kern_recvit(td, s, mp, fromseg, controlp
 		ktruio = cloneuio(&auio);
 #endif
 	len = auio.uio_resid;
+	CURVNET_SET(so->so_vnet);
 	error = soreceive(so, &fromsa, &auio, (struct mbuf **)0,
 	    (mp->msg_control || controlp) ? &control : (struct mbuf **)0,
 	    &mp->msg_flags);
+	CURVNET_RESTORE();
 	if (error) {
 		if (auio.uio_resid != (int)len && (error == ERESTART ||
 		    error == EINTR || error == EWOULDBLOCK))
@@ -1322,7 +1329,9 @@ kern_setsockopt(td, s, level, name, val,
 	error = getsock(td->td_proc->p_fd, s, &fp, NULL);
 	if (error == 0) {
 		so = fp->f_data;
+		CURVNET_SET(so->so_vnet);
 		error = sosetopt(so, &sopt);
+		CURVNET_RESTORE();
 		fdrop(fp, td);
 	}
 	return(error);
@@ -1400,7 +1409,9 @@ kern_getsockopt(td, s, level, name, val,
 	error = getsock(td->td_proc->p_fd, s, &fp, NULL);
 	if (error == 0) {
 		so = fp->f_data;
+		CURVNET_SET(so->so_vnet);
 		error = sogetopt(so, &sopt);
+		CURVNET_RESTORE();
 		*valsize = sopt.sopt_valsize;
 		fdrop(fp, td);
 	}
@@ -1463,7 +1474,9 @@ kern_getsockname(struct thread *td, int 
 		return (error);
 	so = fp->f_data;
 	*sa = NULL;
+	CURVNET_SET(so->so_vnet);
 	error = (*so->so_proto->pr_usrreqs->pru_sockaddr)(so, sa);
+	CURVNET_RESTORE();
 	if (error)
 		goto bad;
 	if (*sa == NULL)
@@ -1564,7 +1577,9 @@ kern_getpeername(struct thread *td, int 
 		goto done;
 	}
 	*sa = NULL;
+	CURVNET_SET(so->so_vnet);
 	error = (*so->so_proto->pr_usrreqs->pru_peeraddr)(so, sa);
+	CURVNET_RESTORE();
 	if (error)
 		goto bad;
 	if (*sa == NULL)
@@ -2176,9 +2191,11 @@ retry_space:
 				goto done;
 			}
 			SOCKBUF_UNLOCK(&so->so_snd);
+			CURVNET_SET(so->so_vnet);
 			/* Avoid error aliasing. */
 			err = (*so->so_proto->pr_usrreqs->pru_send)
 				    (so, 0, m, NULL, NULL, td);
+			CURVNET_RESTORE();
 			if (err == 0) {
 				/*
 				 * We need two counters to get the

Modified: head/sys/kern/uipc_usrreq.c
==============================================================================
--- head/sys/kern/uipc_usrreq.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/kern/uipc_usrreq.c	Tue May  5 10:56:12 2009	(r191816)
@@ -90,6 +90,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 
 #ifdef DDB
 #include 
@@ -1647,6 +1648,10 @@ static void
 unp_init(void)
 {
 
+#ifdef VIMAGE
+	if (!IS_DEFAULT_VNET(curvnet))
+		return;
+#endif
 	unp_zone = uma_zcreate("unpcb", sizeof(struct unpcb), NULL, NULL,
 	    NULL, NULL, UMA_ALIGN_PTR, 0);
 	if (unp_zone == NULL)

Modified: head/sys/net/bpf.c
==============================================================================
--- head/sys/net/bpf.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/bpf.c	Tue May  5 10:56:12 2009	(r191816)
@@ -873,11 +873,10 @@ bpfwrite(struct cdev *dev, struct uio *u
 	m->m_len -= hlen;
 	m->m_data += hlen;	/* XXX */
 
+	CURVNET_SET(ifp->if_vnet);
 #ifdef MAC
 	BPFD_LOCK(d);
-	CURVNET_SET(ifp->if_vnet);
 	mac_bpfdesc_create_mbuf(d, m);
-	CURVNET_RESTORE();
 	if (mc != NULL)
 		mac_bpfdesc_create_mbuf(d, mc);
 	BPFD_UNLOCK(d);
@@ -893,6 +892,7 @@ bpfwrite(struct cdev *dev, struct uio *u
 		else
 			m_freem(mc);
 	}
+	CURVNET_RESTORE();
 
 	return (error);
 }

Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/if.c	Tue May  5 10:56:12 2009	(r191816)
@@ -53,6 +53,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -126,7 +127,6 @@ static void	if_attachdomain(void *);
 static void	if_attachdomain1(struct ifnet *);
 static int	ifconf(u_long, caddr_t);
 static void	if_freemulti(struct ifmultiaddr *);
-static void	if_grow(void);
 static void	if_init(void *);
 static void	if_check(void *);
 static void	if_route(struct ifnet *, int flag, int fam);
@@ -202,7 +202,7 @@ MALLOC_DEFINE(M_IFNET, "ifnet", "interfa
 MALLOC_DEFINE(M_IFADDR, "ifaddr", "interface address");
 MALLOC_DEFINE(M_IFMADDR, "ether_multi", "link-level multicast address");
 
-static struct ifnet *
+struct ifnet *
 ifnet_byindex_locked(u_short idx)
 {
 	INIT_VNET_NET(curvnet);
@@ -239,7 +239,7 @@ ifnet_byindex_ref(u_short idx)
 	return (ifp);
 }
 
-static void
+void
 ifnet_setbyindex(u_short idx, struct ifnet *ifp)
 {
 	INIT_VNET_NET(curvnet);
@@ -445,7 +445,7 @@ vnet_net_iattach(const void *unused __un
 	return (0);
 }
 
-static void
+void
 if_grow(void)
 {
 	INIT_VNET_NET(curvnet);
@@ -696,11 +696,13 @@ if_attach(struct ifnet *ifp)
 	mac_ifnet_create(ifp);
 #endif
 
-	ifdev_setbyindex(ifp->if_index, make_dev(&net_cdevsw,
-	    ifp->if_index, UID_ROOT, GID_WHEEL, 0600, "%s/%s",
-	    net_cdevsw.d_name, ifp->if_xname));
-	make_dev_alias(ifdev_byindex(ifp->if_index), "%s%d",
-	    net_cdevsw.d_name, ifp->if_index);
+	if (IS_DEFAULT_VNET(curvnet)) {
+		ifdev_setbyindex(ifp->if_index, make_dev(&net_cdevsw,
+		    ifp->if_index, UID_ROOT, GID_WHEEL, 0600, "%s/%s",
+		    net_cdevsw.d_name, ifp->if_xname));
+		make_dev_alias(ifdev_byindex(ifp->if_index), "%s%d",
+		    net_cdevsw.d_name, ifp->if_index);
+	}
 
 	ifq_attach(&ifp->if_snd, ifp);
 
@@ -742,13 +744,17 @@ if_attach(struct ifnet *ifp)
 
 	IFNET_WLOCK();
 	TAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link);
+#ifdef VIMAGE
+	curvnet->ifccnt++;
+#endif
 	IFNET_WUNLOCK();
 
 	if (domain_init_status >= 2)
 		if_attachdomain1(ifp);
 
 	EVENTHANDLER_INVOKE(ifnet_arrival_event, ifp);
-	devctl_notify("IFNET", ifp->if_xname, "ATTACH", NULL);
+	if (IS_DEFAULT_VNET(curvnet))
+		devctl_notify("IFNET", ifp->if_xname, "ATTACH", NULL);
 
 	/* Announce the interface. */
 	rt_ifannouncemsg(ifp, IFAN_ARRIVAL);
@@ -895,6 +901,10 @@ if_detach(struct ifnet *ifp)
 			found = 1;
 			break;
 		}
+#ifdef VIMAGE
+	if (found)
+		curvnet->ifccnt--;
+#endif
 	IFNET_WUNLOCK();
 	if (!found)
 		return;
@@ -943,7 +953,8 @@ if_detach(struct ifnet *ifp)
 	 * Clean up all addresses.
 	 */
 	ifp->if_addr = NULL;
-	destroy_dev(ifdev_byindex(ifp->if_index));
+	if (IS_DEFAULT_VNET(curvnet))
+		destroy_dev(ifdev_byindex(ifp->if_index));
 	ifdev_setbyindex(ifp->if_index, NULL);	
 
 	/* We can now free link ifaddr. */
@@ -972,7 +983,8 @@ if_detach(struct ifnet *ifp)
 	/* Announce that the interface is gone. */
 	rt_ifannouncemsg(ifp, IFAN_DEPARTURE);
 	EVENTHANDLER_INVOKE(ifnet_departure_event, ifp);
-	devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL);
+	if (IS_DEFAULT_VNET(curvnet))
+		devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL);
 	if_delgroups(ifp);
 
 	IF_AFDATA_LOCK(ifp);
@@ -1701,8 +1713,10 @@ do_link_state_change(void *arg, int pend
 		(*lagg_linkstate_p)(ifp, link_state);
 	}
 
-	devctl_notify("IFNET", ifp->if_xname,
-	    (link_state == LINK_STATE_UP) ? "LINK_UP" : "LINK_DOWN", NULL);
+	if (IS_DEFAULT_VNET(curvnet))
+		devctl_notify("IFNET", ifp->if_xname,
+		    (link_state == LINK_STATE_UP) ? "LINK_UP" : "LINK_DOWN",
+		    NULL);
 	if (pending > 1)
 		if_printf(ifp, "%d link states coalesced\n", pending);
 	if (log_link_state_change)

Modified: head/sys/net/if_clone.c
==============================================================================
--- head/sys/net/if_clone.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/if_clone.c	Tue May  5 10:56:12 2009	(r191816)
@@ -39,6 +39,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -49,6 +50,7 @@
 #include 
 #include 
 #include 
+#include 
 
 static void	if_clone_free(struct if_clone *ifc);
 static int	if_clone_createif(struct if_clone *ifc, char *name, size_t len,
@@ -203,15 +205,14 @@ if_clone_destroyif(struct if_clone *ifc,
 {
 	int err;
 
-	if (ifc->ifc_destroy == NULL) {
-		err = EOPNOTSUPP;
-		goto done;
-	}
+	if (ifc->ifc_destroy == NULL)
+		return(EOPNOTSUPP);
 
 	IF_CLONE_LOCK(ifc);
 	IFC_IFLIST_REMOVE(ifc, ifp);
 	IF_CLONE_UNLOCK(ifc);
 
+	CURVNET_SET_QUIET(ifp->if_vnet);
 	if_delgroup(ifp, ifc->ifc_name);
 
 	err =  (*ifc->ifc_destroy)(ifc, ifp);
@@ -223,8 +224,7 @@ if_clone_destroyif(struct if_clone *ifc,
 		IFC_IFLIST_INSERT(ifc, ifp);
 		IF_CLONE_UNLOCK(ifc);
 	}
-
-done:
+	CURVNET_RESTORE();
 	return (err);
 }
 

Modified: head/sys/net/if_ethersubr.c
==============================================================================
--- head/sys/net/if_ethersubr.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/if_ethersubr.c	Tue May  5 10:56:12 2009	(r191816)
@@ -602,6 +602,8 @@ ether_input(struct ifnet *ifp, struct mb
 	}
 #endif
 
+	CURVNET_SET_QUIET(ifp->if_vnet);
+
 	if (ETHER_IS_MULTICAST(eh->ether_dhost)) {
 		if (ETHER_IS_BROADCAST(eh->ether_dhost))
 			m->m_flags |= M_BCAST;
@@ -638,6 +640,7 @@ ether_input(struct ifnet *ifp, struct mb
 	/* Allow monitor mode to claim this frame, after stats are updated. */
 	if (ifp->if_flags & IFF_MONITOR) {
 		m_freem(m);
+		CURVNET_RESTORE();
 		return;
 	}
 
@@ -686,8 +689,10 @@ ether_input(struct ifnet *ifp, struct mb
 		    ("%s: ng_ether_input_p is NULL", __func__));
 		m->m_flags &= ~M_PROMISC;
 		(*ng_ether_input_p)(ifp, &m);
-		if (m == NULL)
+		if (m == NULL) {
+			CURVNET_RESTORE();
 			return;
+		}
 	}
 
 	/*
@@ -698,8 +703,10 @@ ether_input(struct ifnet *ifp, struct mb
 	if (ifp->if_bridge != NULL) {
 		m->m_flags &= ~M_PROMISC;
 		BRIDGE_INPUT(ifp, m);
-		if (m == NULL)
+		if (m == NULL) {
+			CURVNET_RESTORE();
 			return;
+		}
 	}
 
 #ifdef DEV_CARP
@@ -735,6 +742,7 @@ ether_input(struct ifnet *ifp, struct mb
 		random_harvest(m, 16, 3, 0, RANDOM_NET);
 
 	ether_demux(ifp, m);
+	CURVNET_RESTORE();
 }
 
 /*

Modified: head/sys/net/if_var.h
==============================================================================
--- head/sys/net/if_var.h	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/if_var.h	Tue May  5 10:56:12 2009	(r191816)
@@ -731,7 +731,9 @@ struct ifindex_entry {
  * to call ifnet_byindex() instead if ifnet_byindex_ref().
  */
 struct ifnet	*ifnet_byindex(u_short idx);
+struct ifnet	*ifnet_byindex_locked(u_short idx);
 struct ifnet	*ifnet_byindex_ref(u_short idx);
+void ifnet_setbyindex(u_short idx, struct ifnet *ifp);
 
 /*
  * Given the index, ifaddr_byindex() returns the one and only
@@ -755,6 +757,7 @@ int	if_allmulti(struct ifnet *, int);
 struct	ifnet* if_alloc(u_char);
 void	if_attach(struct ifnet *);
 void	if_dead(struct ifnet *);
+void	if_grow(void);
 int	if_delmulti(struct ifnet *, struct sockaddr *);
 void	if_delmulti_ifma(struct ifmultiaddr *);
 void	if_detach(struct ifnet *);

Modified: head/sys/net/netisr.c
==============================================================================
--- head/sys/net/netisr.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/netisr.c	Tue May  5 10:56:12 2009	(r191816)
@@ -43,6 +43,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -142,7 +143,10 @@ netisr_processqueue(struct netisr *ni)
 		IF_DEQUEUE(ni->ni_queue, m);
 		if (m == NULL)
 			break;
+		VNET_ASSERT(m->m_pkthdr.rcvif != NULL);
+		CURVNET_SET(m->m_pkthdr.rcvif->if_vnet);
 		ni->ni_handler(m);
+		CURVNET_RESTORE();
 	}
 }
 

Modified: head/sys/net/rtsock.c
==============================================================================
--- head/sys/net/rtsock.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net/rtsock.c	Tue May  5 10:56:12 2009	(r191816)
@@ -1206,6 +1206,7 @@ rt_ifannouncemsg(struct ifnet *ifp, int 
 static void
 rt_dispatch(struct mbuf *m, const struct sockaddr *sa)
 {
+	INIT_VNET_NET(curvnet);
 	struct m_tag *tag;
 
 	/*
@@ -1223,6 +1224,14 @@ rt_dispatch(struct mbuf *m, const struct
 		*(unsigned short *)(tag + 1) = sa->sa_family;
 		m_tag_prepend(m, tag);
 	}
+#ifdef VIMAGE
+	if (V_loif)
+		m->m_pkthdr.rcvif = V_loif;
+	else {
+		m_freem(m);
+		return;
+	}
+#endif
 	netisr_queue(NETISR_ROUTE, m);	/* mbuf is free'd on failure. */
 }
 

Modified: head/sys/net80211/ieee80211_freebsd.c
==============================================================================
--- head/sys/net80211/ieee80211_freebsd.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/net80211/ieee80211_freebsd.c	Tue May  5 10:56:12 2009	(r191816)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 #include 
 
 #include 
+#include 
 
 #include 
 #include 
@@ -498,9 +499,11 @@ notify_macaddr(struct ifnet *ifp, int op
 {
 	struct ieee80211_join_event iev;
 
+	CURVNET_SET(ifp->if_vnet);
 	memset(&iev, 0, sizeof(iev));
 	IEEE80211_ADDR_COPY(iev.iev_addr, mac);
 	rt_ieee80211msg(ifp, op, &iev, sizeof(iev));
+	CURVNET_RESTORE();
 }
 
 void
@@ -509,6 +512,7 @@ ieee80211_notify_node_join(struct ieee80
 	struct ieee80211vap *vap = ni->ni_vap;
 	struct ifnet *ifp = vap->iv_ifp;
 
+	CURVNET_SET_QUIET(ifp->if_vnet);
 	IEEE80211_NOTE(vap, IEEE80211_MSG_NODE, ni, "%snode join",
 	    (ni == vap->iv_bss) ? "bss " : "");
 
@@ -520,6 +524,7 @@ ieee80211_notify_node_join(struct ieee80
 		notify_macaddr(ifp, newassoc ?
 		    RTM_IEEE80211_JOIN : RTM_IEEE80211_REJOIN, ni->ni_macaddr);
 	}
+	CURVNET_RESTORE();
 }
 
 void
@@ -528,6 +533,7 @@ ieee80211_notify_node_leave(struct ieee8
 	struct ieee80211vap *vap = ni->ni_vap;
 	struct ifnet *ifp = vap->iv_ifp;
 
+	CURVNET_SET_QUIET(ifp->if_vnet);
 	IEEE80211_NOTE(vap, IEEE80211_MSG_NODE, ni, "%snode leave",
 	    (ni == vap->iv_bss) ? "bss " : "");
 
@@ -538,6 +544,7 @@ ieee80211_notify_node_leave(struct ieee8
 		/* fire off wireless event station leaving */
 		notify_macaddr(ifp, RTM_IEEE80211_LEAVE, ni->ni_macaddr);
 	}
+	CURVNET_RESTORE();
 }
 
 void
@@ -548,7 +555,9 @@ ieee80211_notify_scan_done(struct ieee80
 	IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, "%s\n", "notify scan done");
 
 	/* dispatch wireless event indicating scan completed */
+	CURVNET_SET(ifp->if_vnet);
 	rt_ieee80211msg(ifp, RTM_IEEE80211_SCAN, NULL, 0);
+	CURVNET_RESTORE();
 }
 
 void
@@ -576,7 +585,9 @@ ieee80211_notify_replay_failure(struct i
 			iev.iev_keyix = k->wk_keyix;
 		iev.iev_keyrsc = k->wk_keyrsc[0];	/* XXX need tid */
 		iev.iev_rsc = rsc;
+		CURVNET_SET(ifp->if_vnet);
 		rt_ieee80211msg(ifp, RTM_IEEE80211_REPLAY, &iev, sizeof(iev));
+		CURVNET_RESTORE();
 	}
 }
 
@@ -597,7 +608,9 @@ ieee80211_notify_michael_failure(struct 
 		IEEE80211_ADDR_COPY(iev.iev_src, wh->i_addr2);
 		iev.iev_cipher = IEEE80211_CIPHER_TKIP;
 		iev.iev_keyix = keyix;
+		CURVNET_SET(ifp->if_vnet);
 		rt_ieee80211msg(ifp, RTM_IEEE80211_MICHAEL, &iev, sizeof(iev));
+		CURVNET_RESTORE();
 	}
 }
 

Modified: head/sys/netgraph/netgraph.h
==============================================================================
--- head/sys/netgraph/netgraph.h	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/netgraph/netgraph.h	Tue May  5 10:56:12 2009	(r191816)
@@ -352,6 +352,7 @@ struct ng_node {
 	LIST_ENTRY(ng_node)	  nd_idnodes;	/* ID hash collision list */
 	struct	ng_queue	  nd_input_queue; /* input queue for locking */
 	int	nd_refs;		/* # of references to this node */
+	struct	vnet		 *nd_vnet;	/* network stack instance */
 #ifdef	NETGRAPH_DEBUG /*----------------------------------------------*/
 #define ND_MAGIC 0x59264837
 	int	nd_magic;

Modified: head/sys/netinet/if_ether.c
==============================================================================
--- head/sys/netinet/if_ether.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/netinet/if_ether.c	Tue May  5 10:56:12 2009	(r191816)
@@ -143,10 +143,12 @@ arp_ifscrub(struct ifnet *ifp, uint32_t 
 	addr4.sin_len    = sizeof(addr4);
 	addr4.sin_family = AF_INET;
 	addr4.sin_addr.s_addr = addr;
+	CURVNET_SET(ifp->if_vnet);
 	IF_AFDATA_LOCK(ifp);
 	lla_lookup(LLTABLE(ifp), (LLE_DELETE | LLE_IFADDR),
 	    (struct sockaddr *)&addr4);
 	IF_AFDATA_UNLOCK(ifp);
+	CURVNET_RESTORE();
 }
 #endif
 

Modified: head/sys/netinet/igmp.c
==============================================================================
--- head/sys/netinet/igmp.c	Tue May  5 10:46:49 2009	(r191815)
+++ head/sys/netinet/igmp.c	Tue May  5 10:56:12 2009	(r191816)
@@ -1117,6 +1117,9 @@ igmp_input_v3_group_query(struct in_mult
 
 	nsrc = ntohs(igmpv3->igmp_numsrc);
 
+	if (!IS_DEFAULT_VNET(curvnet))
+		return (retval);
+
 	/*
 	 * Deal with group-specific queries upfront.
 	 * If any group query is already pending, purge any recorded
@@ -3372,7 +3375,7 @@ igmp_intr(struct mbuf *m)
 	 * indexes to guard against interface detach, they are
 	 * unique to each VIMAGE and must be retrieved.
 	 */
-	CURVNET_SET(m->m_pkthdr.header);
+	CURVNET_SET((struct vnet *)(m->m_pkthdr.header));
 	INIT_VNET_NET(curvnet);
 	INIT_VNET_INET(curvnet);
 	ifindex = igmp_restore_context(m);
@@ -3654,9 +3657,7 @@ igmp_modevent(module_t mod, int type, vo
 	break;
     case MOD_UNLOAD:
 #ifndef VIMAGE_GLOBALS

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
From stas at FreeBSD.org  Tue May  5 12:57:17 2009
From: stas at FreeBSD.org (Stanislav Sedov)
Date: Tue May  5 12:58:05 2009
Subject: svn commit: r191817 - head/sys/arm/arm
Message-ID: <200905051257.n45CvGrl081713@svn.freebsd.org>

Author: stas
Date: Tue May  5 12:57:16 2009
New Revision: 191817
URL: http://svn.freebsd.org/changeset/base/191817

Log:
  - Add support for PXA270 cpu.
  
  Submitted by:	Jacques Fourie 

Modified:
  head/sys/arm/arm/cpufunc.c

Modified: head/sys/arm/arm/cpufunc.c
==============================================================================
--- head/sys/arm/arm/cpufunc.c	Tue May  5 10:56:12 2009	(r191816)
+++ head/sys/arm/arm/cpufunc.c	Tue May  5 12:57:16 2009	(r191817)
@@ -1192,6 +1192,7 @@ set_cpufuncs()
 #ifdef CPU_XSCALE_PXA2X0
 	/* ignore core revision to test PXA2xx CPUs */
 	if ((cputype & ~CPU_ID_XSCALE_COREREV_MASK) == CPU_ID_PXA250 ||
+	    (cputype & ~CPU_ID_XSCALE_COREREV_MASK) == CPU_ID_PXA27X ||
 	    (cputype & ~CPU_ID_XSCALE_COREREV_MASK) == CPU_ID_PXA210) {
 
 		cpufuncs = xscale_cpufuncs;
From trasz at FreeBSD.org  Tue May  5 13:48:54 2009
From: trasz at FreeBSD.org (Edward Tomasz Napierala)
Date: Tue May  5 13:49:13 2009
Subject: svn commit: r191818 - head/share/man/man4
Message-ID: <200905051348.n45Dms1Q082853@svn.freebsd.org>

Author: trasz
Date: Tue May  5 13:48:53 2009
New Revision: 191818
URL: http://svn.freebsd.org/changeset/base/191818

Log:
  Make gmultipath(8) easier to find.

Modified:
  head/share/man/man4/geom_fox.4
  head/share/man/man4/isp.4
  head/share/man/man4/mpt.4

Modified: head/share/man/man4/geom_fox.4
==============================================================================
--- head/share/man/man4/geom_fox.4	Tue May  5 12:57:16 2009	(r191817)
+++ head/share/man/man4/geom_fox.4	Tue May  5 13:48:53 2009	(r191818)
@@ -175,7 +175,8 @@ da2.fox     N/A  da2
 .El
 .Sh SEE ALSO
 .Xr GEOM 4 ,
-.Xr geom 8
+.Xr geom 8 ,
+.Xr gmultipath 8
 .Sh CAVEATS
 The
 .Nm

Modified: head/share/man/man4/isp.4
==============================================================================
--- head/share/man/man4/isp.4	Tue May  5 12:57:16 2009	(r191817)
+++ head/share/man/man4/isp.4	Tue May  5 13:48:53 2009	(r191818)
@@ -224,7 +224,8 @@ This is the readonly World Wide Port Nam
 .Xr intro 4 ,
 .Xr ispfw 4 ,
 .Xr sa 4 ,
-.Xr scsi 4
+.Xr scsi 4 ,
+.Xr gmultipath 8
 .Sh AUTHORS
 The
 .Nm

Modified: head/share/man/man4/mpt.4
==============================================================================
--- head/share/man/man4/mpt.4	Tue May  5 12:57:16 2009	(r191817)
+++ head/share/man/man4/mpt.4	Tue May  5 13:48:53 2009	(r191818)
@@ -154,7 +154,8 @@ can take on - no separate compilation is
 .Xr pci 4 ,
 .Xr sa 4 ,
 .Xr scsi 4 ,
-.Xr targ 4
+.Xr targ 4 ,
+.Xr gmultipath 8
 .Rs
 .%T "LSI Logic Website"
 .%O http://www.lsilogic.com/
From Alexander at Leidinger.net  Tue May  5 14:21:48 2009
From: Alexander at Leidinger.net (Alexander Leidinger)
Date: Tue May  5 14:21:54 2009
Subject: svn commit: r191777 - head/sys/nfsclient
In-Reply-To: 
References: <200905040219.n442Jq3V030903@svn.freebsd.org>
	<20090504133527.43351tf1iwwi5sro@webmail.leidinger.net>
	
	<20090504142227.11823qbind1lyyuc@webmail.leidinger.net>
	
Message-ID: <20090505162138.14395avh7ehv6zcw@webmail.leidinger.net>

Quoting Robert Watson  (from Mon, 4 May 2009  
14:50:54 +0100 (BST)):

> Well, 'dtraceall' claims dependency on all the provider modules, so  
> results in everything being loaded including dtnfsclient.  In  
> theory, dtnfsclient and other providers should contain the necessary  
> module dependencies to cause them to load everything they depend on,  
> but I also have the feeling I've run into the problem you're seeing.  
>  Could you provide the symbol missing errors from the console?  It  
> should be fairly easy to track down the missing graph edge using that.

link_elf: symbol nfsclient_accesscache_flush_done_id undefined
KLD dtraceall.ko: depends on dtnfsclient - not available

Bye,
Alexander.

-- 
Calling you stupid is an insult to stupid people!
		-- Wanda, "A Fish Called Wanda"

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
From rwatson at FreeBSD.org  Tue May  5 14:24:00 2009
From: rwatson at FreeBSD.org (Robert Watson)
Date: Tue May  5 14:24:11 2009
Subject: svn commit: r191777 - head/sys/nfsclient
In-Reply-To: <20090505162138.14395avh7ehv6zcw@webmail.leidinger.net>
References: <200905040219.n442Jq3V030903@svn.freebsd.org>
	<20090504133527.43351tf1iwwi5sro@webmail.leidinger.net>
	
	<20090504142227.11823qbind1lyyuc@webmail.leidinger.net>
	
	<20090505162138.14395avh7ehv6zcw@webmail.leidinger.net>
Message-ID: 


On Tue, 5 May 2009, Alexander Leidinger wrote:

> Quoting Robert Watson  (from Mon, 4 May 2009 14:50:54 
> +0100 (BST)):
>
>> Well, 'dtraceall' claims dependency on all the provider modules, so results 
>> in everything being loaded including dtnfsclient.  In theory, dtnfsclient 
>> and other providers should contain the necessary module dependencies to 
>> cause them to load everything they depend on, but I also have the feeling 
>> I've run into the problem you're seeing.  Could you provide the symbol 
>> missing errors from the console?  It should be fairly easy to track down 
>> the missing graph edge using that.
>
> link_elf: symbol nfsclient_accesscache_flush_done_id undefined KLD 
> dtraceall.ko: depends on dtnfsclient - not available

Is the nfsclient module loaded?  If so, was the module built using a kernel 
configured for KDTRACE_HOOKS?

Robert N M Watson
Computer Laboratory
University of Cambridge
From Alexander at Leidinger.net  Tue May  5 14:34:00 2009
From: Alexander at Leidinger.net (Alexander Leidinger)
Date: Tue May  5 14:34:12 2009
Subject: svn commit: r191816 - in head/sys: conf dev/cxgb/ulp/tom kern
 net net80211 netgraph netinet netinet6 netipsec nfsclient sys
In-Reply-To: <200905051056.n45AuCho079307@svn.freebsd.org>
References: <200905051056.n45AuCho079307@svn.freebsd.org>
Message-ID: <20090505163352.810118qlbvxymfkg@webmail.leidinger.net>

Quoting Marko Zec  (from Tue, 5 May 2009 10:56:12  
+0000 (UTC)):

>   The exact placement of the CURVNET_SET() / CURVNET_RESTORE() macros
>   was a result of an empirical iterative process,

Was the linuxulator taken into account in this process?

Bye,
Alexander.

-- 
Thus spake the master programmer:
	"Time for you to leave."
		-- Geoffrey James, "The Tao of Programming"

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
From Alexander at Leidinger.net  Tue May  5 14:37:59 2009
From: Alexander at Leidinger.net (Alexander Leidinger)
Date: Tue May  5 14:38:20 2009
Subject: svn commit: r191777 - head/sys/nfsclient
In-Reply-To: 
References: <200905040219.n442Jq3V030903@svn.freebsd.org>
	<20090504133527.43351tf1iwwi5sro@webmail.leidinger.net>
	
	<20090504142227.11823qbind1lyyuc@webmail.leidinger.net>
	
	<20090505162138.14395avh7ehv6zcw@webmail.leidinger.net>
	
Message-ID: <20090505163750.82426dctf57hxzk8@webmail.leidinger.net>

Quoting Robert Watson  (from Tue, 5 May 2009  
15:23:58 +0100 (BST)):

>
> On Tue, 5 May 2009, Alexander Leidinger wrote:
>
>> Quoting Robert Watson  (from Mon, 4 May 2009  
>> 14:50:54 +0100 (BST)):
>>
>>> Well, 'dtraceall' claims dependency on all the provider modules,  
>>> so results in everything being loaded including dtnfsclient.  In  
>>> theory, dtnfsclient and other providers should contain the  
>>> necessary module dependencies to cause them to load everything  
>>> they depend on, but I also have the feeling I've run into the  
>>> problem you're seeing.  Could you provide the symbol missing  
>>> errors from the console?  It should be fairly easy to track down  
>>> the missing graph edge using that.
>>
>> link_elf: symbol nfsclient_accesscache_flush_done_id undefined KLD  
>> dtraceall.ko: depends on dtnfsclient - not available
>
> Is the nfsclient module loaded?  If so, was the module built using a  
> kernel configured for KDTRACE_HOOKS?

# kldstat -v | grep nfs
25    1 0x87019000 1a000    nfsserver.ko (/boot/kernel/nfsserver.ko)
                 256 nfsserver
27    1 0x86944000 2000     nfssvc.ko (/boot/kernel/nfssvc.ko)
                 255 nfssvc

The module was build (old style, "make cleandepend && make depend &&  
make && make install") together with the kernel which contains  
KDTRACE_HOOKS.

Bye,
Alexander.

-- 
Don't change the reason, just change the excuses!
		-- Joe Cointment

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
From jhb at FreeBSD.org  Tue May  5 14:46:19 2009
From: jhb at FreeBSD.org (John Baldwin)
Date: Tue May  5 14:46:36 2009
Subject: svn commit: r191819 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb dev/pci
Message-ID: <200905051446.n45EkIhZ084178@svn.freebsd.org>

Author: jhb
Date: Tue May  5 14:46:18 2009
New Revision: 191819
URL: http://svn.freebsd.org/changeset/base/191819

Log:
  MFC: Sync with HEAD
  - Proxy PCI MSI/MSI-X requests and bus interrupt requests for child devices
    instead of passing them through directly.  This allows child devices to use
    MSI/MSI-X interrupts.
  - Proxy PCI VPD requests.
  - Proxy bus resource allocation requests to allow multiple child devices to
    share access to a BAR.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/dev/pci/vga_pci.c

Modified: stable/7/sys/dev/pci/vga_pci.c
==============================================================================
--- stable/7/sys/dev/pci/vga_pci.c	Tue May  5 13:48:53 2009	(r191818)
+++ stable/7/sys/dev/pci/vga_pci.c	Tue May  5 14:46:18 2009	(r191819)
@@ -42,10 +42,22 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
+#include 
 
 #include 
 #include 
 
+struct vga_resource {
+	struct resource	*vr_res;
+	int	vr_refs;
+};
+
+struct vga_pci_softc {
+	device_t	vga_msi_child;	/* Child driver using MSI. */
+	struct vga_resource vga_res[PCIR_MAX_BAR_0 + 1];
+};
+
 static int
 vga_pci_probe(device_t dev)
 {
@@ -106,11 +118,47 @@ vga_pci_write_ivar(device_t dev, device_
 	return (EINVAL);
 }
 
+static int
+vga_pci_setup_intr(device_t dev, device_t child, struct resource *irq,
+    int flags, driver_filter_t *filter, driver_intr_t *intr, void *arg,
+    void **cookiep)
+{
+	return (BUS_SETUP_INTR(device_get_parent(dev), dev, irq, flags,
+	    filter, intr, arg, cookiep));
+}
+
+static int
+vga_pci_teardown_intr(device_t dev, device_t child, struct resource *irq,
+    void *cookie)
+{
+	return (BUS_TEARDOWN_INTR(device_get_parent(dev), dev, irq, cookie));
+}
+
 static struct resource *
 vga_pci_alloc_resource(device_t dev, device_t child, int type, int *rid,
     u_long start, u_long end, u_long count, u_int flags)
 {
+	struct vga_pci_softc *sc;
+	int bar;
 
+	switch (type) {
+	case SYS_RES_MEMORY:
+	case SYS_RES_IOPORT:
+		/*
+		 * For BARs, we cache the resource so that we only allocate it
+		 * from the PCI bus once.
+		 */
+		bar = PCI_RID2BAR(*rid);
+		if (bar < 0 || bar > PCIR_MAX_BAR_0)
+			return (NULL);
+		sc = device_get_softc(dev);
+		if (sc->vga_res[bar].vr_res == NULL)
+			sc->vga_res[bar].vr_res = bus_alloc_resource(dev, type,
+			    rid, start, end, count, flags);
+		if (sc->vga_res[bar].vr_res != NULL)
+			sc->vga_res[bar].vr_refs++;
+		return (sc->vga_res[bar].vr_res);
+	}
 	return (bus_alloc_resource(dev, type, rid, start, end, count, flags));
 }
 
@@ -118,6 +166,37 @@ static int
 vga_pci_release_resource(device_t dev, device_t child, int type, int rid,
     struct resource *r)
 {
+	struct vga_pci_softc *sc;
+	int bar, error;
+
+	switch (type) {
+	case SYS_RES_MEMORY:
+	case SYS_RES_IOPORT:
+		/*
+		 * For BARs, we release the resource from the PCI bus
+		 * when the last child reference goes away.
+		 */
+		bar = PCI_RID2BAR(rid);
+		if (bar < 0 || bar > PCIR_MAX_BAR_0)
+			return (EINVAL);
+		sc = device_get_softc(dev);
+		if (sc->vga_res[bar].vr_res == NULL)
+			return (EINVAL);
+		KASSERT(sc->vga_res[bar].vr_res == r,
+		    ("vga_pci resource mismatch"));
+		if (sc->vga_res[bar].vr_refs > 1) {
+			sc->vga_res[bar].vr_refs--;
+			return (0);
+		}
+		KASSERT(sc->vga_res[bar].vr_refs > 0,
+		    ("vga_pci resource reference count underflow"));
+		error = bus_release_resource(dev, type, rid, r);
+		if (error == 0) {
+			sc->vga_res[bar].vr_res = NULL;
+			sc->vga_res[bar].vr_refs = 0;
+		}
+		return (error);
+	}
 
 	return (bus_release_resource(dev, type, rid, r));
 }
@@ -176,6 +255,21 @@ vga_pci_disable_io(device_t dev, device_
 }
 
 static int
+vga_pci_get_vpd_ident(device_t dev, device_t child, const char **identptr)
+{
+
+	return (pci_get_vpd_ident(dev, identptr));
+}
+
+static int
+vga_pci_get_vpd_readonly(device_t dev, device_t child, const char *kw,
+    const char **vptr)
+{
+
+	return (pci_get_vpd_readonly(dev, kw, vptr));
+}
+
+static int
 vga_pci_set_powerstate(device_t dev, device_t child, int state)
 {
 
@@ -210,6 +304,77 @@ vga_pci_find_extcap(device_t dev, device
 	return (pci_find_extcap(dev, capability, capreg));
 }
 
+static int
+vga_pci_alloc_msi(device_t dev, device_t child, int *count)
+{
+	struct vga_pci_softc *sc;
+	int error;
+
+	sc = device_get_softc(dev);
+	if (sc->vga_msi_child != NULL)
+		return (EBUSY);
+	error = pci_alloc_msi(dev, count);
+	if (error == 0)
+		sc->vga_msi_child = child;
+	return (error);
+}
+
+static int
+vga_pci_alloc_msix(device_t dev, device_t child, int *count)
+{
+	struct vga_pci_softc *sc;
+	int error;
+
+	sc = device_get_softc(dev);
+	if (sc->vga_msi_child != NULL)
+		return (EBUSY);
+	error = pci_alloc_msix(dev, count);
+	if (error == 0)
+		sc->vga_msi_child = child;
+	return (error);
+}
+
+static int
+vga_pci_remap_msix(device_t dev, device_t child, int count,
+    const u_int *vectors)
+{
+	struct vga_pci_softc *sc;
+
+	sc = device_get_softc(dev);
+	if (sc->vga_msi_child != child)
+		return (ENXIO);
+	return (pci_remap_msix(dev, count, vectors));
+}
+
+static int
+vga_pci_release_msi(device_t dev, device_t child)
+{
+	struct vga_pci_softc *sc;
+	int error;
+
+	sc = device_get_softc(dev);
+	if (sc->vga_msi_child != child)
+		return (ENXIO);
+	error = pci_release_msi(dev);
+	if (error == 0)
+		sc->vga_msi_child = NULL;
+	return (error);
+}
+
+static int
+vga_pci_msi_count(device_t dev, device_t child)
+{
+
+	return (pci_msi_count(dev));
+}
+
+static int
+vga_pci_msix_count(device_t dev, device_t child)
+{
+
+	return (pci_msix_count(dev));
+}
+
 static device_method_t vga_pci_methods[] = {
 	/* Device interface */
 	DEVMETHOD(device_probe,		vga_pci_probe),
@@ -221,8 +386,8 @@ static device_method_t vga_pci_methods[]
 	/* Bus interface */
 	DEVMETHOD(bus_read_ivar,	vga_pci_read_ivar),
 	DEVMETHOD(bus_write_ivar,	vga_pci_write_ivar),
-	DEVMETHOD(bus_setup_intr,	bus_generic_setup_intr),
-	DEVMETHOD(bus_teardown_intr,	bus_generic_teardown_intr),
+	DEVMETHOD(bus_setup_intr,	vga_pci_setup_intr),
+	DEVMETHOD(bus_teardown_intr,	vga_pci_teardown_intr),
 
 	DEVMETHOD(bus_alloc_resource,	vga_pci_alloc_resource),
 	DEVMETHOD(bus_release_resource,	vga_pci_release_resource),
@@ -236,10 +401,18 @@ static device_method_t vga_pci_methods[]
 	DEVMETHOD(pci_disable_busmaster, vga_pci_disable_busmaster),
 	DEVMETHOD(pci_enable_io,	vga_pci_enable_io),
 	DEVMETHOD(pci_disable_io,	vga_pci_disable_io),
+	DEVMETHOD(pci_get_vpd_ident,	vga_pci_get_vpd_ident),
+	DEVMETHOD(pci_get_vpd_readonly,	vga_pci_get_vpd_readonly),
 	DEVMETHOD(pci_get_powerstate,	vga_pci_get_powerstate),
 	DEVMETHOD(pci_set_powerstate,	vga_pci_set_powerstate),
 	DEVMETHOD(pci_assign_interrupt,	vga_pci_assign_interrupt),
 	DEVMETHOD(pci_find_extcap,	vga_pci_find_extcap),
+	DEVMETHOD(pci_alloc_msi,	vga_pci_alloc_msi),
+	DEVMETHOD(pci_alloc_msix,	vga_pci_alloc_msix),
+	DEVMETHOD(pci_remap_msix,	vga_pci_remap_msix),
+	DEVMETHOD(pci_release_msi,	vga_pci_release_msi),
+	DEVMETHOD(pci_msi_count,	vga_pci_msi_count),
+	DEVMETHOD(pci_msix_count,	vga_pci_msix_count),
 
 	{ 0, 0 }
 };
@@ -247,7 +420,7 @@ static device_method_t vga_pci_methods[]
 static driver_t vga_pci_driver = {
 	"vgapci",
 	vga_pci_methods,
-	1,
+	sizeof(struct vga_pci_softc),
 };
 
 static devclass_t vga_devclass;
From dchagin at FreeBSD.org  Tue May  5 14:53:59 2009
From: dchagin at FreeBSD.org (Dmitry Chagin)
Date: Tue May  5 14:54:11 2009
Subject: svn commit: r191820 - in stable/7/sys: . amd64/linux32 compat/linux
	contrib/pf dev/ath/ath_hal dev/cxgb i386/linux
Message-ID: <200905051453.n45ErwaK084362@svn.freebsd.org>

Author: dchagin
Date: Tue May  5 14:53:58 2009
New Revision: 191820
URL: http://svn.freebsd.org/changeset/base/191820

Log:
  Merge from HEAD to stable/7:
  
  r178976 (rdivacky):
  Implement robust futexes. Most of the code is modelled after
  what Linux does. This is because robust futexes are mostly
  userspace thing which we cannot alter. Two syscalls maintain
  pointer to userspace list and when process exits a routine
  walks this list waking up processes sleeping on futexes
  from that list.
  
  r183871:
  Make robust futexes work on linux32/amd64. Use PTRIN to read
  user-mode pointers. Change types used in the structures definitions to
  properly-sized architecture-specific types.
  
  r185002:
  In the robust futexes list head, futex_offset shall be signed,
  and glibc actually supplies negative offsets. Change l_ulong to l_long.
  
  Approved by:	kib (mentor)

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/amd64/linux32/linux.h
  stable/7/sys/amd64/linux32/linux32_dummy.c
  stable/7/sys/amd64/linux32/syscalls.master
  stable/7/sys/compat/linux/linux_emul.c
  stable/7/sys/compat/linux/linux_emul.h
  stable/7/sys/compat/linux/linux_futex.c
  stable/7/sys/compat/linux/linux_futex.h
  stable/7/sys/compat/linux/linux_misc.c
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/i386/linux/linux.h
  stable/7/sys/i386/linux/linux_dummy.c
  stable/7/sys/i386/linux/syscalls.master

Modified: stable/7/sys/amd64/linux32/linux.h
==============================================================================
--- stable/7/sys/amd64/linux32/linux.h	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/amd64/linux32/linux.h	Tue May  5 14:53:58 2009	(r191820)
@@ -886,4 +886,15 @@ typedef int l_mqd_t;
 	(LINUX_CLONE_VM | LINUX_CLONE_FS | LINUX_CLONE_FILES |	\
 	LINUX_CLONE_SIGHAND | LINUX_CLONE_THREAD)
 
+/* robust futexes */
+struct linux_robust_list {
+	l_uintptr_t			next;
+};
+
+struct linux_robust_list_head {
+	struct linux_robust_list	list;
+	l_long				futex_offset;
+	l_uintptr_t			pending_list;
+};
+
 #endif /* !_AMD64_LINUX_H_ */

Modified: stable/7/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/7/sys/amd64/linux32/linux32_dummy.c	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/amd64/linux32/linux32_dummy.c	Tue May  5 14:53:58 2009	(r191820)
@@ -111,8 +111,6 @@ DUMMY(faccessat);
 DUMMY(pselect6);
 DUMMY(ppoll);
 DUMMY(unshare);
-DUMMY(set_robust_list);
-DUMMY(get_robust_list);
 DUMMY(splice);
 DUMMY(sync_file_range);
 DUMMY(tee);

Modified: stable/7/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/7/sys/amd64/linux32/syscalls.master	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/amd64/linux32/syscalls.master	Tue May  5 14:53:58 2009	(r191820)
@@ -482,8 +482,10 @@
 308	AUE_NULL	STD	{ int linux_pselect6(void); }
 309	AUE_NULL	STD	{ int linux_ppoll(void); }
 310	AUE_NULL	STD	{ int linux_unshare(void); }
-311	AUE_NULL	STD	{ int linux_set_robust_list(void); }
-312	AUE_NULL	STD	{ int linux_get_robust_list(void); }
+311	AUE_NULL	STD	{ int linux_set_robust_list(struct linux_robust_list_head *head, \
+					l_size_t len); }
+312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, struct linux_robust_list_head *head, \
+					l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
 314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
 315	AUE_NULL	STD	{ int linux_tee(void); }

Modified: stable/7/sys/compat/linux/linux_emul.c
==============================================================================
--- stable/7/sys/compat/linux/linux_emul.c	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/compat/linux/linux_emul.c	Tue May  5 14:53:58 2009	(r191820)
@@ -44,9 +44,6 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 
-#include 
-#include 
-
 #ifdef COMPAT_LINUX32
 #include 
 #include 
@@ -55,6 +52,9 @@ __FBSDID("$FreeBSD$");
 #include 
 #endif
 
+#include 
+#include 
+
 struct sx	emul_shared_lock;
 struct mtx	emul_lock;
 
@@ -86,6 +86,7 @@ linux_proc_init(struct thread *td, pid_t
 		em = malloc(sizeof *em, M_LINUX, M_WAITOK | M_ZERO);
 		em->pid = child;
 		em->pdeath_signal = 0;
+		em->robust_futexes = NULL;
 		if (flags & LINUX_CLONE_THREAD) {
 			/* handled later in the code */
 		} else {
@@ -161,6 +162,8 @@ linux_proc_exit(void *arg __unused, stru
 	if (__predict_true(p->p_sysent != &elf_linux_sysvec))
 		return;
 
+	release_futexes(p);
+
 	/* find the emuldata */
 	em = em_find(p, EMUL_DOLOCK);
 

Modified: stable/7/sys/compat/linux/linux_emul.h
==============================================================================
--- stable/7/sys/compat/linux/linux_emul.h	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/compat/linux/linux_emul.h	Tue May  5 14:53:58 2009	(r191820)
@@ -31,6 +31,8 @@
 #ifndef _LINUX_EMUL_H_
 #define	_LINUX_EMUL_H_
 
+#include 
+
 struct linux_emuldata_shared {
 	int	refs;
 	pid_t	group_pid;
@@ -52,6 +54,8 @@ struct linux_emuldata {
 
 	int	pdeath_signal;		/* parent death signal */
 
+	struct	linux_robust_list_head	*robust_futexes;
+
 	LIST_ENTRY(linux_emuldata) threads;	/* list of linux threads */
 };
 

Modified: stable/7/sys/compat/linux/linux_futex.c
==============================================================================
--- stable/7/sys/compat/linux/linux_futex.c	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/compat/linux/linux_futex.c	Tue May  5 14:53:58 2009	(r191820)
@@ -45,8 +45,11 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
 
@@ -57,6 +60,7 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.
 #include 
 #include 
 #endif
+#include 
 #include 
 
 struct futex;
@@ -533,3 +537,160 @@ futex_atomic_op(struct thread *td, int e
 		return (-ENOSYS);
 	}
 }
+
+int
+linux_set_robust_list(struct thread *td, struct linux_set_robust_list_args *args)
+{
+	struct linux_emuldata *em;
+
+#ifdef	DEBUG
+	if (ldebug(set_robust_list))
+		printf(ARGS(set_robust_list, ""));
+#endif
+	if (args->len != sizeof(struct linux_robust_list_head))
+		return (EINVAL);
+
+	em = em_find(td->td_proc, EMUL_DOLOCK);
+	em->robust_futexes = args->head;
+	EMUL_UNLOCK(&emul_lock);
+
+	return (0);	
+}
+
+int
+linux_get_robust_list(struct thread *td, struct linux_get_robust_list_args *args)
+{
+	struct linux_emuldata *em;
+	struct linux_robust_list_head *head;
+	l_size_t len = sizeof(struct linux_robust_list_head);
+	int error = 0;
+
+#ifdef	DEBUG
+	if (ldebug(get_robust_list))
+		printf(ARGS(get_robust_list, ""));
+#endif
+
+	if (!args->pid) {
+		em = em_find(td->td_proc, EMUL_DONTLOCK);
+		head = em->robust_futexes;		
+	} else {
+		struct proc *p;
+
+		p = pfind(args->pid);
+		if (p == NULL)
+			return (ESRCH);
+
+		em = em_find(p, EMUL_DONTLOCK);
+		/* XXX: ptrace? */
+		if (priv_check(td, PRIV_CRED_SETUID) || 
+		    priv_check(td, PRIV_CRED_SETEUID) ||
+		    p_candebug(td, p))
+			return (EPERM);
+		head = em->robust_futexes;
+		
+		PROC_UNLOCK(p);
+	}
+
+	error = copyout(&len, args->len, sizeof(l_size_t));
+	if (error)
+		return (EFAULT);
+
+	error = copyout(head, args->head, sizeof(struct linux_robust_list_head));
+
+	return (error);
+}
+
+static int
+handle_futex_death(void *uaddr, pid_t pid, int pi)
+{
+	int uval, nval, mval;
+	struct futex *f;
+
+retry:
+	if (copyin(uaddr, &uval, 4))
+		return (EFAULT);
+
+	if ((uval & FUTEX_TID_MASK) == pid) {
+		mval = (uval & FUTEX_WAITERS) | FUTEX_OWNER_DIED;
+		nval = casuword32(uaddr, uval, mval);
+
+		if (nval == -1)
+			return (EFAULT);
+
+		if (nval != uval)
+			goto retry;
+
+		if (!pi && (uval & FUTEX_WAITERS)) {
+			f = futex_get(uaddr, FUTEX_UNLOCKED);
+			futex_wake(f, 1, NULL, 0);
+		}
+	}
+
+	return (0);
+}
+
+static int
+fetch_robust_entry(struct linux_robust_list **entry,
+    struct linux_robust_list **head, int *pi)
+{
+	l_ulong uentry;
+
+	if (copyin((const void *)head, &uentry, sizeof(l_ulong)))
+		return (EFAULT);
+
+	*entry = (void *)(uentry & ~1UL);
+	*pi = uentry & 1;
+
+	return (0);
+}
+
+/* This walks the list of robust futexes releasing them. */
+void
+release_futexes(struct proc *p)
+{
+	struct linux_robust_list_head *head = NULL;
+	struct linux_robust_list *entry, *next_entry, *pending;
+	unsigned int limit = 2048, pi, next_pi, pip;
+	struct linux_emuldata *em;
+	l_long futex_offset;
+	int rc;
+
+	em = em_find(p, EMUL_DONTLOCK);
+	head = em->robust_futexes;
+
+	if (head == NULL)
+		return;
+
+	if (fetch_robust_entry(&entry, PTRIN(&head->list.next), &pi))
+		return;
+
+	if (copyin(&head->futex_offset, &futex_offset, sizeof(futex_offset)))
+		return;
+
+	if (fetch_robust_entry(&pending, PTRIN(&head->pending_list), &pip))
+		return;
+
+	while (entry != &head->list) {
+		rc = fetch_robust_entry(&next_entry, PTRIN(&entry->next), &next_pi);
+
+		if (entry != pending)
+			if (handle_futex_death((char *)entry + futex_offset,
+			    p->p_pid, pi))
+				return;
+
+		if (rc)
+			return;
+
+		entry = next_entry;
+		pi = next_pi;
+
+		if (!--limit)
+			break;
+
+		sched_relinquish(curthread);
+	}
+
+	if (pending)
+		handle_futex_death((char *) pending + futex_offset,
+		    p->p_pid, pip);
+}

Modified: stable/7/sys/compat/linux/linux_futex.h
==============================================================================
--- stable/7/sys/compat/linux/linux_futex.h	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/compat/linux/linux_futex.h	Tue May  5 14:53:58 2009	(r191820)
@@ -63,4 +63,10 @@
 #define FUTEX_OP_CMP_GT         4	/* if (oldval > CMPARG) wake */
 #define FUTEX_OP_CMP_GE         5	/* if (oldval >= CMPARG) wake */
 
+#define	FUTEX_WAITERS		0x80000000
+#define	FUTEX_OWNER_DIED	0x40000000
+#define	FUTEX_TID_MASK		0x3fffffff
+
+void	release_futexes(struct proc *);
+
 #endif	/* !_LINUX_FUTEX_H */

Modified: stable/7/sys/compat/linux/linux_misc.c
==============================================================================
--- stable/7/sys/compat/linux/linux_misc.c	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/compat/linux/linux_misc.c	Tue May  5 14:53:58 2009	(r191820)
@@ -75,10 +75,6 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 
-#include 
-#include 
-#include 
-
 #ifdef COMPAT_LINUX32
 #include 
 #include 
@@ -90,6 +86,9 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
 
 #define BSD_TO_LINUX_SIGNAL(sig)	\
 	(((sig) <= LINUX_SIGTBLSZ) ? bsd_to_linux_signal[_SIG_IDX(sig)] : sig)

Modified: stable/7/sys/i386/linux/linux.h
==============================================================================
--- stable/7/sys/i386/linux/linux.h	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/i386/linux/linux.h	Tue May  5 14:53:58 2009	(r191820)
@@ -851,4 +851,15 @@ typedef int l_mqd_t;
 	(LINUX_CLONE_VM | LINUX_CLONE_FS | LINUX_CLONE_FILES |	\
 	LINUX_CLONE_SIGHAND | LINUX_CLONE_THREAD)
 
+/* robust futexes */
+struct linux_robust_list {
+	struct linux_robust_list	*next;
+};
+
+struct linux_robust_list_head {
+	struct linux_robust_list	list;
+	l_long				futex_offset;
+	struct linux_robust_list	*pending_list;
+};
+
 #endif /* !_I386_LINUX_H_ */

Modified: stable/7/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/7/sys/i386/linux/linux_dummy.c	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/i386/linux/linux_dummy.c	Tue May  5 14:53:58 2009	(r191820)
@@ -102,8 +102,6 @@ DUMMY(faccessat);
 DUMMY(pselect6);
 DUMMY(ppoll);
 DUMMY(unshare);
-DUMMY(set_robust_list);
-DUMMY(get_robust_list);
 DUMMY(splice);
 DUMMY(sync_file_range);
 DUMMY(tee);

Modified: stable/7/sys/i386/linux/syscalls.master
==============================================================================
--- stable/7/sys/i386/linux/syscalls.master	Tue May  5 14:46:18 2009	(r191819)
+++ stable/7/sys/i386/linux/syscalls.master	Tue May  5 14:53:58 2009	(r191820)
@@ -492,8 +492,10 @@
 308	AUE_NULL	STD	{ int linux_pselect6(void); }
 309	AUE_NULL	STD	{ int linux_ppoll(void); }
 310	AUE_NULL	STD	{ int linux_unshare(void); }
-311	AUE_NULL	STD	{ int linux_set_robust_list(void); }
-312	AUE_NULL	STD	{ int linux_get_robust_list(void); }
+311	AUE_NULL	STD	{ int linux_set_robust_list(struct linux_robust_list_head *head, \
+					l_size_t len); }
+312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, struct linux_robust_list_head **head, \
+					l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
 314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
 315	AUE_NULL	STD	{ int linux_tee(void); }
From dchagin at FreeBSD.org  Tue May  5 14:55:24 2009
From: dchagin at FreeBSD.org (Dmitry Chagin)
Date: Tue May  5 14:55:31 2009
Subject: svn commit: r191821 - in stable/7/sys: amd64/linux32 i386/linux
Message-ID: <200905051455.n45EtN7c084459@svn.freebsd.org>

Author: dchagin
Date: Tue May  5 14:55:23 2009
New Revision: 191821
URL: http://svn.freebsd.org/changeset/base/191821

Log:
  Regenerate syscall table after 191820.
  
  Approved by:	kib (mentor)

Modified:
  stable/7/sys/amd64/linux32/linux32_proto.h
  stable/7/sys/amd64/linux32/linux32_syscall.h
  stable/7/sys/amd64/linux32/linux32_sysent.c
  stable/7/sys/i386/linux/linux_proto.h
  stable/7/sys/i386/linux/linux_syscall.h
  stable/7/sys/i386/linux/linux_sysent.c

Modified: stable/7/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- stable/7/sys/amd64/linux32/linux32_proto.h	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/amd64/linux32/linux32_proto.h	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -937,10 +937,13 @@ struct linux_unshare_args {
 	register_t dummy;
 };
 struct linux_set_robust_list_args {
-	register_t dummy;
+	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)];
 };
 struct linux_get_robust_list_args {
-	register_t dummy;
+	char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)];
+	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)];
 };
 struct linux_splice_args {
 	register_t dummy;

Modified: stable/7/sys/amd64/linux32/linux32_syscall.h
==============================================================================
--- stable/7/sys/amd64/linux32/linux32_syscall.h	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/amd64/linux32/linux32_syscall.h	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #define	LINUX_SYS_exit	1

Modified: stable/7/sys/amd64/linux32/linux32_sysent.c
==============================================================================
--- stable/7/sys/amd64/linux32/linux32_sysent.c	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/amd64/linux32/linux32_sysent.c	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #include "opt_compat.h"
@@ -330,8 +330,8 @@ struct sysent linux_sysent[] = {
 	{ 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 },	/* 308 = linux_pselect6 */
 	{ 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 },	/* 309 = linux_ppoll */
 	{ 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 },	/* 310 = linux_unshare */
-	{ 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 },	/* 311 = linux_set_robust_list */
-	{ 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 },	/* 312 = linux_get_robust_list */
+	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 },	/* 311 = linux_set_robust_list */
+	{ AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 },	/* 312 = linux_get_robust_list */
 	{ 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 },	/* 313 = linux_splice */
 	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 },	/* 314 = linux_sync_file_range */
 	{ 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 },		/* 315 = linux_tee */

Modified: stable/7/sys/i386/linux/linux_proto.h
==============================================================================
--- stable/7/sys/i386/linux/linux_proto.h	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/i386/linux/linux_proto.h	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -956,10 +956,13 @@ struct linux_unshare_args {
 	register_t dummy;
 };
 struct linux_set_robust_list_args {
-	register_t dummy;
+	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)];
 };
 struct linux_get_robust_list_args {
-	register_t dummy;
+	char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)];
+	char head_l_[PADL_(struct linux_robust_list_head **)]; struct linux_robust_list_head ** head; char head_r_[PADR_(struct linux_robust_list_head **)];
+	char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)];
 };
 struct linux_splice_args {
 	register_t dummy;

Modified: stable/7/sys/i386/linux/linux_syscall.h
==============================================================================
--- stable/7/sys/i386/linux/linux_syscall.h	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/i386/linux/linux_syscall.h	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #define	LINUX_SYS_exit	1

Modified: stable/7/sys/i386/linux/linux_sysent.c
==============================================================================
--- stable/7/sys/i386/linux/linux_sysent.c	Tue May  5 14:53:58 2009	(r191820)
+++ stable/7/sys/i386/linux/linux_sysent.c	Tue May  5 14:55:23 2009	(r191821)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191804 2009-05-05 03:49:30Z dchagin 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 191820 2009-05-05 14:53:58Z dchagin 
  */
 
 #include 
@@ -329,8 +329,8 @@ struct sysent linux_sysent[] = {
 	{ 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 },	/* 308 = linux_pselect6 */
 	{ 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 },	/* 309 = linux_ppoll */
 	{ 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 },	/* 310 = linux_unshare */
-	{ 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 },	/* 311 = linux_set_robust_list */
-	{ 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 },	/* 312 = linux_get_robust_list */
+	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 },	/* 311 = linux_set_robust_list */
+	{ AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 },	/* 312 = linux_get_robust_list */
 	{ 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 },	/* 313 = linux_splice */
 	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 },	/* 314 = linux_sync_file_range */
 	{ 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 },		/* 315 = linux_tee */
From snb at FreeBSD.org  Tue May  5 15:03:20 2009
From: snb at FreeBSD.org (Sean Nicholas Barkas)
Date: Tue May  5 15:03:29 2009
Subject: svn commit: r191822 - in head: share/misc usr.bin/calendar/calendars
Message-ID: <200905051503.n45F3JLT084711@svn.freebsd.org>

Author: snb
Date: Tue May  5 15:03:19 2009
New Revision: 191822
URL: http://svn.freebsd.org/changeset/base/191822

Log:
  Add myself as a mentee of dwmalone for the committers graph. Also add my
  birthday to the calendar.
  
  Approved by:	dwmalone (mentor)

Modified:
  head/share/misc/committers-src.dot
  head/usr.bin/calendar/calendars/calendar.freebsd

Modified: head/share/misc/committers-src.dot
==============================================================================
--- head/share/misc/committers-src.dot	Tue May  5 14:55:23 2009	(r191821)
+++ head/share/misc/committers-src.dot	Tue May  5 15:03:19 2009	(r191822)
@@ -168,6 +168,7 @@ sepotvin [label="Stephane E. Potvin\nsep
 shiba [label="Takeshi Shibagaki\nshiba@FreeBSD.org\n2000/06/19"]
 simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2006/03/07"]
 sobomax [label="Maxim Sobolev\nsobomax@FreeBSD.org\n2001/07/25"]
+snb [label="Nick Barkas\nsnb@FreeBSD.org\n2009/05/05"]
 sson [label="Stacey Son\nsson@FreeBSD.org\n2008/07/08"]
 suz [label="SUZUKI Shinsuke\nsuz@FreeBSD.org\n2002/03/26"]
 syrinx [label="Shteryana Shopova\nsyrinx@FreeBSD.org\n2006/10/07"]
@@ -244,6 +245,7 @@ dds -> versus
 
 dwmalone -> fanf
 dwmalone -> peadar
+dwmalone -> snb
 
 eivind -> des
 eivind -> rwatson

Modified: head/usr.bin/calendar/calendars/calendar.freebsd
==============================================================================
--- head/usr.bin/calendar/calendars/calendar.freebsd	Tue May  5 14:55:23 2009	(r191821)
+++ head/usr.bin/calendar/calendars/calendar.freebsd	Tue May  5 15:03:19 2009	(r191822)
@@ -258,6 +258,7 @@
 10/17	Maho NAKATA  born in Osaka, Japan, 1974
 10/18	Sheldon Hearn  born in Cape Town, Western Cape, South Africa, 1974
 10/19	Nicholas Souchu  born in Suresnes, Hauts-de-Seine, France, 1972
+10/19	Nick Barkas  born in Longview, Washington, United States, 1981
 10/20	Joel Dahl  born in Lidkoping, Sweden, 1983
 10/20	Dmitry Marakasov  born in Moscow, Russian Federation, 1984
 10/21	Dan Moschuk  born in Halifax, Nova Scotia, Canada, 1980
From dchagin at FreeBSD.org  Tue May  5 15:19:47 2009
From: dchagin at FreeBSD.org (Dmitry Chagin)
Date: Tue May  5 15:20:08 2009
Subject: svn commit: r191823 - in stable/7/sys: . compat/linux contrib/pf
	dev/ath/ath_hal dev/cxgb
Message-ID: <200905051519.n45FJkZ1085113@svn.freebsd.org>

Author: dchagin
Date: Tue May  5 15:19:45 2009
New Revision: 191823
URL: http://svn.freebsd.org/changeset/base/191823

Log:
  Merge from HEAD to stable/7:
  
  r189861:
  Include linux_futex.h before linux_emul.h
  
  r189862:
  Ignore FUTEX_FD op, as it is done by linux.
  
  r189867:
  Sort include files in the alphabetical order.
  
  Approved by:	kib (mentor)

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/compat/linux/linux_emul.h
  stable/7/sys/compat/linux/linux_futex.c
  stable/7/sys/compat/linux/linux_futex.h
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)

Modified: stable/7/sys/compat/linux/linux_emul.h
==============================================================================
--- stable/7/sys/compat/linux/linux_emul.h	Tue May  5 15:03:19 2009	(r191822)
+++ stable/7/sys/compat/linux/linux_emul.h	Tue May  5 15:19:45 2009	(r191823)
@@ -31,8 +31,6 @@
 #ifndef _LINUX_EMUL_H_
 #define	_LINUX_EMUL_H_
 
-#include 
-
 struct linux_emuldata_shared {
 	int	refs;
 	pid_t	group_pid;

Modified: stable/7/sys/compat/linux/linux_futex.c
==============================================================================
--- stable/7/sys/compat/linux/linux_futex.c	Tue May  5 15:03:19 2009	(r191822)
+++ stable/7/sys/compat/linux/linux_futex.c	Tue May  5 15:19:45 2009	(r191823)
@@ -40,18 +40,17 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.
 #include "opt_compat.h"
 
 #include 
-#include 
-#include 
 #include 
-#include 
-#include 
 #include 
+#include 
 #include 
+#include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
-#include 
 
 #ifdef COMPAT_LINUX32
 #include 
@@ -60,8 +59,8 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.
 #include 
 #include 
 #endif
-#include 
 #include 
+#include 
 
 struct futex;
 
@@ -276,13 +275,6 @@ linux_sys_futex(struct thread *td, struc
 		FUTEX_SYSTEM_UNLOCK;
 		break;
 
-	case LINUX_FUTEX_FD:
-#ifdef DEBUG
-		printf("linux_sys_futex: unimplemented op %d\n",
-		    args->op);
-#endif
-		return (ENOSYS);
-
 	case LINUX_FUTEX_WAKE_OP:
 		FUTEX_SYSTEM_LOCK;
 #ifdef DEBUG

Modified: stable/7/sys/compat/linux/linux_futex.h
==============================================================================
--- stable/7/sys/compat/linux/linux_futex.h	Tue May  5 15:03:19 2009	(r191822)
+++ stable/7/sys/compat/linux/linux_futex.h	Tue May  5 15:19:45 2009	(r191823)
@@ -38,7 +38,7 @@
 
 #define LINUX_FUTEX_WAIT	0
 #define LINUX_FUTEX_WAKE	1
-#define LINUX_FUTEX_FD		2
+#define LINUX_FUTEX_FD		2	/* unused */
 #define LINUX_FUTEX_REQUEUE	3
 #define LINUX_FUTEX_CMP_REQUEUE	4
 #define LINUX_FUTEX_WAKE_OP	5
From thompsa at FreeBSD.org  Tue May  5 15:36:24 2009
From: thompsa at FreeBSD.org (Andrew Thompson)
Date: Tue May  5 15:36:31 2009
Subject: svn commit: r191824 - in head/sys/dev/usb: . controller
Message-ID: <200905051536.n45FaNSP085518@svn.freebsd.org>

Author: thompsa
Date: Tue May  5 15:36:23 2009
New Revision: 191824
URL: http://svn.freebsd.org/changeset/base/191824

Log:
  Revert part of r191494 which used the udev state to mark suspending, this needs
  to be set via two variables (peer_suspended and self_suspended) and can not be
  merged into one.
  
  Submitted by:	Hans Petter Selasky
  Pointy hat:	me

Modified:
  head/sys/dev/usb/controller/ehci.c
  head/sys/dev/usb/controller/ohci.c
  head/sys/dev/usb/controller/uhci.c
  head/sys/dev/usb/usb_core.h
  head/sys/dev/usb/usb_device.c
  head/sys/dev/usb/usb_device.h
  head/sys/dev/usb/usb_generic.c
  head/sys/dev/usb/usb_hub.c
  head/sys/dev/usb/usb_revision.h
  head/sys/dev/usb/usb_transfer.c

Modified: head/sys/dev/usb/controller/ehci.c
==============================================================================
--- head/sys/dev/usb/controller/ehci.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/controller/ehci.c	Tue May  5 15:36:23 2009	(r191824)
@@ -1964,7 +1964,7 @@ ehci_setup_standard_chain(struct usb2_xf
 
 	usb2_pc_cpu_flush(qh->page_cache);
 
-	if (xfer->xroot->udev->state != USB_STATE_SUSPENDED) {
+	if (xfer->xroot->udev->flags.self_suspended == 0) {
 		EHCI_APPEND_QH(qh, *qh_last);
 	}
 }

Modified: head/sys/dev/usb/controller/ohci.c
==============================================================================
--- head/sys/dev/usb/controller/ohci.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/controller/ohci.c	Tue May  5 15:36:23 2009	(r191824)
@@ -1020,7 +1020,7 @@ ohci_check_transfer_sub(struct usb2_xfer
 		 * writing the BLF and CLF bits:
 		 */
 
-		if (xfer->xroot->udev->state == USB_STATE_SUSPENDED) {
+		if (xfer->xroot->udev->flags.self_suspended) {
 			/* nothing to do */
 		} else if (xfer->pipe->methods == &ohci_device_bulk_methods) {
 			ohci_softc_t *sc = OHCI_BUS2SC(xfer->xroot->bus);
@@ -1589,7 +1589,7 @@ ohci_setup_standard_chain(struct usb2_xf
 
 	ed->ed_headp = td->td_self;
 
-	if (xfer->xroot->udev->state != USB_STATE_SUSPENDED) {
+	if (xfer->xroot->udev->flags.self_suspended == 0) {
 		/* the append function will flush the endpoint descriptor */
 		OHCI_APPEND_QH(ed, *ed_last);
 

Modified: head/sys/dev/usb/controller/uhci.c
==============================================================================
--- head/sys/dev/usb/controller/uhci.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/controller/uhci.c	Tue May  5 15:36:23 2009	(r191824)
@@ -1921,7 +1921,7 @@ uhci_device_bulk_start(struct usb2_xfer 
 	qh->e_next = td;
 	qh->qh_e_next = td->td_self;
 
-	if (xfer->xroot->udev->state != USB_STATE_SUSPENDED) {
+	if (xfer->xroot->udev->flags.self_suspended == 0) {
 		UHCI_APPEND_QH(qh, sc->sc_bulk_p_last);
 		uhci_add_loop(sc);
 		xfer->flags_int.bandwidth_reclaimed = 1;
@@ -1982,7 +1982,7 @@ uhci_device_ctrl_start(struct usb2_xfer 
 	 * NOTE: some devices choke on bandwidth- reclamation for control
 	 * transfers
 	 */
-	if (xfer->xroot->udev->state != USB_STATE_SUSPENDED) {
+	if (xfer->xroot->udev->flags.self_suspended == 0) {
 		if (xfer->xroot->udev->speed == USB_SPEED_LOW) {
 			UHCI_APPEND_QH(qh, sc->sc_ls_ctl_p_last);
 		} else {
@@ -2071,11 +2071,9 @@ uhci_device_intr_start(struct usb2_xfer 
 	qh->e_next = td;
 	qh->qh_e_next = td->td_self;
 
-	if (xfer->xroot->udev->state != USB_STATE_SUSPENDED) {
-
+	if (xfer->xroot->udev->flags.self_suspended == 0) {
 		/* enter QHs into the controller data structures */
 		UHCI_APPEND_QH(qh, sc->sc_intr_p_last[xfer->qh_pos]);
-
 	} else {
 		usb2_pc_cpu_flush(qh->page_cache);
 	}

Modified: head/sys/dev/usb/usb_core.h
==============================================================================
--- head/sys/dev/usb/usb_core.h	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_core.h	Tue May  5 15:36:23 2009	(r191824)
@@ -515,7 +515,7 @@ typedef struct malloc_type *usb2_malloc_
 /* prototypes */
 
 const char *usb2_errstr(usb2_error_t error);
-const char *usb2_statestr(enum usb_dev_state state);
+const char *usb2_statestr(enum usb2_dev_state state);
 struct usb2_config_descriptor *usb2_get_config_descriptor(
 	    struct usb2_device *udev);
 struct usb2_device_descriptor *usb2_get_device_descriptor(
@@ -553,6 +553,6 @@ void	usb2_set_parent_iface(struct usb2_d
 uint8_t	usb2_get_bus_index(struct usb2_device *udev);
 uint8_t	usb2_get_device_index(struct usb2_device *udev);
 void	usb2_set_power_mode(struct usb2_device *udev, uint8_t power_mode);
-int	usb2_device_attached(struct usb2_device *udev);
+uint8_t	usb2_device_attached(struct usb2_device *udev);
 
 #endif					/* _USB2_CORE_H_ */

Modified: head/sys/dev/usb/usb_device.c
==============================================================================
--- head/sys/dev/usb/usb_device.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_device.c	Tue May  5 15:36:23 2009	(r191824)
@@ -96,15 +96,12 @@ static const char* statestr[USB_STATE_MA
 	[USB_STATE_POWERED]	= "POWERED",
 	[USB_STATE_ADDRESSED]	= "ADDRESSED",
 	[USB_STATE_CONFIGURED]	= "CONFIGURED",
-	[USB_STATE_SUSPENDED]	= "SUSPENDED"
 };
 
 const char *
-usb2_statestr(enum usb_dev_state state)
+usb2_statestr(enum usb2_dev_state state)
 {
-	KASSERT(state < USB_STATE_MAX, ("invalid udev state"));
-
-	return (statestr[state]);
+	return ((state < USB_STATE_MAX) ? statestr[state] : "UNKNOWN");
 }
 
 /*------------------------------------------------------------------------*
@@ -999,7 +996,7 @@ usb2_detach_device_sub(struct usb2_devic
 		    udev->port_no, udev->address);
 
 		if (device_is_attached(dev)) {
-			if (udev->state == USB_STATE_SUSPENDED) {
+			if (udev->flags.peer_suspended) {
 				err = DEVICE_RESUME(dev);
 				if (err) {
 					device_printf(dev, "Resume failed!\n");
@@ -1139,7 +1136,7 @@ usb2_probe_and_attach_sub(struct usb2_de
 		uaa->temp_dev = NULL;
 		device_set_ivars(iface->subdev, NULL);
 
-		if (udev->state == USB_STATE_SUSPENDED) {
+		if (udev->flags.peer_suspended) {
 			err = DEVICE_SUSPEND(iface->subdev);
 			if (err)
 				device_printf(iface->subdev, "Suspend failed\n");
@@ -1360,12 +1357,12 @@ usb2_suspend_resume(struct usb2_device *
 
 	USB_BUS_LOCK(udev->bus);
 	/* filter the suspend events */
-	if ((udev->state == USB_STATE_SUSPENDED && do_suspend) ||
-	    (udev->state != USB_STATE_SUSPENDED && !do_suspend)) {
+	if (udev->flags.peer_suspended == do_suspend) {
 		USB_BUS_UNLOCK(udev->bus);
 		/* nothing to do */
 		return (0);
 	}
+	udev->flags.peer_suspended = do_suspend;
 	USB_BUS_UNLOCK(udev->bus);
 
 	/* do the suspend or resume */
@@ -2462,7 +2459,7 @@ usb2_peer_can_wakeup(struct usb2_device 
 }
 
 void
-usb2_set_device_state(struct usb2_device *udev, enum usb_dev_state state)
+usb2_set_device_state(struct usb2_device *udev, enum usb2_dev_state state)
 {
 
 	KASSERT(state < USB_STATE_MAX, ("invalid udev state"));
@@ -2472,7 +2469,7 @@ usb2_set_device_state(struct usb2_device
 	udev->state = state;
 }
 
-int
+uint8_t
 usb2_device_attached(struct usb2_device *udev)
 {
 	return (udev->state > USB_STATE_DETACHED);

Modified: head/sys/dev/usb/usb_device.h
==============================================================================
--- head/sys/dev/usb/usb_device.h	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_device.h	Tue May  5 15:36:23 2009	(r191824)
@@ -89,6 +89,14 @@ struct usb2_device_flags {
 					 * strings */
 	uint8_t	remote_wakeup:1;	/* set if remote wakeup is enabled */
 	uint8_t	uq_bus_powered:1;	/* set if BUS powered quirk is present */
+
+	/*
+	 * NOTE: Although the flags below will reach the same value
+	 * over time, but the instant values may differ, and
+	 * consequently the flags cannot be merged into one!
+	 */
+	uint8_t peer_suspended:1;	/* set if peer is suspended */
+	uint8_t self_suspended:1;	/* set if self is suspended */
 };
 
 /*
@@ -137,7 +145,7 @@ struct usb2_device {
 #endif
 	usb2_ticks_t plugtime;		/* copy of "ticks" */
 
-	enum usb_dev_state state;
+	enum usb2_dev_state state;
 	uint16_t refcount;
 #define	USB_DEV_REF_MAX 0xffff
 
@@ -205,6 +213,6 @@ void	usb_linux_free_device(struct usb_de
 uint8_t	usb2_peer_can_wakeup(struct usb2_device *udev);
 struct usb2_pipe *usb2_pipe_foreach(struct usb2_device *udev, struct usb2_pipe *pipe);
 void	usb2_set_device_state(struct usb2_device *udev,
-	    enum usb_dev_state state);
+	    enum usb2_dev_state state);
 
 #endif					/* _USB2_DEVICE_H_ */

Modified: head/sys/dev/usb/usb_generic.c
==============================================================================
--- head/sys/dev/usb/usb_generic.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_generic.c	Tue May  5 15:36:23 2009	(r191824)
@@ -823,11 +823,7 @@ usb2_gen_fill_deviceinfo(struct usb2_fif
 	di->udi_speed = udev->speed;
 	di->udi_mode = udev->flags.usb2_mode;
 	di->udi_power_mode = udev->power_mode;
-	if (udev->state == USB_STATE_SUSPENDED) {
-		di->udi_suspended = 1;
-	} else {
-		di->udi_suspended = 0;
-	}
+	di->udi_suspended = udev->flags.peer_suspended;
 
 	hub = udev->parent_hub;
 	if (hub) {

Modified: head/sys/dev/usb/usb_hub.c
==============================================================================
--- head/sys/dev/usb/usb_hub.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_hub.c	Tue May  5 15:36:23 2009	(r191824)
@@ -544,7 +544,8 @@ uhub_explore(struct usb2_device *udev)
 	if (udev->depth > USB_HUB_MAX_DEPTH) {
 		return (USB_ERR_TOO_DEEP);
 	}
-	if (udev->state == USB_STATE_SUSPENDED) {
+
+	if (udev->flags.self_suspended) {
 		/* need to wait until the child signals resume */
 		DPRINTF("Device is suspended!\n");
 		return (0);
@@ -1518,7 +1519,7 @@ usb2_transfer_power_ref(struct usb2_xfer
 		udev->pwr_save.write_refs += val;
 	}
 
-	if (udev->state == USB_STATE_SUSPENDED)
+	if (udev->flags.self_suspended)
 		needs_explore =
 		    (udev->pwr_save.write_refs != 0) ||
 		    ((udev->pwr_save.read_refs != 0) &&
@@ -1600,7 +1601,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
 		    (rem_wakeup == 0))) {
 
 			/* check if we are suspended */
-			if (udev->state == USB_STATE_SUSPENDED) {
+			if (udev->flags.self_suspended != 0) {
 				USB_BUS_UNLOCK(bus);
 				usb2_dev_resume_peer(udev);
 				USB_BUS_LOCK(bus);
@@ -1608,7 +1609,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
 		} else if (temp >= limit) {
 
 			/* check if we are not suspended */
-			if (udev->state != USB_STATE_SUSPENDED) {
+			if (udev->flags.self_suspended == 0) {
 				USB_BUS_UNLOCK(bus);
 				usb2_dev_suspend_peer(udev);
 				USB_BUS_LOCK(bus);
@@ -1647,7 +1648,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
 		if (temp < mintime)
 			mintime = temp;
 
-		if (udev->state != USB_STATE_SUSPENDED) {
+		if (udev->flags.self_suspended == 0) {
 			type_refs[0] += udev->pwr_save.type_refs[0];
 			type_refs[1] += udev->pwr_save.type_refs[1];
 			type_refs[2] += udev->pwr_save.type_refs[2];
@@ -1697,7 +1698,7 @@ usb2_dev_resume_peer(struct usb2_device 
 		return;
 
 	/* check if already resumed */
-	if (udev->state != USB_STATE_SUSPENDED)
+	if (udev->flags.self_suspended == 0)
 		return;
 
 	/* we need a parent HUB to do resume */
@@ -1737,7 +1738,7 @@ usb2_dev_resume_peer(struct usb2_device 
 	}
 	USB_BUS_LOCK(bus);
 	/* set that this device is now resumed */
-	usb2_set_device_state(udev, USB_STATE_CONFIGURED);
+	udev->flags.self_suspended = 0;
 #if USB_HAVE_POWERD
 	/* make sure that we don't go into suspend right away */
 	udev->pwr_save.last_xfer_time = ticks;
@@ -1797,7 +1798,7 @@ repeat:
 		return;
 
 	/* check if already suspended */
-	if (udev->state == USB_STATE_SUSPENDED)
+	if (udev->flags.self_suspended)
 		return;
 
 	/* we need a parent HUB to do suspend */
@@ -1819,7 +1820,7 @@ repeat:
 			if (child == NULL)
 				continue;
 
-			if (child->state == USB_STATE_SUSPENDED)
+			if (child->flags.self_suspended)
 				continue;
 
 			DPRINTFN(1, "Port %u is busy on the HUB!\n", x + 1);
@@ -1846,7 +1847,7 @@ repeat:
 	 * Set that this device is suspended. This variable must be set
 	 * before calling USB controller suspend callbacks.
 	 */
-	usb2_set_device_state(udev, USB_STATE_SUSPENDED);
+	udev->flags.self_suspended = 1;
 	USB_BUS_UNLOCK(udev->bus);
 
 	if (udev->bus->methods->device_suspend != NULL) {

Modified: head/sys/dev/usb/usb_revision.h
==============================================================================
--- head/sys/dev/usb/usb_revision.h	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_revision.h	Tue May  5 15:36:23 2009	(r191824)
@@ -28,9 +28,9 @@
 #define	_USB2_REVISION_H_
 
 /*
- * The "USB_SPEED" macro defines all the supported USB speeds.
+ * The "USB_SPEED" macros defines all the supported USB speeds.
  */
-enum {
+enum usb2_speed {
 	USB_SPEED_VARIABLE,
 	USB_SPEED_LOW,
 	USB_SPEED_FULL,
@@ -40,9 +40,9 @@ enum {
 };
 
 /*
- * The "USB_REV" macro defines all the supported USB revisions.
+ * The "USB_REV" macros defines all the supported USB revisions.
  */
-enum {
+enum usb2_revision {
 	USB_REV_UNKNOWN,
 	USB_REV_PRE_1_0,
 	USB_REV_1_0,
@@ -54,24 +54,23 @@ enum {
 };
 
 /*
- * The "USB_MODE" macro defines all the supported USB modes.
+ * The "USB_MODE" macros defines all the supported USB modes.
  */
-enum {
+enum usb2_mode {
 	USB_MODE_HOST,
 	USB_MODE_DEVICE,
 	USB_MODE_MAX
 };
 
 /*
- * The "USB_MODE" macro defines all the supported device states.
+ * The "USB_MODE" macros defines all the supported device states.
  */
-enum usb_dev_state {
+enum usb2_dev_state {
 	USB_STATE_DETACHED,
 	USB_STATE_ATTACHED,
 	USB_STATE_POWERED,
 	USB_STATE_ADDRESSED,
 	USB_STATE_CONFIGURED,
-	USB_STATE_SUSPENDED,
 	USB_STATE_MAX,
 };
 #endif					/* _USB2_REVISION_H_ */

Modified: head/sys/dev/usb/usb_transfer.c
==============================================================================
--- head/sys/dev/usb/usb_transfer.c	Tue May  5 15:19:45 2009	(r191823)
+++ head/sys/dev/usb/usb_transfer.c	Tue May  5 15:36:23 2009	(r191824)
@@ -1376,14 +1376,6 @@ usb2_start_hardware(struct usb2_xfer *xf
 	    xfer, xfer->pipe, xfer->nframes, USB_GET_DATA_ISREAD(xfer) ?
 	    "read" : "write");
 
-	/* Check if the device is still alive */
-	if (info->udev->state < USB_STATE_POWERED) {
-		USB_BUS_LOCK(bus);
-		usb2_transfer_done(xfer, USB_ERR_NOT_CONFIGURED);
-		USB_BUS_UNLOCK(bus);
-		return;
-	}
-
 #if USB_DEBUG
 	if (USB_DEBUG_VAR > 0) {
 		USB_BUS_LOCK(bus);
@@ -1444,8 +1436,15 @@ usb2_start_hardware(struct usb2_xfer *xf
 	/* clear any previous errors */
 	xfer->error = 0;
 
-	/* sanity check */
+	/* Check if the device is still alive */
+	if (info->udev->state < USB_STATE_POWERED) {
+		USB_BUS_LOCK(bus);
+		usb2_transfer_done(xfer, USB_ERR_NOT_CONFIGURED);
+		USB_BUS_UNLOCK(bus);
+		return;
+	}
 
+	/* sanity check */
 	if (xfer->nframes == 0) {
 		if (xfer->flags.stall_pipe) {
 			/*
From thompsa at FreeBSD.org  Tue May  5 15:39:30 2009
From: thompsa at FreeBSD.org (Andrew Thompson)
Date: Tue May  5 15:39:43 2009
Subject: svn commit: r191825 - in head/sys/dev/usb: . net storage
Message-ID: <200905051539.n45FdTPb085609@svn.freebsd.org>

Author: thompsa
Date: Tue May  5 15:39:29 2009
New Revision: 191825
URL: http://svn.freebsd.org/changeset/base/191825

Log:
  Remove USB shutdown methods from device drivers as its the host controllers
  responsibility to detach the bus.
  
  PR:		usb/133896
  Submitted by:	Hans Petter Selasky

Modified:
  head/sys/dev/usb/net/if_aue.c
  head/sys/dev/usb/net/if_axe.c
  head/sys/dev/usb/net/if_cdce.c
  head/sys/dev/usb/net/if_cue.c
  head/sys/dev/usb/net/if_kue.c
  head/sys/dev/usb/net/if_rue.c
  head/sys/dev/usb/net/if_udav.c
  head/sys/dev/usb/net/usb_ethernet.c
  head/sys/dev/usb/net/usb_ethernet.h
  head/sys/dev/usb/storage/ustorage_fs.c
  head/sys/dev/usb/usb_compat_linux.c
  head/sys/dev/usb/usb_hub.c

Modified: head/sys/dev/usb/net/if_aue.c
==============================================================================
--- head/sys/dev/usb/net/if_aue.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_aue.c	Tue May  5 15:39:29 2009	(r191825)
@@ -173,7 +173,6 @@ static const struct usb2_device_id aue_d
 static device_probe_t aue_probe;
 static device_attach_t aue_attach;
 static device_detach_t aue_detach;
-static device_shutdown_t aue_shutdown;
 static miibus_readreg_t aue_miibus_readreg;
 static miibus_writereg_t aue_miibus_writereg;
 static miibus_statchg_t aue_miibus_statchg;
@@ -239,7 +238,6 @@ static device_method_t aue_methods[] = {
 	DEVMETHOD(device_probe, aue_probe),
 	DEVMETHOD(device_attach, aue_attach),
 	DEVMETHOD(device_detach, aue_detach),
-	DEVMETHOD(device_shutdown, aue_shutdown),
 
 	/* bus interface */
 	DEVMETHOD(bus_print_child, bus_generic_print_child),
@@ -1038,17 +1036,3 @@ aue_stop(struct usb2_ether *ue)
 	aue_csr_write_1(sc, AUE_CTL1, 0);
 	aue_reset(sc);
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-aue_shutdown(device_t dev)
-{
-	struct aue_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/if_axe.c
==============================================================================
--- head/sys/dev/usb/net/if_axe.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_axe.c	Tue May  5 15:39:29 2009	(r191825)
@@ -151,7 +151,6 @@ static const struct usb2_device_id axe_d
 static device_probe_t axe_probe;
 static device_attach_t axe_attach;
 static device_detach_t axe_detach;
-static device_shutdown_t axe_shutdown;
 
 static usb2_callback_t axe_intr_callback;
 static usb2_callback_t axe_bulk_read_callback;
@@ -216,7 +215,6 @@ static device_method_t axe_methods[] = {
 	DEVMETHOD(device_probe, axe_probe),
 	DEVMETHOD(device_attach, axe_attach),
 	DEVMETHOD(device_detach, axe_detach),
-	DEVMETHOD(device_shutdown, axe_shutdown),
 
 	/* bus interface */
 	DEVMETHOD(bus_print_child, bus_generic_print_child),
@@ -1060,17 +1058,3 @@ axe_stop(struct usb2_ether *ue)
 
 	axe_reset(sc);
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-axe_shutdown(device_t dev)
-{
-	struct axe_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/if_cdce.c
==============================================================================
--- head/sys/dev/usb/net/if_cdce.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_cdce.c	Tue May  5 15:39:29 2009	(r191825)
@@ -67,7 +67,6 @@ __FBSDID("$FreeBSD$");
 static device_probe_t cdce_probe;
 static device_attach_t cdce_attach;
 static device_detach_t cdce_detach;
-static device_shutdown_t cdce_shutdown;
 static device_suspend_t cdce_suspend;
 static device_resume_t cdce_resume;
 static usb_handle_request_t cdce_handle_request;
@@ -157,7 +156,6 @@ static device_method_t cdce_methods[] = 
 	DEVMETHOD(device_detach, cdce_detach),
 	DEVMETHOD(device_suspend, cdce_suspend),
 	DEVMETHOD(device_resume, cdce_resume),
-	DEVMETHOD(device_shutdown, cdce_shutdown),
 
 	{0, 0}
 };
@@ -596,16 +594,6 @@ cdce_setpromisc(struct usb2_ether *ue)
 }
 
 static int
-cdce_shutdown(device_t dev)
-{
-	struct cdce_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}
-
-static int
 cdce_suspend(device_t dev)
 {
 	device_printf(dev, "Suspending\n");

Modified: head/sys/dev/usb/net/if_cue.c
==============================================================================
--- head/sys/dev/usb/net/if_cue.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_cue.c	Tue May  5 15:39:29 2009	(r191825)
@@ -86,7 +86,6 @@ static const struct usb2_device_id cue_d
 static device_probe_t cue_probe;
 static device_attach_t cue_attach;
 static device_detach_t cue_detach;
-static device_shutdown_t cue_shutdown;
 
 static usb2_callback_t cue_bulk_read_callback;
 static usb2_callback_t cue_bulk_write_callback;
@@ -142,7 +141,6 @@ static device_method_t cue_methods[] = {
 	DEVMETHOD(device_probe, cue_probe),
 	DEVMETHOD(device_attach, cue_attach),
 	DEVMETHOD(device_detach, cue_detach),
-	DEVMETHOD(device_shutdown, cue_shutdown),
 
 	{0, 0}
 };
@@ -629,17 +627,3 @@ cue_stop(struct usb2_ether *ue)
 	cue_csr_write_1(sc, CUE_ETHCTL, 0);
 	cue_reset(sc);
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-cue_shutdown(device_t dev)
-{
-	struct cue_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/if_kue.c
==============================================================================
--- head/sys/dev/usb/net/if_kue.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_kue.c	Tue May  5 15:39:29 2009	(r191825)
@@ -129,7 +129,6 @@ static const struct usb2_device_id kue_d
 static device_probe_t kue_probe;
 static device_attach_t kue_attach;
 static device_detach_t kue_detach;
-static device_shutdown_t kue_shutdown;
 
 static usb2_callback_t kue_bulk_read_callback;
 static usb2_callback_t kue_bulk_write_callback;
@@ -185,7 +184,6 @@ static device_method_t kue_methods[] = {
 	DEVMETHOD(device_probe, kue_probe),
 	DEVMETHOD(device_attach, kue_attach),
 	DEVMETHOD(device_detach, kue_detach),
-	DEVMETHOD(device_shutdown, kue_shutdown),
 
 	{0, 0}
 };
@@ -688,17 +686,3 @@ kue_stop(struct usb2_ether *ue)
 	usb2_transfer_stop(sc->sc_xfer[KUE_BULK_DT_WR]);
 	usb2_transfer_stop(sc->sc_xfer[KUE_BULK_DT_RD]);
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-kue_shutdown(device_t dev)
-{
-	struct kue_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/if_rue.c
==============================================================================
--- head/sys/dev/usb/net/if_rue.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_rue.c	Tue May  5 15:39:29 2009	(r191825)
@@ -105,7 +105,6 @@ static const struct usb2_device_id rue_d
 static device_probe_t rue_probe;
 static device_attach_t rue_attach;
 static device_detach_t rue_detach;
-static device_shutdown_t rue_shutdown;
 
 static miibus_readreg_t rue_miibus_readreg;
 static miibus_writereg_t rue_miibus_writereg;
@@ -172,7 +171,6 @@ static device_method_t rue_methods[] = {
 	DEVMETHOD(device_probe, rue_probe),
 	DEVMETHOD(device_attach, rue_attach),
 	DEVMETHOD(device_detach, rue_detach),
-	DEVMETHOD(device_shutdown, rue_shutdown),
 
 	/* Bus interface */
 	DEVMETHOD(bus_print_child, bus_generic_print_child),
@@ -897,17 +895,3 @@ rue_stop(struct usb2_ether *ue)
 
 	rue_reset(sc);
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-rue_shutdown(device_t dev)
-{
-	struct rue_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/if_udav.c
==============================================================================
--- head/sys/dev/usb/net/if_udav.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/if_udav.c	Tue May  5 15:39:29 2009	(r191825)
@@ -69,7 +69,6 @@ __FBSDID("$FreeBSD$");
 static device_probe_t udav_probe;
 static device_attach_t udav_attach;
 static device_detach_t udav_detach;
-static device_shutdown_t udav_shutdown;
 
 static usb2_callback_t udav_bulk_write_callback;
 static usb2_callback_t udav_bulk_read_callback;
@@ -132,7 +131,6 @@ static device_method_t udav_methods[] = 
 	DEVMETHOD(device_probe, udav_probe),
 	DEVMETHOD(device_attach, udav_attach),
 	DEVMETHOD(device_detach, udav_detach),
-	DEVMETHOD(device_shutdown, udav_shutdown),
 
 	/* bus interface */
 	DEVMETHOD(bus_print_child, bus_generic_print_child),
@@ -840,17 +838,3 @@ udav_miibus_statchg(device_t dev)
 {
 	/* nothing to do */
 }
-
-/*
- * Stop all chip I/O so that the kernel's probe routines don't
- * get confused by errant DMAs when rebooting.
- */
-static int
-udav_shutdown(device_t dev)
-{
-	struct udav_softc *sc = device_get_softc(dev);
-
-	usb2_ether_ifshutdown(&sc->sc_ue);
-
-	return (0);
-}

Modified: head/sys/dev/usb/net/usb_ethernet.c
==============================================================================
--- head/sys/dev/usb/net/usb_ethernet.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/usb_ethernet.c	Tue May  5 15:39:29 2009	(r191825)
@@ -288,19 +288,6 @@ usb2_ether_ifdetach(struct usb2_ether *u
 	usb2_proc_free(&ue->ue_tq);
 }
 
-void
-usb2_ether_ifshutdown(struct usb2_ether *ue)
-{
-	struct ifnet *ifp = ue->ue_ifp;
-
-	UE_LOCK(ue);
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING)
-		ue_queue_command(ue, ue_stop_task,
-		    &ue->ue_sync_task[0].hdr,
-		    &ue->ue_sync_task[1].hdr);
-	UE_UNLOCK(ue);
-}
-
 uint8_t
 usb2_ether_is_gone(struct usb2_ether *ue)
 {

Modified: head/sys/dev/usb/net/usb_ethernet.h
==============================================================================
--- head/sys/dev/usb/net/usb_ethernet.h	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/net/usb_ethernet.h	Tue May  5 15:39:29 2009	(r191825)
@@ -118,6 +118,5 @@ int		usb2_ether_rxbuf(struct usb2_ether 
 		    struct usb2_page_cache *, 
 		    unsigned int, unsigned int);
 void		usb2_ether_rxflush(struct usb2_ether *);
-void		usb2_ether_ifshutdown(struct usb2_ether *);
 uint8_t		usb2_ether_is_gone(struct usb2_ether *);
 #endif					/* _USB2_ETHERNET_H_ */

Modified: head/sys/dev/usb/storage/ustorage_fs.c
==============================================================================
--- head/sys/dev/usb/storage/ustorage_fs.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/storage/ustorage_fs.c	Tue May  5 15:39:29 2009	(r191825)
@@ -202,7 +202,6 @@ static device_attach_t ustorage_fs_attac
 static device_detach_t ustorage_fs_detach;
 static device_suspend_t ustorage_fs_suspend;
 static device_resume_t ustorage_fs_resume;
-static device_shutdown_t ustorage_fs_shutdown;
 static usb_handle_request_t ustorage_fs_handle_request;
 
 static usb2_callback_t ustorage_fs_t_bbb_command_callback;
@@ -239,7 +238,6 @@ static device_method_t ustorage_fs_metho
 	DEVMETHOD(device_detach, ustorage_fs_detach),
 	DEVMETHOD(device_suspend, ustorage_fs_suspend),
 	DEVMETHOD(device_resume, ustorage_fs_resume),
-	DEVMETHOD(device_shutdown, ustorage_fs_shutdown),
 
 	{0, 0}
 };
@@ -437,12 +435,6 @@ ustorage_fs_resume(device_t dev)
 	return (0);			/* success */
 }
 
-static int
-ustorage_fs_shutdown(device_t dev)
-{
-	return (0);			/* success */
-}
-
 /*
  * Generic functions to handle transfers
  */

Modified: head/sys/dev/usb/usb_compat_linux.c
==============================================================================
--- head/sys/dev/usb/usb_compat_linux.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/usb_compat_linux.c	Tue May  5 15:39:29 2009	(r191825)
@@ -59,7 +59,6 @@ static device_attach_t usb_linux_attach;
 static device_detach_t usb_linux_detach;
 static device_suspend_t usb_linux_suspend;
 static device_resume_t usb_linux_resume;
-static device_shutdown_t usb_linux_shutdown;
 
 static usb2_callback_t usb_linux_isoc_callback;
 static usb2_callback_t usb_linux_non_isoc_callback;
@@ -92,7 +91,6 @@ static device_method_t usb_linux_methods
 	DEVMETHOD(device_detach, usb_linux_detach),
 	DEVMETHOD(device_suspend, usb_linux_suspend),
 	DEVMETHOD(device_resume, usb_linux_resume),
-	DEVMETHOD(device_shutdown, usb_linux_shutdown),
 
 	{0, 0}
 };
@@ -360,23 +358,6 @@ usb_linux_resume(device_t dev)
 }
 
 /*------------------------------------------------------------------------*
- *	usb_linux_shutdown
- *
- * This function is the FreeBSD shutdown callback. Usually it does nothing.
- *------------------------------------------------------------------------*/
-static int
-usb_linux_shutdown(device_t dev)
-{
-	struct usb_linux_softc *sc = device_get_softc(dev);
-	struct usb_driver *udrv = usb_linux_get_usb_driver(sc);
-
-	if (udrv && udrv->shutdown) {
-		(udrv->shutdown) (sc->sc_ui);
-	}
-	return (0);
-}
-
-/*------------------------------------------------------------------------*
  * Linux emulation layer
  *------------------------------------------------------------------------*/
 

Modified: head/sys/dev/usb/usb_hub.c
==============================================================================
--- head/sys/dev/usb/usb_hub.c	Tue May  5 15:36:23 2009	(r191824)
+++ head/sys/dev/usb/usb_hub.c	Tue May  5 15:39:29 2009	(r191825)
@@ -132,7 +132,6 @@ static device_method_t uhub_methods[] = 
 
 	DEVMETHOD(device_suspend, uhub_suspend),
 	DEVMETHOD(device_resume, uhub_resume),
-	DEVMETHOD(device_shutdown, bus_generic_shutdown),
 
 	DEVMETHOD(bus_child_location_str, uhub_child_location_string),
 	DEVMETHOD(bus_child_pnpinfo_str, uhub_child_pnpinfo_string),
From thompsa at FreeBSD.org  Tue May  5 15:41:31 2009
From: thompsa at FreeBSD.org (Andrew Thompson)
Date: Tue May  5 15:41:42 2009
Subject: svn commit: r191826 - head/sys/dev/usb/controller
Message-ID: <200905051541.n45FfUYL085700@svn.freebsd.org>

Author: thompsa
Date: Tue May  5 15:41:30 2009
New Revision: 191826
URL: http://svn.freebsd.org/changeset/base/191826

Log:
  Make sure the frame list base address is re-programmed after stopping the USB
  schedule, in case the hardware clears the frame list base address.
  
  Submitted by:	Hans Petter Selasky
  Reported by:	Chao Shin

Modified:
  head/sys/dev/usb/controller/uhci.c

Modified: head/sys/dev/usb/controller/uhci.c
==============================================================================
--- head/sys/dev/usb/controller/uhci.c	Tue May  5 15:39:29 2009	(r191825)
+++ head/sys/dev/usb/controller/uhci.c	Tue May  5 15:41:30 2009	(r191826)
@@ -132,6 +132,7 @@ extern struct usb2_pipe_methods uhci_dev
 extern struct usb2_pipe_methods uhci_device_intr_methods;
 extern struct usb2_pipe_methods uhci_device_isoc_methods;
 
+static uint8_t	uhci_restart(uhci_softc_t *sc);
 static void	uhci_do_poll(struct usb2_bus *);
 static void	uhci_device_done(struct usb2_xfer *, usb2_error_t);
 static void	uhci_transfer_intr_enqueue(struct usb2_xfer *);
@@ -246,10 +247,51 @@ uhci_mem_layout_fixup(struct uhci_mem_la
 	ml->buf_offset += td->len;
 }
 
+/*
+ * Return values:
+ * 0: Success
+ * Else: Failure
+ */
+static uint8_t
+uhci_restart(uhci_softc_t *sc)
+{
+	struct usb2_page_search buf_res;
+
+	USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED);
+
+  	if (UREAD2(sc, UHCI_CMD) & UHCI_CMD_RS) {
+		DPRINTFN(2, "Already started\n");
+		return (0);
+	}
+
+	DPRINTFN(2, "Restarting\n");
+
+	usb2_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res);
+
+	/* Reload fresh base address */
+	UWRITE4(sc, UHCI_FLBASEADDR, buf_res.physaddr);
+
+	/*
+	 * Assume 64 byte packets at frame end and start HC controller:
+	 */
+	UHCICMD(sc, (UHCI_CMD_MAXP | UHCI_CMD_RS));
+
+	/* wait 10 milliseconds */
+
+	usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100);
+
+	/* check that controller has started */
+
+	if (UREAD2(sc, UHCI_STS) & UHCI_STS_HCH) {
+		DPRINTFN(2, "Failed\n");
+		return (1);
+	}
+	return (0);
+}
+
 void
 uhci_reset(uhci_softc_t *sc)
 {
-	struct usb2_page_search buf_res;
 	uint16_t n;
 
 	USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED);
@@ -309,8 +351,6 @@ done_1:
 done_2:
 
 	/* reload the configuration */
-	usb2_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res);
-	UWRITE4(sc, UHCI_FLBASEADDR, buf_res.physaddr);
 	UWRITE2(sc, UHCI_FRNUM, sc->sc_saved_frnum);
 	UWRITE1(sc, UHCI_SOF, sc->sc_saved_sof);
 
@@ -337,30 +377,11 @@ uhci_start(uhci_softc_t *sc)
 	    UHCI_INTR_IOCE |
 	    UHCI_INTR_SPIE));
 
-	/*
-	 * assume 64 byte packets at frame end and start HC controller
-	 */
-
-	UHCICMD(sc, (UHCI_CMD_MAXP | UHCI_CMD_RS));
-
-	uint8_t n = 10;
-
-	while (n--) {
-		/* wait one millisecond */
-
-		usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000);
-
-		/* check that controller has started */
-
-		if (!(UREAD2(sc, UHCI_STS) & UHCI_STS_HCH)) {
-			goto done;
-		}
+	if (uhci_restart(sc)) {
+		device_printf(sc->sc_bus.bdev,
+		    "cannot start HC controller\n");
 	}
 
-	device_printf(sc->sc_bus.bdev,
-	    "cannot start HC controller\n");
-
-done:
 	/* start root interrupt */
 	uhci_root_intr(sc);
 }
@@ -2389,15 +2410,7 @@ uhci_portreset(uhci_softc_t *sc, uint16_
 	 * Before we do anything, turn on SOF messages on the USB
 	 * BUS. Some USB devices do not cope without them!
 	 */
-  	if (!(UREAD2(sc, UHCI_CMD) & UHCI_CMD_RS)) {
-
-		DPRINTF("Activating SOFs!\n");
-
-		UHCICMD(sc, (UHCI_CMD_MAXP | UHCI_CMD_RS));
-
-		/* wait a little bit */
-		usb2_pause_mtx(&sc->sc_bus.bus_mtx, hz / 100);
-	}
+	uhci_restart(sc);
 
 	x = URWMASK(UREAD2(sc, port));
 	UWRITE2(sc, port, x | UHCI_PORTSC_PR);
@@ -3194,11 +3207,11 @@ uhci_set_hw_power(struct usb2_bus *bus)
 	    USB_HW_POWER_INTERRUPT |
 	    USB_HW_POWER_ISOC)) {
 		DPRINTF("Some USB transfer is "
-		    "active on %u.\n",
+		    "active on unit %u.\n",
 		    device_get_unit(sc->sc_bus.bdev));
-		UHCICMD(sc, (UHCI_CMD_MAXP | UHCI_CMD_RS));
+		uhci_restart(sc);
 	} else {
-		DPRINTF("Power save on %u.\n",
+		DPRINTF("Power save on unit %u.\n",
 		    device_get_unit(sc->sc_bus.bdev));
 		UHCICMD(sc, UHCI_CMD_MAXP);
 	}
From zec at FreeBSD.org  Tue May  5 16:26:07 2009
From: zec at FreeBSD.org (Marko Zec)
Date: Tue May  5 16:26:13 2009
Subject: svn commit: r191827 - in head/sys: netgraph sys
Message-ID: <200905051626.n45GQ63A086813@svn.freebsd.org>

Author: zec
Date: Tue May  5 16:26:06 2009
New Revision: 191827
URL: http://svn.freebsd.org/changeset/base/191827

Log:
  Unbreak LINT build, caused by a change in struct ng_node layout introduced
  with r191816, which become uncovered only with NETGRAPH_DEBUG defined.
  
  NOT approved by mentor (julian) due to emergency.

Modified:
  head/sys/netgraph/ng_base.c
  head/sys/sys/vimage.h

Modified: head/sys/netgraph/ng_base.c
==============================================================================
--- head/sys/netgraph/ng_base.c	Tue May  5 15:41:30 2009	(r191826)
+++ head/sys/netgraph/ng_base.c	Tue May  5 16:26:06 2009	(r191827)
@@ -138,6 +138,7 @@ struct ng_node ng_deadnode = {
 		STAILQ_HEAD_INITIALIZER(ng_deadnode.nd_input_queue.queue),
 	},
 	1,	/* refs */
+	NULL,	/* vnet */
 #ifdef	NETGRAPH_DEBUG
 	ND_MAGIC,
 	__FILE__,

Modified: head/sys/sys/vimage.h
==============================================================================
--- head/sys/sys/vimage.h	Tue May  5 15:41:30 2009	(r191826)
+++ head/sys/sys/vimage.h	Tue May  5 16:26:06 2009	(r191827)
@@ -33,7 +33,6 @@
 #ifndef	_SYS_VIMAGE_H_
 #define	_SYS_VIMAGE_H_
 
-#include 
 #include 
 
 #if defined(VIMAGE) && defined(VIMAGE_GLOBALS)
From kan at FreeBSD.org  Tue May  5 16:27:47 2009
From: kan at FreeBSD.org (Alexander Kabaev)
Date: Tue May  5 16:28:14 2009
Subject: svn commit: r191828 - head/sys/netinet6
Message-ID: <200905051627.n45GRjxC086879@svn.freebsd.org>

Author: kan
Date: Tue May  5 16:27:45 2009
New Revision: 191828
URL: http://svn.freebsd.org/changeset/base/191828

Log:
  Silence unsolicited spam printed out when KTR_MLD happens to be
  in KTR_COMPILE mask. Compiling KTR trace points in does not necessarily
  mean enabling them, use proper check against ktr_mask instead.

Modified:
  head/sys/netinet6/in6_mcast.c

Modified: head/sys/netinet6/in6_mcast.c
==============================================================================
--- head/sys/netinet6/in6_mcast.c	Tue May  5 16:26:06 2009	(r191827)
+++ head/sys/netinet6/in6_mcast.c	Tue May  5 16:27:45 2009	(r191828)
@@ -2691,7 +2691,7 @@ in6m_print(const struct in6_multi *inm)
 	int t;
 	char ip6tbuf[INET6_ADDRSTRLEN];
 
-	if ((KTR_COMPILE & KTR_MLD) == 0)
+	if ((ktr_mask & KTR_MLD) == 0)
 		return;
 
 	printf("%s: --- begin in6m %p ---\n", __func__, inm);
From raj at FreeBSD.org  Tue May  5 16:29:09 2009
From: raj at FreeBSD.org (Rafal Jaworowski)
Date: Tue May  5 16:29:21 2009
Subject: svn commit: r191829 - head/sys/boot/uboot/lib
Message-ID: <200905051629.n45GT8Lf086947@svn.freebsd.org>

Author: raj
Date: Tue May  5 16:29:08 2009
New Revision: 191829
URL: http://svn.freebsd.org/changeset/base/191829

Log:
  GPT style partitioning for loader(8) with U-Boot support library (tested on
  ARM).
  
  Submitted by:	Piotr Ziecik kosmo ! semihalf dot com

Modified:
  head/sys/boot/uboot/lib/devicename.c
  head/sys/boot/uboot/lib/disk.c
  head/sys/boot/uboot/lib/libuboot.h

Modified: head/sys/boot/uboot/lib/devicename.c
==============================================================================
--- head/sys/boot/uboot/lib/devicename.c	Tue May  5 16:27:45 2009	(r191828)
+++ head/sys/boot/uboot/lib/devicename.c	Tue May  5 16:29:08 2009	(r191829)
@@ -90,7 +90,7 @@ uboot_parsedev(struct uboot_devdesc **de
 	struct devsw *dv;
 	char *cp;
 	const char *np;
-	int i, unit, partition, err;
+	int i, unit, pnum, ptype, err;
 
 	/* minimum length check */
 	if (strlen(devspec) < 2)
@@ -116,7 +116,8 @@ uboot_parsedev(struct uboot_devdesc **de
 
 	case DEVT_DISK:
 		unit = -1;
-		partition = -1;
+		pnum = -1;
+		ptype = -1;
 		if (*np && (*np != ':')) {
 			/* next comes the unit number */
 			unit = strtol(np, &cp, 10);
@@ -126,13 +127,20 @@ uboot_parsedev(struct uboot_devdesc **de
 			}
 			if (*cp && (*cp != ':')) {
 				/* get partition */
-				partition = *cp - 'a';
-				if ((partition < 0) ||
-				    (partition >= MAXPARTITIONS)) {
-					err = EPART;
-					goto fail;
+				if (*cp == 'p' && *(cp + 1) &&
+				    *(cp + 1) != ':') {
+					pnum = strtol(cp + 1, &cp, 10);
+					ptype = PTYPE_GPT;
+				} else {
+					pnum = *cp - 'a';
+					ptype = PTYPE_BSDLABEL;
+					if ((pnum < 0) ||
+					    (pnum >= MAXPARTITIONS)) {
+						err = EPART;
+						goto fail;
+					}
+					cp++;
 				}
-				cp++;
 			}
 		}
 		if (*cp && (*cp != ':')) {
@@ -141,7 +149,8 @@ uboot_parsedev(struct uboot_devdesc **de
 		}
 
 		idev->d_unit = unit;
-		idev->d_disk.partition = partition;
+		idev->d_disk.pnum = pnum;
+		idev->d_disk.ptype = ptype;
 		idev->d_disk.data = NULL;
 		if (path != NULL)
 			*path = (*cp == 0) ? cp : cp + 1;
@@ -202,9 +211,15 @@ uboot_fmtdev(void *vdev)
 	case DEVT_DISK:
 		cp = buf;
 		cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_unit);
-		if (dev->d_kind.disk.partition >= 0)
-			cp += sprintf(cp, "%c", dev->d_kind.disk.partition +
-			    'a');
+		if (dev->d_kind.disk.pnum >= 0) {
+			if (dev->d_kind.disk.ptype == PTYPE_BSDLABEL)
+				cp += sprintf(cp, "%c",
+				    dev->d_kind.disk.pnum + 'a');
+			else if (dev->d_kind.disk.ptype == PTYPE_GPT)
+				cp += sprintf(cp, "p%i",
+				    dev->d_kind.disk.pnum);
+		}
+
 		strcat(cp, ":");
 		break;
 

Modified: head/sys/boot/uboot/lib/disk.c
==============================================================================
--- head/sys/boot/uboot/lib/disk.c	Tue May  5 16:27:45 2009	(r191828)
+++ head/sys/boot/uboot/lib/disk.c	Tue May  5 16:29:08 2009	(r191829)
@@ -1,5 +1,6 @@
 /*-
  * Copyright (c) 2008 Semihalf, Rafal Jaworowski
+ * Copyright (c) 2009 Semihalf, Piotr Ziecik
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +42,8 @@ __FBSDID("$FreeBSD$");
 
 #define FSTYPENAMES
 #include 
+#include 
+#include 
 
 #include "api_public.h"
 #include "bootstrap.h"
@@ -72,9 +75,6 @@ struct gpt_part {
 struct open_dev {
 	int		od_bsize;	/* block size */
 	int		od_bstart;	/* start block offset from beginning of disk */
-	int		od_type;
-#define OD_BSDLABEL	0x0001
-#define	OD_GPT		0x0002
 	union {
 		struct {
 			struct disklabel bsdlabel;
@@ -90,6 +90,13 @@ struct open_dev {
 #define	od_nparts	_data._gpt.gpt_nparts
 #define	od_partitions	_data._gpt.gpt_partitions
 
+static uuid_t efi = GPT_ENT_TYPE_EFI;
+static uuid_t freebsd_boot = GPT_ENT_TYPE_FREEBSD_BOOT;
+static uuid_t freebsd_ufs = GPT_ENT_TYPE_FREEBSD_UFS;
+static uuid_t freebsd_swap = GPT_ENT_TYPE_FREEBSD_SWAP;
+static uuid_t freebsd_zfs = GPT_ENT_TYPE_FREEBSD_ZFS;
+static uuid_t ms_basic_data = GPT_ENT_TYPE_MS_BASIC_DATA;
+
 static int stor_info[UB_MAX_DEV];
 static int stor_info_no = 0;
 static int stor_opendev(struct open_dev **, struct uboot_devdesc *);
@@ -213,9 +220,158 @@ stor_close(struct open_file *f)
 static int
 stor_open_gpt(struct open_dev *od, struct uboot_devdesc *dev)
 {
+	char *buf;
+	struct dos_partition *dp;
+	struct gpt_hdr *hdr;
+	struct gpt_ent *ent;
+	daddr_t slba, lba, elba;
+	int eps, part, i;
+	int err = 0;
+
+	od->od_nparts = 0;
+	od->od_partitions = NULL;
+
+	/* Devices with block size smaller than 512 bytes cannot use GPT */
+	if (od->od_bsize < 512)
+		return (ENXIO);
+
+	/* Allocate 1 block */
+	buf = malloc(od->od_bsize);
+	if (!buf) {
+		stor_printf("could not allocate memory for GPT\n");
+		return (ENOMEM);
+	}
+
+	/* Read MBR */
+	err = stor_readdev(dev, 0, 1, buf);
+	if (err) {
+		stor_printf("GPT read error=%d\n", err);
+		err = EIO;
+		goto out;
+	}
+
+	/* Check the slice table magic. */
+	if (*((uint16_t *)(buf + DOSMAGICOFFSET)) != DOSMAGIC) {
+		err = ENXIO;
+		goto out;
+	}
+
+	/* Check GPT slice */
+	dp = (struct dos_partition *)(buf + DOSPARTOFF);
+	part = 0;
+
+	for (i = 0; i < NDOSPART; i++) {
+		if (dp[i].dp_typ == 0xee)
+			part += 1;
+		else if (dp[i].dp_typ != 0x00) {
+			err = EINVAL;
+			goto out;
+		}
+	}
+
+	if (part != 1) {
+		err = EINVAL;
+		goto out;
+	}
+
+	/* Read primary GPT header */
+	err = stor_readdev(dev, 1, 1, buf);
+	if (err) {
+		stor_printf("GPT read error=%d\n", err);
+		err = EIO;
+		goto out;
+	}
+
+	hdr = (struct gpt_hdr *)buf;
+
+	/* Check GPT header */
+	if (bcmp(hdr->hdr_sig, GPT_HDR_SIG, sizeof(hdr->hdr_sig)) != 0 ||
+	    hdr->hdr_lba_self != 1 || hdr->hdr_revision < 0x00010000 ||
+	    hdr->hdr_entsz < sizeof(*ent) ||
+	    od->od_bsize % hdr->hdr_entsz != 0) {
+		debugf("Invalid GPT header!\n");
+		err = EINVAL;
+		goto out;
+	}
+
+	/* Count number of valid partitions */
+	part = 0;
+	eps = od->od_bsize / hdr->hdr_entsz;
+	slba = hdr->hdr_lba_table;
+	elba = slba + hdr->hdr_entries / eps;
+
+	for (lba = slba; lba < elba; lba++) {
+		err = stor_readdev(dev, lba, 1, buf);
+		if (err) {
+			stor_printf("GPT read error=%d\n", err);
+			err = EIO;
+			goto out;
+		}
+
+		ent = (struct gpt_ent *)buf;
 
-	/* TODO */
-	return (ENXIO);
+		for (i = 0; i < eps; i++) {
+			if (uuid_is_nil(&ent[i].ent_type, NULL) ||
+			    ent[i].ent_lba_start == 0 ||
+			    ent[i].ent_lba_end < ent[i].ent_lba_start)
+				continue;
+
+			part += 1;
+		}
+	}
+
+	/* Save information about partitions */
+	if (part != 0) {
+		od->od_nparts = part;
+		od->od_partitions = malloc(part * sizeof(struct gpt_part));
+		if (!od->od_partitions) {
+			stor_printf("could not allocate memory for GPT\n");
+			err = ENOMEM;
+			goto out;
+		}
+
+		part = 0;
+		for (lba = slba; lba < elba; lba++) {
+			err = stor_readdev(dev, lba, 1, buf);
+			if (err) {
+				stor_printf("GPT read error=%d\n", err);
+				err = EIO;
+				goto out;
+			}
+
+			ent = (struct gpt_ent *)buf;
+
+			for (i = 0; i < eps; i++) {
+				if (uuid_is_nil(&ent[i].ent_type, NULL) ||
+				    ent[i].ent_lba_start == 0 ||
+				    ent[i].ent_lba_end < ent[i].ent_lba_start)
+					continue;
+
+				od->od_partitions[part].gp_index = (lba - slba)
+				    * eps + i + 1;
+				od->od_partitions[part].gp_type =
+				    ent[i].ent_type;
+				od->od_partitions[part].gp_start =
+				    ent[i].ent_lba_start;
+				od->od_partitions[part].gp_end =
+				    ent[i].ent_lba_end;
+				part += 1;
+			}
+		}
+	}
+
+	dev->d_disk.ptype = PTYPE_GPT;
+
+	for (i = 0; i < od->od_nparts; i++)
+		if (od->od_partitions[i].gp_index == dev->d_disk.pnum)
+			od->od_bstart = od->od_partitions[i].gp_start;
+
+out:
+	if (err && od->od_partitions)
+		free(od->od_partitions);
+
+	free(buf);
+	return (err);
 }
 
 static int
@@ -247,8 +403,9 @@ stor_open_bsdlabel(struct open_dev *od, 
 		err = EUNLAB;
 		goto out;
 	}
-	od->od_type = OD_BSDLABEL;
-	od->od_bstart = dl->d_partitions[dev->d_disk.partition].p_offset;
+
+	od->od_bstart = dl->d_partitions[dev->d_disk.pnum].p_offset;
+	dev->d_disk.ptype = PTYPE_BSDLABEL;
 
 	debugf("bstart=%d\n", od->od_bstart);
 
@@ -314,7 +471,6 @@ stor_opendev(struct open_dev **odp, stru
 	}
 	od->od_bsize = di->di_stor.block_size;
 	od->od_bstart = 0;
-	od->od_type = 0;
 
 	if ((err = stor_open_gpt(od, dev)) != 0)
 		err = stor_open_bsdlabel(od, dev);
@@ -332,9 +488,14 @@ stor_opendev(struct open_dev **odp, stru
 static int
 stor_closedev(struct uboot_devdesc *dev)
 {
+	struct open_dev *od;
 	int err, h;
 
-	free((struct open_dev *)dev->d_disk.data);
+	od = (struct open_dev *)dev->d_disk.data;
+	if (dev->d_disk.ptype == PTYPE_GPT && od->od_nparts != 0)
+		free(od->od_partitions);
+
+	free(od);
 	dev->d_disk.data = NULL;
 
 	if (--stor_open_count == 0) {
@@ -420,6 +581,42 @@ stor_print_bsdlabel(struct uboot_devdesc
 }
 
 static void
+stor_print_gpt(struct uboot_devdesc *dev, char *prefix, int verbose)
+{
+	struct open_dev *od = (struct open_dev *)dev->d_disk.data;
+	struct gpt_part *gp;
+	char line[80];
+	char *fs;
+	int i;
+
+	for (i = 0; i < od->od_nparts; i++) {
+		gp = &od->od_partitions[i];
+
+		if (uuid_equal(&gp->gp_type, &efi, NULL))
+			fs = "EFI";
+		else if (uuid_equal(&gp->gp_type, &ms_basic_data, NULL))
+			fs = "FAT/NTFS";
+		else if (uuid_equal(&gp->gp_type, &freebsd_boot, NULL))
+			fs = "FreeBSD Boot";
+		else if (uuid_equal(&gp->gp_type, &freebsd_ufs, NULL))
+			fs = "FreeBSD UFS";
+		else if (uuid_equal(&gp->gp_type, &freebsd_swap, NULL))
+			fs = "FreeBSD Swap";
+		else if (uuid_equal(&gp->gp_type, &freebsd_zfs, NULL))
+			fs = "FreeBSD ZFS";
+		else
+			fs = "unknown";
+
+		sprintf(line, "  %sp%u: %s %s (%lld - %lld)\n", prefix,
+		    gp->gp_index, fs,
+		    display_size(gp->gp_end + 1 - gp->gp_start), gp->gp_start,
+		    gp->gp_end);
+
+		pager_output(line);
+	}
+}
+
+static void
 stor_print_one(int i, struct device_info *di, int verbose)
 {
 	struct uboot_devdesc dev;
@@ -431,16 +628,16 @@ stor_print_one(int i, struct device_info
 
 	dev.d_dev = &uboot_storage;
 	dev.d_unit = i;
-	dev.d_disk.partition = -1;
+	dev.d_disk.pnum = -1;
 	dev.d_disk.data = NULL;
 
 	if (stor_opendev(&od, &dev) == 0) {
 		dev.d_disk.data = od;
 
-		if (od->od_type == OD_GPT) {
-			/* TODO */
-
-		} else if (od->od_type == OD_BSDLABEL) {
+		if (dev.d_disk.ptype == PTYPE_GPT) {
+			sprintf(line, "\t\tdisk%d", i);
+			stor_print_gpt(&dev, line, verbose);
+		} else if (dev.d_disk.ptype == PTYPE_BSDLABEL) {
 			sprintf(line, "\t\tdisk%d", i);
 			stor_print_bsdlabel(&dev, line, verbose);
 		}

Modified: head/sys/boot/uboot/lib/libuboot.h
==============================================================================
--- head/sys/boot/uboot/lib/libuboot.h	Tue May  5 16:27:45 2009	(r191828)
+++ head/sys/boot/uboot/lib/libuboot.h	Tue May  5 16:29:08 2009	(r191829)
@@ -35,13 +35,17 @@ struct uboot_devdesc
 	union {
 		struct {
 			void	*data;
-			int	partition;
+			int	pnum;
+			int	ptype;
 		} disk;
 	} d_kind;
 };
 
 #define d_disk d_kind.disk
 
+#define PTYPE_BSDLABEL	1
+#define PTYPE_GPT	2
+
 /*
  * Default network packet alignment in memory
  */
From remko at FreeBSD.org  Tue May  5 16:37:34 2009
From: remko at FreeBSD.org (Remko Lodder)
Date: Tue May  5 16:37:41 2009
Subject: svn commit: r191830 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb dev/usb
Message-ID: <200905051637.n45GbXCY087203@svn.freebsd.org>

Author: remko
Date: Tue May  5 16:37:33 2009
New Revision: 191830
URL: http://svn.freebsd.org/changeset/base/191830

Log:
  MFC r182896
  
    Add support for the CyberPower CP1500AVRLCD.
  
    PR: 126845
    Submitted by: gavin
    Approved by: imp (mentor, implicit)
    MFC after: 1 week
  
  Approved by:	imp (mentor, implicit)

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/dev/usb/usb_quirks.c

Modified: stable/7/sys/dev/usb/usb_quirks.c
==============================================================================
--- stable/7/sys/dev/usb/usb_quirks.c	Tue May  5 16:29:08 2009	(r191829)
+++ stable/7/sys/dev/usb/usb_quirks.c	Tue May  5 16:37:33 2009	(r191830)
@@ -98,6 +98,8 @@ static const struct usbd_quirk_entry {
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F6C550AVR,
 	ANY, { UQ_HID_IGNORE }},
+ { USB_VENDOR_CYBERPOWER, USB_PRODUCT_CYBERPOWER_1500CAVRLCD,
+	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE,
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_ITUNERNET, USB_PRODUCT_ITUNERNET_USBLCD2X20,
From rene at FreeBSD.org  Tue May  5 16:45:26 2009
From: rene at FreeBSD.org (Rene Ladan)
Date: Tue May  5 16:45:32 2009
Subject: svn commit: r191831 - head/usr.bin/calendar/calendars
Message-ID: <200905051645.n45GjP9D087403@svn.freebsd.org>

Author: rene (doc committer)
Date: Tue May  5 16:45:25 2009
New Revision: 191831
URL: http://svn.freebsd.org/changeset/base/191831

Log:
  Add my birthday to the calendar.
  
  Approved by:	remko

Modified:
  head/usr.bin/calendar/calendars/calendar.freebsd

Modified: head/usr.bin/calendar/calendars/calendar.freebsd
==============================================================================
--- head/usr.bin/calendar/calendars/calendar.freebsd	Tue May  5 16:37:33 2009	(r191830)
+++ head/usr.bin/calendar/calendars/calendar.freebsd	Tue May  5 16:45:25 2009	(r191831)
@@ -116,6 +116,7 @@
 04/17	Dryice Liu  born in Jinan, Shandong, China, 1975
 04/22	Joerg Wunsch  born in Dresden, Sachsen, Germany, 1962
 04/22	Jun Kuriyama  born in Matsue, Shimane, Japan, 1973
+04/26	Rene Ladan  born in Geldrop, the Netherlands, 1980
 04/29	Adam Weinberger  born in Berkeley, California, United States, 1980
 04/29	Eric Anholt  born in Portland, Oregon, United States, 1983
 05/01	Randall Stewart  born in Spokane, Washington, United States, 1959
From remko at FreeBSD.org  Tue May  5 17:22:49 2009
From: remko at FreeBSD.org (Remko Lodder)
Date: Tue May  5 17:23:05 2009
Subject: svn commit: r191832 - in stable/6/sys: . contrib/pf dev/cxgb dev/usb
Message-ID: <200905051722.n45HMmnN088218@svn.freebsd.org>

Author: remko
Date: Tue May  5 17:22:48 2009
New Revision: 191832
URL: http://svn.freebsd.org/changeset/base/191832

Log:
  MFC r182896
  
     Add support for the CyberPower CP1500AVRLCD.
  
     PR: 126845
     Submitted by: gavin
     Approved by: imp (mentor, implicit)
     MFC after: 1 week
  
  Approved by:	imp (mentor, implicit)

Modified:
  stable/6/sys/   (props changed)
  stable/6/sys/contrib/pf/   (props changed)
  stable/6/sys/dev/cxgb/   (props changed)
  stable/6/sys/dev/usb/usb_quirks.c
  stable/6/sys/dev/usb/usbdevs

Modified: stable/6/sys/dev/usb/usb_quirks.c
==============================================================================
--- stable/6/sys/dev/usb/usb_quirks.c	Tue May  5 16:45:25 2009	(r191831)
+++ stable/6/sys/dev/usb/usb_quirks.c	Tue May  5 17:22:48 2009	(r191832)
@@ -122,6 +122,8 @@ Static const struct usbd_quirk_entry {
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F6C550AVR,
 	ANY, { UQ_HID_IGNORE }},
+ { USB_VENDOR_CYBERPOWER, USB_PRODUCT_CYBERPOWER_1500CAVRLCD,
+	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE,
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS1,

Modified: stable/6/sys/dev/usb/usbdevs
==============================================================================
--- stable/6/sys/dev/usb/usbdevs	Tue May  5 16:45:25 2009	(r191831)
+++ stable/6/sys/dev/usb/usbdevs	Tue May  5 17:22:48 2009	(r191832)
@@ -351,6 +351,7 @@ vendor EICON		0x0734	Eicon Networks
 vendor DIGITALSTREAM	0x074e	Digital Stream
 vendor AUREAL		0x0755	Aureal
 vendor MIDIMAN		0x0763	Midiman
+vendor CYBERPOWER	0x0764	Cyber Power Systems, Inc.
 vendor LINKSYS2		0x077b	Linksys
 vendor GRIFFIN		0x077d	Griffin
 vendor SANDISK		0x0781	SanDisk
@@ -820,6 +821,9 @@ product CURITEL HX550C		0x1101	CDMA 2000
 product CURITEL HX57XB		0x2101	CDMA 2000 1xRTT USB modem (HX-570/575B/PR-600)
 product CURITEL PC5740		0x3701	Broadband wireless modem
 
+/* CyberPower products */
+product CYBERPOWER 1500CAVRLCD	0x0501	1500CAVRLCD
+
 /* Cypress Semiconductor products */
 product CYPRESS MOUSE		0x0001	mouse
 product CYPRESS THERMO		0x0002	thermometer
From xcllnt at mac.com  Tue May  5 17:33:41 2009
From: xcllnt at mac.com (Marcel Moolenaar)
Date: Tue May  5 17:33:48 2009
Subject: svn commit: r191829 - head/sys/boot/uboot/lib
In-Reply-To: <200905051629.n45GT8Lf086947@svn.freebsd.org>
References: <200905051629.n45GT8Lf086947@svn.freebsd.org>
Message-ID: <5A9FB04C-4E13-4105-B563-EADA30F2068F@mac.com>


On May 5, 2009, at 9:29 AM, Rafal Jaworowski wrote:

> Author: raj
> Date: Tue May  5 16:29:08 2009
> New Revision: 191829
> URL: http://svn.freebsd.org/changeset/base/191829
>
> Log:
>  GPT style partitioning for loader(8) with U-Boot support library  
> (tested on
>  ARM).

Alas, this is broken for big-endian machines...

-- 
Marcel Moolenaar
xcllnt@mac.com



From raj at semihalf.com  Tue May  5 17:44:18 2009
From: raj at semihalf.com (Rafal Jaworowski)
Date: Tue May  5 17:44:30 2009
Subject: svn commit: r191829 - head/sys/boot/uboot/lib
In-Reply-To: <5A9FB04C-4E13-4105-B563-EADA30F2068F@mac.com>
References: <200905051629.n45GT8Lf086947@svn.freebsd.org>
	<5A9FB04C-4E13-4105-B563-EADA30F2068F@mac.com>
Message-ID: <4B87FAF2-6E73-4CBE-B659-47CC52C324E9@semihalf.com>


On 2009-05-05, at 19:33, Marcel Moolenaar wrote:

> On May 5, 2009, at 9:29 AM, Rafal Jaworowski wrote:
>
>> Author: raj
>> Date: Tue May  5 16:29:08 2009
>> New Revision: 191829
>> URL: http://svn.freebsd.org/changeset/base/191829
>>
>> Log:
>> GPT style partitioning for loader(8) with U-Boot support library  
>> (tested on
>> ARM).
>
> Alas, this is broken for big-endian machines...


It's a known TODO item, but without a working BE storage environment  
at the moment we couldn't test this. Note the storage support in  
loader is only enabled for ARM at the moment (default LE).

Rafal

From avg at FreeBSD.org  Tue May  5 18:02:09 2009
From: avg at FreeBSD.org (Andriy Gapon)
Date: Tue May  5 18:02:26 2009
Subject: svn commit: r191833 - in stable/7/sys: . contrib/pf dev/ath/ath_hal
	dev/cxgb kern
Message-ID: <200905051802.n45I27T1089303@svn.freebsd.org>

Author: avg
Date: Tue May  5 18:02:07 2009
New Revision: 191833
URL: http://svn.freebsd.org/changeset/base/191833

Log:
  MFC r174848 by julian: give thread0 the tid 100000
  
  ... and bumpt the others to start at 100001.
  This is convenient for ACPI code that needs a thread id that is
  never zero.
  
  Reviewed by:	jkim
  Approved by:	jhb (mentor)

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/kern/init_main.c
  stable/7/sys/kern/kern_thread.c

Modified: stable/7/sys/kern/init_main.c
==============================================================================
--- stable/7/sys/kern/init_main.c	Tue May  5 17:22:48 2009	(r191832)
+++ stable/7/sys/kern/init_main.c	Tue May  5 18:02:07 2009	(r191833)
@@ -425,6 +425,7 @@ proc0_init(void *dummy __unused)
 	knlist_init(&p->p_klist, &p->p_mtx, NULL, NULL, NULL);
 	STAILQ_INIT(&p->p_ktr);
 	p->p_nice = NZERO;
+	td->td_tid = PID_MAX + 1;
 	td->td_state = TDS_RUNNING;
 	td->td_pri_class = PRI_TIMESHARE;
 	td->td_user_pri = PUSER;

Modified: stable/7/sys/kern/kern_thread.c
==============================================================================
--- stable/7/sys/kern/kern_thread.c	Tue May  5 17:22:48 2009	(r191832)
+++ stable/7/sys/kern/kern_thread.c	Tue May  5 18:02:07 2009	(r191833)
@@ -252,7 +252,8 @@ threadinit(void)
 {
 
 	mtx_init(&tid_lock, "TID lock", NULL, MTX_DEF);
-	tid_unrhdr = new_unrhdr(PID_MAX + 1, INT_MAX, &tid_lock);
+	/* leave one number for thread0 */
+	tid_unrhdr = new_unrhdr(PID_MAX + 2, INT_MAX, &tid_lock);
 
 	thread_zone = uma_zcreate("THREAD", sched_sizeof_thread(),
 	    thread_ctor, thread_dtor, thread_init, thread_fini,
From maxim at FreeBSD.org  Tue May  5 20:54:27 2009
From: maxim at FreeBSD.org (Maxim Konovalov)
Date: Tue May  5 20:54:34 2009
Subject: svn commit: r191834 - head/share/misc
Message-ID: <200905052054.n45KsRMw093818@svn.freebsd.org>

Author: maxim
Date: Tue May  5 20:54:26 2009
New Revision: 191834
URL: http://svn.freebsd.org/changeset/base/191834

Log:
  o FreeBSD 7.2 added.

Modified:
  head/share/misc/bsd-family-tree

Modified: head/share/misc/bsd-family-tree
==============================================================================
--- head/share/misc/bsd-family-tree	Tue May  5 18:02:07 2009	(r191833)
+++ head/share/misc/bsd-family-tree	Tue May  5 20:54:26 2009	(r191834)
@@ -227,7 +227,9 @@ FreeBSD 5.2           |      |          
  |     |              |      |                 |                       |
  |  FreeBSD 7.1       |      |                 |                       |
  |     |              |      |                 |                DragonFly 2.2.0
- |     V              |   NetBSD 5.0       OpenBSD 4.5                 |
+ |  FreeBSD 7.2       |   NetBSD 5.0       OpenBSD 4.5                 |
+ |     |              |      |                 |                       |
+ |     V              |      |                 |                       |
  |                    |      |                 |                       |
 FreeBSD 8 -current    |  NetBSD -current  OpenBSD -current             |
  |                    |      |                 |                       |
@@ -498,6 +500,7 @@ FreeBSD 7.1		2009-01-04 [FBD]
 DragonFly 2.2.0		2009-02-17 [DFB]
 NetBSD 5.0		2009-04-29 [NBD]
 OpenBSD 4.5		2009-05-01 [OBD]
+FreeBSD 7.2		2009-05-04 [FBD]
 
 Bibliography
 ------------------------
From julian at elischer.org  Wed May  6 00:27:00 2009
From: julian at elischer.org (Julian Elischer)
Date: Wed May  6 00:27:12 2009
Subject: svn commit: r191827 - in head/sys: netgraph sys
In-Reply-To: <200905051626.n45GQ63A086813@svn.freebsd.org>
References: <200905051626.n45GQ63A086813@svn.freebsd.org>
Message-ID: <4A00D951.6030409@elischer.org>

Marko Zec wrote:
> Author: zec
> Date: Tue May  5 16:26:06 2009
> New Revision: 191827
> URL: http://svn.freebsd.org/changeset/base/191827
> 
> Log:
>   Unbreak LINT build, caused by a change in struct ng_node layout introduced
>   with r191816, which become uncovered only with NETGRAPH_DEBUG defined.

and the factthat Iwas flying to BSDCan.

retrospectively approved :-)

>   
>   NOT approved by mentor (julian) due to emergency.
> 
> Modified:
>   head/sys/netgraph/ng_base.c
>   head/sys/sys/vimage.h
> 
> Modified: head/sys/netgraph/ng_base.c
> ==============================================================================
> --- head/sys/netgraph/ng_base.c	Tue May  5 15:41:30 2009	(r191826)
> +++ head/sys/netgraph/ng_base.c	Tue May  5 16:26:06 2009	(r191827)
> @@ -138,6 +138,7 @@ struct ng_node ng_deadnode = {
>  		STAILQ_HEAD_INITIALIZER(ng_deadnode.nd_input_queue.queue),
>  	},
>  	1,	/* refs */
> +	NULL,	/* vnet */
>  #ifdef	NETGRAPH_DEBUG
>  	ND_MAGIC,
>  	__FILE__,
> 
> Modified: head/sys/sys/vimage.h
> ==============================================================================
> --- head/sys/sys/vimage.h	Tue May  5 15:41:30 2009	(r191826)
> +++ head/sys/sys/vimage.h	Tue May  5 16:26:06 2009	(r191827)
> @@ -33,7 +33,6 @@
>  #ifndef	_SYS_VIMAGE_H_
>  #define	_SYS_VIMAGE_H_
>  
> -#include 
>  #include 
>  
>  #if defined(VIMAGE) && defined(VIMAGE_GLOBALS)

From sam at FreeBSD.org  Wed May  6 01:50:05 2009
From: sam at FreeBSD.org (Sam Leffler)
Date: Wed May  6 01:50:16 2009
Subject: svn commit: r191836 - head/lib/libc/arm/string
Message-ID: <200905060150.n461o4XD000375@svn.freebsd.org>

Author: sam
Date: Wed May  6 01:50:04 2009
New Revision: 191836
URL: http://svn.freebsd.org/changeset/base/191836

Log:
  revert r191633; this breaks at91 & xscale (likely all arm)

Modified:
  head/lib/libc/arm/string/strncmp.S

Modified: head/lib/libc/arm/string/strncmp.S
==============================================================================
--- head/lib/libc/arm/string/strncmp.S	Wed May  6 00:31:33 2009	(r191835)
+++ head/lib/libc/arm/string/strncmp.S	Wed May  6 01:50:04 2009	(r191836)
@@ -33,10 +33,10 @@
 __FBSDID("$FreeBSD$");
 
 ENTRY(strncmp)
-/* if (len == 0) return 0 */
-	cmp	r2, #0
-	moveq	r0, #0
-	RETeq
+/* if ((len - 1) < 0) return 0 */
+	subs	r2, r2, #1
+	movmi	r0, #0
+	movmi	pc, lr
 
 /* ip == last src address to compare */
 	add	ip, r0, r2
From nyan at FreeBSD.org  Wed May  6 04:40:19 2009
From: nyan at FreeBSD.org (Takahashi Yoshihiro)
Date: Wed May  6 04:40:25 2009
Subject: svn commit: r191842 - head/sys/pc98/cbus
Message-ID: <200905060440.n464eJZ8004392@svn.freebsd.org>

Author: nyan
Date: Wed May  6 04:40:18 2009
New Revision: 191842
URL: http://svn.freebsd.org/changeset/base/191842

Log:
  Reduce diffs against i386.
  Use the hardclockintr function.

Modified:
  head/sys/pc98/cbus/clock.c

Modified: head/sys/pc98/cbus/clock.c
==============================================================================
--- head/sys/pc98/cbus/clock.c	Wed May  6 02:55:43 2009	(r191841)
+++ head/sys/pc98/cbus/clock.c	Wed May  6 04:40:18 2009	(r191842)
@@ -181,10 +181,7 @@ clkintr(struct trapframe *frame)
 	if (smp_started)
 		ipi_all_but_self(IPI_HARDCLOCK);
 #endif 
-	if (PCPU_GET(cpuid) == 0)
-		hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
-	else
-		hardclock_cpu(TRAPF_USERMODE(frame));
+	hardclockintr(frame);
 	return (FILTER_HANDLED);
 }
 
From obrien at FreeBSD.org  Wed May  6 05:08:23 2009
From: obrien at FreeBSD.org (David E. O'Brien)
Date: Wed May  6 05:08:38 2009
Subject: svn commit: r