From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 03:15:44 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 48E6922F; Sun, 24 Feb 2013 03:15:44 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2CD8E1119; Sun, 24 Feb 2013 03:15:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1O3FiF8064691; Sun, 24 Feb 2013 03:15:44 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1O3Fiwi064689; Sun, 24 Feb 2013 03:15:44 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201302240315.r1O3Fiwi064689@svn.freebsd.org> From: Adrian Chadd Date: Sun, 24 Feb 2013 03:15:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247210 - user/adrian/net80211_tx/sys/net80211 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 03:15:44 -0000 Author: adrian Date: Sun Feb 24 03:15:43 2013 New Revision: 247210 URL: http://svnweb.freebsd.org/changeset/base/247210 Log: Break out the code which processes a single mbuf for a VAP into ieee80211_send_pkt(). (hopefully) no functional change! Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Sun Feb 24 02:47:19 2013 (r247209) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Sun Feb 24 03:15:43 2013 (r247210) @@ -110,6 +110,249 @@ doprint(struct ieee80211vap *vap, int su #endif /* + * Send the given mbuf through the given vap. + * + * This consumes the mbuf regardless of whether the transmit + * was successful or not. + * + * This does none of the initial checks that ieee80211_start() + * does (eg CAC timeout, interface wakeup) - the caller must + * do this first. + */ +static int +ieee80211_start_pkt(struct ieee80211vap *vap, struct mbuf *m) +{ +#define IS_DWDS(vap) \ + (vap->iv_opmode == IEEE80211_M_WDS && \ + (vap->iv_flags_ext & IEEE80211_FEXT_WDSLEGACY) == 0) + struct ieee80211com *ic = vap->iv_ic; + struct ifnet *parent = ic->ic_ifp; + struct ifnet *ifp = vap->iv_ifp; + struct ieee80211_node *ni; + struct ether_header *eh; + int error; + + /* + * Sanitize mbuf flags for net80211 use. We cannot + * clear M_PWR_SAV or M_MORE_DATA because these may + * be set for frames that are re-submitted from the + * power save queue. + * + * NB: This must be done before ieee80211_classify as + * it marks EAPOL in frames with M_EAPOL. + */ + m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA); + /* + * Cancel any background scan. + */ + if (ic->ic_flags & IEEE80211_F_SCAN) + ieee80211_cancel_anyscan(vap); + /* + * Find the node for the destination so we can do + * things like power save and fast frames aggregation. + * + * NB: past this point various code assumes the first + * mbuf has the 802.3 header present (and contiguous). + */ + ni = NULL; + if (m->m_len < sizeof(struct ether_header) && + (m = m_pullup(m, sizeof(struct ether_header))) == NULL) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, + "discard frame, %s\n", "m_pullup failed"); + vap->iv_stats.is_tx_nobuf++; /* XXX */ + ifp->if_oerrors++; + return (ENOBUFS); + } + eh = mtod(m, struct ether_header *); + if (ETHER_IS_MULTICAST(eh->ether_dhost)) { + if (IS_DWDS(vap)) { + /* + * Only unicast frames from the above go out + * DWDS vaps; multicast frames are handled by + * dispatching the frame as it comes through + * the AP vap (see below). + */ + IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_WDS, + eh->ether_dhost, "mcast", "%s", "on DWDS"); + vap->iv_stats.is_dwds_mcast++; + m_freem(m); + /* XXX better status? */ + return (ENOBUFS); + } + if (vap->iv_opmode == IEEE80211_M_HOSTAP) { + /* + * Spam DWDS vap's w/ multicast traffic. + */ + /* XXX only if dwds in use? */ + ieee80211_dwds_mcast(vap, m); + } + } +#ifdef IEEE80211_SUPPORT_MESH + if (vap->iv_opmode != IEEE80211_M_MBSS) { +#endif + ni = ieee80211_find_txnode(vap, eh->ether_dhost); + if (ni == NULL) { + /* NB: ieee80211_find_txnode does stat+msg */ + ifp->if_oerrors++; + m_freem(m); + /* XXX better status? */ + return (ENOBUFS); + } + if (ni->ni_associd == 0 && + (ni->ni_flags & IEEE80211_NODE_ASSOCID)) { + IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_OUTPUT, + eh->ether_dhost, NULL, + "sta not associated (type 0x%04x)", + htons(eh->ether_type)); + vap->iv_stats.is_tx_notassoc++; + ifp->if_oerrors++; + m_freem(m); + ieee80211_free_node(ni); + /* XXX better status? */ + return (ENOBUFS); + } +#ifdef IEEE80211_SUPPORT_MESH + } else { + if (!IEEE80211_ADDR_EQ(eh->ether_shost, vap->iv_myaddr)) { + /* + * Proxy station only if configured. + */ + if (!ieee80211_mesh_isproxyena(vap)) { + IEEE80211_DISCARD_MAC(vap, + IEEE80211_MSG_OUTPUT | + IEEE80211_MSG_MESH, + eh->ether_dhost, NULL, + "%s", "proxy not enabled"); + vap->iv_stats.is_mesh_notproxy++; + ifp->if_oerrors++; + m_freem(m); + /* XXX better status? */ + return (ENOBUFS); + } + IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, + "forward frame from DS SA(%6D), DA(%6D)\n", + eh->ether_shost, ":", + eh->ether_dhost, ":"); + ieee80211_mesh_proxy_check(vap, eh->ether_shost); + } + ni = ieee80211_mesh_discover(vap, eh->ether_dhost, m); + if (ni == NULL) { + /* + * NB: ieee80211_mesh_discover holds/disposes + * frame (e.g. queueing on path discovery). + */ + ifp->if_oerrors++; + /* XXX better status? */ + return (ENOBUFS); + } + } +#endif + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m->m_flags & M_PWR_SAV) == 0) { + /* + * Station in power save mode; pass the frame + * to the 802.11 layer and continue. We'll get + * the frame back when the time is right. + * XXX lose WDS vap linkage? + */ + (void) ieee80211_pwrsave(ni, m); + ieee80211_free_node(ni); + /* XXX better status? */ + return (ENOBUFS); + } + /* calculate priority so drivers can find the tx queue */ + if (ieee80211_classify(ni, m)) { + IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_OUTPUT, + eh->ether_dhost, NULL, + "%s", "classification failure"); + vap->iv_stats.is_tx_classify++; + ifp->if_oerrors++; + m_freem(m); + ieee80211_free_node(ni); + /* XXX better status? */ + return (ENOBUFS); + } + /* + * Stash the node pointer. Note that we do this after + * any call to ieee80211_dwds_mcast because that code + * uses any existing value for rcvif to identify the + * interface it (might have been) received on. + */ + m->m_pkthdr.rcvif = (void *)ni; + + BPF_MTAP(ifp, m); /* 802.3 tx */ + + /* + * Check if A-MPDU tx aggregation is setup or if we + * should try to enable it. The sta must be associated + * with HT and A-MPDU enabled for use. When the policy + * routine decides we should enable A-MPDU we issue an + * ADDBA request and wait for a reply. The frame being + * encapsulated will go out w/o using A-MPDU, or possibly + * it might be collected by the driver and held/retransmit. + * The default ic_ampdu_enable routine handles staggering + * ADDBA requests in case the receiver NAK's us or we are + * otherwise unable to establish a BA stream. + */ + if ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) && + (vap->iv_flags_ht & IEEE80211_FHT_AMPDU_TX) && + (m->m_flags & M_EAPOL) == 0) { + int tid = WME_AC_TO_TID(M_WME_GETAC(m)); + struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid]; + + ieee80211_txampdu_count_packet(tap); + if (IEEE80211_AMPDU_RUNNING(tap)) { + /* + * Operational, mark frame for aggregation. + * + * XXX do tx aggregation here + */ + m->m_flags |= M_AMPDU_MPDU; + } else if (!IEEE80211_AMPDU_REQUESTED(tap) && + ic->ic_ampdu_enable(ni, tap)) { + /* + * Not negotiated yet, request service. + */ + ieee80211_ampdu_request(ni, tap); + /* XXX hold frame for reply? */ + } + } +#ifdef IEEE80211_SUPPORT_SUPERG + else if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF)) { + m = ieee80211_ff_check(ni, m); + if (m == NULL) { + /* NB: any ni ref held on stageq */ + /* XXX better status? */ + return (ENOBUFS); + } + } +#endif /* IEEE80211_SUPPORT_SUPERG */ + if (__predict_true((vap->iv_caps & IEEE80211_C_8023ENCAP) == 0)) { + /* + * Encapsulate the packet in prep for transmission. + */ + m = ieee80211_encap(vap, ni, m); + if (m == NULL) { + /* NB: stat+msg handled in ieee80211_encap */ + ieee80211_free_node(ni); + /* XXX better status? */ + return (ENOBUFS); + } + } + error = parent->if_transmit(parent, m); + if (error != 0) { + /* NB: IFQ_HANDOFF reclaims mbuf */ + ieee80211_free_node(ni); + } else { + ifp->if_opackets++; + } + ic->ic_lastdata = ticks; + + return (0); +#undef IS_DWDS +} + +/* * Start method for vap's. All packets from the stack come * through here. We handle common processing of the packets * before dispatching them to the underlying device. @@ -117,16 +360,10 @@ doprint(struct ieee80211vap *vap, int su void ieee80211_start(struct ifnet *ifp) { -#define IS_DWDS(vap) \ - (vap->iv_opmode == IEEE80211_M_WDS && \ - (vap->iv_flags_ext & IEEE80211_FEXT_WDSLEGACY) == 0) struct ieee80211vap *vap = ifp->if_softc; struct ieee80211com *ic = vap->iv_ic; struct ifnet *parent = ic->ic_ifp; - struct ieee80211_node *ni; struct mbuf *m; - struct ether_header *eh; - int error; /* NB: parent must be up and running */ if (!IFNET_IS_UP_RUNNING(parent)) { @@ -165,218 +402,14 @@ ieee80211_start(struct ifnet *ifp) } IEEE80211_UNLOCK(ic); } + for (;;) { IFQ_DEQUEUE(&ifp->if_snd, m); if (m == NULL) break; - /* - * Sanitize mbuf flags for net80211 use. We cannot - * clear M_PWR_SAV or M_MORE_DATA because these may - * be set for frames that are re-submitted from the - * power save queue. - * - * NB: This must be done before ieee80211_classify as - * it marks EAPOL in frames with M_EAPOL. - */ - m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA); - /* - * Cancel any background scan. - */ - if (ic->ic_flags & IEEE80211_F_SCAN) - ieee80211_cancel_anyscan(vap); - /* - * Find the node for the destination so we can do - * things like power save and fast frames aggregation. - * - * NB: past this point various code assumes the first - * mbuf has the 802.3 header present (and contiguous). - */ - ni = NULL; - if (m->m_len < sizeof(struct ether_header) && - (m = m_pullup(m, sizeof(struct ether_header))) == NULL) { - IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, - "discard frame, %s\n", "m_pullup failed"); - vap->iv_stats.is_tx_nobuf++; /* XXX */ - ifp->if_oerrors++; - continue; - } - eh = mtod(m, struct ether_header *); - if (ETHER_IS_MULTICAST(eh->ether_dhost)) { - if (IS_DWDS(vap)) { - /* - * Only unicast frames from the above go out - * DWDS vaps; multicast frames are handled by - * dispatching the frame as it comes through - * the AP vap (see below). - */ - IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_WDS, - eh->ether_dhost, "mcast", "%s", "on DWDS"); - vap->iv_stats.is_dwds_mcast++; - m_freem(m); - continue; - } - if (vap->iv_opmode == IEEE80211_M_HOSTAP) { - /* - * Spam DWDS vap's w/ multicast traffic. - */ - /* XXX only if dwds in use? */ - ieee80211_dwds_mcast(vap, m); - } - } -#ifdef IEEE80211_SUPPORT_MESH - if (vap->iv_opmode != IEEE80211_M_MBSS) { -#endif - ni = ieee80211_find_txnode(vap, eh->ether_dhost); - if (ni == NULL) { - /* NB: ieee80211_find_txnode does stat+msg */ - ifp->if_oerrors++; - m_freem(m); - continue; - } - if (ni->ni_associd == 0 && - (ni->ni_flags & IEEE80211_NODE_ASSOCID)) { - IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_OUTPUT, - eh->ether_dhost, NULL, - "sta not associated (type 0x%04x)", - htons(eh->ether_type)); - vap->iv_stats.is_tx_notassoc++; - ifp->if_oerrors++; - m_freem(m); - ieee80211_free_node(ni); - continue; - } -#ifdef IEEE80211_SUPPORT_MESH - } else { - if (!IEEE80211_ADDR_EQ(eh->ether_shost, vap->iv_myaddr)) { - /* - * Proxy station only if configured. - */ - if (!ieee80211_mesh_isproxyena(vap)) { - IEEE80211_DISCARD_MAC(vap, - IEEE80211_MSG_OUTPUT | - IEEE80211_MSG_MESH, - eh->ether_dhost, NULL, - "%s", "proxy not enabled"); - vap->iv_stats.is_mesh_notproxy++; - ifp->if_oerrors++; - m_freem(m); - continue; - } - IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, - "forward frame from DS SA(%6D), DA(%6D)\n", - eh->ether_shost, ":", - eh->ether_dhost, ":"); - ieee80211_mesh_proxy_check(vap, eh->ether_shost); - } - ni = ieee80211_mesh_discover(vap, eh->ether_dhost, m); - if (ni == NULL) { - /* - * NB: ieee80211_mesh_discover holds/disposes - * frame (e.g. queueing on path discovery). - */ - ifp->if_oerrors++; - continue; - } - } -#endif - if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && - (m->m_flags & M_PWR_SAV) == 0) { - /* - * Station in power save mode; pass the frame - * to the 802.11 layer and continue. We'll get - * the frame back when the time is right. - * XXX lose WDS vap linkage? - */ - (void) ieee80211_pwrsave(ni, m); - ieee80211_free_node(ni); - continue; - } - /* calculate priority so drivers can find the tx queue */ - if (ieee80211_classify(ni, m)) { - IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_OUTPUT, - eh->ether_dhost, NULL, - "%s", "classification failure"); - vap->iv_stats.is_tx_classify++; - ifp->if_oerrors++; - m_freem(m); - ieee80211_free_node(ni); - continue; - } - /* - * Stash the node pointer. Note that we do this after - * any call to ieee80211_dwds_mcast because that code - * uses any existing value for rcvif to identify the - * interface it (might have been) received on. - */ - m->m_pkthdr.rcvif = (void *)ni; - - BPF_MTAP(ifp, m); /* 802.3 tx */ - - /* - * Check if A-MPDU tx aggregation is setup or if we - * should try to enable it. The sta must be associated - * with HT and A-MPDU enabled for use. When the policy - * routine decides we should enable A-MPDU we issue an - * ADDBA request and wait for a reply. The frame being - * encapsulated will go out w/o using A-MPDU, or possibly - * it might be collected by the driver and held/retransmit. - * The default ic_ampdu_enable routine handles staggering - * ADDBA requests in case the receiver NAK's us or we are - * otherwise unable to establish a BA stream. - */ - if ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) && - (vap->iv_flags_ht & IEEE80211_FHT_AMPDU_TX) && - (m->m_flags & M_EAPOL) == 0) { - int tid = WME_AC_TO_TID(M_WME_GETAC(m)); - struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid]; - - ieee80211_txampdu_count_packet(tap); - if (IEEE80211_AMPDU_RUNNING(tap)) { - /* - * Operational, mark frame for aggregation. - * - * XXX do tx aggregation here - */ - m->m_flags |= M_AMPDU_MPDU; - } else if (!IEEE80211_AMPDU_REQUESTED(tap) && - ic->ic_ampdu_enable(ni, tap)) { - /* - * Not negotiated yet, request service. - */ - ieee80211_ampdu_request(ni, tap); - /* XXX hold frame for reply? */ - } - } -#ifdef IEEE80211_SUPPORT_SUPERG - else if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF)) { - m = ieee80211_ff_check(ni, m); - if (m == NULL) { - /* NB: any ni ref held on stageq */ - continue; - } - } -#endif /* IEEE80211_SUPPORT_SUPERG */ - if (__predict_true((vap->iv_caps & IEEE80211_C_8023ENCAP) == 0)) { - /* - * Encapsulate the packet in prep for transmission. - */ - m = ieee80211_encap(vap, ni, m); - if (m == NULL) { - /* NB: stat+msg handled in ieee80211_encap */ - ieee80211_free_node(ni); - continue; - } - } - error = parent->if_transmit(parent, m); - if (error != 0) { - /* NB: IFQ_HANDOFF reclaims mbuf */ - ieee80211_free_node(ni); - } else { - ifp->if_opackets++; - } - ic->ic_lastdata = ticks; + (void) ieee80211_start_pkt(vap, m); + /* mbuf is consumed here */ } -#undef IS_DWDS } /* From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 11:27:19 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2FB9178A; Sun, 24 Feb 2013 11:27:19 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E79571CF7; Sun, 24 Feb 2013 11:27:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OBRIu4010891; Sun, 24 Feb 2013 11:27:18 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OBRIMb010889; Sun, 24 Feb 2013 11:27:18 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241127.r1OBRIMb010889@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 11:27:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247217 - user/dchagin/lemul/sys/compat/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 11:27:19 -0000 Author: dchagin Date: Sun Feb 24 11:27:18 2013 New Revision: 247217 URL: http://svnweb.freebsd.org/changeset/base/247217 Log: Add a siginfo_t conversion function. Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.c user/dchagin/lemul/sys/compat/linux/linux_signal.h Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 11:24:08 2013 (r247216) +++ user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 11:27:18 2013 (r247217) @@ -644,33 +644,40 @@ void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig) { + siginfo_to_lsiginfo(&ksi->ksi_info, lsi, sig); +} + +void +siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig) +{ + lsi->lsi_signo = sig; - lsi->lsi_code = ksi->ksi_code; + lsi->lsi_code = si->si_code; switch (sig) { case LINUX_SIGPOLL: /* XXX si_fd? */ - lsi->lsi_band = ksi->ksi_band; + lsi->lsi_band = si->si_band; break; case LINUX_SIGCHLD: - lsi->lsi_pid = ksi->ksi_pid; - lsi->lsi_uid = ksi->ksi_uid; - lsi->lsi_status = ksi->ksi_status; + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; + lsi->lsi_status = si->si_status; break; case LINUX_SIGBUS: case LINUX_SIGILL: case LINUX_SIGFPE: case LINUX_SIGSEGV: - lsi->lsi_addr = PTROUT(ksi->ksi_addr); + lsi->lsi_addr = PTROUT(si->si_addr); break; default: /* XXX SI_TIMER etc... */ - lsi->lsi_pid = ksi->ksi_pid; - lsi->lsi_uid = ksi->ksi_uid; + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; break; } if (sig >= LINUX_SIGRTMIN) { - lsi->lsi_int = ksi->ksi_info.si_value.sival_int; - lsi->lsi_ptr = PTROUT(ksi->ksi_info.si_value.sival_ptr); + lsi->lsi_int = si->si_value.sival_int; + lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); } } Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.h ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 11:24:08 2013 (r247216) +++ user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 11:27:18 2013 (r247217) @@ -40,6 +40,7 @@ void linux_to_bsd_sigset(l_sigset_t *, s void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig); +void siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig); #define LINUX_SIG_VALID(sig) ((sig) <= LINUX_NSIG && (sig) > 0) From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 11:28:52 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 9D5228A9; Sun, 24 Feb 2013 11:28:52 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 59D231CFE; Sun, 24 Feb 2013 11:28:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OBSqHQ011114; Sun, 24 Feb 2013 11:28:52 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OBSqXk011111; Sun, 24 Feb 2013 11:28:52 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241128.r1OBSqXk011111@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 11:28:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247218 - user/dchagin/lemul/sys/compat/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 11:28:52 -0000 Author: dchagin Date: Sun Feb 24 11:28:51 2013 New Revision: 247218 URL: http://svnweb.freebsd.org/changeset/base/247218 Log: Add a function for converting wait options. Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c user/dchagin/lemul/sys/compat/linux/linux_misc.h Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.c Sun Feb 24 11:27:18 2013 (r247217) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c Sun Feb 24 11:28:51 2013 (r247218) @@ -1992,3 +1992,23 @@ linux_tdfind(struct thread *td, lwpid_t return (tdt); } + +void +linux_to_bsd_waitopts(int options, int *bsdopts) +{ + + if (options & LINUX_WNOHANG) + *bsdopts |= WNOHANG; + if (options & LINUX_WUNTRACED) + *bsdopts |= WUNTRACED; + if (options & LINUX_WEXITED) + *bsdopts |= WEXITED; + if (options & LINUX_WCONTINUED) + *bsdopts |= WCONTINUED; + if (options & LINUX_WNOWAIT) + *bsdopts |= WNOWAIT; + + if (options & __WCLONE) + *bsdopts |= WLINUXCLONE; +} + Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.h ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.h Sun Feb 24 11:27:18 2013 (r247217) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.h Sun Feb 24 11:28:51 2013 (r247218) @@ -111,10 +111,20 @@ struct l_new_utsname { extern int stclohz; -#define __WCLONE 0x80000000 +#define LINUX_WNOHANG 0x00000001 +#define LINUX_WUNTRACED 0x00000002 +#define LINUX_WSTOPPED LINUX_WUNTRACED +#define LINUX_WEXITED 0x00000004 +#define LINUX_WCONTINUED 0x00000008 +#define LINUX_WNOWAIT 0x01000000 + +#define __WNOTHREAD 0x20000000 +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 int linux_common_wait(struct thread *td, int pid, int *status, int options, struct rusage *ru); +void linux_to_bsd_waitopts(int options, int *bsdopts); int linux_set_upcall_kse(struct thread *td, register_t stack); int linux_set_cloned_tls(struct thread *td, void *desc); struct thread *linux_tdfind(struct thread *, lwpid_t, pid_t); From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 11:31:03 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 19D6B9D9; Sun, 24 Feb 2013 11:31:03 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 92F161D07; Sun, 24 Feb 2013 11:31:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OBV2LC012980; Sun, 24 Feb 2013 11:31:02 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OBV0c0012664; Sun, 24 Feb 2013 11:31:00 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241131.r1OBV0c0012664@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 11:31:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247219 - in user/dchagin/lemul/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 11:31:03 -0000 Author: dchagin Date: Sun Feb 24 11:31:00 2013 New Revision: 247219 URL: http://svnweb.freebsd.org/changeset/base/247219 Log: Implement waitid() system call. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c user/dchagin/lemul/sys/amd64/linux32/syscalls.master user/dchagin/lemul/sys/compat/linux/linux_misc.h user/dchagin/lemul/sys/i386/linux/linux_dummy.c user/dchagin/lemul/sys/i386/linux/linux_machdep.c user/dchagin/lemul/sys/i386/linux/syscalls.master Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Sun Feb 24 11:31:00 2013 (r247219) @@ -90,7 +90,6 @@ DUMMY(mq_timedreceive); DUMMY(mq_notify); DUMMY(mq_getsetattr); DUMMY(kexec_load); -DUMMY(waitid); /* linux 2.6.11: */ DUMMY(add_key); DUMMY(request_key); Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c Sun Feb 24 11:31:00 2013 (r247219) @@ -1046,3 +1046,64 @@ linux_wait4(struct thread *td, struct li return (error); } + +int +linux_waitid(struct thread *td, struct linux_waitid_args *args) +{ + int status, options, sig; + struct __wrusage wru; + struct l_rusage lru; + siginfo_t siginfo; + l_siginfo_t lsi; + idtype_t idtype; + int error; + + options = 0; + linux_to_bsd_waitopts(args->options, &options); + + if (options & ~(WNOHANG | WNOWAIT | WEXITED | WUNTRACED | WCONTINUED)) + return (EINVAL); + if (!(options & (WEXITED | WUNTRACED | WCONTINUED))) + return (EINVAL); + + switch (args->idtype) { + case LINUX_P_ALL: + idtype = P_ALL; + break; + case LINUX_P_PID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PID; + break; + case LINUX_P_PGID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PGID; + break; + default: + return (EINVAL); + } + + error = kern_wait6(td, idtype, args->id, &status, options, + &wru, &siginfo); + if (error) + return (error); + td->td_retval[0] = 0; + + if (args->rusage != NULL) { + bsd_to_linux_rusage(&wru.wru_children, &lru); + error = copyout(&lru, args->rusage, sizeof(lru)); + if (error) + return (error); + } + + if (args->info != NULL) { + sig = siginfo.si_signo; + if (siginfo.si_signo <= td->td_proc->p_sysent->sv_sigsize) + sig = td->td_proc->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + siginfo_to_lsiginfo(&siginfo, &lsi, sig); + error = copyout(&lsi, args->info, sizeof(lsi)); + } + + return (error); +} Modified: user/dchagin/lemul/sys/amd64/linux32/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/syscalls.master Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/amd64/linux32/syscalls.master Sun Feb 24 11:31:00 2013 (r247219) @@ -464,7 +464,8 @@ 281 AUE_NULL STD { int linux_mq_notify(void); } 282 AUE_NULL STD { int linux_mq_getsetattr(void); } 283 AUE_NULL STD { int linux_kexec_load(void); } -284 AUE_NULL STD { int linux_waitid(void); } +284 AUE_WAIT6 STD { int linux_waitid(int idtype, l_pid_t id, l_siginfo_t *info, \ + int options, struct l_rusage *rusage); } 285 AUE_NULL UNIMPL ; linux 2.6.11: 286 AUE_NULL STD { int linux_add_key(void); } Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.h ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.h Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.h Sun Feb 24 11:31:00 2013 (r247219) @@ -122,6 +122,12 @@ extern int stclohz; #define __WALL 0x40000000 #define __WCLONE 0x80000000 +/* Linux waitid idtype */ +#define LINUX_P_ALL 0 +#define LINUX_P_PID 1 +#define LINUX_P_PGID 2 + + int linux_common_wait(struct thread *td, int pid, int *status, int options, struct rusage *ru); void linux_to_bsd_waitopts(int options, int *bsdopts); Modified: user/dchagin/lemul/sys/i386/linux/linux_dummy.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_dummy.c Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/i386/linux/linux_dummy.c Sun Feb 24 11:31:00 2013 (r247219) @@ -81,7 +81,6 @@ DUMMY(mbind); DUMMY(get_mempolicy); DUMMY(set_mempolicy); DUMMY(kexec_load); -DUMMY(waitid); /* linux 2.6.11: */ DUMMY(add_key); DUMMY(request_key); Modified: user/dchagin/lemul/sys/i386/linux/linux_machdep.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_machdep.c Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/i386/linux/linux_machdep.c Sun Feb 24 11:31:00 2013 (r247219) @@ -1097,3 +1097,63 @@ linux_wait4(struct thread *td, struct li return (error); } + +int +linux_waitid(struct thread *td, struct linux_waitid_args *args) +{ + int status, options, sig; + struct __wrusage wru; + siginfo_t siginfo; + l_siginfo_t lsi; + idtype_t idtype; + int error; + + options = 0; + linux_to_bsd_waitopts(args->options, &options); + + if (options & ~(WNOHANG | WNOWAIT | WEXITED | WUNTRACED | WCONTINUED)) + return (EINVAL); + if (!(options & (WEXITED | WUNTRACED | WCONTINUED))) + return (EINVAL); + + switch (args->idtype) { + case LINUX_P_ALL: + idtype = P_ALL; + break; + case LINUX_P_PID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PID; + break; + case LINUX_P_PGID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PGID; + break; + default: + return (EINVAL); + } + + error = kern_wait6(td, idtype, args->id, &status, options, + &wru, &siginfo); + if (error) + return (error); + td->td_retval[0] = 0; + + if (args->rusage != NULL) { + error = copyout(&wru.wru_children, args->rusage, + sizeof(wru.wru_children)); + if (error) + return (error); + } + + if (args->info != NULL) { + sig = siginfo.si_signo; + if (siginfo.si_signo <= td->td_proc->p_sysent->sv_sigsize) + sig = td->td_proc->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + siginfo_to_lsiginfo(&siginfo, &lsi, sig); + error = copyout(&lsi, args->info, sizeof(lsi)); + } + + return (error); +} Modified: user/dchagin/lemul/sys/i386/linux/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/i386/linux/syscalls.master Sun Feb 24 11:28:51 2013 (r247218) +++ user/dchagin/lemul/sys/i386/linux/syscalls.master Sun Feb 24 11:31:00 2013 (r247219) @@ -474,7 +474,8 @@ 282 AUE_NULL STD { int linux_mq_getsetattr(l_mqd_t mqd, const struct mq_attr *attr, \ struct mq_attr *oattr); } 283 AUE_NULL STD { int linux_kexec_load(void); } -284 AUE_NULL STD { int linux_waitid(void); } +284 AUE_WAIT6 STD { int linux_waitid(int idtype, l_pid_t id, l_siginfo_t *info, \ + int options, struct l_rusage *rusage); } 285 AUE_NULL UNIMPL ; linux 2.6.11: 286 AUE_NULL STD { int linux_add_key(void); } From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 11:32:48 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 75D9DB08; Sun, 24 Feb 2013 11:32:48 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 660E41D18; Sun, 24 Feb 2013 11:32:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OBWmN6013306; Sun, 24 Feb 2013 11:32:48 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OBWk74013296; Sun, 24 Feb 2013 11:32:46 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241132.r1OBWk74013296@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 11:32:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247220 - in user/dchagin/lemul/sys: amd64/linux32 i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 11:32:48 -0000 Author: dchagin Date: Sun Feb 24 11:32:45 2013 New Revision: 247220 URL: http://svnweb.freebsd.org/changeset/base/247220 Log: Regen for r247219. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c user/dchagin/lemul/sys/i386/linux/linux_proto.h user/dchagin/lemul/sys/i386/linux/linux_syscall.h user/dchagin/lemul/sys/i386/linux/linux_syscalls.c user/dchagin/lemul/sys/i386/linux/linux_sysent.c user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -877,7 +877,11 @@ struct linux_kexec_load_args { register_t dummy; }; struct linux_waitid_args { - register_t dummy; + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id_l_[PADL_(l_pid_t)]; l_pid_t id; char id_r_[PADR_(l_pid_t)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char rusage_l_[PADL_(struct l_rusage *)]; struct l_rusage * rusage; char rusage_r_[PADR_(struct l_rusage *)]; }; struct linux_add_key_args { register_t dummy; @@ -1627,7 +1631,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_mq_notify AUE_NULL #define LINUX_SYS_AUE_linux_mq_getsetattr AUE_NULL #define LINUX_SYS_AUE_linux_kexec_load AUE_NULL -#define LINUX_SYS_AUE_linux_waitid AUE_NULL +#define LINUX_SYS_AUE_linux_waitid AUE_WAIT6 #define LINUX_SYS_AUE_linux_add_key AUE_NULL #define LINUX_SYS_AUE_linux_request_key AUE_NULL #define LINUX_SYS_AUE_linux_keyctl AUE_NULL Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #include "opt_compat.h" @@ -303,7 +303,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_mq_notify */ { 0, (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_mq_getsetattr */ { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ + { AS(linux_waitid_args), (sy_call_t *)linux_waitid, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 285 = */ { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_add_key */ { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_request_key */ Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Sun Feb 24 11:32:45 2013 (r247220) @@ -1870,7 +1870,13 @@ systrace_args(int sysnum, void *params, } /* linux_waitid */ case 284: { - *n_args = 0; + struct linux_waitid_args *p = params; + iarg[0] = p->idtype; /* int */ + iarg[1] = p->id; /* l_pid_t */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + iarg[3] = p->options; /* int */ + uarg[4] = (intptr_t) p->rusage; /* struct l_rusage * */ + *n_args = 5; break; } /* linux_add_key */ @@ -4999,6 +5005,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_waitid */ case 284: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "l_pid_t"; + break; + case 2: + p = "l_siginfo_t *"; + break; + case 3: + p = "int"; + break; + case 4: + p = "struct l_rusage *"; + break; + default: + break; + }; break; /* linux_add_key */ case 286: @@ -6485,6 +6510,9 @@ systrace_return_setargdesc(int sysnum, i case 283: /* linux_waitid */ case 284: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_add_key */ case 286: /* linux_request_key */ Modified: user/dchagin/lemul/sys/i386/linux/linux_proto.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_proto.h Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/i386/linux/linux_proto.h Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -900,7 +900,11 @@ struct linux_kexec_load_args { register_t dummy; }; struct linux_waitid_args { - register_t dummy; + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id_l_[PADL_(l_pid_t)]; l_pid_t id; char id_r_[PADR_(l_pid_t)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char rusage_l_[PADL_(struct l_rusage *)]; struct l_rusage * rusage; char rusage_r_[PADR_(struct l_rusage *)]; }; struct linux_add_key_args { register_t dummy; @@ -1654,7 +1658,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_mq_notify AUE_NULL #define LINUX_SYS_AUE_linux_mq_getsetattr AUE_NULL #define LINUX_SYS_AUE_linux_kexec_load AUE_NULL -#define LINUX_SYS_AUE_linux_waitid AUE_NULL +#define LINUX_SYS_AUE_linux_waitid AUE_WAIT6 #define LINUX_SYS_AUE_linux_add_key AUE_NULL #define LINUX_SYS_AUE_linux_request_key AUE_NULL #define LINUX_SYS_AUE_linux_keyctl AUE_NULL Modified: user/dchagin/lemul/sys/i386/linux/linux_syscall.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscall.h Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/i386/linux/linux_syscall.h Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/i386/linux/linux_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/i386/linux/linux_sysent.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_sysent.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/i386/linux/linux_sysent.c Sun Feb 24 11:32:45 2013 (r247220) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247183 2013-02-23 09:10:18Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin */ #include @@ -302,7 +302,7 @@ struct sysent linux_sysent[] = { { AS(linux_mq_notify_args), (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_mq_notify */ { AS(linux_mq_getsetattr_args), (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_mq_getsetattr */ { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ + { AS(linux_waitid_args), (sy_call_t *)linux_waitid, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 285 = */ { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_add_key */ { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_request_key */ Modified: user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Sun Feb 24 11:31:00 2013 (r247219) +++ user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Sun Feb 24 11:32:45 2013 (r247220) @@ -1961,7 +1961,13 @@ systrace_args(int sysnum, void *params, } /* linux_waitid */ case 284: { - *n_args = 0; + struct linux_waitid_args *p = params; + iarg[0] = p->idtype; /* int */ + iarg[1] = p->id; /* l_pid_t */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + iarg[3] = p->options; /* int */ + uarg[4] = (intptr_t) p->rusage; /* struct l_rusage * */ + *n_args = 5; break; } /* linux_add_key */ @@ -5295,6 +5301,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_waitid */ case 284: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "l_pid_t"; + break; + case 2: + p = "l_siginfo_t *"; + break; + case 3: + p = "int"; + break; + case 4: + p = "struct l_rusage *"; + break; + default: + break; + }; break; /* linux_add_key */ case 286: @@ -6843,6 +6868,9 @@ systrace_return_setargdesc(int sysnum, i case 283: /* linux_waitid */ case 284: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_add_key */ case 286: /* linux_request_key */ From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 16:08:38 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id A5FA290D; Sun, 24 Feb 2013 16:08:38 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 823B2818; Sun, 24 Feb 2013 16:08:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OG8cvr095071; Sun, 24 Feb 2013 16:08:38 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OG8cwo095070; Sun, 24 Feb 2013 16:08:38 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241608.r1OG8cwo095070@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 16:08:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247222 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 16:08:38 -0000 Author: attilio Date: Sun Feb 24 16:08:37 2013 New Revision: 247222 URL: http://svnweb.freebsd.org/changeset/base/247222 Log: Fix an inverted check that was reporting indexes wrongly detected as wrapped. Sponsored by: EMC / Isilon storage divison Reported by: alc Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 15:15:50 2013 (r247221) +++ user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 16:08:37 2013 (r247222) @@ -327,7 +327,7 @@ vm_radix_declev(vm_pindex_t *idx, boolea *idx = vm_radix_trimkey(*idx, ilev); *idx |= VM_RADIX_UNITLEVEL(ilev) - 1; *idx -= VM_RADIX_UNITLEVEL(ilev); - if (*idx < wrapidx) + if (*idx > wrapidx) return (1); return (0); } From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 16:10:43 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id CB043A3C; Sun, 24 Feb 2013 16:10:43 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id B3C2C826; Sun, 24 Feb 2013 16:10:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OGAhY4097036; Sun, 24 Feb 2013 16:10:43 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OGAhsR097035; Sun, 24 Feb 2013 16:10:43 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241610.r1OGAhsR097035@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 16:10:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247223 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 16:10:43 -0000 Author: attilio Date: Sun Feb 24 16:10:43 2013 New Revision: 247223 URL: http://svnweb.freebsd.org/changeset/base/247223 Log: Do not call vm_radix_lookup_ge() in the reservation system unless it is absolutely necessary. Sponsored by: EMC / Isilon storage division Submitted by: alc Modified: user/attilio/vmc-playground/sys/vm/vm_reserv.c Modified: user/attilio/vmc-playground/sys/vm/vm_reserv.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_reserv.c Sun Feb 24 16:08:37 2013 (r247222) +++ user/attilio/vmc-playground/sys/vm/vm_reserv.c Sun Feb 24 16:10:43 2013 (r247223) @@ -349,8 +349,9 @@ vm_reserv_alloc_contig(vm_object_t objec rv = vm_reserv_from_page(mpred); if (rv->object == object && vm_reserv_has_pindex(rv, pindex)) goto found; - } - msucc = vm_radix_lookup_ge(&object->rtree, pindex); + msucc = TAILQ_NEXT(mpred, listq); + } else + msucc = vm_radix_lookup_ge(&object->rtree, pindex); if (msucc != NULL) { KASSERT(msucc->pindex > pindex, ("vm_reserv_alloc_page: pindex already allocated")); @@ -503,8 +504,9 @@ vm_reserv_alloc_page(vm_object_t object, rv = vm_reserv_from_page(mpred); if (rv->object == object && vm_reserv_has_pindex(rv, pindex)) goto found; - } - msucc = vm_radix_lookup_ge(&object->rtree, pindex); + msucc = TAILQ_NEXT(mpred, listq); + } else + msucc = vm_radix_lookup_ge(&object->rtree, pindex); if (msucc != NULL) { KASSERT(msucc->pindex > pindex, ("vm_reserv_alloc_page: pindex already allocated")); From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 16:41:39 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 977DA19A; Sun, 24 Feb 2013 16:41:39 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7AF2E8FF; Sun, 24 Feb 2013 16:41:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OGfdLM006345; Sun, 24 Feb 2013 16:41:39 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OGfbck006334; Sun, 24 Feb 2013 16:41:37 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241641.r1OGfbck006334@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 16:41:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247224 - in user/attilio/vmc-playground/sys: arm/arm powerpc/booke vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 16:41:39 -0000 Author: attilio Date: Sun Feb 24 16:41:36 2013 New Revision: 247224 URL: http://svnweb.freebsd.org/changeset/base/247224 Log: Retire the old UMA primitive uma_zone_set_obj() and replace it with the more modern uma_zone_reserve_kva(). The difference is that it doesn't rely anymore on an obj to allocate pages and the slab allocator doesn't use any more any specific locking but atomic operations to complete the operation. Where possible, the uma_small_alloc() is instead used and the uk_kva member becomes unused. The subsequent cleanups also brings along the removal of VM_OBJECT_LOCK_INIT() macro which is not used anymore as the code can be easilly cleaned up to perform a single mtx_init(), private to vm_object.c. For the same reason, _vm_object_allocate() becomes private as well. Sponsored by: EMC / Isilon storage division Reviewed by: alc Modified: user/attilio/vmc-playground/sys/arm/arm/pmap-v6.c user/attilio/vmc-playground/sys/arm/arm/pmap.c user/attilio/vmc-playground/sys/powerpc/booke/pmap.c user/attilio/vmc-playground/sys/vm/swap_pager.c user/attilio/vmc-playground/sys/vm/uma.h user/attilio/vmc-playground/sys/vm/uma_core.c user/attilio/vmc-playground/sys/vm/uma_int.h user/attilio/vmc-playground/sys/vm/vm_map.c user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vm_object.h user/attilio/vmc-playground/sys/vm/vm_radix.c Modified: user/attilio/vmc-playground/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/arm/pmap-v6.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/arm/arm/pmap-v6.c Sun Feb 24 16:41:36 2013 (r247224) @@ -390,7 +390,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1162,7 +1161,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmc-playground/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/arm/pmap.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/arm/arm/pmap.c Sun Feb 24 16:41:36 2013 (r247224) @@ -395,7 +395,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1826,7 +1825,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmc-playground/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmc-playground/sys/powerpc/booke/pmap.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/powerpc/booke/pmap.c Sun Feb 24 16:41:36 2013 (r247224) @@ -217,7 +217,6 @@ static struct rwlock_padalign pvh_global /* Data for the pv entry allocation mechanism */ 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; #define PV_ENTRY_ZONE_MIN 2048 /* min pv entries in uma zone */ @@ -1343,7 +1342,7 @@ mmu_booke_init(mmu_t mmu) TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); /* Pre-fill pvzone with initial number of pv entries. */ uma_prealloc(pvzone, PV_ENTRY_ZONE_MIN); Modified: user/attilio/vmc-playground/sys/vm/swap_pager.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/swap_pager.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/swap_pager.c Sun Feb 24 16:41:36 2013 (r247224) @@ -343,7 +343,6 @@ SYSCTL_INT(_vm, OID_AUTO, swap_async_max static struct mtx sw_alloc_mtx; /* protect list manipulation */ static struct pagerlst swap_pager_object_list[NOBJLISTS]; static uma_zone_t swap_zone; -static struct vm_object swap_zone_obj; /* * pagerops for OBJT_SWAP - "swap pager". Some ops are also global procedure @@ -554,7 +553,7 @@ swap_pager_swap_init(void) if (swap_zone == NULL) panic("failed to create swap_zone."); do { - if (uma_zone_set_obj(swap_zone, &swap_zone_obj, n)) + if (uma_zone_reserve_kva(swap_zone, n)) break; /* * if the allocation failed, try a zone two thirds the Modified: user/attilio/vmc-playground/sys/vm/uma.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma.h Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/uma.h Sun Feb 24 16:41:36 2013 (r247224) @@ -432,24 +432,21 @@ void uma_reclaim(void); void uma_set_align(int align); /* - * Switches the backing object of a zone + * Switches the backing object of a zone to VM_ALLOC_NOOBJ. * * Arguments: * zone The zone to update. - * obj The VM object to use for future allocations. - * size The size of the object to allocate. + * nitems The number of items previewed to be allocated. * * Returns: * 0 if kva space can not be allocated * 1 if successful * * Discussion: - * A NULL object can be used and uma will allocate one for you. Setting - * the size will limit the amount of memory allocated to this zone. + * The size will limit the amount of memory allocated to this zone. * */ -struct vm_object; -int uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int size); +int uma_zone_reserve_kva(uma_zone_t zone, int nitems); /* * Sets a high limit on the number of items allowed in a zone Modified: user/attilio/vmc-playground/sys/vm/uma_core.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma_core.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/uma_core.c Sun Feb 24 16:41:36 2013 (r247224) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -213,7 +214,7 @@ enum zfreeskip { SKIP_NONE, SKIP_DTOR, S /* Prototypes.. */ -static void *obj_alloc(uma_zone_t, int, u_int8_t *, int); +static void *noobj_alloc(uma_zone_t, int, u_int8_t *, int); static void *page_alloc(uma_zone_t, int, u_int8_t *, int); static void *startup_alloc(uma_zone_t, int, u_int8_t *, int); static void page_free(void *, int, u_int8_t); @@ -1030,50 +1031,53 @@ page_alloc(uma_zone_t zone, int bytes, u * NULL if M_NOWAIT is set. */ static void * -obj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) +noobj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) { - vm_object_t object; + TAILQ_HEAD(, vm_page) alloctail; + u_long npages; vm_offset_t retkva, zkva; - vm_page_t p; - int pages, startpages; + vm_page_t p, p_next; uma_keg_t keg; + TAILQ_INIT(&alloctail); keg = zone_first_keg(zone); - object = keg->uk_obj; - retkva = 0; - /* - * This looks a little weird since we're getting one page at a time. - */ - VM_OBJECT_LOCK(object); - p = TAILQ_LAST(&object->memq, pglist); - pages = p != NULL ? p->pindex + 1 : 0; - startpages = pages; - zkva = keg->uk_kva + pages * PAGE_SIZE; - for (; bytes > 0; bytes -= PAGE_SIZE) { - p = vm_page_alloc(object, pages, - VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED); - if (p == NULL) { - if (pages != startpages) - pmap_qremove(retkva, pages - startpages); - while (pages != startpages) { - pages--; - p = TAILQ_LAST(&object->memq, pglist); - vm_page_unwire(p, 0); - vm_page_free(p); - } - retkva = 0; - goto done; + npages = howmany(bytes, PAGE_SIZE); + while (npages > 0) { + p = vm_page_alloc(NULL, 0, VM_ALLOC_INTERRUPT | + VM_ALLOC_WIRED | VM_ALLOC_NOOBJ); + if (p != NULL) { + /* + * Since the page does not belong to an object, its + * listq is unused. + */ + TAILQ_INSERT_TAIL(&alloctail, p, listq); + npages--; + continue; + } + if (wait & M_WAITOK) { + VM_WAIT; + continue; } + + /* + * Page allocation failed, free intermediate pages and + * exit. + */ + TAILQ_FOREACH_SAFE(p, &alloctail, listq, p_next) { + vm_page_unwire(p, 0); + vm_page_free(p); + } + return (NULL); + } + *flags = UMA_SLAB_PRIV; + zkva = keg->uk_kva + + atomic_fetchadd_long(&keg->uk_offset, round_page(bytes)); + retkva = zkva; + TAILQ_FOREACH(p, &alloctail, listq) { pmap_qenter(zkva, &p, 1); - if (retkva == 0) - retkva = zkva; zkva += PAGE_SIZE; - pages += 1; } -done: - VM_OBJECT_UNLOCK(object); - *flags = UMA_SLAB_PRIV; return ((void *)retkva); } @@ -3012,7 +3016,7 @@ uma_zone_set_allocf(uma_zone_t zone, uma /* See uma.h */ int -uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int count) +uma_zone_reserve_kva(uma_zone_t zone, int count) { uma_keg_t keg; vm_offset_t kva; @@ -3024,21 +3028,25 @@ uma_zone_set_obj(uma_zone_t zone, struct if (pages * keg->uk_ipers < count) pages++; - kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); - - if (kva == 0) - return (0); - if (obj == NULL) - obj = vm_object_allocate(OBJT_PHYS, pages); - else { - VM_OBJECT_LOCK_INIT(obj, "uma object"); - _vm_object_allocate(OBJT_PHYS, pages, obj); - } +#ifdef UMA_MD_SMALL_ALLOC + if (keg->uk_ppera > 1) { +#else + if (1) { +#endif + kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); + if (kva == 0) + return (0); + } else + kva = 0; ZONE_LOCK(zone); keg->uk_kva = kva; - keg->uk_obj = obj; + keg->uk_offset = 0; keg->uk_maxpages = pages; - keg->uk_allocf = obj_alloc; +#ifdef UMA_MD_SMALL_ALLOC + keg->uk_allocf = (keg->uk_ppera > 1) ? noobj_alloc : uma_small_alloc; +#else + keg->uk_allocf = noobj_alloc; +#endif keg->uk_flags |= UMA_ZONE_NOFREE | UMA_ZFLAG_PRIVALLOC; ZONE_UNLOCK(zone); return (1); Modified: user/attilio/vmc-playground/sys/vm/uma_int.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma_int.h Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/uma_int.h Sun Feb 24 16:41:36 2013 (r247224) @@ -221,8 +221,8 @@ struct uma_keg { uma_alloc uk_allocf; /* Allocation function */ uma_free uk_freef; /* Free routine */ - struct vm_object *uk_obj; /* Zone specific object */ - vm_offset_t uk_kva; /* Base kva for zones with objs */ + u_long uk_offset; /* Zone specific next page index */ + vm_offset_t uk_kva; /* Zone base kva */ uma_zone_t uk_slabzone; /* Slab zone backing us, if OFFPAGE */ u_int16_t uk_pgoff; /* Offset to uma_slab struct */ Modified: user/attilio/vmc-playground/sys/vm/vm_map.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_map.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/vm_map.c Sun Feb 24 16:41:36 2013 (r247224) @@ -125,7 +125,6 @@ static uma_zone_t mapentzone; static uma_zone_t kmapentzone; static uma_zone_t mapzone; static uma_zone_t vmspace_zone; -static struct vm_object kmapentobj; static int vmspace_zinit(void *mem, int size, int flags); static void vmspace_zfini(void *mem, int size); static int vm_map_zinit(void *mem, int ize, int flags); @@ -303,7 +302,7 @@ vmspace_alloc(min, max) void vm_init2(void) { - uma_zone_set_obj(kmapentzone, &kmapentobj, lmin(cnt.v_page_count, + uma_zone_reserve_kva(kmapentzone, lmin(cnt.v_page_count, (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / PAGE_SIZE) / 8 + maxproc * 2 + maxfiles); vmspace_zone = uma_zcreate("VMSPACE", sizeof(struct vmspace), NULL, Modified: user/attilio/vmc-playground/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/vm_object.c Sun Feb 24 16:41:36 2013 (r247224) @@ -194,20 +194,23 @@ vm_object_zinit(void *mem, int size, int vm_object_t object; object = (vm_object_t)mem; - bzero(&object->mtx, sizeof(object->mtx)); - VM_OBJECT_LOCK_INIT(object, "standard object"); /* These are true for any object that has been freed */ object->paging_in_progress = 0; object->resident_page_count = 0; object->shadow_count = 0; + + /* It relies on vm object mutex to be initialized afterwards. */ return (0); } -void -_vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object) +static void +_vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object, + const char *mtxname) { + bzero(&object->mtx, sizeof(object->mtx)); + mtx_init(&object->mtx, "vm object", mtxname, MTX_DEF | MTX_DUPOK); TAILQ_INIT(&object->memq); LIST_INIT(&object->shadow_head); @@ -267,17 +270,15 @@ vm_object_init(void) TAILQ_INIT(&vm_object_list); mtx_init(&vm_object_list_mtx, "vm object_list", NULL, MTX_DEF); - VM_OBJECT_LOCK_INIT(kernel_object, "kernel object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), - kernel_object); + kernel_object, "kernel object"); #if VM_NRESERVLEVEL > 0 kernel_object->flags |= OBJ_COLORED; kernel_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); #endif - VM_OBJECT_LOCK_INIT(kmem_object, "kmem object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), - kmem_object); + kmem_object, "kmem object"); #if VM_NRESERVLEVEL > 0 kmem_object->flags |= OBJ_COLORED; kmem_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); @@ -403,7 +404,7 @@ vm_object_allocate(objtype_t type, vm_pi vm_object_t object; object = (vm_object_t)uma_zalloc(obj_zone, M_WAITOK); - _vm_object_allocate(type, size, object); + _vm_object_allocate(type, size, object, NULL); return (object); } Modified: user/attilio/vmc-playground/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.h Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/vm_object.h Sun Feb 24 16:41:36 2013 (r247224) @@ -208,9 +208,6 @@ extern struct vm_object kmem_object_stor #define VM_OBJECT_LOCK(object) mtx_lock(&(object)->mtx) #define VM_OBJECT_LOCK_ASSERT(object, type) \ mtx_assert(&(object)->mtx, (type)) -#define VM_OBJECT_LOCK_INIT(object, type) \ - mtx_init(&(object)->mtx, "vm object", \ - (type), MTX_DEF | MTX_DUPOK) #define VM_OBJECT_LOCKED(object) mtx_owned(&(object)->mtx) #define VM_OBJECT_MTX(object) (&(object)->mtx) #define VM_OBJECT_TRYLOCK(object) mtx_trylock(&(object)->mtx) @@ -241,7 +238,6 @@ vm_object_cache_is_empty(vm_object_t obj } vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); -void _vm_object_allocate (objtype_t, vm_pindex_t, vm_object_t); boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t); void vm_object_collapse (vm_object_t); Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 16:10:43 2013 (r247223) +++ user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 16:41:36 2013 (r247224) @@ -63,7 +63,7 @@ #endif #ifndef VM_RADIX_BOOT_CACHE -#define VM_RADIX_BOOT_CACHE 1500 +#define VM_RADIX_BOOT_CACHE 150 #endif /* @@ -373,7 +373,6 @@ vm_radix_node_zone_dtor(void *mem, int s static void vm_radix_init(void *arg __unused) { - int nitems; vm_radix_node_zone = uma_zcreate("RADIX NODE", sizeof(struct vm_radix_node), NULL, @@ -383,10 +382,9 @@ vm_radix_init(void *arg __unused) NULL, #endif NULL, NULL, VM_RADIX_PAD, UMA_ZONE_VM | UMA_ZONE_NOFREE); - nitems = uma_zone_set_max(vm_radix_node_zone, cnt.v_page_count); - if (nitems < cnt.v_page_count) - panic("%s: unexpected requested number of items", __func__); - uma_prealloc(vm_radix_node_zone, nitems); + if (!uma_zone_reserve_kva(vm_radix_node_zone, cnt.v_page_count)) + panic("%s: unable to create new zone", __func__); + uma_prealloc(vm_radix_node_zone, cnt.v_page_count); boot_cache_cnt = VM_RADIX_BOOT_CACHE + 1; } SYSINIT(vm_radix_init, SI_SUB_KMEM, SI_ORDER_SECOND, vm_radix_init, NULL); From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 16:50:57 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 33AC348B; Sun, 24 Feb 2013 16:50:57 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 16084979; Sun, 24 Feb 2013 16:50:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OGovqD009088; Sun, 24 Feb 2013 16:50:57 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OGosIP009069; Sun, 24 Feb 2013 16:50:54 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241650.r1OGosIP009069@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 16:50:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247225 - in user/attilio/vmcontention: bin/sh cddl/contrib/opensolaris/cmd/dtrace contrib/binutils/gas/config contrib/binutils/opcodes contrib/ldns contrib/ldns/drill contrib/ldns/ldns... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 16:50:57 -0000 Author: attilio Date: Sun Feb 24 16:50:53 2013 New Revision: 247225 URL: http://svnweb.freebsd.org/changeset/base/247225 Log: MFC Added: user/attilio/vmcontention/contrib/ldns/dane.c - copied unchanged from r247224, head/contrib/ldns/dane.c user/attilio/vmcontention/contrib/ldns/drill/drill.1.in - copied unchanged from r247224, head/contrib/ldns/drill/drill.1.in user/attilio/vmcontention/contrib/ldns/ldns/common.h - copied unchanged from r247224, head/contrib/ldns/ldns/common.h user/attilio/vmcontention/contrib/ldns/ldns/config.h - copied unchanged from r247224, head/contrib/ldns/ldns/config.h user/attilio/vmcontention/contrib/ldns/ldns/dane.h - copied unchanged from r247224, head/contrib/ldns/ldns/dane.h user/attilio/vmcontention/contrib/ldns/ldns/net.h - copied unchanged from r247224, head/contrib/ldns/ldns/net.h user/attilio/vmcontention/contrib/ldns/ldns/util.h - copied unchanged from r247224, head/contrib/ldns/ldns/util.h user/attilio/vmcontention/lib/libstand/strtoul.c - copied unchanged from r247224, head/lib/libstand/strtoul.c user/attilio/vmcontention/sbin/hastd/refcnt.h - copied unchanged from r247224, head/sbin/hastd/refcnt.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslprepkg.c - copied unchanged from r247224, head/sys/contrib/dev/acpica/compiler/aslprepkg.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsconvert.c - copied unchanged from r247224, head/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/attilio/vmcontention/sys/x86/include/elf.h - copied unchanged from r247224, head/sys/x86/include/elf.h user/attilio/vmcontention/sys/x86/include/frame.h - copied unchanged from r247224, head/sys/x86/include/frame.h user/attilio/vmcontention/sys/x86/include/sigframe.h - copied unchanged from r247224, head/sys/x86/include/sigframe.h user/attilio/vmcontention/sys/x86/include/signal.h - copied unchanged from r247224, head/sys/x86/include/signal.h user/attilio/vmcontention/sys/x86/include/ucontext.h - copied unchanged from r247224, head/sys/x86/include/ucontext.h user/attilio/vmcontention/tools/regression/bin/sh/builtins/read6.0 - copied unchanged from r247224, head/tools/regression/bin/sh/builtins/read6.0 user/attilio/vmcontention/tools/regression/bin/sh/builtins/wait4.0 - copied unchanged from r247224, head/tools/regression/bin/sh/builtins/wait4.0 user/attilio/vmcontention/tools/regression/bin/sh/builtins/wait5.0 - copied unchanged from r247224, head/tools/regression/bin/sh/builtins/wait5.0 user/attilio/vmcontention/tools/tools/ath/athalq/tdma.c - copied unchanged from r247224, head/tools/tools/ath/athalq/tdma.c user/attilio/vmcontention/tools/tools/ath/athalq/tdma.h - copied unchanged from r247224, head/tools/tools/ath/athalq/tdma.h user/attilio/vmcontention/tools/tools/netmap/nm_util.c - copied unchanged from r247224, head/tools/tools/netmap/nm_util.c user/attilio/vmcontention/tools/tools/netmap/nm_util.h - copied unchanged from r247224, head/tools/tools/netmap/nm_util.h Deleted: user/attilio/vmcontention/contrib/ldns/drill/drill.1 user/attilio/vmcontention/contrib/ldns/ldns_symbols.def user/attilio/vmcontention/sys/dev/mxge/mxge_lro.c Modified: user/attilio/vmcontention/bin/sh/eval.c user/attilio/vmcontention/bin/sh/jobs.c user/attilio/vmcontention/bin/sh/main.c user/attilio/vmcontention/bin/sh/trap.c user/attilio/vmcontention/bin/sh/trap.h user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c user/attilio/vmcontention/contrib/binutils/gas/config/tc-i386.c user/attilio/vmcontention/contrib/binutils/opcodes/i386-dis.c user/attilio/vmcontention/contrib/binutils/opcodes/i386-opc.h user/attilio/vmcontention/contrib/binutils/opcodes/i386-tbl.h user/attilio/vmcontention/contrib/ldns/Changelog user/attilio/vmcontention/contrib/ldns/Makefile.in user/attilio/vmcontention/contrib/ldns/buffer.c user/attilio/vmcontention/contrib/ldns/configure user/attilio/vmcontention/contrib/ldns/configure.ac user/attilio/vmcontention/contrib/ldns/dname.c user/attilio/vmcontention/contrib/ldns/dnssec.c user/attilio/vmcontention/contrib/ldns/dnssec_sign.c user/attilio/vmcontention/contrib/ldns/dnssec_verify.c user/attilio/vmcontention/contrib/ldns/dnssec_zone.c user/attilio/vmcontention/contrib/ldns/drill/Makefile.in user/attilio/vmcontention/contrib/ldns/drill/chasetrace.c user/attilio/vmcontention/contrib/ldns/drill/config.h.in user/attilio/vmcontention/contrib/ldns/drill/configure user/attilio/vmcontention/contrib/ldns/drill/configure.ac user/attilio/vmcontention/contrib/ldns/drill/dnssec.c user/attilio/vmcontention/contrib/ldns/drill/drill.c user/attilio/vmcontention/contrib/ldns/drill/drill.h user/attilio/vmcontention/contrib/ldns/drill/drill_util.c user/attilio/vmcontention/contrib/ldns/drill/drill_util.h user/attilio/vmcontention/contrib/ldns/drill/securetrace.c user/attilio/vmcontention/contrib/ldns/drill/work.c user/attilio/vmcontention/contrib/ldns/error.c user/attilio/vmcontention/contrib/ldns/higher.c user/attilio/vmcontention/contrib/ldns/host2str.c user/attilio/vmcontention/contrib/ldns/host2wire.c user/attilio/vmcontention/contrib/ldns/keys.c user/attilio/vmcontention/contrib/ldns/ldns/buffer.h user/attilio/vmcontention/contrib/ldns/ldns/common.h.in user/attilio/vmcontention/contrib/ldns/ldns/config.h.in user/attilio/vmcontention/contrib/ldns/ldns/dname.h user/attilio/vmcontention/contrib/ldns/ldns/dnssec.h user/attilio/vmcontention/contrib/ldns/ldns/dnssec_verify.h user/attilio/vmcontention/contrib/ldns/ldns/dnssec_zone.h user/attilio/vmcontention/contrib/ldns/ldns/error.h user/attilio/vmcontention/contrib/ldns/ldns/host2str.h user/attilio/vmcontention/contrib/ldns/ldns/keys.h user/attilio/vmcontention/contrib/ldns/ldns/ldns.h user/attilio/vmcontention/contrib/ldns/ldns/rdata.h user/attilio/vmcontention/contrib/ldns/ldns/resolver.h user/attilio/vmcontention/contrib/ldns/ldns/rr.h user/attilio/vmcontention/contrib/ldns/ldns/util.h.in user/attilio/vmcontention/contrib/ldns/libdns.doxygen user/attilio/vmcontention/contrib/ldns/net.c user/attilio/vmcontention/contrib/ldns/packet.c user/attilio/vmcontention/contrib/ldns/parse.c user/attilio/vmcontention/contrib/ldns/resolver.c user/attilio/vmcontention/contrib/ldns/rr.c user/attilio/vmcontention/contrib/ldns/str2host.c user/attilio/vmcontention/contrib/ldns/tsig.c user/attilio/vmcontention/contrib/ldns/util.c user/attilio/vmcontention/contrib/ldns/zone.c user/attilio/vmcontention/contrib/llvm/lib/MC/MCParser/AsmParser.cpp user/attilio/vmcontention/contrib/llvm/lib/Target/X86/X86InstrCompiler.td user/attilio/vmcontention/contrib/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp user/attilio/vmcontention/contrib/llvm/tools/clang/lib/Driver/Tools.cpp user/attilio/vmcontention/contrib/llvm/tools/clang/lib/Driver/Tools.h user/attilio/vmcontention/contrib/nvi/ex/ex_txt.c user/attilio/vmcontention/contrib/nvi/vi/v_txt.c user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/token.l user/attilio/vmcontention/contrib/opie/opiekey.c user/attilio/vmcontention/contrib/sendmail/src/milter.c user/attilio/vmcontention/contrib/wpa/src/crypto/md5-internal.c user/attilio/vmcontention/crypto/heimdal/kcm/cache.c user/attilio/vmcontention/etc/rc.resume user/attilio/vmcontention/gnu/lib/libstdc++/config.h user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/kgdb.1 user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/kgdb.h user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/kthr.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/main.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_amd64.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_arm.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_i386.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_ia64.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_mips.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c user/attilio/vmcontention/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c user/attilio/vmcontention/lib/libc/gen/Makefile.inc user/attilio/vmcontention/lib/libc/gen/sem_new.c user/attilio/vmcontention/lib/libc/stdio/setbuf.3 user/attilio/vmcontention/lib/libc/stdlib/bsearch.3 user/attilio/vmcontention/lib/libc/stdlib/qsort.3 user/attilio/vmcontention/lib/libc/sys/Makefile.inc user/attilio/vmcontention/lib/libelf/elf_data.c user/attilio/vmcontention/lib/libelf/elf_getdata.3 user/attilio/vmcontention/lib/libelf/elf_update.c user/attilio/vmcontention/lib/libldns/Makefile user/attilio/vmcontention/lib/libsm/Makefile user/attilio/vmcontention/lib/libstand/Makefile user/attilio/vmcontention/lib/libstand/stand.h user/attilio/vmcontention/libexec/mail.local/Makefile user/attilio/vmcontention/libexec/smrsh/Makefile user/attilio/vmcontention/release/picobsd/bridge/crunch.conf user/attilio/vmcontention/release/picobsd/qemu/crunch.conf user/attilio/vmcontention/sbin/devd/devd.conf.5 user/attilio/vmcontention/sbin/fsck_ffs/dir.c user/attilio/vmcontention/sbin/fsck_ffs/ea.c user/attilio/vmcontention/sbin/fsck_ffs/fsck.h user/attilio/vmcontention/sbin/fsck_ffs/fsutil.c user/attilio/vmcontention/sbin/fsck_ffs/inode.c user/attilio/vmcontention/sbin/fsck_ffs/main.c user/attilio/vmcontention/sbin/fsck_ffs/setup.c user/attilio/vmcontention/sbin/hastd/hast.conf.5 user/attilio/vmcontention/sbin/hastd/hast.h user/attilio/vmcontention/sbin/hastd/hast_proto.c user/attilio/vmcontention/sbin/hastd/hastd.c user/attilio/vmcontention/sbin/hastd/parse.y user/attilio/vmcontention/sbin/hastd/primary.c user/attilio/vmcontention/sbin/hastd/secondary.c user/attilio/vmcontention/share/man/man4/carp.4 user/attilio/vmcontention/share/man/man5/group.5 user/attilio/vmcontention/share/man/man9/VFS_SET.9 user/attilio/vmcontention/share/mk/bsd.lib.mk user/attilio/vmcontention/share/mk/bsd.libnames.mk user/attilio/vmcontention/share/mk/bsd.sys.mk user/attilio/vmcontention/sys/amd64/acpica/acpi_machdep.c user/attilio/vmcontention/sys/amd64/amd64/pmap.c user/attilio/vmcontention/sys/amd64/include/elf.h user/attilio/vmcontention/sys/amd64/include/frame.h user/attilio/vmcontention/sys/amd64/include/sigframe.h user/attilio/vmcontention/sys/amd64/include/signal.h user/attilio/vmcontention/sys/amd64/include/ucontext.h user/attilio/vmcontention/sys/arm/allwinner/a10_clk.c user/attilio/vmcontention/sys/arm/allwinner/a10_clk.h user/attilio/vmcontention/sys/arm/allwinner/a10_ehci.c user/attilio/vmcontention/sys/arm/allwinner/a10_gpio.c user/attilio/vmcontention/sys/arm/arm/busdma_machdep-v6.c user/attilio/vmcontention/sys/arm/arm/busdma_machdep.c user/attilio/vmcontention/sys/arm/arm/machdep.c user/attilio/vmcontention/sys/arm/arm/pmap-v6.c user/attilio/vmcontention/sys/arm/arm/pmap.c user/attilio/vmcontention/sys/arm/at91/at91_machdep.c user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h user/attilio/vmcontention/sys/arm/econa/econa_machdep.c user/attilio/vmcontention/sys/arm/include/pmap.h user/attilio/vmcontention/sys/arm/include/vmparam.h user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmcontention/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmcontention/sys/arm/ti/ti_cpuid.c user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmcontention/sys/boot/common/bootstrap.h user/attilio/vmcontention/sys/boot/common/module.c user/attilio/vmcontention/sys/boot/fdt/dts/bcm2835-rpi-b.dts user/attilio/vmcontention/sys/boot/fdt/dts/cubieboard.dts user/attilio/vmcontention/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmcontention/sys/boot/uboot/lib/copy.c user/attilio/vmcontention/sys/boot/uboot/lib/elf_freebsd.c user/attilio/vmcontention/sys/boot/userboot/userboot/elf32_freebsd.c user/attilio/vmcontention/sys/cam/ata/ata_pmp.c user/attilio/vmcontention/sys/cam/scsi/scsi_da.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/attilio/vmcontention/sys/conf/files user/attilio/vmcontention/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/common/adisasm.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/adwalk.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmextern.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmtable.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmtbdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmtbinfo.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslcompile.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslcompiler.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asldefine.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslfiles.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmessages.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslpredef.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslstartup.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslsupport.l user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtcompiler.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dttable.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dttemplate.h user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evevent.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evgpe.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evsci.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evxfevnt.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psargs.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rscalc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rslist.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utaddress.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utglobal.c user/attilio/vmcontention/sys/contrib/dev/acpica/include/acdisasm.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acexcep.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/aclocal.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acnamesp.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acoutput.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/actbl2.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/actbl3.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acutils.h user/attilio/vmcontention/sys/crypto/aesni/aesni_wrap.c user/attilio/vmcontention/sys/dev/ata/ata-all.c user/attilio/vmcontention/sys/dev/ata/ata-all.h user/attilio/vmcontention/sys/dev/ata/ata-dma.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/attilio/vmcontention/sys/dev/ath/if_ath.c user/attilio/vmcontention/sys/dev/ath/if_ath_alq.h user/attilio/vmcontention/sys/dev/ath/if_ath_rx.c user/attilio/vmcontention/sys/dev/ath/if_ath_sysctl.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx.h user/attilio/vmcontention/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmcontention/sys/dev/ath/if_athvar.h user/attilio/vmcontention/sys/dev/coretemp/coretemp.c user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.h user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c user/attilio/vmcontention/sys/dev/cxgbe/t4_sge.c user/attilio/vmcontention/sys/dev/dcons/dcons_os.c user/attilio/vmcontention/sys/dev/e1000/e1000_82571.c user/attilio/vmcontention/sys/dev/e1000/e1000_82575.c user/attilio/vmcontention/sys/dev/e1000/e1000_82575.h user/attilio/vmcontention/sys/dev/e1000/e1000_api.c user/attilio/vmcontention/sys/dev/e1000/e1000_api.h user/attilio/vmcontention/sys/dev/e1000/e1000_defines.h user/attilio/vmcontention/sys/dev/e1000/e1000_hw.h user/attilio/vmcontention/sys/dev/e1000/e1000_i210.c user/attilio/vmcontention/sys/dev/e1000/e1000_i210.h user/attilio/vmcontention/sys/dev/e1000/e1000_ich8lan.c user/attilio/vmcontention/sys/dev/e1000/e1000_ich8lan.h user/attilio/vmcontention/sys/dev/e1000/e1000_mac.c user/attilio/vmcontention/sys/dev/e1000/e1000_mac.h user/attilio/vmcontention/sys/dev/e1000/e1000_manage.c user/attilio/vmcontention/sys/dev/e1000/e1000_nvm.c user/attilio/vmcontention/sys/dev/e1000/e1000_nvm.h user/attilio/vmcontention/sys/dev/e1000/e1000_osdep.h user/attilio/vmcontention/sys/dev/e1000/e1000_phy.c user/attilio/vmcontention/sys/dev/e1000/e1000_phy.h user/attilio/vmcontention/sys/dev/e1000/e1000_regs.h user/attilio/vmcontention/sys/dev/e1000/if_em.c user/attilio/vmcontention/sys/dev/e1000/if_igb.c user/attilio/vmcontention/sys/dev/e1000/if_lem.c user/attilio/vmcontention/sys/dev/fdt/fdt_common.h user/attilio/vmcontention/sys/dev/firewire/sbp.c user/attilio/vmcontention/sys/dev/led/led.c user/attilio/vmcontention/sys/dev/mcd/mcd.c user/attilio/vmcontention/sys/dev/mxge/if_mxge.c user/attilio/vmcontention/sys/dev/mxge/if_mxge_var.h user/attilio/vmcontention/sys/dev/ppc/ppc.c user/attilio/vmcontention/sys/dev/ppc/ppc_isa.c user/attilio/vmcontention/sys/dev/sdhci/sdhci.c user/attilio/vmcontention/sys/dev/sdhci/sdhci.h user/attilio/vmcontention/sys/dev/sdhci/sdhci_if.m user/attilio/vmcontention/sys/dev/si/si.c user/attilio/vmcontention/sys/dev/sound/pci/hda/hdaa.c user/attilio/vmcontention/sys/dev/usb/wlan/if_upgt.c user/attilio/vmcontention/sys/dev/usb/wlan/if_upgtvar.h user/attilio/vmcontention/sys/fs/msdosfs/msdosfs_fat.c user/attilio/vmcontention/sys/fs/msdosfs/msdosfs_vfsops.c user/attilio/vmcontention/sys/fs/msdosfs/msdosfsmount.h user/attilio/vmcontention/sys/fs/nfs/nfs_commonkrpc.c user/attilio/vmcontention/sys/fs/nfsclient/nfs_clstate.c user/attilio/vmcontention/sys/fs/nfsclient/nfs_clvfsops.c user/attilio/vmcontention/sys/geom/geom_vfs.c user/attilio/vmcontention/sys/i386/acpica/acpi_machdep.c user/attilio/vmcontention/sys/i386/i386/pmap.c user/attilio/vmcontention/sys/i386/include/elf.h user/attilio/vmcontention/sys/i386/include/frame.h user/attilio/vmcontention/sys/i386/include/sigframe.h user/attilio/vmcontention/sys/i386/include/signal.h user/attilio/vmcontention/sys/i386/include/ucontext.h user/attilio/vmcontention/sys/i386/isa/pmtimer.c user/attilio/vmcontention/sys/i386/xen/pmap.c user/attilio/vmcontention/sys/ia64/conf/GENERIC user/attilio/vmcontention/sys/ia64/ia64/mem.c user/attilio/vmcontention/sys/ia64/ia64/syscall.S user/attilio/vmcontention/sys/kern/kern_descrip.c user/attilio/vmcontention/sys/kern/kern_fork.c user/attilio/vmcontention/sys/kern/kern_sig.c user/attilio/vmcontention/sys/kern/kern_tc.c user/attilio/vmcontention/sys/kern/kern_thread.c user/attilio/vmcontention/sys/kern/subr_trap.c user/attilio/vmcontention/sys/kern/subr_turnstile.c user/attilio/vmcontention/sys/kern/sys_capability.c user/attilio/vmcontention/sys/kern/sys_pipe.c user/attilio/vmcontention/sys/kern/vfs_bio.c user/attilio/vmcontention/sys/kern/vfs_cluster.c user/attilio/vmcontention/sys/kern/vfs_export.c user/attilio/vmcontention/sys/kern/vfs_init.c user/attilio/vmcontention/sys/kern/vfs_lookup.c user/attilio/vmcontention/sys/kern/vfs_syscalls.c user/attilio/vmcontention/sys/modules/acpi/acpi/Makefile user/attilio/vmcontention/sys/modules/mxge/mxge/Makefile user/attilio/vmcontention/sys/net80211/ieee80211_adhoc.c user/attilio/vmcontention/sys/net80211/ieee80211_mesh.c user/attilio/vmcontention/sys/netinet/ip_input.c user/attilio/vmcontention/sys/netinet/tcp_lro.c user/attilio/vmcontention/sys/nfsclient/nfs_krpc.c user/attilio/vmcontention/sys/nfsclient/nfs_vfsops.c user/attilio/vmcontention/sys/opencrypto/xform.c user/attilio/vmcontention/sys/pci/ncr.c user/attilio/vmcontention/sys/powerpc/include/vmparam.h user/attilio/vmcontention/sys/security/audit/audit_bsm.c user/attilio/vmcontention/sys/sys/buf.h user/attilio/vmcontention/sys/sys/filedesc.h user/attilio/vmcontention/sys/sys/mount.h user/attilio/vmcontention/sys/sys/namei.h user/attilio/vmcontention/sys/sys/protosw.h user/attilio/vmcontention/sys/sys/signalvar.h user/attilio/vmcontention/sys/sys/systm.h user/attilio/vmcontention/sys/tools/vnode_if.awk user/attilio/vmcontention/sys/ufs/ffs/ffs_alloc.c user/attilio/vmcontention/sys/vm/vm_kern.c user/attilio/vmcontention/sys/x86/isa/atrtc.c user/attilio/vmcontention/sys/x86/isa/clock.c user/attilio/vmcontention/tools/tools/ath/athalq/Makefile user/attilio/vmcontention/tools/tools/ath/athalq/ar5416_ds.c user/attilio/vmcontention/tools/tools/ath/athalq/main.c user/attilio/vmcontention/tools/tools/netmap/Makefile user/attilio/vmcontention/tools/tools/netmap/bridge.c user/attilio/vmcontention/tools/tools/netmap/pcap.c user/attilio/vmcontention/tools/tools/netmap/pkt-gen.c user/attilio/vmcontention/usr.bin/dtc/input_buffer.cc user/attilio/vmcontention/usr.bin/grep/regex/tre-fastmatch.c user/attilio/vmcontention/usr.bin/keylogin/keylogin.c user/attilio/vmcontention/usr.bin/mail/util.c user/attilio/vmcontention/usr.bin/netstat/inet.c user/attilio/vmcontention/usr.bin/netstat/inet6.c user/attilio/vmcontention/usr.bin/netstat/main.c user/attilio/vmcontention/usr.bin/netstat/netisr.c user/attilio/vmcontention/usr.bin/netstat/sctp.c user/attilio/vmcontention/usr.bin/netstat/unix.c user/attilio/vmcontention/usr.bin/systat/ifcmds.c user/attilio/vmcontention/usr.bin/systat/ifstat.c user/attilio/vmcontention/usr.bin/systat/main.c user/attilio/vmcontention/usr.bin/systat/systat.1 user/attilio/vmcontention/usr.bin/vacation/Makefile user/attilio/vmcontention/usr.sbin/acpi/acpidb/Makefile user/attilio/vmcontention/usr.sbin/acpi/iasl/Makefile user/attilio/vmcontention/usr.sbin/bhyve/mem.c user/attilio/vmcontention/usr.sbin/bhyve/mem.h user/attilio/vmcontention/usr.sbin/bhyve/pci_emul.c user/attilio/vmcontention/usr.sbin/bhyve/pci_emul.h user/attilio/vmcontention/usr.sbin/bhyve/pci_hostbridge.c user/attilio/vmcontention/usr.sbin/extattr/rmextattr.c user/attilio/vmcontention/usr.sbin/makefs/makefs.8 user/attilio/vmcontention/usr.sbin/makefs/makefs.c user/attilio/vmcontention/usr.sbin/makefs/makefs.h user/attilio/vmcontention/usr.sbin/makefs/mtree.c user/attilio/vmcontention/usr.sbin/makefs/walk.c user/attilio/vmcontention/usr.sbin/mountd/mountd.c user/attilio/vmcontention/usr.sbin/pkg/pkg.c user/attilio/vmcontention/usr.sbin/sendmail/Makefile Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/contrib/binutils/ (props changed) user/attilio/vmcontention/contrib/ldns/ (props changed) user/attilio/vmcontention/contrib/llvm/ (props changed) user/attilio/vmcontention/contrib/llvm/tools/clang/ (props changed) user/attilio/vmcontention/contrib/openbsm/ (props changed) user/attilio/vmcontention/contrib/sendmail/ (props changed) user/attilio/vmcontention/contrib/wpa/ (props changed) user/attilio/vmcontention/crypto/heimdal/ (props changed) user/attilio/vmcontention/gnu/lib/ (props changed) user/attilio/vmcontention/gnu/usr.bin/gdb/ (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/share/man/man4/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/boot/ (props changed) user/attilio/vmcontention/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/sys/conf/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/common/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/include/ (props changed) user/attilio/vmcontention/usr.sbin/bhyve/ (props changed) Modified: user/attilio/vmcontention/bin/sh/eval.c ============================================================================== --- user/attilio/vmcontention/bin/sh/eval.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/bin/sh/eval.c Sun Feb 24 16:50:53 2013 (r247225) @@ -174,6 +174,7 @@ evalstring(char *s, int flags) any = 1; } popstackmark(&smark); + setstackmark(&smark); } popfile(); popstackmark(&smark); @@ -296,10 +297,11 @@ evaltree(union node *n, int flags) } n = next; popstackmark(&smark); + setstackmark(&smark); } while (n != NULL); out: popstackmark(&smark); - if (pendingsigs) + if (pendingsig) dotrap(); if (eflag && exitstatus != 0 && do_etest) exitshell(exitstatus); Modified: user/attilio/vmcontention/bin/sh/jobs.c ============================================================================== --- user/attilio/vmcontention/bin/sh/jobs.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/bin/sh/jobs.c Sun Feb 24 16:50:53 2013 (r247225) @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv) } while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1); in_waitcmd--; - return 0; + return pendingsig + 128; } Modified: user/attilio/vmcontention/bin/sh/main.c ============================================================================== --- user/attilio/vmcontention/bin/sh/main.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/bin/sh/main.c Sun Feb 24 16:50:53 2013 (r247225) @@ -196,7 +196,7 @@ cmdloop(int top) TRACE(("cmdloop(%d) called\n", top)); setstackmark(&smark); for (;;) { - if (pendingsigs) + if (pendingsig) dotrap(); inter = 0; if (iflag && top) { Modified: user/attilio/vmcontention/bin/sh/trap.c ============================================================================== --- user/attilio/vmcontention/bin/sh/trap.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/bin/sh/trap.c Sun Feb 24 16:50:53 2013 (r247225) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); MKINIT char sigmode[NSIG]; /* current value of signal */ -int pendingsigs; /* indicates some signal received */ +volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -388,22 +388,25 @@ onsig(int signo) return; } - if (signo != SIGCHLD || !ignore_sigchld) - gotsig[signo] = 1; - pendingsigs++; - /* If we are currently in a wait builtin, prepare to break it */ - if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) - breakwaitcmd = 1; - /* - * If a trap is set, not ignored and not the null command, we need - * to make sure traps are executed even when a child blocks signals. - */ - if (Tflag && - trap[signo] != NULL && - ! (trap[signo][0] == '\0') && - ! (trap[signo][0] == ':' && trap[signo][1] == '\0')) + if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) { breakwaitcmd = 1; + pendingsig = signo; + } + + if (trap[signo] != NULL && trap[signo][0] != '\0' && + (signo != SIGCHLD || !ignore_sigchld)) { + gotsig[signo] = 1; + pendingsig = signo; + + /* + * If a trap is set, not ignored and not the null command, we + * need to make sure traps are executed even when a child + * blocks signals. + */ + if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0')) + breakwaitcmd = 1; + } #ifndef NO_HISTORY if (signo == SIGWINCH) @@ -424,7 +427,7 @@ dotrap(void) in_dotrap++; for (;;) { - pendingsigs = 0; + pendingsig = 0; for (i = 1; i < NSIG; i++) { if (gotsig[i]) { gotsig[i] = 0; Modified: user/attilio/vmcontention/bin/sh/trap.h ============================================================================== --- user/attilio/vmcontention/bin/sh/trap.h Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/bin/sh/trap.h Sun Feb 24 16:50:53 2013 (r247225) @@ -33,7 +33,7 @@ * $FreeBSD$ */ -extern int pendingsigs; +extern volatile sig_atomic_t pendingsig; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Sun Feb 24 16:50:53 2013 (r247225) @@ -195,6 +195,13 @@ fatal(const char *fmt, ...) verror(fmt, ap); va_end(ap); + /* + * Close the DTrace handle to ensure that any controlled processes are + * correctly restored and continued. + */ + if (g_dtp) + dtrace_close(g_dtp); + exit(E_ERROR); } Modified: user/attilio/vmcontention/contrib/binutils/gas/config/tc-i386.c ============================================================================== --- user/attilio/vmcontention/contrib/binutils/gas/config/tc-i386.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/binutils/gas/config/tc-i386.c Sun Feb 24 16:50:53 2013 (r247225) @@ -3981,7 +3981,7 @@ output_insn (void) SSE4 instructions have 3 bytes. We may use one more higher byte to specify a prefix the instruction requires. Exclude instructions which are in both SSE4 and ABM. */ - if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4)) != 0 + if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4 | CpuAES | CpuPCLMUL)) != 0 && (i.tm.cpu_flags & CpuABM) == 0) { if (i.tm.base_opcode & 0xff000000) @@ -4033,7 +4033,7 @@ output_insn (void) } else { - if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4)) != 0 + if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4 | CpuAES | CpuPCLMUL)) != 0 && (i.tm.cpu_flags & CpuABM) == 0) { p = frag_more (3); Modified: user/attilio/vmcontention/contrib/binutils/opcodes/i386-dis.c ============================================================================== --- user/attilio/vmcontention/contrib/binutils/opcodes/i386-dis.c Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/binutils/opcodes/i386-dis.c Sun Feb 24 16:50:53 2013 (r247225) @@ -543,6 +543,13 @@ fetch_data (struct disassemble_info *inf #define PREGRP97 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } } #define PREGRP98 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 98 } } #define PREGRP99 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 99 } } +#define PREGRP100 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 100 } } +#define PREGRP101 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 101 } } +#define PREGRP102 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 102 } } +#define PREGRP103 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 103 } } +#define PREGRP104 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 104 } } +#define PREGRP105 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 105 } } +#define PREGRP106 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 106 } } #define X86_64_0 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } } @@ -1319,7 +1326,7 @@ static const unsigned char threebyte_0x3 /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ - /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, /* df */ /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ /* ------------------------------- */ @@ -1382,7 +1389,7 @@ static const unsigned char threebyte_0x3 /* 10 */ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* 1f */ /* 20 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ - /* 40 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 40 */ 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ /* 60 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ @@ -1391,7 +1398,7 @@ static const unsigned char threebyte_0x3 /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ - /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* df */ /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ /* ------------------------------- */ @@ -2605,6 +2612,62 @@ static const struct dis386 prefix_user_t { "invvpid",{ Gm, Mo } }, { "(bad)", { XX } }, }, + + /* PREGRP100 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesimc", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP101 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesenc",{ XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP102 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesenclast", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP103 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesdec", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP104 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesdeclast", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP105 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aeskeygenassist", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP106 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pclmulqdq", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, }; static const struct dis386 x86_64_table[][2] = { @@ -2876,11 +2939,11 @@ static const struct dis386 three_byte_ta { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP100 }, + { PREGRP101 }, + { PREGRP102 }, + { PREGRP103 }, + { PREGRP104 }, /* e0 */ { "(bad)", { XX } }, { "(bad)", { XX } }, @@ -2997,7 +3060,7 @@ static const struct dis386 three_byte_ta { PREGRP84 }, { PREGRP85 }, { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP106 }, { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, @@ -3171,7 +3234,7 @@ static const struct dis386 three_byte_ta { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP105 }, /* e0 */ { "(bad)", { XX } }, { "(bad)", { XX } }, Modified: user/attilio/vmcontention/contrib/binutils/opcodes/i386-opc.h ============================================================================== --- user/attilio/vmcontention/contrib/binutils/opcodes/i386-opc.h Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/binutils/opcodes/i386-opc.h Sun Feb 24 16:50:53 2013 (r247225) @@ -72,19 +72,22 @@ typedef struct template #define CpuSSE4_1 0x400000 /* SSE4.1 Instructions required */ #define CpuSSE4_2 0x800000 /* SSE4.2 Instructions required */ #define CpuXSAVE 0x1000000 /* XSAVE Instructions required */ - -/* SSE4.1/4.2 Instructions required */ -#define CpuSSE4 (CpuSSE4_1|CpuSSE4_2) +#define CpuAES 0x2000000 /* AES Instructions required */ /* These flags are set by gas depending on the flag_code. */ #define Cpu64 0x4000000 /* 64bit support required */ #define CpuNo64 0x8000000 /* Not supported in the 64bit mode */ +#define CpuPCLMUL 0x10000000 /* Carry-less Multiplication extensions */ + +/* SSE4.1/4.2 Instructions required */ +#define CpuSSE4 (CpuSSE4_1|CpuSSE4_2) + /* The default value for unknown CPUs - enable all features to avoid problems. */ #define CpuUnknownFlags (Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \ |CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuVMX \ |Cpu3dnow|Cpu3dnowA|CpuK6|CpuPadLock|CpuSVME|CpuSSSE3|CpuSSE4_1 \ - |CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE) + |CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE|CpuAES|CpuPCLMUL) /* the bits in opcode_modifier are used to generate the final opcode from the base_opcode. These bits also are used to detect alternate forms of @@ -126,6 +129,8 @@ typedef struct template #define Rex64 0x10000000 /* instruction require Rex64 prefix. */ #define Ugh 0x20000000 /* deprecated fp insn, gets a warning */ +#define NoSuf (No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf) + /* operand_types[i] describes the type of operand i. This is made by OR'ing together all of the possible type masks. (e.g. 'operand_types[i] = Reg|Imm' specifies that operand i can be Modified: user/attilio/vmcontention/contrib/binutils/opcodes/i386-tbl.h ============================================================================== --- user/attilio/vmcontention/contrib/binutils/opcodes/i386-tbl.h Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/binutils/opcodes/i386-tbl.h Sun Feb 24 16:50:53 2013 (r247225) @@ -4319,6 +4319,54 @@ const template i386_optab[] = { "xrstor", 1, 0xfae, 0x5, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S } }, + /* Intel AES extensions */ + {"aesdec", 2, 0x660f38de, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesdeclast", 2, 0x660f38df, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesenc", 2, 0x660f38dc, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesenclast", 2, 0x660f38dd, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesimc", 2, 0x660f38db, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aeskeygenassist", 3, 0x660f3adf, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { Imm8, RegXMM|LLongMem, + RegXMM } }, + + /* Intel Carry-less Multiplication extensions */ + {"pclmulqdq", 3, 0x660f3a44, None, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf, + { Imm8, RegXMM|LLongMem, + RegXMM } }, + {"pclmullqlqdq", 2, 0x660f3a44, 0x0, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmulhqlqdq", 2, 0x660f3a44, 0x1, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmullqhqdq", 2, 0x660f3a44, 0x10, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmulhqhqdq", 2, 0x660f3a44, 0x11, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + { NULL, 0, 0, 0, 0, 0, { 0 } } }; Modified: user/attilio/vmcontention/contrib/ldns/Changelog ============================================================================== --- user/attilio/vmcontention/contrib/ldns/Changelog Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/ldns/Changelog Sun Feb 24 16:50:53 2013 (r247225) @@ -1,3 +1,51 @@ +1.6.16 2012-11-13 + * Fix Makefile to build pyldns with BSD make + * Fix typo in exporting b32_* symbols to make pyldns load again + * Allow leaving the RR owner name empty in ldns-testns datafiles. + * Fix fail to create NSEC3 bitmap for empty non-terminal (bug + introduced in 1.6.14). + +1.6.15 2012-10-25 + * Remove LDNS_STATUS_EXISTS_ERR from ldns/error.h to make ldns + binary compatible with earlier releases again. + +1.6.14 2012-10-23 + * DANE support (RFC6698), including ldns-dane example tool. + * Configurable default CA certificate repository for ldns-dane with + --with-ca-file=CAFILE and --with-ca-path=CAPATH + * Configurable default trust anchor with --with-trust-anchor=FILE + for drill, ldns-verify-zone and ldns-dane + * bugfix #474: Define socklen_t when undefined (like in Win32) + * bugfix #473: Dead code removal and resource leak fix in drill + * bugfix #471: Let ldns_resolver_push_dnssec_anchor accept DS RR's too. + * Various bugfixes from code reviews from CZ.NIC and Paul Wouters + * ldns-notify TSIG option argument checking + * Let ldns_resolver_nameservers_randomize keep nameservers and rtt's + in sync. + * Let ldns_pkt_push_rr now return false on (memory) errors. + * Make buffer_export comply to documentation and fix buffer2str + * Various improvements and fixes of pyldns from Katel Slany + now documented in their own Changelog. + * bugfix: Make ldns_resolver_pop_nameserver clear the array when + there was only one. + * bugfix #459: Remove ldns_symbols and export symbols based on regex + * bugfix #458: Track all newly created signatures when signing. + * bugfix #454: Only set -g and -O2 CFLAGS when no CFLAGS was given. + * bugfix #457: Memory leak fix for ldns_key_new_frm_algorithm. + * pyldns memory handling fixes and the python3/ldns-signzone.py + examples script contribution from Karel Slany. + * bugfix #450: Base # bytes for P, G and Y (T) on the guaranteed + to be bigger (or equal) P in ldns_key_dsa2bin. + * bugfix #449: Deep free cloned rdf's in ldns_tsig_mac_new. + * bugfix #448: Copy nameserver value (in stead of reference) of the + answering nameserver to the answer packet in ldns_send_buffer, so + the original value may be deep freed with the ldns_resolver struct. + * New -0 option for ldns-read-zone to replace inception, expiration + and signature rdata fields with (null). Thanks Paul Wouters. + * New -p option for ldns-read-zone to prepend-pad SOA serial to take + up ten characters. + * Return error if printing RR fails due to unknown/null RDATA. + 1.6.13 2012-05-21 * New -S option for ldns-verify-zone to chase signatures online. * New -k option for ldns-verify-zone to validate using a trusted key. Modified: user/attilio/vmcontention/contrib/ldns/Makefile.in ============================================================================== --- user/attilio/vmcontention/contrib/ldns/Makefile.in Sun Feb 24 16:41:36 2013 (r247224) +++ user/attilio/vmcontention/contrib/ldns/Makefile.in Sun Feb 24 16:50:53 2013 (r247225) @@ -23,6 +23,7 @@ pyldns_uninst = @PYLDNSUNINST@ pyldnsx_inst = @PYLDNSXINST@ pyldnsx_uninst = @PYLDNSXUNINST@ libtool = @libtool@ +CONFIG_FILES = @CONFIG_FILES@ # override $U variable which is used by autotools for deansification (for # K&R C compilers), but causes problems if $U is defined in the env). @@ -41,6 +42,7 @@ PYTHON_X_CFLAGS = @PYTHON_X_CFLAGS@ LIBSSL_CPPFLAGS = @LIBSSL_CPPFLAGS@ LIBSSL_LDFLAGS = @LIBSSL_LDFLAGS@ LIBSSL_LIBS = @LIBSSL_LIBS@ +LIBSSL_SSL_LIBS = @LIBSSL_SSL_LIBS@ LIBPCAP_LIBS = @LIBPCAP_LIBS@ RUNTIME_PATH = @RUNTIME_PATH@ LIBTOOL = $(libtool) --tag=CC --quiet @@ -60,12 +62,12 @@ DEPFLAG = @DEPFLAG@ INSTALL = $(srcdir)/install-sh LIBLOBJS = $(LIBOBJS:.o=.lo) -LDNS_LOBJS = buffer.lo dname.lo dnssec.lo dnssec_sign.lo dnssec_verify.lo dnssec_zone.lo duration.lo error.lo higher.lo host2str.lo host2wire.lo keys.lo net.lo packet.lo parse.lo rbtree.lo rdata.lo resolver.lo rr.lo rr_functions.lo sha1.lo sha2.lo str2host.lo tsig.lo update.lo util.lo wire2host.lo zone.lo +LDNS_LOBJS = buffer.lo dane.lo dname.lo dnssec.lo dnssec_sign.lo dnssec_verify.lo dnssec_zone.lo duration.lo error.lo higher.lo host2str.lo host2wire.lo keys.lo net.lo packet.lo parse.lo rbtree.lo rdata.lo resolver.lo rr.lo rr_functions.lo sha1.lo sha2.lo str2host.lo tsig.lo update.lo util.lo wire2host.lo zone.lo LDNS_LOBJS_EX = ^linktest\.c$$ LDNS_ALL_LOBJS = $(LDNS_LOBJS) $(LIBLOBJS) LIB = libldns.la -LDNS_HEADERS = buffer.h dname.h dnssec.h dnssec_sign.h dnssec_verify.h dnssec_zone.h duration.h error.h higher.h host2str.h host2wire.h keys.h ldns.h packet.h parse.h rbtree.h rdata.h resolver.h rr_functions.h rr.h sha1.h sha2.h str2host.h tsig.h update.h wire2host.h zone.h +LDNS_HEADERS = buffer.h dane.h dname.h dnssec.h dnssec_sign.h dnssec_verify.h dnssec_zone.h duration.h error.h higher.h host2str.h host2wire.h keys.h ldns.h packet.h parse.h rbtree.h rdata.h resolver.h rr_functions.h rr.h sha1.h sha2.h str2host.h tsig.h update.h wire2host.h zone.h LDNS_HEADERS_EX = ^config\.h|common\.h|util\.h|net\.h$$ LDNS_HEADERS_GEN= common.h util.h net.h @@ -73,14 +75,16 @@ PYLDNS_I_FILES = $(pywrapdir)/file_py3.i DRILL_LOBJS = drill/chasetrace.lo drill/dnssec.lo drill/drill.lo drill/drill_util.lo drill/error.lo drill/root.lo drill/securetrace.lo drill/work.lo -EXAMPLE_LOBJS = examples/ldns-chaos.lo examples/ldns-compare-zones.lo examples/ldnsd.lo examples/ldns-dpa.lo examples/ldns-gen-zone.lo examples/ldns-key2ds.lo examples/ldns-keyfetcher.lo examples/ldns-keygen.lo examples/ldns-mx.lo examples/ldns-notify.lo examples/ldns-nsec3-hash.lo examples/ldns-read-zone.lo examples/ldns-resolver.lo examples/ldns-revoke.lo examples/ldns-rrsig.lo examples/ldns-signzone.lo examples/ldns-test-edns.lo examples/ldns-testns.lo examples/ldns-testpkts.lo examples/ldns-update.lo examples/ldns-verify-zone.lo examples/ldns-version.lo examples/ldns-walk.lo examples/ldns-zcat.lo examples/ldns-zsplit.lo +EXAMPLE_LOBJS = examples/ldns-chaos.lo examples/ldns-compare-zones.lo examples/ldns-dane.lo examples/ldnsd.lo examples/ldns-dpa.lo examples/ldns-gen-zone.lo examples/ldns-key2ds.lo examples/ldns-keyfetcher.lo examples/ldns-keygen.lo examples/ldns-mx.lo examples/ldns-notify.lo examples/ldns-nsec3-hash.lo examples/ldns-read-zone.lo examples/ldns-resolver.lo examples/ldns-revoke.lo examples/ldns-rrsig.lo examples/ldns-signzone.lo examples/ldns-test-edns.lo examples/ldns-testns.lo examples/ldns-testpkts.lo examples/ldns-update.lo examples/ldns-verify-zone.lo examples/ldns-version.lo examples/ldns-walk.lo examples/ldns-zcat.lo examples/ldns-zsplit.lo EXAMPLE_PROGS = examples/ldns-chaos examples/ldns-compare-zones examples/ldnsd examples/ldns-gen-zone examples/ldns-key2ds examples/ldns-keyfetcher examples/ldns-keygen examples/ldns-mx examples/ldns-notify examples/ldns-read-zone examples/ldns-resolver examples/ldns-rrsig examples/ldns-test-edns examples/ldns-update examples/ldns-version examples/ldns-walk examples/ldns-zcat examples/ldns-zsplit -EX_PROGS_BASENM = ldns-chaos ldns-compare-zones ldnsd ldns-dpa ldns-gen-zone ldns-key2ds ldns-keyfetcher ldns-keygen ldns-mx ldns-notify ldns-nsec3-hash ldns-read-zone ldns-resolver ldns-revoke ldns-rrsig ldns-signzone ldns-test-edns ldns-testns ldns-testpkts ldns-update ldns-verify-zone ldns-version ldns-walk ldns-zcat ldns-zsplit -EXAMPLE_PROGS_EX= ^examples/ldns-testpkts\.c|examples/ldns-testns\.c|examples/ldns-dpa\.c|examples/ldns-nsec3-hash\.c|examples/ldns-revoke\.c|examples/ldns-signzone\.c|examples/ldns-verify-zone\.c$$ +EX_PROGS_BASENM = ldns-chaos ldns-compare-zones ldns-dane ldnsd ldns-dpa ldns-gen-zone ldns-key2ds ldns-keyfetcher ldns-keygen ldns-mx ldns-notify ldns-nsec3-hash ldns-read-zone ldns-resolver ldns-revoke ldns-rrsig ldns-signzone ldns-test-edns ldns-testns ldns-testpkts ldns-update ldns-verify-zone ldns-version ldns-walk ldns-zcat ldns-zsplit +EXAMPLE_PROGS_EX= ^examples/ldns-testpkts\.c|examples/ldns-testns\.c|examples/ldns-dane\.c|examples/ldns-dpa\.c|examples/ldns-nsec3-hash\.c|examples/ldns-revoke\.c|examples/ldns-signzone\.c|examples/ldns-verify-zone\.c$$ TESTNS = examples/ldns-testns TESTNS_LOBJS = examples/ldns-testns.lo examples/ldns-testpkts.lo LDNS_DPA = examples/ldns-dpa LDNS_DPA_LOBJS = examples/ldns-dpa.lo +LDNS_DANE = examples/ldns-dane +LDNS_DANE_LOBJS = examples/ldns-dane.lo EX_SSL_PROGS = examples/ldns-nsec3-hash examples/ldns-revoke examples/ldns-signzone examples/ldns-verify-zone EX_SSL_LOBJS = examples/ldns-nsec3-hash.lo examples/ldns-revoke.lo examples/ldns-signzone.lo examples/ldns-verify-zone.lo @@ -140,7 +144,7 @@ install-drill: drill/drill $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 $(LIBTOOL) --mode=install cp drill/drill $(DESTDIR)$(bindir) - $(INSTALL) -m 644 $(srcdir)/drill/drill.1 $(DESTDIR)$(mandir)/man1/drill.1 + $(INSTALL) -m 644 drill/drill.1 $(DESTDIR)$(mandir)/man1/drill.1 uninstall-drill: rm -f $(DESTDIR)$(bindir)/drill $(DESTDIR)$(mandir)/man1/drill.1 @@ -150,7 +154,7 @@ uninstall-drill: clean-drill: $(LIBTOOL) --mode clean rm -f $(DRILL_LOBJS) drill/drill -examples: no-examples-config-h $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) +examples: no-examples-config-h $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) no-examples-config-h: @if test -e $(srcdir)/examples/config.h -o -e examples/config.h ; \ then echo "A config.h was detected in the examples subdirectory." ; \ @@ -169,16 +173,23 @@ $(LDNS_DPA): $(LINK_EXE) $(LDNS_DPA_LOBJS) $(LIBS) $(LIBPCAP_LIBS) -lldns \ -o $(LDNS_DPA) +$(LDNS_DANE): + $(LINK_EXE) $(LDNS_DANE_LOBJS) $(LIBS) $(LIBSSL_SSL_LIBS) -lldns \ + -o $(LDNS_DANE) + $(EX_SSL_PROGS): $(LINK_EXE) $@.lo $(LIBS) $(LIBSSL_LIBS) -lldns -o $@ -install-examples: $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) +install-examples: $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 - for p in $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) ; do \ + for p in $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) ; do \ $(LIBTOOL) --mode=install cp $$p $(DESTDIR)$(bindir) ; \ - $(INSTALL) -m 644 $(srcdir)/$$p.1 $(DESTDIR)$(mandir)/man1 ; \ + if test -f $$p.1 ; \ + then $(INSTALL) -m 644 $$p.1 $(DESTDIR)$(mandir)/man1 ; \ + else $(INSTALL) -m 644 $(srcdir)/$$p.1 $(DESTDIR)$(mandir)/man1 ; \ + fi ; \ done uninstall-examples: @@ -190,7 +201,7 @@ uninstall-examples: clean-examples: $(LIBTOOL) --mode clean rm -f $(EXAMPLE_PROGS) - $(LIBTOOL) --mode clean rm -f $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) + $(LIBTOOL) --mode clean rm -f $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) $(LIBTOOL) --mode clean rm -f $(EXAMPLE_LOBJS) linktest: $(srcdir)/linktest.c libldns.la @@ -201,7 +212,7 @@ lib: libldns.la lib-export-all: libldns.la-export-all libldns.la: $(LDNS_ALL_LOBJS) - $(LINK_LIB) $(LIBSSL_LDFLAGS) $(LIBSSL_LIBS) --export-symbols $(srcdir)/ldns_symbols.def -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) + $(LINK_LIB) $(LIBSSL_LDFLAGS) $(LIBSSL_LIBS) -export-symbols-regex '^(ldns_|b32_[pn]to[pn]|mktime_from_utc|qsort_rr_compare_nsec3)' -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) libldns.la-export-all: $(LDNS_ALL_LOBJS) $(LINK_LIB) -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) @@ -231,10 +242,10 @@ $(pywrapdir)/ldns_wrapper.c: $(PYLDNS_I_ $(swig) $(swigpy_flags) -o $@ $(CPPFLAGS) $(PYTHON_CPPFLAGS) $(pywrapdir)/ldns.i ldns_wrapper.lo: $(pywrapdir)/ldns_wrapper.c ldns/config.h - $(COMP_LIB) -I./include/ldns $(PYTHON_CPPFLAGS) $(PYTHON_X_CFLAGS) -c $< -o $@ + $(COMP_LIB) -I./include/ldns $(PYTHON_CPPFLAGS) $(PYTHON_X_CFLAGS) -c $(pywrapdir)/ldns_wrapper.c -o $@ _ldns.la: ldns_wrapper.lo libldns.la - $(LIBTOOL) --tag=CC --mode=link $(CC) $(CFLAGS) $(PYTHON_CFLAGS) $(LDFLAGS) $(PYTHON_LDFLAGS) -module -version-number $(version_info) -no-undefined -o $@ $< -rpath $(python_site) -L. -L.libs -lldns $(LIBS) + $(LIBTOOL) --tag=CC --mode=link $(CC) $(CFLAGS) $(PYTHON_CFLAGS) $(LDFLAGS) $(PYTHON_LDFLAGS) -module -version-number $(version_info) -no-undefined -o $@ ldns_wrapper.lo -rpath $(python_site) -L. -L.libs -lldns $(LIBS) install: install-h install-lib @INSTALL_CONFIG@ install-manpages $(pyldns_inst) $(pyldnsx_inst) @INSTALL_DRILL@ @INSTALL_EXAMPLES@ @@ -325,13 +336,8 @@ clean: @CLEAN_DRILL@ @CLEAN_EXAMPLES@ cl realclean: clean docclean rm -f config.status rm -f config.log - rm -f Makefile + rm -f $(CONFIG_FILES) rm -f ldns/config.h - rm -f ldns/util.h - rm -f ldns/common.h - rm -f ldns/net.h - rm -f packaging/ldns-config - rm -f packaging/libldns.pc if test -d packaging -a ! -f packaging/ldns-config.in ; then \ rmdir packaging || : ; fi rm -f libtool @@ -363,7 +369,8 @@ distclean: realclean ## No need for changes here -lint: @LINT_DRILL@ @LINT_EXAMPLES@ +lint: lint-lib @LINT_DRILL@ @LINT_EXAMPLES@ +lint-lib: for i in $(srcdir)/*.c; do \ $(LINT) $(LINTFLAGS) -I. -I$(srcdir) $(srcdir)/$$i ; \ if test $$? -ne 0 ; then exit 1 ; fi ; \ @@ -449,7 +456,7 @@ depend: >> $(DEPEND_TMP) ;\ done; \ done - for p in $(EXAMPLE_PROGS) $(LDNS_DPA) $(EX_SSL_PROGS); do \ + for p in $(EXAMPLE_PROGS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS); do \ echo "$$p: $$p.lo $$p.o \$$(LIB)" >> $(DEPEND_TMP) ; done echo "$(TESTNS): `for o in $(TESTNS_LOBJS) ; do \ echo -n "$$o $${o%lo}o " ; done` \$$(LIB)" \ @@ -468,610 +475,515 @@ depend: # Dependencies -buffer.lo buffer.o: $(srcdir)/buffer.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dname.lo dname.o: $(srcdir)/dname.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_sign.lo dnssec_sign.o: $(srcdir)/dnssec_sign.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_verify.lo dnssec_verify.o: $(srcdir)/dnssec_verify.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_zone.lo dnssec_zone.o: $(srcdir)/dnssec_zone.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -duration.lo duration.o: $(srcdir)/duration.c \ - $(srcdir)/ldns/duration.h -error.lo error.o: $(srcdir)/error.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -higher.lo higher.o: $(srcdir)/higher.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -host2str.lo host2str.o: $(srcdir)/host2str.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -host2wire.lo host2wire.o: $(srcdir)/host2wire.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -keys.lo keys.o: $(srcdir)/keys.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -linktest.lo linktest.o: $(srcdir)/linktest.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -net.lo net.o: $(srcdir)/net.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -packet.lo packet.o: $(srcdir)/packet.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -parse.lo parse.o: $(srcdir)/parse.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rbtree.lo rbtree.o: $(srcdir)/rbtree.c \ - $(srcdir)/ldns/rbtree.h \ - -rdata.lo rdata.o: $(srcdir)/rdata.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -resolver.lo resolver.o: $(srcdir)/resolver.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rr.lo rr.o: $(srcdir)/rr.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rr_functions.lo rr_functions.o: $(srcdir)/rr_functions.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -sha1.lo sha1.o: $(srcdir)/sha1.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -sha2.lo sha2.o: $(srcdir)/sha2.c $(srcdir)/ldns/sha2.h -str2host.lo str2host.o: $(srcdir)/str2host.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -tsig.lo tsig.o: $(srcdir)/tsig.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -update.lo update.o: $(srcdir)/update.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -util.lo util.o: $(srcdir)/util.c $(srcdir)/ldns/rdata.h \ - $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/rr.h $(srcdir)/ldns/buffer.h -wire2host.lo wire2host.o: $(srcdir)/wire2host.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -zone.lo zone.o: $(srcdir)/zone.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -compat/b32_ntop.lo compat/b32_ntop.o: $(srcdir)/compat/b32_ntop.c -compat/b32_pton.lo compat/b32_pton.o: $(srcdir)/compat/b32_pton.c -compat/b64_ntop.lo compat/b64_ntop.o: $(srcdir)/compat/b64_ntop.c -compat/b64_pton.lo compat/b64_pton.o: $(srcdir)/compat/b64_pton.c -compat/calloc.lo compat/calloc.o: $(srcdir)/compat/calloc.c -compat/ctime_r.lo compat/ctime_r.o: $(srcdir)/compat/ctime_r.c -compat/fake-rfc2553.lo compat/fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c \ +buffer.lo buffer.o: $(srcdir)/buffer.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dane.lo dane.o: $(srcdir)/dane.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dname.lo dname.o: $(srcdir)/dname.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec.lo dnssec.o: $(srcdir)/dnssec.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_sign.lo dnssec_sign.o: $(srcdir)/dnssec_sign.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_verify.lo dnssec_verify.o: $(srcdir)/dnssec_verify.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_zone.lo dnssec_zone.o: $(srcdir)/dnssec_zone.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +duration.lo duration.o: $(srcdir)/duration.c ldns/config.h $(srcdir)/ldns/duration.h +error.lo error.o: $(srcdir)/error.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +higher.lo higher.o: $(srcdir)/higher.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +host2str.lo host2str.o: $(srcdir)/host2str.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +host2wire.lo host2wire.o: $(srcdir)/host2wire.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +keys.lo keys.o: $(srcdir)/keys.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +linktest.lo linktest.o: $(srcdir)/linktest.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +net.lo net.o: $(srcdir)/net.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +packet.lo packet.o: $(srcdir)/packet.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +parse.lo parse.o: $(srcdir)/parse.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +rbtree.lo rbtree.o: $(srcdir)/rbtree.c ldns/config.h $(srcdir)/ldns/rbtree.h ldns/util.h ldns/common.h +rdata.lo rdata.o: $(srcdir)/rdata.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 17:11:14 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 10C369BA; Sun, 24 Feb 2013 17:11:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id F1DC6A06; Sun, 24 Feb 2013 17:11:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OHBDH3015820; Sun, 24 Feb 2013 17:11:13 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OHBBYj015803; Sun, 24 Feb 2013 17:11:11 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241711.r1OHBBYj015803@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 17:11:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247226 - in user/attilio/vmc-playground: bin/sh cddl/contrib/opensolaris/cmd/dtrace contrib/binutils/gas/config contrib/binutils/opcodes contrib/ldns contrib/ldns/drill contrib/ldns/ld... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 17:11:14 -0000 Author: attilio Date: Sun Feb 24 17:11:10 2013 New Revision: 247226 URL: http://svnweb.freebsd.org/changeset/base/247226 Log: Merge from vmcontention Added: user/attilio/vmc-playground/contrib/ldns/dane.c - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/dane.c user/attilio/vmc-playground/contrib/ldns/drill/drill.1.in - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/drill/drill.1.in user/attilio/vmc-playground/contrib/ldns/ldns/common.h - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/ldns/common.h user/attilio/vmc-playground/contrib/ldns/ldns/config.h - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/ldns/config.h user/attilio/vmc-playground/contrib/ldns/ldns/dane.h - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/ldns/dane.h user/attilio/vmc-playground/contrib/ldns/ldns/net.h - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/ldns/net.h user/attilio/vmc-playground/contrib/ldns/ldns/util.h - copied unchanged from r247225, user/attilio/vmcontention/contrib/ldns/ldns/util.h user/attilio/vmc-playground/lib/libstand/strtoul.c - copied unchanged from r247225, user/attilio/vmcontention/lib/libstand/strtoul.c user/attilio/vmc-playground/sbin/hastd/refcnt.h - copied unchanged from r247225, user/attilio/vmcontention/sbin/hastd/refcnt.h user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslprepkg.c - copied unchanged from r247225, user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslprepkg.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nsconvert.c - copied unchanged from r247225, user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/attilio/vmc-playground/sys/x86/include/elf.h - copied unchanged from r247225, user/attilio/vmcontention/sys/x86/include/elf.h user/attilio/vmc-playground/sys/x86/include/frame.h - copied unchanged from r247225, user/attilio/vmcontention/sys/x86/include/frame.h user/attilio/vmc-playground/sys/x86/include/sigframe.h - copied unchanged from r247225, user/attilio/vmcontention/sys/x86/include/sigframe.h user/attilio/vmc-playground/sys/x86/include/signal.h - copied unchanged from r247225, user/attilio/vmcontention/sys/x86/include/signal.h user/attilio/vmc-playground/sys/x86/include/ucontext.h - copied unchanged from r247225, user/attilio/vmcontention/sys/x86/include/ucontext.h user/attilio/vmc-playground/tools/regression/bin/sh/builtins/read6.0 - copied unchanged from r247225, user/attilio/vmcontention/tools/regression/bin/sh/builtins/read6.0 user/attilio/vmc-playground/tools/regression/bin/sh/builtins/wait4.0 - copied unchanged from r247225, user/attilio/vmcontention/tools/regression/bin/sh/builtins/wait4.0 user/attilio/vmc-playground/tools/regression/bin/sh/builtins/wait5.0 - copied unchanged from r247225, user/attilio/vmcontention/tools/regression/bin/sh/builtins/wait5.0 user/attilio/vmc-playground/tools/tools/ath/athalq/tdma.c - copied unchanged from r247225, user/attilio/vmcontention/tools/tools/ath/athalq/tdma.c user/attilio/vmc-playground/tools/tools/ath/athalq/tdma.h - copied unchanged from r247225, user/attilio/vmcontention/tools/tools/ath/athalq/tdma.h user/attilio/vmc-playground/tools/tools/netmap/nm_util.c - copied unchanged from r247225, user/attilio/vmcontention/tools/tools/netmap/nm_util.c user/attilio/vmc-playground/tools/tools/netmap/nm_util.h - copied unchanged from r247225, user/attilio/vmcontention/tools/tools/netmap/nm_util.h Deleted: user/attilio/vmc-playground/contrib/ldns/drill/drill.1 user/attilio/vmc-playground/contrib/ldns/ldns_symbols.def user/attilio/vmc-playground/sys/dev/mxge/mxge_lro.c Modified: user/attilio/vmc-playground/bin/sh/eval.c user/attilio/vmc-playground/bin/sh/jobs.c user/attilio/vmc-playground/bin/sh/main.c user/attilio/vmc-playground/bin/sh/trap.c user/attilio/vmc-playground/bin/sh/trap.h user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c user/attilio/vmc-playground/contrib/binutils/gas/config/tc-i386.c user/attilio/vmc-playground/contrib/binutils/opcodes/i386-dis.c user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.h user/attilio/vmc-playground/contrib/binutils/opcodes/i386-tbl.h user/attilio/vmc-playground/contrib/ldns/Changelog user/attilio/vmc-playground/contrib/ldns/Makefile.in user/attilio/vmc-playground/contrib/ldns/buffer.c user/attilio/vmc-playground/contrib/ldns/configure user/attilio/vmc-playground/contrib/ldns/configure.ac user/attilio/vmc-playground/contrib/ldns/dname.c user/attilio/vmc-playground/contrib/ldns/dnssec.c user/attilio/vmc-playground/contrib/ldns/dnssec_sign.c user/attilio/vmc-playground/contrib/ldns/dnssec_verify.c user/attilio/vmc-playground/contrib/ldns/dnssec_zone.c user/attilio/vmc-playground/contrib/ldns/drill/Makefile.in user/attilio/vmc-playground/contrib/ldns/drill/chasetrace.c user/attilio/vmc-playground/contrib/ldns/drill/config.h.in user/attilio/vmc-playground/contrib/ldns/drill/configure user/attilio/vmc-playground/contrib/ldns/drill/configure.ac user/attilio/vmc-playground/contrib/ldns/drill/dnssec.c user/attilio/vmc-playground/contrib/ldns/drill/drill.c user/attilio/vmc-playground/contrib/ldns/drill/drill.h user/attilio/vmc-playground/contrib/ldns/drill/drill_util.c user/attilio/vmc-playground/contrib/ldns/drill/drill_util.h user/attilio/vmc-playground/contrib/ldns/drill/securetrace.c user/attilio/vmc-playground/contrib/ldns/drill/work.c user/attilio/vmc-playground/contrib/ldns/error.c user/attilio/vmc-playground/contrib/ldns/higher.c user/attilio/vmc-playground/contrib/ldns/host2str.c user/attilio/vmc-playground/contrib/ldns/host2wire.c user/attilio/vmc-playground/contrib/ldns/keys.c user/attilio/vmc-playground/contrib/ldns/ldns/buffer.h user/attilio/vmc-playground/contrib/ldns/ldns/common.h.in user/attilio/vmc-playground/contrib/ldns/ldns/config.h.in user/attilio/vmc-playground/contrib/ldns/ldns/dname.h user/attilio/vmc-playground/contrib/ldns/ldns/dnssec.h user/attilio/vmc-playground/contrib/ldns/ldns/dnssec_verify.h user/attilio/vmc-playground/contrib/ldns/ldns/dnssec_zone.h user/attilio/vmc-playground/contrib/ldns/ldns/error.h user/attilio/vmc-playground/contrib/ldns/ldns/host2str.h user/attilio/vmc-playground/contrib/ldns/ldns/keys.h user/attilio/vmc-playground/contrib/ldns/ldns/ldns.h user/attilio/vmc-playground/contrib/ldns/ldns/rdata.h user/attilio/vmc-playground/contrib/ldns/ldns/resolver.h user/attilio/vmc-playground/contrib/ldns/ldns/rr.h user/attilio/vmc-playground/contrib/ldns/ldns/util.h.in user/attilio/vmc-playground/contrib/ldns/libdns.doxygen user/attilio/vmc-playground/contrib/ldns/net.c user/attilio/vmc-playground/contrib/ldns/packet.c user/attilio/vmc-playground/contrib/ldns/parse.c user/attilio/vmc-playground/contrib/ldns/resolver.c user/attilio/vmc-playground/contrib/ldns/rr.c user/attilio/vmc-playground/contrib/ldns/str2host.c user/attilio/vmc-playground/contrib/ldns/tsig.c user/attilio/vmc-playground/contrib/ldns/util.c user/attilio/vmc-playground/contrib/ldns/zone.c user/attilio/vmc-playground/contrib/llvm/lib/MC/MCParser/AsmParser.cpp user/attilio/vmc-playground/contrib/llvm/lib/Target/X86/X86InstrCompiler.td user/attilio/vmc-playground/contrib/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp user/attilio/vmc-playground/contrib/llvm/tools/clang/lib/Driver/Tools.cpp user/attilio/vmc-playground/contrib/llvm/tools/clang/lib/Driver/Tools.h user/attilio/vmc-playground/contrib/nvi/ex/ex_txt.c user/attilio/vmc-playground/contrib/nvi/vi/v_txt.c user/attilio/vmc-playground/contrib/openbsm/bin/auditdistd/token.l user/attilio/vmc-playground/contrib/opie/opiekey.c user/attilio/vmc-playground/contrib/sendmail/src/milter.c user/attilio/vmc-playground/contrib/wpa/src/crypto/md5-internal.c user/attilio/vmc-playground/crypto/heimdal/kcm/cache.c user/attilio/vmc-playground/etc/rc.resume user/attilio/vmc-playground/gnu/lib/libstdc++/config.h user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/kgdb.1 user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/kgdb.h user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/kthr.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/main.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_amd64.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_arm.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_i386.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_ia64.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_mips.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c user/attilio/vmc-playground/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c user/attilio/vmc-playground/lib/libc/gen/Makefile.inc user/attilio/vmc-playground/lib/libc/gen/sem_new.c user/attilio/vmc-playground/lib/libc/stdio/setbuf.3 user/attilio/vmc-playground/lib/libc/stdlib/bsearch.3 user/attilio/vmc-playground/lib/libc/stdlib/qsort.3 user/attilio/vmc-playground/lib/libc/sys/Makefile.inc user/attilio/vmc-playground/lib/libelf/elf_data.c user/attilio/vmc-playground/lib/libelf/elf_getdata.3 user/attilio/vmc-playground/lib/libelf/elf_update.c user/attilio/vmc-playground/lib/libldns/Makefile user/attilio/vmc-playground/lib/libsm/Makefile user/attilio/vmc-playground/lib/libstand/Makefile user/attilio/vmc-playground/lib/libstand/stand.h user/attilio/vmc-playground/libexec/mail.local/Makefile user/attilio/vmc-playground/libexec/smrsh/Makefile user/attilio/vmc-playground/release/picobsd/bridge/crunch.conf user/attilio/vmc-playground/release/picobsd/qemu/crunch.conf user/attilio/vmc-playground/sbin/devd/devd.conf.5 user/attilio/vmc-playground/sbin/fsck_ffs/dir.c user/attilio/vmc-playground/sbin/fsck_ffs/ea.c user/attilio/vmc-playground/sbin/fsck_ffs/fsck.h user/attilio/vmc-playground/sbin/fsck_ffs/fsutil.c user/attilio/vmc-playground/sbin/fsck_ffs/inode.c user/attilio/vmc-playground/sbin/fsck_ffs/main.c user/attilio/vmc-playground/sbin/fsck_ffs/setup.c user/attilio/vmc-playground/sbin/hastd/hast.conf.5 user/attilio/vmc-playground/sbin/hastd/hast.h user/attilio/vmc-playground/sbin/hastd/hast_proto.c user/attilio/vmc-playground/sbin/hastd/hastd.c user/attilio/vmc-playground/sbin/hastd/parse.y user/attilio/vmc-playground/sbin/hastd/primary.c user/attilio/vmc-playground/sbin/hastd/secondary.c user/attilio/vmc-playground/share/man/man4/carp.4 user/attilio/vmc-playground/share/man/man5/group.5 user/attilio/vmc-playground/share/man/man9/VFS_SET.9 user/attilio/vmc-playground/share/mk/bsd.lib.mk user/attilio/vmc-playground/share/mk/bsd.libnames.mk user/attilio/vmc-playground/share/mk/bsd.sys.mk user/attilio/vmc-playground/sys/amd64/acpica/acpi_machdep.c user/attilio/vmc-playground/sys/amd64/amd64/pmap.c user/attilio/vmc-playground/sys/amd64/include/elf.h user/attilio/vmc-playground/sys/amd64/include/frame.h user/attilio/vmc-playground/sys/amd64/include/sigframe.h user/attilio/vmc-playground/sys/amd64/include/signal.h user/attilio/vmc-playground/sys/amd64/include/ucontext.h user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.c user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.h user/attilio/vmc-playground/sys/arm/allwinner/a10_ehci.c user/attilio/vmc-playground/sys/arm/allwinner/a10_gpio.c user/attilio/vmc-playground/sys/arm/arm/busdma_machdep-v6.c user/attilio/vmc-playground/sys/arm/arm/busdma_machdep.c user/attilio/vmc-playground/sys/arm/arm/machdep.c user/attilio/vmc-playground/sys/arm/arm/pmap-v6.c user/attilio/vmc-playground/sys/arm/arm/pmap.c user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c user/attilio/vmc-playground/sys/arm/include/pmap.h user/attilio/vmc-playground/sys/arm/include/vmparam.h user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmc-playground/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmc-playground/sys/arm/ti/ti_cpuid.c user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmc-playground/sys/boot/common/bootstrap.h user/attilio/vmc-playground/sys/boot/common/module.c user/attilio/vmc-playground/sys/boot/fdt/dts/bcm2835-rpi-b.dts user/attilio/vmc-playground/sys/boot/fdt/dts/cubieboard.dts user/attilio/vmc-playground/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmc-playground/sys/boot/uboot/lib/copy.c user/attilio/vmc-playground/sys/boot/uboot/lib/elf_freebsd.c user/attilio/vmc-playground/sys/boot/userboot/userboot/elf32_freebsd.c user/attilio/vmc-playground/sys/cam/ata/ata_pmp.c user/attilio/vmc-playground/sys/cam/scsi/scsi_da.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/attilio/vmc-playground/sys/conf/files user/attilio/vmc-playground/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/common/adisasm.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/adwalk.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmextern.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmtable.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmtbdump.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmtbinfo.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslcompile.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslcompiler.h user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/asldefine.h user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslfiles.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslmessages.h user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslpredef.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslstartup.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslsupport.l user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/dtcompiler.h user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/dttable.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/dttemplate.h user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evevent.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evgpe.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evsci.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evxface.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evxfevnt.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nsutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/parser/psargs.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rscalc.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rsdump.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rslist.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rsxface.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utaddress.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utglobal.c user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acdisasm.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acexcep.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/aclocal.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acnamesp.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acoutput.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/actbl2.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/actbl3.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acutils.h user/attilio/vmc-playground/sys/crypto/aesni/aesni_wrap.c user/attilio/vmc-playground/sys/dev/ata/ata-all.c user/attilio/vmc-playground/sys/dev/ata/ata-all.h user/attilio/vmc-playground/sys/dev/ata/ata-dma.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/attilio/vmc-playground/sys/dev/ath/if_ath.c user/attilio/vmc-playground/sys/dev/ath/if_ath_alq.h user/attilio/vmc-playground/sys/dev/ath/if_ath_rx.c user/attilio/vmc-playground/sys/dev/ath/if_ath_sysctl.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx.h user/attilio/vmc-playground/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmc-playground/sys/dev/ath/if_athvar.h user/attilio/vmc-playground/sys/dev/coretemp/coretemp.c user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c user/attilio/vmc-playground/sys/dev/cxgbe/t4_sge.c user/attilio/vmc-playground/sys/dev/dcons/dcons_os.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82571.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82575.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82575.h user/attilio/vmc-playground/sys/dev/e1000/e1000_api.c user/attilio/vmc-playground/sys/dev/e1000/e1000_api.h user/attilio/vmc-playground/sys/dev/e1000/e1000_defines.h user/attilio/vmc-playground/sys/dev/e1000/e1000_hw.h user/attilio/vmc-playground/sys/dev/e1000/e1000_i210.c user/attilio/vmc-playground/sys/dev/e1000/e1000_i210.h user/attilio/vmc-playground/sys/dev/e1000/e1000_ich8lan.c user/attilio/vmc-playground/sys/dev/e1000/e1000_ich8lan.h user/attilio/vmc-playground/sys/dev/e1000/e1000_mac.c user/attilio/vmc-playground/sys/dev/e1000/e1000_mac.h user/attilio/vmc-playground/sys/dev/e1000/e1000_manage.c user/attilio/vmc-playground/sys/dev/e1000/e1000_nvm.c user/attilio/vmc-playground/sys/dev/e1000/e1000_nvm.h user/attilio/vmc-playground/sys/dev/e1000/e1000_osdep.h user/attilio/vmc-playground/sys/dev/e1000/e1000_phy.c user/attilio/vmc-playground/sys/dev/e1000/e1000_phy.h user/attilio/vmc-playground/sys/dev/e1000/e1000_regs.h user/attilio/vmc-playground/sys/dev/e1000/if_em.c user/attilio/vmc-playground/sys/dev/e1000/if_igb.c user/attilio/vmc-playground/sys/dev/e1000/if_lem.c user/attilio/vmc-playground/sys/dev/fdt/fdt_common.h user/attilio/vmc-playground/sys/dev/firewire/sbp.c user/attilio/vmc-playground/sys/dev/led/led.c user/attilio/vmc-playground/sys/dev/mcd/mcd.c user/attilio/vmc-playground/sys/dev/mxge/if_mxge.c user/attilio/vmc-playground/sys/dev/mxge/if_mxge_var.h user/attilio/vmc-playground/sys/dev/ppc/ppc.c user/attilio/vmc-playground/sys/dev/ppc/ppc_isa.c user/attilio/vmc-playground/sys/dev/sdhci/sdhci.c user/attilio/vmc-playground/sys/dev/sdhci/sdhci.h user/attilio/vmc-playground/sys/dev/sdhci/sdhci_if.m user/attilio/vmc-playground/sys/dev/si/si.c user/attilio/vmc-playground/sys/dev/sound/pci/hda/hdaa.c user/attilio/vmc-playground/sys/dev/usb/wlan/if_upgt.c user/attilio/vmc-playground/sys/dev/usb/wlan/if_upgtvar.h user/attilio/vmc-playground/sys/fs/msdosfs/msdosfs_fat.c user/attilio/vmc-playground/sys/fs/msdosfs/msdosfs_vfsops.c user/attilio/vmc-playground/sys/fs/msdosfs/msdosfsmount.h user/attilio/vmc-playground/sys/fs/nfs/nfs_commonkrpc.c user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clstate.c user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clvfsops.c user/attilio/vmc-playground/sys/geom/geom_vfs.c user/attilio/vmc-playground/sys/i386/acpica/acpi_machdep.c user/attilio/vmc-playground/sys/i386/i386/pmap.c user/attilio/vmc-playground/sys/i386/include/elf.h user/attilio/vmc-playground/sys/i386/include/frame.h user/attilio/vmc-playground/sys/i386/include/sigframe.h user/attilio/vmc-playground/sys/i386/include/signal.h user/attilio/vmc-playground/sys/i386/include/ucontext.h user/attilio/vmc-playground/sys/i386/isa/pmtimer.c user/attilio/vmc-playground/sys/i386/xen/pmap.c user/attilio/vmc-playground/sys/ia64/conf/GENERIC user/attilio/vmc-playground/sys/ia64/ia64/mem.c user/attilio/vmc-playground/sys/ia64/ia64/syscall.S user/attilio/vmc-playground/sys/kern/kern_descrip.c user/attilio/vmc-playground/sys/kern/kern_fork.c user/attilio/vmc-playground/sys/kern/kern_sig.c user/attilio/vmc-playground/sys/kern/kern_tc.c user/attilio/vmc-playground/sys/kern/kern_thread.c user/attilio/vmc-playground/sys/kern/subr_trap.c user/attilio/vmc-playground/sys/kern/subr_turnstile.c user/attilio/vmc-playground/sys/kern/sys_capability.c user/attilio/vmc-playground/sys/kern/sys_pipe.c user/attilio/vmc-playground/sys/kern/vfs_bio.c user/attilio/vmc-playground/sys/kern/vfs_cluster.c user/attilio/vmc-playground/sys/kern/vfs_export.c user/attilio/vmc-playground/sys/kern/vfs_init.c user/attilio/vmc-playground/sys/kern/vfs_lookup.c user/attilio/vmc-playground/sys/kern/vfs_syscalls.c user/attilio/vmc-playground/sys/modules/acpi/acpi/Makefile user/attilio/vmc-playground/sys/modules/mxge/mxge/Makefile user/attilio/vmc-playground/sys/net80211/ieee80211_adhoc.c user/attilio/vmc-playground/sys/net80211/ieee80211_mesh.c user/attilio/vmc-playground/sys/netinet/ip_input.c user/attilio/vmc-playground/sys/netinet/tcp_lro.c user/attilio/vmc-playground/sys/nfsclient/nfs_krpc.c user/attilio/vmc-playground/sys/nfsclient/nfs_vfsops.c user/attilio/vmc-playground/sys/opencrypto/xform.c user/attilio/vmc-playground/sys/pci/ncr.c user/attilio/vmc-playground/sys/powerpc/include/vmparam.h user/attilio/vmc-playground/sys/security/audit/audit_bsm.c user/attilio/vmc-playground/sys/sys/buf.h user/attilio/vmc-playground/sys/sys/filedesc.h user/attilio/vmc-playground/sys/sys/mount.h user/attilio/vmc-playground/sys/sys/namei.h user/attilio/vmc-playground/sys/sys/protosw.h user/attilio/vmc-playground/sys/sys/signalvar.h user/attilio/vmc-playground/sys/sys/systm.h user/attilio/vmc-playground/sys/tools/vnode_if.awk user/attilio/vmc-playground/sys/ufs/ffs/ffs_alloc.c user/attilio/vmc-playground/sys/vm/vm_kern.c user/attilio/vmc-playground/sys/x86/isa/atrtc.c user/attilio/vmc-playground/sys/x86/isa/clock.c user/attilio/vmc-playground/tools/tools/ath/athalq/Makefile user/attilio/vmc-playground/tools/tools/ath/athalq/ar5416_ds.c user/attilio/vmc-playground/tools/tools/ath/athalq/main.c user/attilio/vmc-playground/tools/tools/netmap/Makefile user/attilio/vmc-playground/tools/tools/netmap/bridge.c user/attilio/vmc-playground/tools/tools/netmap/pcap.c user/attilio/vmc-playground/tools/tools/netmap/pkt-gen.c user/attilio/vmc-playground/usr.bin/dtc/input_buffer.cc user/attilio/vmc-playground/usr.bin/grep/regex/tre-fastmatch.c user/attilio/vmc-playground/usr.bin/keylogin/keylogin.c user/attilio/vmc-playground/usr.bin/mail/util.c user/attilio/vmc-playground/usr.bin/netstat/inet.c user/attilio/vmc-playground/usr.bin/netstat/inet6.c user/attilio/vmc-playground/usr.bin/netstat/main.c user/attilio/vmc-playground/usr.bin/netstat/netisr.c user/attilio/vmc-playground/usr.bin/netstat/sctp.c user/attilio/vmc-playground/usr.bin/netstat/unix.c user/attilio/vmc-playground/usr.bin/systat/ifcmds.c user/attilio/vmc-playground/usr.bin/systat/ifstat.c user/attilio/vmc-playground/usr.bin/systat/main.c user/attilio/vmc-playground/usr.bin/systat/systat.1 user/attilio/vmc-playground/usr.bin/vacation/Makefile user/attilio/vmc-playground/usr.sbin/acpi/acpidb/Makefile user/attilio/vmc-playground/usr.sbin/acpi/iasl/Makefile user/attilio/vmc-playground/usr.sbin/bhyve/mem.c user/attilio/vmc-playground/usr.sbin/bhyve/mem.h user/attilio/vmc-playground/usr.sbin/bhyve/pci_emul.c user/attilio/vmc-playground/usr.sbin/bhyve/pci_emul.h user/attilio/vmc-playground/usr.sbin/bhyve/pci_hostbridge.c user/attilio/vmc-playground/usr.sbin/extattr/rmextattr.c user/attilio/vmc-playground/usr.sbin/makefs/makefs.8 user/attilio/vmc-playground/usr.sbin/makefs/makefs.c user/attilio/vmc-playground/usr.sbin/makefs/makefs.h user/attilio/vmc-playground/usr.sbin/makefs/mtree.c user/attilio/vmc-playground/usr.sbin/makefs/walk.c user/attilio/vmc-playground/usr.sbin/mountd/mountd.c user/attilio/vmc-playground/usr.sbin/pkg/pkg.c user/attilio/vmc-playground/usr.sbin/sendmail/Makefile Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/contrib/binutils/ (props changed) user/attilio/vmc-playground/contrib/ldns/ (props changed) user/attilio/vmc-playground/contrib/llvm/ (props changed) user/attilio/vmc-playground/contrib/llvm/tools/clang/ (props changed) user/attilio/vmc-playground/contrib/openbsm/ (props changed) user/attilio/vmc-playground/contrib/sendmail/ (props changed) user/attilio/vmc-playground/contrib/wpa/ (props changed) user/attilio/vmc-playground/crypto/heimdal/ (props changed) user/attilio/vmc-playground/gnu/lib/ (props changed) user/attilio/vmc-playground/gnu/usr.bin/gdb/ (props changed) user/attilio/vmc-playground/lib/libc/ (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/share/man/man4/ (props changed) user/attilio/vmc-playground/sys/ (props changed) user/attilio/vmc-playground/sys/boot/ (props changed) user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/sys/conf/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/common/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/include/ (props changed) user/attilio/vmc-playground/usr.sbin/bhyve/ (props changed) Modified: user/attilio/vmc-playground/bin/sh/eval.c ============================================================================== --- user/attilio/vmc-playground/bin/sh/eval.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/bin/sh/eval.c Sun Feb 24 17:11:10 2013 (r247226) @@ -174,6 +174,7 @@ evalstring(char *s, int flags) any = 1; } popstackmark(&smark); + setstackmark(&smark); } popfile(); popstackmark(&smark); @@ -296,10 +297,11 @@ evaltree(union node *n, int flags) } n = next; popstackmark(&smark); + setstackmark(&smark); } while (n != NULL); out: popstackmark(&smark); - if (pendingsigs) + if (pendingsig) dotrap(); if (eflag && exitstatus != 0 && do_etest) exitshell(exitstatus); Modified: user/attilio/vmc-playground/bin/sh/jobs.c ============================================================================== --- user/attilio/vmc-playground/bin/sh/jobs.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/bin/sh/jobs.c Sun Feb 24 17:11:10 2013 (r247226) @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv) } while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1); in_waitcmd--; - return 0; + return pendingsig + 128; } Modified: user/attilio/vmc-playground/bin/sh/main.c ============================================================================== --- user/attilio/vmc-playground/bin/sh/main.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/bin/sh/main.c Sun Feb 24 17:11:10 2013 (r247226) @@ -196,7 +196,7 @@ cmdloop(int top) TRACE(("cmdloop(%d) called\n", top)); setstackmark(&smark); for (;;) { - if (pendingsigs) + if (pendingsig) dotrap(); inter = 0; if (iflag && top) { Modified: user/attilio/vmc-playground/bin/sh/trap.c ============================================================================== --- user/attilio/vmc-playground/bin/sh/trap.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/bin/sh/trap.c Sun Feb 24 17:11:10 2013 (r247226) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); MKINIT char sigmode[NSIG]; /* current value of signal */ -int pendingsigs; /* indicates some signal received */ +volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -388,22 +388,25 @@ onsig(int signo) return; } - if (signo != SIGCHLD || !ignore_sigchld) - gotsig[signo] = 1; - pendingsigs++; - /* If we are currently in a wait builtin, prepare to break it */ - if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) - breakwaitcmd = 1; - /* - * If a trap is set, not ignored and not the null command, we need - * to make sure traps are executed even when a child blocks signals. - */ - if (Tflag && - trap[signo] != NULL && - ! (trap[signo][0] == '\0') && - ! (trap[signo][0] == ':' && trap[signo][1] == '\0')) + if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) { breakwaitcmd = 1; + pendingsig = signo; + } + + if (trap[signo] != NULL && trap[signo][0] != '\0' && + (signo != SIGCHLD || !ignore_sigchld)) { + gotsig[signo] = 1; + pendingsig = signo; + + /* + * If a trap is set, not ignored and not the null command, we + * need to make sure traps are executed even when a child + * blocks signals. + */ + if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0')) + breakwaitcmd = 1; + } #ifndef NO_HISTORY if (signo == SIGWINCH) @@ -424,7 +427,7 @@ dotrap(void) in_dotrap++; for (;;) { - pendingsigs = 0; + pendingsig = 0; for (i = 1; i < NSIG; i++) { if (gotsig[i]) { gotsig[i] = 0; Modified: user/attilio/vmc-playground/bin/sh/trap.h ============================================================================== --- user/attilio/vmc-playground/bin/sh/trap.h Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/bin/sh/trap.h Sun Feb 24 17:11:10 2013 (r247226) @@ -33,7 +33,7 @@ * $FreeBSD$ */ -extern int pendingsigs; +extern volatile sig_atomic_t pendingsig; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Sun Feb 24 17:11:10 2013 (r247226) @@ -195,6 +195,13 @@ fatal(const char *fmt, ...) verror(fmt, ap); va_end(ap); + /* + * Close the DTrace handle to ensure that any controlled processes are + * correctly restored and continued. + */ + if (g_dtp) + dtrace_close(g_dtp); + exit(E_ERROR); } Modified: user/attilio/vmc-playground/contrib/binutils/gas/config/tc-i386.c ============================================================================== --- user/attilio/vmc-playground/contrib/binutils/gas/config/tc-i386.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/binutils/gas/config/tc-i386.c Sun Feb 24 17:11:10 2013 (r247226) @@ -3981,7 +3981,7 @@ output_insn (void) SSE4 instructions have 3 bytes. We may use one more higher byte to specify a prefix the instruction requires. Exclude instructions which are in both SSE4 and ABM. */ - if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4)) != 0 + if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4 | CpuAES | CpuPCLMUL)) != 0 && (i.tm.cpu_flags & CpuABM) == 0) { if (i.tm.base_opcode & 0xff000000) @@ -4033,7 +4033,7 @@ output_insn (void) } else { - if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4)) != 0 + if ((i.tm.cpu_flags & (CpuSSSE3 | CpuSSE4 | CpuAES | CpuPCLMUL)) != 0 && (i.tm.cpu_flags & CpuABM) == 0) { p = frag_more (3); Modified: user/attilio/vmc-playground/contrib/binutils/opcodes/i386-dis.c ============================================================================== --- user/attilio/vmc-playground/contrib/binutils/opcodes/i386-dis.c Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/binutils/opcodes/i386-dis.c Sun Feb 24 17:11:10 2013 (r247226) @@ -543,6 +543,13 @@ fetch_data (struct disassemble_info *inf #define PREGRP97 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } } #define PREGRP98 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 98 } } #define PREGRP99 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 99 } } +#define PREGRP100 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 100 } } +#define PREGRP101 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 101 } } +#define PREGRP102 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 102 } } +#define PREGRP103 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 103 } } +#define PREGRP104 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 104 } } +#define PREGRP105 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 105 } } +#define PREGRP106 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 106 } } #define X86_64_0 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } } @@ -1319,7 +1326,7 @@ static const unsigned char threebyte_0x3 /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ - /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, /* df */ /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ /* ------------------------------- */ @@ -1382,7 +1389,7 @@ static const unsigned char threebyte_0x3 /* 10 */ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* 1f */ /* 20 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ - /* 40 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 40 */ 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ /* 60 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ @@ -1391,7 +1398,7 @@ static const unsigned char threebyte_0x3 /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ - /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* df */ /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ /* ------------------------------- */ @@ -2605,6 +2612,62 @@ static const struct dis386 prefix_user_t { "invvpid",{ Gm, Mo } }, { "(bad)", { XX } }, }, + + /* PREGRP100 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesimc", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP101 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesenc",{ XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP102 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesenclast", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP103 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesdec", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP104 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aesdeclast", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP105 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "aeskeygenassist", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP106 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pclmulqdq", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, }; static const struct dis386 x86_64_table[][2] = { @@ -2876,11 +2939,11 @@ static const struct dis386 three_byte_ta { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP100 }, + { PREGRP101 }, + { PREGRP102 }, + { PREGRP103 }, + { PREGRP104 }, /* e0 */ { "(bad)", { XX } }, { "(bad)", { XX } }, @@ -2997,7 +3060,7 @@ static const struct dis386 three_byte_ta { PREGRP84 }, { PREGRP85 }, { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP106 }, { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, @@ -3171,7 +3234,7 @@ static const struct dis386 three_byte_ta { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, - { "(bad)", { XX } }, + { PREGRP105 }, /* e0 */ { "(bad)", { XX } }, { "(bad)", { XX } }, Modified: user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.h ============================================================================== --- user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.h Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.h Sun Feb 24 17:11:10 2013 (r247226) @@ -72,19 +72,22 @@ typedef struct template #define CpuSSE4_1 0x400000 /* SSE4.1 Instructions required */ #define CpuSSE4_2 0x800000 /* SSE4.2 Instructions required */ #define CpuXSAVE 0x1000000 /* XSAVE Instructions required */ - -/* SSE4.1/4.2 Instructions required */ -#define CpuSSE4 (CpuSSE4_1|CpuSSE4_2) +#define CpuAES 0x2000000 /* AES Instructions required */ /* These flags are set by gas depending on the flag_code. */ #define Cpu64 0x4000000 /* 64bit support required */ #define CpuNo64 0x8000000 /* Not supported in the 64bit mode */ +#define CpuPCLMUL 0x10000000 /* Carry-less Multiplication extensions */ + +/* SSE4.1/4.2 Instructions required */ +#define CpuSSE4 (CpuSSE4_1|CpuSSE4_2) + /* The default value for unknown CPUs - enable all features to avoid problems. */ #define CpuUnknownFlags (Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \ |CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuVMX \ |Cpu3dnow|Cpu3dnowA|CpuK6|CpuPadLock|CpuSVME|CpuSSSE3|CpuSSE4_1 \ - |CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE) + |CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE|CpuAES|CpuPCLMUL) /* the bits in opcode_modifier are used to generate the final opcode from the base_opcode. These bits also are used to detect alternate forms of @@ -126,6 +129,8 @@ typedef struct template #define Rex64 0x10000000 /* instruction require Rex64 prefix. */ #define Ugh 0x20000000 /* deprecated fp insn, gets a warning */ +#define NoSuf (No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf) + /* operand_types[i] describes the type of operand i. This is made by OR'ing together all of the possible type masks. (e.g. 'operand_types[i] = Reg|Imm' specifies that operand i can be Modified: user/attilio/vmc-playground/contrib/binutils/opcodes/i386-tbl.h ============================================================================== --- user/attilio/vmc-playground/contrib/binutils/opcodes/i386-tbl.h Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/binutils/opcodes/i386-tbl.h Sun Feb 24 17:11:10 2013 (r247226) @@ -4319,6 +4319,54 @@ const template i386_optab[] = { "xrstor", 1, 0xfae, 0x5, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S } }, + /* Intel AES extensions */ + {"aesdec", 2, 0x660f38de, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesdeclast", 2, 0x660f38df, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesenc", 2, 0x660f38dc, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesenclast", 2, 0x660f38dd, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aesimc", 2, 0x660f38db, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { RegXMM|LLongMem, + RegXMM } }, + {"aeskeygenassist", 3, 0x660f3adf, None, CpuAES, + Modrm|IgnoreSize|NoSuf, + { Imm8, RegXMM|LLongMem, + RegXMM } }, + + /* Intel Carry-less Multiplication extensions */ + {"pclmulqdq", 3, 0x660f3a44, None, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf, + { Imm8, RegXMM|LLongMem, + RegXMM } }, + {"pclmullqlqdq", 2, 0x660f3a44, 0x0, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmulhqlqdq", 2, 0x660f3a44, 0x1, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmullqhqdq", 2, 0x660f3a44, 0x10, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + {"pclmulhqhqdq", 2, 0x660f3a44, 0x11, CpuPCLMUL, + Modrm|IgnoreSize|NoSuf|ImmExt, + { RegXMM|LLongMem, + RegXMM } }, + { NULL, 0, 0, 0, 0, 0, { 0 } } }; Modified: user/attilio/vmc-playground/contrib/ldns/Changelog ============================================================================== --- user/attilio/vmc-playground/contrib/ldns/Changelog Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/ldns/Changelog Sun Feb 24 17:11:10 2013 (r247226) @@ -1,3 +1,51 @@ +1.6.16 2012-11-13 + * Fix Makefile to build pyldns with BSD make + * Fix typo in exporting b32_* symbols to make pyldns load again + * Allow leaving the RR owner name empty in ldns-testns datafiles. + * Fix fail to create NSEC3 bitmap for empty non-terminal (bug + introduced in 1.6.14). + +1.6.15 2012-10-25 + * Remove LDNS_STATUS_EXISTS_ERR from ldns/error.h to make ldns + binary compatible with earlier releases again. + +1.6.14 2012-10-23 + * DANE support (RFC6698), including ldns-dane example tool. + * Configurable default CA certificate repository for ldns-dane with + --with-ca-file=CAFILE and --with-ca-path=CAPATH + * Configurable default trust anchor with --with-trust-anchor=FILE + for drill, ldns-verify-zone and ldns-dane + * bugfix #474: Define socklen_t when undefined (like in Win32) + * bugfix #473: Dead code removal and resource leak fix in drill + * bugfix #471: Let ldns_resolver_push_dnssec_anchor accept DS RR's too. + * Various bugfixes from code reviews from CZ.NIC and Paul Wouters + * ldns-notify TSIG option argument checking + * Let ldns_resolver_nameservers_randomize keep nameservers and rtt's + in sync. + * Let ldns_pkt_push_rr now return false on (memory) errors. + * Make buffer_export comply to documentation and fix buffer2str + * Various improvements and fixes of pyldns from Katel Slany + now documented in their own Changelog. + * bugfix: Make ldns_resolver_pop_nameserver clear the array when + there was only one. + * bugfix #459: Remove ldns_symbols and export symbols based on regex + * bugfix #458: Track all newly created signatures when signing. + * bugfix #454: Only set -g and -O2 CFLAGS when no CFLAGS was given. + * bugfix #457: Memory leak fix for ldns_key_new_frm_algorithm. + * pyldns memory handling fixes and the python3/ldns-signzone.py + examples script contribution from Karel Slany. + * bugfix #450: Base # bytes for P, G and Y (T) on the guaranteed + to be bigger (or equal) P in ldns_key_dsa2bin. + * bugfix #449: Deep free cloned rdf's in ldns_tsig_mac_new. + * bugfix #448: Copy nameserver value (in stead of reference) of the + answering nameserver to the answer packet in ldns_send_buffer, so + the original value may be deep freed with the ldns_resolver struct. + * New -0 option for ldns-read-zone to replace inception, expiration + and signature rdata fields with (null). Thanks Paul Wouters. + * New -p option for ldns-read-zone to prepend-pad SOA serial to take + up ten characters. + * Return error if printing RR fails due to unknown/null RDATA. + 1.6.13 2012-05-21 * New -S option for ldns-verify-zone to chase signatures online. * New -k option for ldns-verify-zone to validate using a trusted key. Modified: user/attilio/vmc-playground/contrib/ldns/Makefile.in ============================================================================== --- user/attilio/vmc-playground/contrib/ldns/Makefile.in Sun Feb 24 16:50:53 2013 (r247225) +++ user/attilio/vmc-playground/contrib/ldns/Makefile.in Sun Feb 24 17:11:10 2013 (r247226) @@ -23,6 +23,7 @@ pyldns_uninst = @PYLDNSUNINST@ pyldnsx_inst = @PYLDNSXINST@ pyldnsx_uninst = @PYLDNSXUNINST@ libtool = @libtool@ +CONFIG_FILES = @CONFIG_FILES@ # override $U variable which is used by autotools for deansification (for # K&R C compilers), but causes problems if $U is defined in the env). @@ -41,6 +42,7 @@ PYTHON_X_CFLAGS = @PYTHON_X_CFLAGS@ LIBSSL_CPPFLAGS = @LIBSSL_CPPFLAGS@ LIBSSL_LDFLAGS = @LIBSSL_LDFLAGS@ LIBSSL_LIBS = @LIBSSL_LIBS@ +LIBSSL_SSL_LIBS = @LIBSSL_SSL_LIBS@ LIBPCAP_LIBS = @LIBPCAP_LIBS@ RUNTIME_PATH = @RUNTIME_PATH@ LIBTOOL = $(libtool) --tag=CC --quiet @@ -60,12 +62,12 @@ DEPFLAG = @DEPFLAG@ INSTALL = $(srcdir)/install-sh LIBLOBJS = $(LIBOBJS:.o=.lo) -LDNS_LOBJS = buffer.lo dname.lo dnssec.lo dnssec_sign.lo dnssec_verify.lo dnssec_zone.lo duration.lo error.lo higher.lo host2str.lo host2wire.lo keys.lo net.lo packet.lo parse.lo rbtree.lo rdata.lo resolver.lo rr.lo rr_functions.lo sha1.lo sha2.lo str2host.lo tsig.lo update.lo util.lo wire2host.lo zone.lo +LDNS_LOBJS = buffer.lo dane.lo dname.lo dnssec.lo dnssec_sign.lo dnssec_verify.lo dnssec_zone.lo duration.lo error.lo higher.lo host2str.lo host2wire.lo keys.lo net.lo packet.lo parse.lo rbtree.lo rdata.lo resolver.lo rr.lo rr_functions.lo sha1.lo sha2.lo str2host.lo tsig.lo update.lo util.lo wire2host.lo zone.lo LDNS_LOBJS_EX = ^linktest\.c$$ LDNS_ALL_LOBJS = $(LDNS_LOBJS) $(LIBLOBJS) LIB = libldns.la -LDNS_HEADERS = buffer.h dname.h dnssec.h dnssec_sign.h dnssec_verify.h dnssec_zone.h duration.h error.h higher.h host2str.h host2wire.h keys.h ldns.h packet.h parse.h rbtree.h rdata.h resolver.h rr_functions.h rr.h sha1.h sha2.h str2host.h tsig.h update.h wire2host.h zone.h +LDNS_HEADERS = buffer.h dane.h dname.h dnssec.h dnssec_sign.h dnssec_verify.h dnssec_zone.h duration.h error.h higher.h host2str.h host2wire.h keys.h ldns.h packet.h parse.h rbtree.h rdata.h resolver.h rr_functions.h rr.h sha1.h sha2.h str2host.h tsig.h update.h wire2host.h zone.h LDNS_HEADERS_EX = ^config\.h|common\.h|util\.h|net\.h$$ LDNS_HEADERS_GEN= common.h util.h net.h @@ -73,14 +75,16 @@ PYLDNS_I_FILES = $(pywrapdir)/file_py3.i DRILL_LOBJS = drill/chasetrace.lo drill/dnssec.lo drill/drill.lo drill/drill_util.lo drill/error.lo drill/root.lo drill/securetrace.lo drill/work.lo -EXAMPLE_LOBJS = examples/ldns-chaos.lo examples/ldns-compare-zones.lo examples/ldnsd.lo examples/ldns-dpa.lo examples/ldns-gen-zone.lo examples/ldns-key2ds.lo examples/ldns-keyfetcher.lo examples/ldns-keygen.lo examples/ldns-mx.lo examples/ldns-notify.lo examples/ldns-nsec3-hash.lo examples/ldns-read-zone.lo examples/ldns-resolver.lo examples/ldns-revoke.lo examples/ldns-rrsig.lo examples/ldns-signzone.lo examples/ldns-test-edns.lo examples/ldns-testns.lo examples/ldns-testpkts.lo examples/ldns-update.lo examples/ldns-verify-zone.lo examples/ldns-version.lo examples/ldns-walk.lo examples/ldns-zcat.lo examples/ldns-zsplit.lo +EXAMPLE_LOBJS = examples/ldns-chaos.lo examples/ldns-compare-zones.lo examples/ldns-dane.lo examples/ldnsd.lo examples/ldns-dpa.lo examples/ldns-gen-zone.lo examples/ldns-key2ds.lo examples/ldns-keyfetcher.lo examples/ldns-keygen.lo examples/ldns-mx.lo examples/ldns-notify.lo examples/ldns-nsec3-hash.lo examples/ldns-read-zone.lo examples/ldns-resolver.lo examples/ldns-revoke.lo examples/ldns-rrsig.lo examples/ldns-signzone.lo examples/ldns-test-edns.lo examples/ldns-testns.lo examples/ldns-testpkts.lo examples/ldns-update.lo examples/ldns-verify-zone.lo examples/ldns-version.lo examples/ldns-walk.lo examples/ldns-zcat.lo examples/ldns-zsplit.lo EXAMPLE_PROGS = examples/ldns-chaos examples/ldns-compare-zones examples/ldnsd examples/ldns-gen-zone examples/ldns-key2ds examples/ldns-keyfetcher examples/ldns-keygen examples/ldns-mx examples/ldns-notify examples/ldns-read-zone examples/ldns-resolver examples/ldns-rrsig examples/ldns-test-edns examples/ldns-update examples/ldns-version examples/ldns-walk examples/ldns-zcat examples/ldns-zsplit -EX_PROGS_BASENM = ldns-chaos ldns-compare-zones ldnsd ldns-dpa ldns-gen-zone ldns-key2ds ldns-keyfetcher ldns-keygen ldns-mx ldns-notify ldns-nsec3-hash ldns-read-zone ldns-resolver ldns-revoke ldns-rrsig ldns-signzone ldns-test-edns ldns-testns ldns-testpkts ldns-update ldns-verify-zone ldns-version ldns-walk ldns-zcat ldns-zsplit -EXAMPLE_PROGS_EX= ^examples/ldns-testpkts\.c|examples/ldns-testns\.c|examples/ldns-dpa\.c|examples/ldns-nsec3-hash\.c|examples/ldns-revoke\.c|examples/ldns-signzone\.c|examples/ldns-verify-zone\.c$$ +EX_PROGS_BASENM = ldns-chaos ldns-compare-zones ldns-dane ldnsd ldns-dpa ldns-gen-zone ldns-key2ds ldns-keyfetcher ldns-keygen ldns-mx ldns-notify ldns-nsec3-hash ldns-read-zone ldns-resolver ldns-revoke ldns-rrsig ldns-signzone ldns-test-edns ldns-testns ldns-testpkts ldns-update ldns-verify-zone ldns-version ldns-walk ldns-zcat ldns-zsplit +EXAMPLE_PROGS_EX= ^examples/ldns-testpkts\.c|examples/ldns-testns\.c|examples/ldns-dane\.c|examples/ldns-dpa\.c|examples/ldns-nsec3-hash\.c|examples/ldns-revoke\.c|examples/ldns-signzone\.c|examples/ldns-verify-zone\.c$$ TESTNS = examples/ldns-testns TESTNS_LOBJS = examples/ldns-testns.lo examples/ldns-testpkts.lo LDNS_DPA = examples/ldns-dpa LDNS_DPA_LOBJS = examples/ldns-dpa.lo +LDNS_DANE = examples/ldns-dane +LDNS_DANE_LOBJS = examples/ldns-dane.lo EX_SSL_PROGS = examples/ldns-nsec3-hash examples/ldns-revoke examples/ldns-signzone examples/ldns-verify-zone EX_SSL_LOBJS = examples/ldns-nsec3-hash.lo examples/ldns-revoke.lo examples/ldns-signzone.lo examples/ldns-verify-zone.lo @@ -140,7 +144,7 @@ install-drill: drill/drill $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 $(LIBTOOL) --mode=install cp drill/drill $(DESTDIR)$(bindir) - $(INSTALL) -m 644 $(srcdir)/drill/drill.1 $(DESTDIR)$(mandir)/man1/drill.1 + $(INSTALL) -m 644 drill/drill.1 $(DESTDIR)$(mandir)/man1/drill.1 uninstall-drill: rm -f $(DESTDIR)$(bindir)/drill $(DESTDIR)$(mandir)/man1/drill.1 @@ -150,7 +154,7 @@ uninstall-drill: clean-drill: $(LIBTOOL) --mode clean rm -f $(DRILL_LOBJS) drill/drill -examples: no-examples-config-h $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) +examples: no-examples-config-h $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) no-examples-config-h: @if test -e $(srcdir)/examples/config.h -o -e examples/config.h ; \ then echo "A config.h was detected in the examples subdirectory." ; \ @@ -169,16 +173,23 @@ $(LDNS_DPA): $(LINK_EXE) $(LDNS_DPA_LOBJS) $(LIBS) $(LIBPCAP_LIBS) -lldns \ -o $(LDNS_DPA) +$(LDNS_DANE): + $(LINK_EXE) $(LDNS_DANE_LOBJS) $(LIBS) $(LIBSSL_SSL_LIBS) -lldns \ + -o $(LDNS_DANE) + $(EX_SSL_PROGS): $(LINK_EXE) $@.lo $(LIBS) $(LIBSSL_LIBS) -lldns -o $@ -install-examples: $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) +install-examples: $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 - for p in $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) ; do \ + for p in $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) ; do \ $(LIBTOOL) --mode=install cp $$p $(DESTDIR)$(bindir) ; \ - $(INSTALL) -m 644 $(srcdir)/$$p.1 $(DESTDIR)$(mandir)/man1 ; \ + if test -f $$p.1 ; \ + then $(INSTALL) -m 644 $$p.1 $(DESTDIR)$(mandir)/man1 ; \ + else $(INSTALL) -m 644 $(srcdir)/$$p.1 $(DESTDIR)$(mandir)/man1 ; \ + fi ; \ done uninstall-examples: @@ -190,7 +201,7 @@ uninstall-examples: clean-examples: $(LIBTOOL) --mode clean rm -f $(EXAMPLE_PROGS) - $(LIBTOOL) --mode clean rm -f $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) + $(LIBTOOL) --mode clean rm -f $(TESTNS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS) $(LIBTOOL) --mode clean rm -f $(EXAMPLE_LOBJS) linktest: $(srcdir)/linktest.c libldns.la @@ -201,7 +212,7 @@ lib: libldns.la lib-export-all: libldns.la-export-all libldns.la: $(LDNS_ALL_LOBJS) - $(LINK_LIB) $(LIBSSL_LDFLAGS) $(LIBSSL_LIBS) --export-symbols $(srcdir)/ldns_symbols.def -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) + $(LINK_LIB) $(LIBSSL_LDFLAGS) $(LIBSSL_LIBS) -export-symbols-regex '^(ldns_|b32_[pn]to[pn]|mktime_from_utc|qsort_rr_compare_nsec3)' -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) libldns.la-export-all: $(LDNS_ALL_LOBJS) $(LINK_LIB) -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) @@ -231,10 +242,10 @@ $(pywrapdir)/ldns_wrapper.c: $(PYLDNS_I_ $(swig) $(swigpy_flags) -o $@ $(CPPFLAGS) $(PYTHON_CPPFLAGS) $(pywrapdir)/ldns.i ldns_wrapper.lo: $(pywrapdir)/ldns_wrapper.c ldns/config.h - $(COMP_LIB) -I./include/ldns $(PYTHON_CPPFLAGS) $(PYTHON_X_CFLAGS) -c $< -o $@ + $(COMP_LIB) -I./include/ldns $(PYTHON_CPPFLAGS) $(PYTHON_X_CFLAGS) -c $(pywrapdir)/ldns_wrapper.c -o $@ _ldns.la: ldns_wrapper.lo libldns.la - $(LIBTOOL) --tag=CC --mode=link $(CC) $(CFLAGS) $(PYTHON_CFLAGS) $(LDFLAGS) $(PYTHON_LDFLAGS) -module -version-number $(version_info) -no-undefined -o $@ $< -rpath $(python_site) -L. -L.libs -lldns $(LIBS) + $(LIBTOOL) --tag=CC --mode=link $(CC) $(CFLAGS) $(PYTHON_CFLAGS) $(LDFLAGS) $(PYTHON_LDFLAGS) -module -version-number $(version_info) -no-undefined -o $@ ldns_wrapper.lo -rpath $(python_site) -L. -L.libs -lldns $(LIBS) install: install-h install-lib @INSTALL_CONFIG@ install-manpages $(pyldns_inst) $(pyldnsx_inst) @INSTALL_DRILL@ @INSTALL_EXAMPLES@ @@ -325,13 +336,8 @@ clean: @CLEAN_DRILL@ @CLEAN_EXAMPLES@ cl realclean: clean docclean rm -f config.status rm -f config.log - rm -f Makefile + rm -f $(CONFIG_FILES) rm -f ldns/config.h - rm -f ldns/util.h - rm -f ldns/common.h - rm -f ldns/net.h - rm -f packaging/ldns-config - rm -f packaging/libldns.pc if test -d packaging -a ! -f packaging/ldns-config.in ; then \ rmdir packaging || : ; fi rm -f libtool @@ -363,7 +369,8 @@ distclean: realclean ## No need for changes here -lint: @LINT_DRILL@ @LINT_EXAMPLES@ +lint: lint-lib @LINT_DRILL@ @LINT_EXAMPLES@ +lint-lib: for i in $(srcdir)/*.c; do \ $(LINT) $(LINTFLAGS) -I. -I$(srcdir) $(srcdir)/$$i ; \ if test $$? -ne 0 ; then exit 1 ; fi ; \ @@ -449,7 +456,7 @@ depend: >> $(DEPEND_TMP) ;\ done; \ done - for p in $(EXAMPLE_PROGS) $(LDNS_DPA) $(EX_SSL_PROGS); do \ + for p in $(EXAMPLE_PROGS) $(LDNS_DPA) $(LDNS_DANE) $(EX_SSL_PROGS); do \ echo "$$p: $$p.lo $$p.o \$$(LIB)" >> $(DEPEND_TMP) ; done echo "$(TESTNS): `for o in $(TESTNS_LOBJS) ; do \ echo -n "$$o $${o%lo}o " ; done` \$$(LIB)" \ @@ -468,610 +475,515 @@ depend: # Dependencies -buffer.lo buffer.o: $(srcdir)/buffer.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dname.lo dname.o: $(srcdir)/dname.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_sign.lo dnssec_sign.o: $(srcdir)/dnssec_sign.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_verify.lo dnssec_verify.o: $(srcdir)/dnssec_verify.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -dnssec_zone.lo dnssec_zone.o: $(srcdir)/dnssec_zone.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -duration.lo duration.o: $(srcdir)/duration.c \ - $(srcdir)/ldns/duration.h -error.lo error.o: $(srcdir)/error.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -higher.lo higher.o: $(srcdir)/higher.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -host2str.lo host2str.o: $(srcdir)/host2str.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -host2wire.lo host2wire.o: $(srcdir)/host2wire.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -keys.lo keys.o: $(srcdir)/keys.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -linktest.lo linktest.o: $(srcdir)/linktest.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -net.lo net.o: $(srcdir)/net.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -packet.lo packet.o: $(srcdir)/packet.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -parse.lo parse.o: $(srcdir)/parse.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rbtree.lo rbtree.o: $(srcdir)/rbtree.c \ - $(srcdir)/ldns/rbtree.h \ - -rdata.lo rdata.o: $(srcdir)/rdata.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -resolver.lo resolver.o: $(srcdir)/resolver.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rr.lo rr.o: $(srcdir)/rr.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -rr_functions.lo rr_functions.o: $(srcdir)/rr_functions.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -sha1.lo sha1.o: $(srcdir)/sha1.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -sha2.lo sha2.o: $(srcdir)/sha2.c $(srcdir)/ldns/sha2.h -str2host.lo str2host.o: $(srcdir)/str2host.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -tsig.lo tsig.o: $(srcdir)/tsig.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -update.lo update.o: $(srcdir)/update.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -util.lo util.o: $(srcdir)/util.c $(srcdir)/ldns/rdata.h \ - $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/rr.h $(srcdir)/ldns/buffer.h -wire2host.lo wire2host.o: $(srcdir)/wire2host.c \ - $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -zone.lo zone.o: $(srcdir)/zone.c $(srcdir)/ldns/ldns.h \ - $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h \ - $(srcdir)/ldns/dname.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/rr.h \ - $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h \ - $(srcdir)/ldns/rbtree.h $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h \ - $(srcdir)/ldns/duration.h $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h \ - $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ - $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ - $(srcdir)/ldns/sha2.h -compat/b32_ntop.lo compat/b32_ntop.o: $(srcdir)/compat/b32_ntop.c -compat/b32_pton.lo compat/b32_pton.o: $(srcdir)/compat/b32_pton.c -compat/b64_ntop.lo compat/b64_ntop.o: $(srcdir)/compat/b64_ntop.c -compat/b64_pton.lo compat/b64_pton.o: $(srcdir)/compat/b64_pton.c -compat/calloc.lo compat/calloc.o: $(srcdir)/compat/calloc.c -compat/ctime_r.lo compat/ctime_r.o: $(srcdir)/compat/ctime_r.c -compat/fake-rfc2553.lo compat/fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c \ +buffer.lo buffer.o: $(srcdir)/buffer.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dane.lo dane.o: $(srcdir)/dane.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dname.lo dname.o: $(srcdir)/dname.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec.lo dnssec.o: $(srcdir)/dnssec.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_sign.lo dnssec_sign.o: $(srcdir)/dnssec_sign.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_verify.lo dnssec_verify.o: $(srcdir)/dnssec_verify.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +dnssec_zone.lo dnssec_zone.o: $(srcdir)/dnssec_zone.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +duration.lo duration.o: $(srcdir)/duration.c ldns/config.h $(srcdir)/ldns/duration.h +error.lo error.o: $(srcdir)/error.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +higher.lo higher.o: $(srcdir)/higher.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +host2str.lo host2str.o: $(srcdir)/host2str.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +host2wire.lo host2wire.o: $(srcdir)/host2wire.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +keys.lo keys.o: $(srcdir)/keys.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +linktest.lo linktest.o: $(srcdir)/linktest.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h \ + ldns/common.h $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h \ + $(srcdir)/ldns/rr.h $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h \ + $(srcdir)/ldns/zone.h $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +net.lo net.o: $(srcdir)/net.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +packet.lo packet.o: $(srcdir)/packet.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +parse.lo parse.o: $(srcdir)/parse.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ + $(srcdir)/ldns/higher.h $(srcdir)/ldns/host2wire.h ldns/net.h $(srcdir)/ldns/str2host.h $(srcdir)/ldns/update.h \ + $(srcdir)/ldns/wire2host.h $(srcdir)/ldns/rr_functions.h $(srcdir)/ldns/parse.h $(srcdir)/ldns/sha1.h \ + $(srcdir)/ldns/sha2.h +rbtree.lo rbtree.o: $(srcdir)/rbtree.c ldns/config.h $(srcdir)/ldns/rbtree.h ldns/util.h ldns/common.h +rdata.lo rdata.o: $(srcdir)/rdata.c ldns/config.h $(srcdir)/ldns/ldns.h ldns/util.h ldns/common.h \ + $(srcdir)/ldns/buffer.h $(srcdir)/ldns/error.h $(srcdir)/ldns/dane.h $(srcdir)/ldns/rdata.h $(srcdir)/ldns/rr.h \ + $(srcdir)/ldns/dname.h $(srcdir)/ldns/dnssec.h $(srcdir)/ldns/packet.h $(srcdir)/ldns/keys.h $(srcdir)/ldns/zone.h \ + $(srcdir)/ldns/resolver.h $(srcdir)/ldns/tsig.h $(srcdir)/ldns/dnssec_zone.h $(srcdir)/ldns/rbtree.h \ + $(srcdir)/ldns/host2str.h $(srcdir)/ldns/dnssec_verify.h $(srcdir)/ldns/dnssec_sign.h $(srcdir)/ldns/duration.h \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 17:20:56 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 89C9FBC7; Sun, 24 Feb 2013 17:20:56 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 79C3DA4D; Sun, 24 Feb 2013 17:20:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OHKuOL018992; Sun, 24 Feb 2013 17:20:56 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OHKsSj018973; Sun, 24 Feb 2013 17:20:54 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241720.r1OHKsSj018973@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 17:20:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247227 - in user/attilio/vmobj-rwlock: bin/sh contrib/llvm/lib/Target/X86 lib/libelf sbin/fsck_ffs sys/arm/arm sys/arm/broadcom/bcm2835 sys/boot/fdt sys/boot/fdt/dts sys/boot/uboot/lib... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 17:20:56 -0000 Author: attilio Date: Sun Feb 24 17:20:53 2013 New Revision: 247227 URL: http://svnweb.freebsd.org/changeset/base/247227 Log: MFC Added: user/attilio/vmobj-rwlock/tools/regression/bin/sh/builtins/wait4.0 - copied unchanged from r247226, head/tools/regression/bin/sh/builtins/wait4.0 user/attilio/vmobj-rwlock/tools/regression/bin/sh/builtins/wait5.0 - copied unchanged from r247226, head/tools/regression/bin/sh/builtins/wait5.0 Modified: user/attilio/vmobj-rwlock/bin/sh/eval.c user/attilio/vmobj-rwlock/bin/sh/jobs.c user/attilio/vmobj-rwlock/bin/sh/main.c user/attilio/vmobj-rwlock/bin/sh/trap.c user/attilio/vmobj-rwlock/bin/sh/trap.h user/attilio/vmobj-rwlock/contrib/llvm/lib/Target/X86/X86InstrCompiler.td user/attilio/vmobj-rwlock/lib/libelf/elf_update.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/dir.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/ea.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsck.h user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsutil.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/inode.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/main.c user/attilio/vmobj-rwlock/sbin/fsck_ffs/setup.c user/attilio/vmobj-rwlock/sys/arm/arm/machdep.c user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h user/attilio/vmobj-rwlock/sys/boot/fdt/dts/bcm2835-rpi-b.dts user/attilio/vmobj-rwlock/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmobj-rwlock/sys/boot/uboot/lib/elf_freebsd.c user/attilio/vmobj-rwlock/sys/dev/fdt/fdt_common.h user/attilio/vmobj-rwlock/sys/ia64/conf/GENERIC Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/contrib/llvm/ (props changed) user/attilio/vmobj-rwlock/sbin/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) user/attilio/vmobj-rwlock/sys/boot/ (props changed) Modified: user/attilio/vmobj-rwlock/bin/sh/eval.c ============================================================================== --- user/attilio/vmobj-rwlock/bin/sh/eval.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/bin/sh/eval.c Sun Feb 24 17:20:53 2013 (r247227) @@ -301,7 +301,7 @@ evaltree(union node *n, int flags) } while (n != NULL); out: popstackmark(&smark); - if (pendingsigs) + if (pendingsig) dotrap(); if (eflag && exitstatus != 0 && do_etest) exitshell(exitstatus); Modified: user/attilio/vmobj-rwlock/bin/sh/jobs.c ============================================================================== --- user/attilio/vmobj-rwlock/bin/sh/jobs.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/bin/sh/jobs.c Sun Feb 24 17:20:53 2013 (r247227) @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv) } while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1); in_waitcmd--; - return 0; + return pendingsig + 128; } Modified: user/attilio/vmobj-rwlock/bin/sh/main.c ============================================================================== --- user/attilio/vmobj-rwlock/bin/sh/main.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/bin/sh/main.c Sun Feb 24 17:20:53 2013 (r247227) @@ -196,7 +196,7 @@ cmdloop(int top) TRACE(("cmdloop(%d) called\n", top)); setstackmark(&smark); for (;;) { - if (pendingsigs) + if (pendingsig) dotrap(); inter = 0; if (iflag && top) { Modified: user/attilio/vmobj-rwlock/bin/sh/trap.c ============================================================================== --- user/attilio/vmobj-rwlock/bin/sh/trap.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/bin/sh/trap.c Sun Feb 24 17:20:53 2013 (r247227) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); MKINIT char sigmode[NSIG]; /* current value of signal */ -int pendingsigs; /* indicates some signal received */ +volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -388,22 +388,25 @@ onsig(int signo) return; } - if (signo != SIGCHLD || !ignore_sigchld) - gotsig[signo] = 1; - pendingsigs++; - /* If we are currently in a wait builtin, prepare to break it */ - if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) - breakwaitcmd = 1; - /* - * If a trap is set, not ignored and not the null command, we need - * to make sure traps are executed even when a child blocks signals. - */ - if (Tflag && - trap[signo] != NULL && - ! (trap[signo][0] == '\0') && - ! (trap[signo][0] == ':' && trap[signo][1] == '\0')) + if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) { breakwaitcmd = 1; + pendingsig = signo; + } + + if (trap[signo] != NULL && trap[signo][0] != '\0' && + (signo != SIGCHLD || !ignore_sigchld)) { + gotsig[signo] = 1; + pendingsig = signo; + + /* + * If a trap is set, not ignored and not the null command, we + * need to make sure traps are executed even when a child + * blocks signals. + */ + if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0')) + breakwaitcmd = 1; + } #ifndef NO_HISTORY if (signo == SIGWINCH) @@ -424,7 +427,7 @@ dotrap(void) in_dotrap++; for (;;) { - pendingsigs = 0; + pendingsig = 0; for (i = 1; i < NSIG; i++) { if (gotsig[i]) { gotsig[i] = 0; Modified: user/attilio/vmobj-rwlock/bin/sh/trap.h ============================================================================== --- user/attilio/vmobj-rwlock/bin/sh/trap.h Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/bin/sh/trap.h Sun Feb 24 17:20:53 2013 (r247227) @@ -33,7 +33,7 @@ * $FreeBSD$ */ -extern int pendingsigs; +extern volatile sig_atomic_t pendingsig; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; Modified: user/attilio/vmobj-rwlock/contrib/llvm/lib/Target/X86/X86InstrCompiler.td ============================================================================== --- user/attilio/vmobj-rwlock/contrib/llvm/lib/Target/X86/X86InstrCompiler.td Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/contrib/llvm/lib/Target/X86/X86InstrCompiler.td Sun Feb 24 17:20:53 2013 (r247227) @@ -1076,12 +1076,14 @@ def : Pat<(X86cmp GR64:$src1, 0), // inverted. multiclass CMOVmr { - def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS), - (Inst16 GR16:$src2, addr:$src1)>; - def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS), - (Inst32 GR32:$src2, addr:$src1)>; - def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS), - (Inst64 GR64:$src2, addr:$src1)>; + let Predicates = [HasCMov] in { + def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS), + (Inst16 GR16:$src2, addr:$src1)>; + def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS), + (Inst32 GR32:$src2, addr:$src1)>; + def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS), + (Inst64 GR64:$src2, addr:$src1)>; + } } defm : CMOVmr; Modified: user/attilio/vmobj-rwlock/lib/libelf/elf_update.c ============================================================================== --- user/attilio/vmobj-rwlock/lib/libelf/elf_update.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/lib/libelf/elf_update.c Sun Feb 24 17:20:53 2013 (r247227) @@ -41,89 +41,79 @@ __FBSDID("$FreeBSD$"); #include "_libelf.h" /* - * Update the internal data structures associated with an ELF object. - * Returns the size in bytes the ELF object would occupy in its file - * representation. + * Layout strategy: * - * After a successful call to this function, the following structures - * are updated: + * - Case 1: ELF_F_LAYOUT is asserted + * In this case the application has full control over where the + * section header table, program header table, and section data + * will reside. The library only perform error checks. * - * - The ELF header is updated. - * - All sections are sorted in order of ascending addresses and their - * section header table entries updated. An error is signalled - * if an overlap was detected among sections. - * - All data descriptors associated with a section are sorted in order - * of ascending addresses. Overlaps, if detected, are signalled as - * errors. Other sanity checks for alignments, section types etc. are - * made. + * - Case 2: ELF_F_LAYOUT is not asserted * - * After a resync_elf() successfully returns, the ELF descriptor is - * ready for being handed over to _libelf_write_elf(). + * The library will do the object layout using the following + * ordering: + * - The executable header is placed first, are required by the + * ELF specification. + * - The program header table is placed immediately following the + * executable header. + * - Section data, if any, is placed after the program header + * table, aligned appropriately. + * - The section header table, if needed, is placed last. * - * File alignments: - * PHDR - Addr - * SHDR - Addr + * There are two sub-cases to be taken care of: * - * XXX: how do we handle 'flags'. + * - Case 2a: e->e_cmd == ELF_C_READ or ELF_C_RDWR + * + * In this sub-case, the underlying ELF object may already have + * content in it, which the application may have modified. The + * library will retrieve content from the existing object as + * needed. + * + * - Case 2b: e->e_cmd == ELF_C_WRITE + * + * The ELF object is being created afresh in this sub-case; + * there is no pre-existing content in the underlying ELF + * object. */ /* * Compute the extents of a section, by looking at the data - * descriptors associated with it. The function returns zero if an - * error was detected. `*rc' holds the maximum file extent seen so - * far. + * descriptors associated with it. The function returns 1 if + * successful, or zero if an error was detected. */ static int -_libelf_compute_section_extents(Elf *e, Elf_Scn *s, off_t *rc) +_libelf_compute_section_extents(Elf *e, Elf_Scn *s, off_t rc) { int ec; - Elf_Data *d, *td; + size_t fsz, msz; + Elf_Data *d; + Elf32_Shdr *shdr32; + Elf64_Shdr *shdr64; unsigned int elftype; uint32_t sh_type; uint64_t d_align; uint64_t sh_align, sh_entsize, sh_offset, sh_size; uint64_t scn_size, scn_alignment; - /* - * We need to recompute library private data structures if one - * or more of the following is true: - * - The underlying Shdr structure has been marked `dirty'. Significant - * fields include: `sh_offset', `sh_type', `sh_size', `sh_addralign'. - * - The Elf_Data structures part of this section have been marked - * `dirty'. Affected members include `d_align', `d_offset', `d_type', - * and `d_size'. - * - The section as a whole is `dirty', e.g., it has been allocated - * using elf_newscn(), or if a new Elf_Data structure was added using - * elf_newdata(). - * - * Each of these conditions would result in the ELF_F_DIRTY bit being - * set on the section descriptor's `s_flags' field. - */ - ec = e->e_class; + shdr32 = &s->s_shdr.s_shdr32; + shdr64 = &s->s_shdr.s_shdr64; if (ec == ELFCLASS32) { - sh_type = s->s_shdr.s_shdr32.sh_type; - sh_align = (uint64_t) s->s_shdr.s_shdr32.sh_addralign; - sh_entsize = (uint64_t) s->s_shdr.s_shdr32.sh_entsize; - sh_offset = (uint64_t) s->s_shdr.s_shdr32.sh_offset; - sh_size = (uint64_t) s->s_shdr.s_shdr32.sh_size; + sh_type = shdr32->sh_type; + sh_align = (uint64_t) shdr32->sh_addralign; + sh_entsize = (uint64_t) shdr32->sh_entsize; + sh_offset = (uint64_t) shdr32->sh_offset; + sh_size = (uint64_t) shdr32->sh_size; } else { - sh_type = s->s_shdr.s_shdr64.sh_type; - sh_align = s->s_shdr.s_shdr64.sh_addralign; - sh_entsize = s->s_shdr.s_shdr64.sh_entsize; - sh_offset = s->s_shdr.s_shdr64.sh_offset; - sh_size = s->s_shdr.s_shdr64.sh_size; + sh_type = shdr64->sh_type; + sh_align = shdr64->sh_addralign; + sh_entsize = shdr64->sh_entsize; + sh_offset = shdr64->sh_offset; + sh_size = shdr64->sh_size; } - if (sh_type == SHT_NULL || sh_type == SHT_NOBITS) - return (1); - - if ((s->s_flags & ELF_F_DIRTY) == 0) { - if ((size_t) *rc < sh_offset + sh_size) - *rc = sh_offset + sh_size; - return (1); - } + assert(sh_type != SHT_NULL && sh_type != SHT_NOBITS); elftype = _libelf_xlate_shtype(sh_type); if (elftype > ELF_T_LAST) { @@ -131,15 +121,52 @@ _libelf_compute_section_extents(Elf *e, return (0); } - /* - * Compute the extent of the data descriptors associated with - * this section. - */ - scn_alignment = 0; if (sh_align == 0) sh_align = _libelf_falign(elftype, ec); - /* Compute the section alignment. */ + /* + * Check the section's data buffers for sanity and compute the + * section's alignment. + * Compute the section's size and alignment using the data + * descriptors associated with the section. + */ + if (STAILQ_EMPTY(&s->s_data)) { + /* + * The section's content (if any) has not been read in + * yet. If section is not dirty marked dirty, we can + * reuse the values in the 'sh_size' and 'sh_offset' + * fields of the section header. + */ + if ((s->s_flags & ELF_F_DIRTY) == 0) { + /* + * If the library is doing the layout, then we + * compute the new start offset for the + * section based on the current offset and the + * section's alignment needs. + * + * If the application is doing the layout, we + * can use the value in the 'sh_offset' field + * in the section header directly. + */ + if (e->e_flags & ELF_F_LAYOUT) + goto updatedescriptor; + else + goto computeoffset; + } + + /* + * Otherwise, we need to bring in the section's data + * from the underlying ELF object. + */ + if (e->e_cmd != ELF_C_WRITE && elf_getdata(s, NULL) == NULL) + return (0); + } + + /* + * Loop through the section's data descriptors. + */ + scn_size = 0L; + scn_alignment = 0L; STAILQ_FOREACH(d, &s->s_data, d_next) { if (d->d_type > ELF_T_LAST) { LIBELF_SET_ERROR(DATA, 0); @@ -153,23 +180,40 @@ _libelf_compute_section_extents(Elf *e, LIBELF_SET_ERROR(DATA, 0); return (0); } - if (d_align > scn_alignment) - scn_alignment = d_align; - } - scn_size = 0L; + /* + * The buffer's size should be a multiple of the + * memory size of the underlying type. + */ + msz = _libelf_msize(d->d_type, ec, e->e_version); + if (d->d_size % msz) { + LIBELF_SET_ERROR(DATA, 0); + return (0); + } - STAILQ_FOREACH_SAFE(d, &s->s_data, d_next, td) { + /* + * Compute the section's size. + */ if (e->e_flags & ELF_F_LAYOUT) { if ((uint64_t) d->d_off + d->d_size > scn_size) scn_size = d->d_off + d->d_size; } else { scn_size = roundup2(scn_size, d->d_align); d->d_off = scn_size; - scn_size += d->d_size; + fsz = _libelf_fsize(d->d_type, ec, d->d_version, + d->d_size / msz); + scn_size += fsz; } + + /* + * The section's alignment is the maximum alignment + * needed for its data buffers. + */ + if (d_align > scn_alignment) + scn_alignment = d_align; } + /* * If the application is requesting full control over the layout * of the section, check its values for sanity. @@ -180,46 +224,60 @@ _libelf_compute_section_extents(Elf *e, LIBELF_SET_ERROR(LAYOUT, 0); return (0); } - } else { - /* - * Otherwise compute the values in the section header. - */ + goto updatedescriptor; + } - if (scn_alignment > sh_align) - sh_align = scn_alignment; + /* + * Otherwise compute the values in the section header. + * + * The section alignment is the maximum alignment for any of + * its contained data descriptors. + */ + if (scn_alignment > sh_align) + sh_align = scn_alignment; - /* - * If the section entry size is zero, try and fill in an - * appropriate entry size. Per the elf(5) manual page - * sections without fixed-size entries should have their - * 'sh_entsize' field set to zero. - */ - if (sh_entsize == 0 && - (sh_entsize = _libelf_fsize(elftype, ec, e->e_version, - (size_t) 1)) == 1) - sh_entsize = 0; + /* + * If the section entry size is zero, try and fill in an + * appropriate entry size. Per the elf(5) manual page + * sections without fixed-size entries should have their + * 'sh_entsize' field set to zero. + */ + if (sh_entsize == 0 && + (sh_entsize = _libelf_fsize(elftype, ec, e->e_version, + (size_t) 1)) == 1) + sh_entsize = 0; - sh_size = scn_size; - sh_offset = roundup(*rc, sh_align); + sh_size = scn_size; - if (ec == ELFCLASS32) { - s->s_shdr.s_shdr32.sh_addralign = (uint32_t) sh_align; - s->s_shdr.s_shdr32.sh_entsize = (uint32_t) sh_entsize; - s->s_shdr.s_shdr32.sh_offset = (uint32_t) sh_offset; - s->s_shdr.s_shdr32.sh_size = (uint32_t) sh_size; - } else { - s->s_shdr.s_shdr64.sh_addralign = sh_align; - s->s_shdr.s_shdr64.sh_entsize = sh_entsize; - s->s_shdr.s_shdr64.sh_offset = sh_offset; - s->s_shdr.s_shdr64.sh_size = sh_size; - } - } +computeoffset: + /* + * Compute the new offset for the section based on + * the section's alignment needs. + */ + sh_offset = roundup(rc, sh_align); - if ((size_t) *rc < sh_offset + sh_size) - *rc = sh_offset + sh_size; + /* + * Update the section header. + */ + if (ec == ELFCLASS32) { + shdr32->sh_addralign = (uint32_t) sh_align; + shdr32->sh_entsize = (uint32_t) sh_entsize; + shdr32->sh_offset = (uint32_t) sh_offset; + shdr32->sh_size = (uint32_t) sh_size; + } else { + shdr64->sh_addralign = sh_align; + shdr64->sh_entsize = sh_entsize; + shdr64->sh_offset = sh_offset; + shdr64->sh_size = sh_size; + } +updatedescriptor: + /* + * Update the section descriptor. + */ s->s_size = sh_size; s->s_offset = sh_offset; + return (1); } @@ -267,13 +325,16 @@ _libelf_insert_section(Elf *e, Elf_Scn * return (1); } +/* + * Recompute section layout. + */ + static off_t _libelf_resync_sections(Elf *e, off_t rc) { int ec; - off_t nrc; + Elf_Scn *s; size_t sh_type, shdr_start, shdr_end; - Elf_Scn *s, *ts; ec = e->e_class; @@ -281,13 +342,7 @@ _libelf_resync_sections(Elf *e, off_t rc * Make a pass through sections, computing the extent of each * section. Order in increasing order of addresses. */ - - nrc = rc; - STAILQ_FOREACH(s, &e->e_u.e_elf.e_scn, s_next) - if (_libelf_compute_section_extents(e, s, &nrc) == 0) - return ((off_t) -1); - - STAILQ_FOREACH_SAFE(s, &e->e_u.e_elf.e_scn, s_next, ts) { + STAILQ_FOREACH(s, &e->e_u.e_elf.e_scn, s_next) { if (ec == ELFCLASS32) sh_type = s->s_shdr.s_shdr32.sh_type; else @@ -296,21 +351,22 @@ _libelf_resync_sections(Elf *e, off_t rc if (sh_type == SHT_NOBITS || sh_type == SHT_NULL) continue; - if (s->s_offset < (uint64_t) rc) { - if (s->s_offset + s->s_size < (uint64_t) rc) { - /* - * Try insert this section in the - * correct place in the list, - * detecting overlaps if any. - */ - STAILQ_REMOVE(&e->e_u.e_elf.e_scn, s, _Elf_Scn, - s_next); - if (_libelf_insert_section(e, s) == 0) - return ((off_t) -1); - } else { - LIBELF_SET_ERROR(LAYOUT, 0); + if (_libelf_compute_section_extents(e, s, rc) == 0) + return ((off_t) -1); + + if (s->s_size == 0) + continue; + + if (s->s_offset + s->s_size < (size_t) rc) { + /* + * Try insert this section in the + * correct place in the list, + * detecting overlaps if any. + */ + STAILQ_REMOVE(&e->e_u.e_elf.e_scn, s, _Elf_Scn, + s_next); + if (_libelf_insert_section(e, s) == 0) return ((off_t) -1); - } } else rc = s->s_offset + s->s_size; } @@ -338,8 +394,6 @@ _libelf_resync_sections(Elf *e, off_t rc } } - assert(nrc == rc); - return (rc); } Modified: user/attilio/vmobj-rwlock/sbin/fsck_ffs/dir.c ============================================================================== --- user/attilio/vmobj-rwlock/sbin/fsck_ffs/dir.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/sbin/fsck_ffs/dir.c Sun Feb 24 17:20:53 2013 (r247227) @@ -708,6 +708,6 @@ getdirblk(ufs2_daddr_t blkno, long size) if (pdirbp != 0) pdirbp->b_flags &= ~B_INUSE; - pdirbp = getdatablk(blkno, size); + pdirbp = getdatablk(blkno, size, BT_DIRDATA); return (pdirbp); } Modified: user/attilio/vmobj-rwlock/sbin/fsck_ffs/ea.c ============================================================================== --- user/attilio/vmobj-rwlock/sbin/fsck_ffs/ea.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/sbin/fsck_ffs/ea.c Sun Feb 24 17:20:53 2013 (r247227) @@ -73,7 +73,7 @@ eascan(struct inodesc *idesc, struct ufs else blksiz = sblock.fs_bsize; printf("blksiz = %ju\n", (intmax_t)blksiz); - bp = getdatablk(dp->di_extb[0], blksiz); + bp = getdatablk(dp->di_extb[0], blksiz, BT_EXTATTR); cp = (u_char *)bp->b_un.b_buf; for (n = 0; n < blksiz; n++) { printf("%02x", cp[n]); Modified: user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsck.h ============================================================================== --- user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsck.h Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsck.h Sun Feb 24 17:20:53 2013 (r247227) @@ -138,6 +138,7 @@ struct bufarea { int b_size; int b_errs; int b_flags; + int b_type; union { char *b_buf; /* buffer space */ ufs1_daddr_t *b_indir1; /* UFS1 indirect block */ @@ -165,6 +166,36 @@ struct bufarea { * Buffer flags */ #define B_INUSE 0x00000001 /* Buffer is in use */ +/* + * Type of data in buffer + */ +#define BT_UNKNOWN 0 /* Buffer holds a superblock */ +#define BT_SUPERBLK 1 /* Buffer holds a superblock */ +#define BT_CYLGRP 2 /* Buffer holds a cylinder group map */ +#define BT_LEVEL1 3 /* Buffer holds single level indirect */ +#define BT_LEVEL2 4 /* Buffer holds double level indirect */ +#define BT_LEVEL3 5 /* Buffer holds triple level indirect */ +#define BT_EXTATTR 6 /* Buffer holds external attribute data */ +#define BT_INODES 7 /* Buffer holds external attribute data */ +#define BT_DIRDATA 8 /* Buffer holds directory data */ +#define BT_DATA 9 /* Buffer holds user data */ +#define BT_NUMBUFTYPES 10 +#define BT_NAMES { \ + "unknown", \ + "Superblock", \ + "Cylinder Group", \ + "Single Level Indirect", \ + "Double Level Indirect", \ + "Triple Level Indirect", \ + "External Attribute", \ + "Inode Block", \ + "Directory Contents", \ + "User Data" } +long readcnt[BT_NUMBUFTYPES]; +long totalreadcnt[BT_NUMBUFTYPES]; +struct timespec readtime[BT_NUMBUFTYPES]; +struct timespec totalreadtime[BT_NUMBUFTYPES]; +struct timespec startprog; struct bufarea sblk; /* file system superblock */ struct bufarea cgblk; /* cylinder group blocks */ @@ -177,10 +208,11 @@ struct bufarea *pbp; /* current inode b else \ (bp)->b_dirty = 1; \ } while (0) -#define initbarea(bp) do { \ +#define initbarea(bp, type) do { \ (bp)->b_dirty = 0; \ (bp)->b_bno = (ufs2_daddr_t)-1; \ (bp)->b_flags = 0; \ + (bp)->b_type = type; \ } while (0) #define sbdirty() dirty(&sblk) @@ -357,6 +389,7 @@ int dirscan(struct inodesc *); int dofix(struct inodesc *, const char *msg); int eascan(struct inodesc *, struct ufs2_dinode *dp); void fileerror(ino_t cwd, ino_t ino, const char *errmesg); +void finalIOstats(void); int findino(struct inodesc *); int findname(struct inodesc *); void flush(int fd, struct bufarea *bp); @@ -365,7 +398,7 @@ void freeino(ino_t ino); void freeinodebuf(void); int ftypeok(union dinode *dp); void getblk(struct bufarea *bp, ufs2_daddr_t blk, long size); -struct bufarea *getdatablk(ufs2_daddr_t blkno, long size); +struct bufarea *getdatablk(ufs2_daddr_t blkno, long size, int type); struct inoinfo *getinoinfo(ino_t inumber); union dinode *getnextinode(ino_t inumber, int rebuildcg); void getpathname(char *namebuf, ino_t curdir, ino_t ino); @@ -375,6 +408,7 @@ void alarmhandler(int sig); void inocleanup(void); void inodirty(void); struct inostat *inoinfo(ino_t inum); +void IOstats(char *what); int linkup(ino_t orphan, ino_t parentdir, char *name); int makeentry(ino_t parent, ino_t ino, const char *name); void panic(const char *fmt, ...) __printflike(1, 2); Modified: user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsutil.c ============================================================================== --- user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsutil.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsutil.c Sun Feb 24 17:20:53 2013 (r247227) @@ -56,19 +56,23 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include "fsck.h" static void slowio_start(void); static void slowio_end(void); +static void printIOstats(void); -long diskreads, totalreads; /* Disk cache statistics */ +static long diskreads, totaldiskreads, totalreads; /* Disk cache statistics */ +static struct timespec startpass, finishpass; struct timeval slowio_starttime; int slowio_delay_usec = 10000; /* Initial IO delay for background fsck */ int slowio_pollcnt; static TAILQ_HEAD(buflist, bufarea) bufhead; /* head of buffer cache list */ static int numbufs; /* size of buffer cache */ +static char *buftype[BT_NUMBUFTYPES] = BT_NAMES; int ftypeok(union dinode *dp) @@ -163,7 +167,7 @@ bufinit(void) if (bufp == 0) errx(EEXIT, "cannot allocate buffer pool"); cgblk.b_un.b_buf = bufp; - initbarea(&cgblk); + initbarea(&cgblk, BT_CYLGRP); TAILQ_INIT(&bufhead); bufcnt = MAXBUFS; if (bufcnt < MINBUFS) @@ -178,16 +182,21 @@ bufinit(void) } bp->b_un.b_buf = bufp; TAILQ_INSERT_HEAD(&bufhead, bp, b_list); - initbarea(bp); + initbarea(bp, BT_UNKNOWN); } numbufs = i; /* save number of buffers */ + for (i = 0; i < BT_NUMBUFTYPES; i++) { + readtime[i].tv_sec = totalreadtime[i].tv_sec = 0; + readtime[i].tv_nsec = totalreadtime[i].tv_nsec = 0; + readcnt[i] = totalreadcnt[i] = 0; + } } /* * Manage a cache of directory blocks. */ struct bufarea * -getdatablk(ufs2_daddr_t blkno, long size) +getdatablk(ufs2_daddr_t blkno, long size, int type) { struct bufarea *bp; @@ -199,26 +208,62 @@ getdatablk(ufs2_daddr_t blkno, long size break; if (bp == NULL) errx(EEXIT, "deadlocked buffer pool"); + bp->b_type = type; getblk(bp, blkno, size); /* fall through */ foundit: + if (debug && bp->b_type != type) + printf("Buffer type changed from %s to %s\n", + buftype[bp->b_type], buftype[type]); TAILQ_REMOVE(&bufhead, bp, b_list); TAILQ_INSERT_HEAD(&bufhead, bp, b_list); bp->b_flags |= B_INUSE; return (bp); } +/* + * Timespec operations (from ). + */ +#define timespecsub(vvp, uvp) \ + do { \ + (vvp)->tv_sec -= (uvp)->tv_sec; \ + (vvp)->tv_nsec -= (uvp)->tv_nsec; \ + if ((vvp)->tv_nsec < 0) { \ + (vvp)->tv_sec--; \ + (vvp)->tv_nsec += 1000000000; \ + } \ + } while (0) +#define timespecadd(vvp, uvp) \ + do { \ + (vvp)->tv_sec += (uvp)->tv_sec; \ + (vvp)->tv_nsec += (uvp)->tv_nsec; \ + if ((vvp)->tv_nsec >= 1000000000) { \ + (vvp)->tv_sec++; \ + (vvp)->tv_nsec -= 1000000000; \ + } \ + } while (0) + void getblk(struct bufarea *bp, ufs2_daddr_t blk, long size) { ufs2_daddr_t dblk; + struct timespec start, finish; - totalreads++; dblk = fsbtodb(&sblock, blk); - if (bp->b_bno != dblk) { + if (bp->b_bno == dblk) { + totalreads++; + } else { flush(fswritefd, bp); - diskreads++; + if (debug) { + readcnt[bp->b_type]++; + clock_gettime(CLOCK_REALTIME_PRECISE, &start); + } bp->b_errs = blread(fsreadfd, bp->b_un.b_buf, dblk, size); + if (debug) { + clock_gettime(CLOCK_REALTIME_PRECISE, &finish); + timespecsub(&finish, &start); + timespecadd(&readtime[bp->b_type], &finish); + } bp->b_bno = dblk; bp->b_size = size; } @@ -292,8 +337,8 @@ ckfini(int markclean) } if (debug && totalreads > 0) printf("cache with %d buffers missed %ld of %ld (%d%%)\n", - numbufs, diskreads, totalreads, - (int)(diskreads * 100 / totalreads)); + numbufs, totaldiskreads, totalreads, + (int)(totaldiskreads * 100 / totalreads)); if (fswritefd < 0) { (void)close(fsreadfd); return; @@ -347,6 +392,82 @@ ckfini(int markclean) (void)close(fswritefd); } +/* + * Print out I/O statistics. + */ +void +IOstats(char *what) +{ + int i; + + if (debug == 0) + return; + if (diskreads == 0) { + printf("%s: no I/O\n\n", what); + return; + } + if (startpass.tv_sec == 0) + startpass = startprog; + printf("%s: I/O statistics\n", what); + printIOstats(); + totaldiskreads += diskreads; + diskreads = 0; + for (i = 0; i < BT_NUMBUFTYPES; i++) { + timespecadd(&totalreadtime[i], &readtime[i]); + totalreadcnt[i] += readcnt[i]; + readtime[i].tv_sec = readtime[i].tv_nsec = 0; + readcnt[i] = 0; + } + clock_gettime(CLOCK_REALTIME_PRECISE, &startpass); +} + +void +finalIOstats(void) +{ + int i; + + if (debug == 0) + return; + printf("Final I/O statistics\n"); + totaldiskreads += diskreads; + diskreads = totaldiskreads; + startpass = startprog; + for (i = 0; i < BT_NUMBUFTYPES; i++) { + timespecadd(&totalreadtime[i], &readtime[i]); + totalreadcnt[i] += readcnt[i]; + readtime[i] = totalreadtime[i]; + readcnt[i] = totalreadcnt[i]; + } + printIOstats(); +} + +static void printIOstats(void) +{ + long long msec, totalmsec; + int i; + + clock_gettime(CLOCK_REALTIME_PRECISE, &finishpass); + timespecsub(&finishpass, &startpass); + printf("Running time: %ld msec\n", + finishpass.tv_sec * 1000 + finishpass.tv_nsec / 1000000); + printf("buffer reads by type:\n"); + for (totalmsec = 0, i = 0; i < BT_NUMBUFTYPES; i++) + totalmsec += readtime[i].tv_sec * 1000 + + readtime[i].tv_nsec / 1000000; + if (totalmsec == 0) + totalmsec = 1; + for (i = 0; i < BT_NUMBUFTYPES; i++) { + if (readcnt[i] == 0) + continue; + msec = readtime[i].tv_sec * 1000 + readtime[i].tv_nsec / 1000000; + printf("%21s:%8ld %2ld.%ld%% %8lld msec %2lld.%lld%%\n", + buftype[i], readcnt[i], readcnt[i] * 100 / diskreads, + (readcnt[i] * 1000 / diskreads) % 10, msec, + msec * 100 / totalmsec, (msec * 1000 / totalmsec) % 10); + } + printf("\n"); +} + int blread(int fd, char *buf, ufs2_daddr_t blk, long size) { @@ -358,6 +479,8 @@ blread(int fd, char *buf, ufs2_daddr_t b offset *= dev_bsize; if (bkgrdflag) slowio_start(); + totalreads++; + diskreads++; if (lseek(fd, offset, 0) < 0) rwerror("SEEK BLK", blk); else if (read(fd, buf, (int)size) == size) { Modified: user/attilio/vmobj-rwlock/sbin/fsck_ffs/inode.c ============================================================================== --- user/attilio/vmobj-rwlock/sbin/fsck_ffs/inode.c Sun Feb 24 17:11:10 2013 (r247226) +++ user/attilio/vmobj-rwlock/sbin/fsck_ffs/inode.c Sun Feb 24 17:20:53 2013 (r247227) @@ -52,7 +52,7 @@ __FBSDID("$FreeBSD$"); static ino_t startinum; -static int iblock(struct inodesc *, long ilevel, off_t isize); +static int iblock(struct inodesc *, long ilevel, off_t isize, int type); int ckinode(union dinode *dp, struct inodesc *idesc) @@ -121,7 +121,7 @@ ckinode(union dinode *dp, struct inodesc sizepb *= NINDIR(&sblock); if (DIP(&dino, di_ib[i])) { idesc->id_blkno = DIP(&dino, di_ib[i]); - ret = iblock(idesc, i + 1, remsize); + ret = iblock(idesc, i + 1, remsize, BT_LEVEL1 + i); if (ret & STOP) return (ret); } else { @@ -151,7 +151,7 @@ ckinode(union dinode *dp, struct inodesc } static int -iblock(struct inodesc *idesc, long ilevel, off_t isize) +iblock(struct inodesc *idesc, long ilevel, off_t isize, int type) { struct bufarea *bp; int i, n, (*func)(struct inodesc *), nif; @@ -168,7 +168,7 @@ iblock(struct inodesc *idesc, long ileve func = dirscan; if (chkrange(idesc->id_blkno, idesc->id_numfrags)) return (SKIP); - bp = getdatablk(idesc->id_blkno, sblock.fs_bsize); + bp = getdatablk(idesc->id_blkno, sblock.fs_bsize, type); ilevel--; for (sizepb = sblock.fs_bsize, i = 0; i < ilevel; i++) sizepb *= NINDIR(&sblock); @@ -199,7 +199,7 @@ iblock(struct inodesc *idesc, long ileve if (ilevel == 0) n = (*func)(idesc); else - n = iblock(idesc, ilevel, isize); + n = iblock(idesc, ilevel, isize, type); if (n & STOP) { bp->b_flags &= ~B_INUSE; return (n); @@ -292,7 +292,7 @@ ginode(ino_t inumber) iblk = ino_to_fsba(&sblock, inumber); if (pbp != 0) pbp->b_flags &= ~B_INUSE; - pbp = getdatablk(iblk, sblock.fs_bsize); + pbp = getdatablk(iblk, sblock.fs_bsize, BT_INODES); startinum = (inumber / INOPB(&sblock)) * INOPB(&sblock); } if (sblock.fs_magic == FS_UFS1_MAGIC) @@ -306,8 +306,8 @@ ginode(ino_t inumber) * over all the inodes in numerical order. */ static ino_t nextino, lastinum, lastvalidinum; -static long readcnt, readpercg, fullcnt, inobufsize, partialcnt, partialsize; -static caddr_t inodebuf; +static long readcount, readpercg, fullcnt, inobufsize, partialcnt, partialsize; +static struct bufarea inobuf; union dinode * getnextinode(ino_t inumber, int rebuildcg) @@ -315,7 +315,7 @@ getnextinode(ino_t inumber, int rebuildc int j; long size; mode_t mode; - ufs2_daddr_t ndb, dblk; + ufs2_daddr_t ndb, blk; union dinode *dp; static caddr_t nextinop; @@ -323,9 +323,9 @@ getnextinode(ino_t inumber, int rebuildc errx(EEXIT, "bad inode number %ju to nextinode", (uintmax_t)inumber); if (inumber >= lastinum) { - readcnt++; - dblk = fsbtodb(&sblock, ino_to_fsba(&sblock, lastinum)); - if (readcnt % readpercg == 0) { + readcount++; + blk = ino_to_fsba(&sblock, lastinum); + if (readcount % readpercg == 0) { size = partialsize; lastinum += partialcnt; } else { @@ -333,14 +333,14 @@ getnextinode(ino_t inumber, int rebuildc lastinum += fullcnt; } /* - * If blread returns an error, it will already have zeroed + * If getblk encounters an error, it will already have zeroed * out the buffer, so we do not need to do so here. */ - (void)blread(fsreadfd, inodebuf, dblk, size); - nextinop = inodebuf; + getblk(&inobuf, blk, size); + nextinop = inobuf.b_un.b_buf; } dp = (union dinode *)nextinop; - if (rebuildcg && nextinop == inodebuf) { + if (rebuildcg && nextinop == inobuf.b_un.b_buf) { /* * Try to determine if we have reached the end of the * allocated inodes. @@ -406,8 +406,8 @@ setinodebuf(ino_t inum) startinum = 0; nextino = inum; lastinum = inum; - readcnt = 0; - if (inodebuf != NULL) + readcount = 0; + if (inobuf.b_un.b_buf != NULL) return; inobufsize = blkroundup(&sblock, INOBUFSIZE); fullcnt = inobufsize / ((sblock.fs_magic == FS_UFS1_MAGIC) ? *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 18:12:31 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id D3739A96; Sun, 24 Feb 2013 18:12:31 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id AD92BCE2; Sun, 24 Feb 2013 18:12:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OICVGq034446; Sun, 24 Feb 2013 18:12:31 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OICUCQ034440; Sun, 24 Feb 2013 18:12:30 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241812.r1OICUCQ034440@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 18:12:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247228 - in user/dchagin/lemul/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 18:12:31 -0000 Author: dchagin Date: Sun Feb 24 18:12:30 2013 New Revision: 247228 URL: http://svnweb.freebsd.org/changeset/base/247228 Log: Implement rt_sigqueueinfo() system call. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c user/dchagin/lemul/sys/amd64/linux32/syscalls.master user/dchagin/lemul/sys/compat/linux/linux_signal.c user/dchagin/lemul/sys/compat/linux/linux_signal.h user/dchagin/lemul/sys/i386/linux/linux_dummy.c user/dchagin/lemul/sys/i386/linux/syscalls.master Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Sun Feb 24 18:12:30 2013 (r247228) @@ -62,7 +62,6 @@ DUMMY(bdflush); DUMMY(sysfs); DUMMY(query_module); DUMMY(nfsservctl); -DUMMY(rt_sigqueueinfo); DUMMY(sendfile); DUMMY(setfsuid); DUMMY(setfsgid); Modified: user/dchagin/lemul/sys/amd64/linux32/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/syscalls.master Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/amd64/linux32/syscalls.master Sun Feb 24 18:12:30 2013 (r247228) @@ -318,7 +318,8 @@ l_siginfo_t *ptr, \ struct l_timeval *timeout, \ l_size_t sigsetsize); } -178 AUE_NULL STD { int linux_rt_sigqueueinfo(void); } +178 AUE_NULL STD { int linux_rt_sigqueueinfo(l_pid_t pid, l_int sig, \ + l_siginfo_t *info); } 179 AUE_NULL STD { int linux_rt_sigsuspend( \ l_sigset_t *newset, \ l_size_t sigsetsize); } Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 18:12:30 2013 (r247228) @@ -681,3 +681,50 @@ siginfo_to_lsiginfo(siginfo_t *si, l_sig lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); } } + +void +lsiginfo_to_ksiginfo(l_siginfo_t *lsi, ksiginfo_t *ksi, int sig) +{ + + ksi->ksi_signo = sig; + ksi->ksi_code = lsi->lsi_code; + ksi->ksi_pid = lsi->lsi_pid; + ksi->ksi_uid = lsi->lsi_uid; + ksi->ksi_status = lsi->lsi_status; + ksi->ksi_addr = PTRIN(lsi->lsi_addr); + ksi->ksi_info.si_value.sival_int = lsi->lsi_int; +} + +int +linux_rt_sigqueueinfo(struct thread *td, struct linux_rt_sigqueueinfo_args *args) +{ + l_siginfo_t linfo; + struct proc *p; + ksiginfo_t ksi; + int error; + int sig; + + if (!LINUX_SIG_VALID(args->sig)) + return (EINVAL); + + if ((error = copyin(args->info, &linfo, sizeof(linfo)))) + return (error); + + if (linfo.lsi_code >= 0) + return (EPERM); + + if (args->sig > 0 && args->sig <= LINUX_SIGTBLSZ) + sig = linux_to_bsd_signal[_SIG_IDX(args->sig)]; + else + sig = args->sig; + + error = ESRCH; + if ((p = pfind(args->pid)) != NULL || + (p = zpfind(args->pid)) != NULL) { + ksiginfo_init(&ksi); + lsiginfo_to_ksiginfo(&linfo, &ksi, sig); + error = tdsendsignal(p, NULL, sig, &ksi); + PROC_UNLOCK(p); + } + return (error); +} Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.h ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 18:12:30 2013 (r247228) @@ -39,6 +39,7 @@ extern int linux_to_bsd_signal[]; void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); +void lsiginfo_to_ksiginfo(l_siginfo_t *lsi, ksiginfo_t *ksi, int sig); void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig); void siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig); Modified: user/dchagin/lemul/sys/i386/linux/linux_dummy.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_dummy.c Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/i386/linux/linux_dummy.c Sun Feb 24 18:12:30 2013 (r247228) @@ -65,7 +65,6 @@ DUMMY(sysfs); DUMMY(vm86); DUMMY(query_module); DUMMY(nfsservctl); -DUMMY(rt_sigqueueinfo); DUMMY(sendfile); /* different semantics */ DUMMY(setfsuid); DUMMY(setfsgid); Modified: user/dchagin/lemul/sys/i386/linux/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/i386/linux/syscalls.master Sun Feb 24 17:20:53 2013 (r247227) +++ user/dchagin/lemul/sys/i386/linux/syscalls.master Sun Feb 24 18:12:30 2013 (r247228) @@ -320,7 +320,8 @@ l_siginfo_t *ptr, \ struct l_timeval *timeout, \ l_size_t sigsetsize); } -178 AUE_NULL STD { int linux_rt_sigqueueinfo(void); } +178 AUE_NULL STD { int linux_rt_sigqueueinfo(l_pid_t pid, l_int sig, \ + l_siginfo_t *info); } 179 AUE_NULL STD { int linux_rt_sigsuspend( \ l_sigset_t *newset, \ l_size_t sigsetsize); } From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 18:14:00 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id F2BECBD2; Sun, 24 Feb 2013 18:13:59 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E4C45D01; Sun, 24 Feb 2013 18:13:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OIDxsL034726; Sun, 24 Feb 2013 18:13:59 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OIDvYo034707; Sun, 24 Feb 2013 18:13:57 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241813.r1OIDvYo034707@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 18:13:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247229 - in user/dchagin/lemul/sys: amd64/linux32 i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 18:14:00 -0000 Author: dchagin Date: Sun Feb 24 18:13:57 2013 New Revision: 247229 URL: http://svnweb.freebsd.org/changeset/base/247229 Log: Regen for r247228. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c user/dchagin/lemul/sys/i386/linux/linux_proto.h user/dchagin/lemul/sys/i386/linux/linux_syscall.h user/dchagin/lemul/sys/i386/linux/linux_syscalls.c user/dchagin/lemul/sys/i386/linux/linux_sysent.c user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -573,7 +573,9 @@ struct linux_rt_sigtimedwait_args { char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; struct linux_rt_sigqueueinfo_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; }; struct linux_rt_sigsuspend_args { char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_r_[PADR_(l_sigset_t *)]; Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #include "opt_compat.h" @@ -197,7 +197,7 @@ struct sysent linux_sysent[] = { { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 175 = linux_rt_sigprocmask */ { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 176 = linux_rt_sigpending */ { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ + { AS(linux_rt_sigqueueinfo_args), (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 179 = linux_rt_sigsuspend */ { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 180 = linux_pread */ { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 181 = linux_pwrite */ Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Sun Feb 24 18:13:57 2013 (r247229) @@ -1234,7 +1234,11 @@ systrace_args(int sysnum, void *params, } /* linux_rt_sigqueueinfo */ case 178: { - *n_args = 0; + struct linux_rt_sigqueueinfo_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->sig; /* l_int */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + *n_args = 3; break; } /* linux_rt_sigsuspend */ @@ -4151,6 +4155,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_rt_sigqueueinfo */ case 178: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_siginfo_t *"; + break; + default: + break; + }; break; /* linux_rt_sigsuspend */ case 179: @@ -6176,6 +6193,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_rt_sigqueueinfo */ case 178: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_rt_sigsuspend */ case 179: if (ndx == 0 || ndx == 1) Modified: user/dchagin/lemul/sys/i386/linux/linux_proto.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_proto.h Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/i386/linux/linux_proto.h Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -574,7 +574,9 @@ struct linux_rt_sigtimedwait_args { char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; struct linux_rt_sigqueueinfo_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; }; struct linux_rt_sigsuspend_args { char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_r_[PADR_(l_sigset_t *)]; Modified: user/dchagin/lemul/sys/i386/linux/linux_syscall.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscall.h Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/i386/linux/linux_syscall.h Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/i386/linux/linux_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/i386/linux/linux_sysent.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_sysent.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/i386/linux/linux_sysent.c Sun Feb 24 18:13:57 2013 (r247229) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247219 2013-02-24 11:31:00Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin */ #include @@ -196,7 +196,7 @@ struct sysent linux_sysent[] = { { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 175 = linux_rt_sigprocmask */ { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 176 = linux_rt_sigpending */ { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ + { AS(linux_rt_sigqueueinfo_args), (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 179 = linux_rt_sigsuspend */ { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 180 = linux_pread */ { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 181 = linux_pwrite */ Modified: user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Sun Feb 24 18:12:30 2013 (r247228) +++ user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Sun Feb 24 18:13:57 2013 (r247229) @@ -1277,7 +1277,11 @@ systrace_args(int sysnum, void *params, } /* linux_rt_sigqueueinfo */ case 178: { - *n_args = 0; + struct linux_rt_sigqueueinfo_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->sig; /* l_int */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + *n_args = 3; break; } /* linux_rt_sigsuspend */ @@ -4303,6 +4307,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_rt_sigqueueinfo */ case 178: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_siginfo_t *"; + break; + default: + break; + }; break; /* linux_rt_sigsuspend */ case 179: @@ -6496,6 +6513,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_rt_sigqueueinfo */ case 178: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_rt_sigsuspend */ case 179: if (ndx == 0 || ndx == 1) From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 18:33:13 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E0B3841B; Sun, 24 Feb 2013 18:33:13 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D3D3CDD7; Sun, 24 Feb 2013 18:33:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OIXDYC040645; Sun, 24 Feb 2013 18:33:13 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OIXDAp040644; Sun, 24 Feb 2013 18:33:13 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302241833.r1OIXDAp040644@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 24 Feb 2013 18:33:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247231 - user/dchagin/lemul/sys/compat/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 18:33:13 -0000 Author: dchagin Date: Sun Feb 24 18:33:13 2013 New Revision: 247231 URL: http://svnweb.freebsd.org/changeset/base/247231 Log: sched_rr_get_interval() returns EINVAL in case when the invalid pid specified. This silence the ltp tests. Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.c Sun Feb 24 18:26:17 2013 (r247230) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c Sun Feb 24 18:33:13 2013 (r247231) @@ -1944,6 +1944,9 @@ linux_sched_rr_get_interval(struct threa struct thread *tdt; int error; + if (uap->pid < 0) + return (EINVAL); + tdt = linux_tdfind(td, uap->pid, -1); if (tdt == NULL) return (ESRCH); From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 19:05:13 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 088447E2; Sun, 24 Feb 2013 19:05:13 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D8335EB2; Sun, 24 Feb 2013 19:05:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OJ5COr049801; Sun, 24 Feb 2013 19:05:12 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OJ5C56049800; Sun, 24 Feb 2013 19:05:12 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241905.r1OJ5C56049800@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 19:05:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247232 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 19:05:13 -0000 Author: attilio Date: Sun Feb 24 19:05:11 2013 New Revision: 247232 URL: http://svnweb.freebsd.org/changeset/base/247232 Log: Simplify return logic. Sponsored by: EMC / Isilon storage division Submitted by: alc Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 18:33:13 2013 (r247231) +++ user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 19:05:11 2013 (r247232) @@ -299,9 +299,7 @@ vm_radix_addlev(vm_pindex_t *idx, boolea wrapidx = *idx; *idx = vm_radix_trimkey(*idx, ilev); *idx += VM_RADIX_UNITLEVEL(ilev); - if (*idx < wrapidx) - return (1); - return (0); + return (*idx < wrapidx); } /* @@ -327,9 +325,7 @@ vm_radix_declev(vm_pindex_t *idx, boolea *idx = vm_radix_trimkey(*idx, ilev); *idx |= VM_RADIX_UNITLEVEL(ilev) - 1; *idx -= VM_RADIX_UNITLEVEL(ilev); - if (*idx > wrapidx) - return (1); - return (0); + return (*idx > wrapidx) } /* From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 19:10:16 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E18C6998; Sun, 24 Feb 2013 19:10:16 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D4DB8EDB; Sun, 24 Feb 2013 19:10:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OJAGBN050708; Sun, 24 Feb 2013 19:10:16 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OJAG9j050707; Sun, 24 Feb 2013 19:10:16 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302241910.r1OJAG9j050707@svn.freebsd.org> From: Attilio Rao Date: Sun, 24 Feb 2013 19:10:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247233 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 19:10:16 -0000 Author: attilio Date: Sun Feb 24 19:10:16 2013 New Revision: 247233 URL: http://svnweb.freebsd.org/changeset/base/247233 Log: Missing semicolon. Sponsored by: EMC / Isilon storage division Submitted by: alc Pointy hat to: me Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 19:05:11 2013 (r247232) +++ user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Feb 24 19:10:16 2013 (r247233) @@ -325,7 +325,7 @@ vm_radix_declev(vm_pindex_t *idx, boolea *idx = vm_radix_trimkey(*idx, ilev); *idx |= VM_RADIX_UNITLEVEL(ilev) - 1; *idx -= VM_RADIX_UNITLEVEL(ilev); - return (*idx > wrapidx) + return (*idx > wrapidx); } /* From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 19:49:03 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 9B501673; Sun, 24 Feb 2013 19:49:03 +0000 (UTC) (envelope-from crees@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 78814F7; Sun, 24 Feb 2013 19:49:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OJn31g062408; Sun, 24 Feb 2013 19:49:03 GMT (envelope-from crees@svn.freebsd.org) Received: (from crees@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OJn3m6062407; Sun, 24 Feb 2013 19:49:03 GMT (envelope-from crees@svn.freebsd.org) Message-Id: <201302241949.r1OJn3m6062407@svn.freebsd.org> From: Chris Rees Date: Sun, 24 Feb 2013 19:49:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247235 - user/crees/rclint X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 19:49:03 -0000 Author: crees (ports committer) Date: Sun Feb 24 19:49:02 2013 New Revision: 247235 URL: http://svnweb.freebsd.org/changeset/base/247235 Log: Actually check shebang Modified: user/crees/rclint/rclint.py Modified: user/crees/rclint/rclint.py ============================================================================== --- user/crees/rclint/rclint.py Sun Feb 24 19:32:43 2013 (r247234) +++ user/crees/rclint/rclint.py Sun Feb 24 19:49:02 2013 (r247235) @@ -193,7 +193,7 @@ class Comment: class Shebang: def __init__(self, comment): self.line = comment.line - result = comment.match(r'#!(\S+)\s*(.*)') + result = comment.match(r'^#!(\S+)\s*(.*)') if result: self.value = result[0] self.args = result[1] @@ -323,7 +323,7 @@ def do_rclint(filename): logging.debug('OK, done collecting variables. Time to check!') logging.debug('Checking shebang') - if len(lineobj['Shebang']) < 1: + if lineobj['Shebang'][0].value == False: error.give('shebang') logging.debug('Checking RcsId') From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 22:40:34 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 9DCDF749; Sun, 24 Feb 2013 22:40:34 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 90D82989; Sun, 24 Feb 2013 22:40:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OMeYa0014148; Sun, 24 Feb 2013 22:40:34 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OMeYDT014139; Sun, 24 Feb 2013 22:40:34 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201302242240.r1OMeYDT014139@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 24 Feb 2013 22:40:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247244 - user/bryanv X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 22:40:34 -0000 Author: bryanv Date: Sun Feb 24 22:40:33 2013 New Revision: 247244 URL: http://svnweb.freebsd.org/changeset/base/247244 Log: Create an experimentation branch for VirtIO net multiqueue Patches to QEMU and Linux VirtIO multiqueue have been floating around for a long time, and were finally merged in QEMU 1.4 and Linux 3.8. This branch will make the FreeBSD driver multiqueue aware. Lots of long overdue network driver changes will also be done, such as: - Address checksum issues, particularly IPv6. VirtIO checksumming is difficult to fit into FreeBSD, but it can be better done. - Complete support for the virtqueue EVENT_IDX feature. Partial support was added last year, but I never got around to finishing it. Approved by: grehan (implicit) Added: user/bryanv/ - copied from r247243, projects/virtio/ Directory Properties: user/bryanv/vtnetmq/ (props changed) From owner-svn-src-user@FreeBSD.ORG Sun Feb 24 23:57:53 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D450AE72; Sun, 24 Feb 2013 23:57:53 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id B7681ED5; Sun, 24 Feb 2013 23:57:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1ONvrco037375; Sun, 24 Feb 2013 23:57:53 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1ONvrGG037373; Sun, 24 Feb 2013 23:57:53 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201302242357.r1ONvrGG037373@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 24 Feb 2013 23:57:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247246 - user/bryanv/vtnetmq/sys/dev/virtio/network X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Feb 2013 23:57:53 -0000 Author: bryanv Date: Sun Feb 24 23:57:52 2013 New Revision: 247246 URL: http://svnweb.freebsd.org/changeset/base/247246 Log: Initial import of the network multiqueue driver This is basically a rewrite and cleanup of much of the existing driver. Much more work remains to be done. It appears to still pass packets fine, but it is very lightly tested. Approved by: grehan (implicit) Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnetvar.h user/bryanv/vtnetmq/sys/dev/virtio/network/virtio_net.h Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun Feb 24 23:12:33 2013 (r247245) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun Feb 24 23:57:52 2013 (r247246) @@ -29,10 +29,6 @@ #include __FBSDID("$FreeBSD$"); -#ifdef HAVE_KERNEL_OPTION_HEADERS -#include "opt_device_polling.h" -#endif - #include #include #include @@ -46,6 +42,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include +#include #include @@ -90,79 +89,115 @@ static int vtnet_shutdown(device_t); static int vtnet_config_change(device_t); static void vtnet_negotiate_features(struct vtnet_softc *); +static void vtnet_setup_features(struct vtnet_softc *); +static int vtnet_init_rxq(struct vtnet_softc *, int); +static int vtnet_init_txq(struct vtnet_softc *, int); +static int vtnet_alloc_rxtx_queues(struct vtnet_softc *); +static void vtnet_free_rxtx_queues(struct vtnet_softc *); +static int vtnet_alloc_rx_filters(struct vtnet_softc *); +static void vtnet_free_rx_filters(struct vtnet_softc *); static int vtnet_alloc_virtqueues(struct vtnet_softc *); -static void vtnet_get_hwaddr(struct vtnet_softc *); -static void vtnet_set_hwaddr(struct vtnet_softc *); -static int vtnet_is_link_up(struct vtnet_softc *); -static void vtnet_update_link_status(struct vtnet_softc *); -static void vtnet_watchdog(struct vtnet_softc *); +static int vtnet_setup_interface(struct vtnet_softc *); static int vtnet_change_mtu(struct vtnet_softc *, int); static int vtnet_ioctl(struct ifnet *, u_long, caddr_t); -static int vtnet_init_rx_vq(struct vtnet_softc *); -static void vtnet_free_rx_mbufs(struct vtnet_softc *); -static void vtnet_free_tx_mbufs(struct vtnet_softc *); -static void vtnet_free_ctrl_vq(struct vtnet_softc *); - -#ifdef DEVICE_POLLING -static poll_handler_t vtnet_poll; -#endif - -static struct mbuf * vtnet_alloc_rxbuf(struct vtnet_softc *, int, - struct mbuf **); -static int vtnet_replace_rxbuf(struct vtnet_softc *, +static int vtnet_rxq_populate(struct vtnet_rxq *); +static void vtnet_rxq_free_mbufs(struct vtnet_rxq *); +static struct mbuf * + vtnet_rx_alloc_buf(struct vtnet_softc *, int , struct mbuf **); +static int vtnet_rxq_replace_lro_nomgr_buf(struct vtnet_rxq *, struct mbuf *, int); -static int vtnet_newbuf(struct vtnet_softc *); -static void vtnet_discard_merged_rxbuf(struct vtnet_softc *, int); -static void vtnet_discard_rxbuf(struct vtnet_softc *, struct mbuf *); -static int vtnet_enqueue_rxbuf(struct vtnet_softc *, struct mbuf *); -static void vtnet_vlan_tag_remove(struct mbuf *); +static int vtnet_rxq_replace_buf(struct vtnet_rxq *, struct mbuf *, int); +static int vtnet_rxq_enqueue_buf(struct vtnet_rxq *, struct mbuf *); +static int vtnet_rxq_new_buf(struct vtnet_rxq *); static int vtnet_rx_csum(struct vtnet_softc *, struct mbuf *, + struct virtio_net_hdr *); +static void vtnet_rxq_discard_merged_bufs(struct vtnet_rxq *, int); +static void vtnet_rxq_discard_buf(struct vtnet_rxq *, struct mbuf *); +static int vtnet_rxq_merged_eof(struct vtnet_rxq *, struct mbuf *, int); +static void vtnet_rxq_input(struct vtnet_rxq *, struct mbuf *, struct virtio_net_hdr *); -static int vtnet_rxeof_merged(struct vtnet_softc *, struct mbuf *, int); -static int vtnet_rxeof(struct vtnet_softc *, int, int *); +static int vtnet_rxq_eof(struct vtnet_rxq *); static void vtnet_rx_vq_intr(void *); +static void vtnet_rxq_taskqueue(void *, int); -static void vtnet_txeof(struct vtnet_softc *); -static struct mbuf * vtnet_tx_offload(struct vtnet_softc *, struct mbuf *, +static void vtnet_txq_free_mbufs(struct vtnet_txq *); +static struct mbuf * + vtnet_tx_offload(struct vtnet_softc *, struct mbuf *, struct virtio_net_hdr *); -static int vtnet_enqueue_txbuf(struct vtnet_softc *, struct mbuf **, +static int vtnet_txq_enqueue_buf(struct vtnet_txq *, struct mbuf **, struct vtnet_tx_header *); -static int vtnet_encap(struct vtnet_softc *, struct mbuf **); -static void vtnet_start_locked(struct ifnet *); +static int vtnet_txq_encap(struct vtnet_txq *, struct mbuf **); +#ifdef VTNET_LEGACY_TX +static void vtnet_start_locked(struct vtnet_txq *, struct ifnet *); static void vtnet_start(struct ifnet *); -static void vtnet_tick(void *); +#else +static int vtnet_txq_mq_start_locked(struct vtnet_txq *, struct mbuf *); +static int vtnet_txq_mq_start(struct ifnet *, struct mbuf *); +static void vtnet_txq_taskqueue(void *, int); +static void vtnet_txq_tq_start(struct vtnet_txq *); +#endif +static void vtnet_txq_eof(struct vtnet_txq *); static void vtnet_tx_vq_intr(void *); +#ifndef VTNET_LEGACY_TX +static void vtnet_qflush(struct ifnet *); +#endif + +static int vtnet_watchdog(struct vtnet_txq *); +static void vtnet_tick(void *); + +static void vtnet_start_taskqueues(struct vtnet_softc *); +static void vtnet_free_taskqueues(struct vtnet_softc *); +static void vtnet_drain_taskqueues(struct vtnet_softc *); + +static void vtnet_drain_rxtx_queues(struct vtnet_softc *); +static void vtnet_stop_rendezvous(struct vtnet_softc *); static void vtnet_stop(struct vtnet_softc *); +static int vtnet_virtio_reinit(struct vtnet_softc *); +static int vtnet_init_rx_queues(struct vtnet_softc *); +static void vtnet_set_active_vq_pairs(struct vtnet_softc *); static int vtnet_reinit(struct vtnet_softc *); static void vtnet_init_locked(struct vtnet_softc *); static void vtnet_init(void *); +static void vtnet_init_rx_filters(struct vtnet_softc *); +static void vtnet_free_ctrl_vq(struct vtnet_softc *); static void vtnet_exec_ctrl_cmd(struct vtnet_softc *, void *, struct sglist *, int, int); - -static void vtnet_rx_filter(struct vtnet_softc *sc); +static int vtnet_ctrl_mq_cmd(struct vtnet_softc *, uint16_t); static int vtnet_ctrl_rx_cmd(struct vtnet_softc *, int, int); static int vtnet_set_promisc(struct vtnet_softc *, int); static int vtnet_set_allmulti(struct vtnet_softc *, int); +static void vtnet_attach_disable_promisc(struct vtnet_softc *); +static void vtnet_rx_filter(struct vtnet_softc *); static void vtnet_rx_filter_mac(struct vtnet_softc *); - static int vtnet_exec_vlan_filter(struct vtnet_softc *, int, uint16_t); static void vtnet_rx_filter_vlan(struct vtnet_softc *); -static void vtnet_set_vlan_filter(struct vtnet_softc *, int, uint16_t); +static void vtnet_update_vlan_filter(struct vtnet_softc *, int, uint16_t); static void vtnet_register_vlan(void *, struct ifnet *, uint16_t); static void vtnet_unregister_vlan(void *, struct ifnet *, uint16_t); +static int vtnet_is_link_up(struct vtnet_softc *); +static void vtnet_update_link_status(struct vtnet_softc *); static int vtnet_ifmedia_upd(struct ifnet *); static void vtnet_ifmedia_sts(struct ifnet *, struct ifmediareq *); +static void vtnet_get_hwaddr(struct vtnet_softc *); +static void vtnet_set_hwaddr(struct vtnet_softc *); +static void vtnet_vlan_tag_remove(struct mbuf *); -static void vtnet_add_statistics(struct vtnet_softc *); +static void vtnet_setup_sysctl(struct vtnet_softc *); -static int vtnet_enable_rx_intr(struct vtnet_softc *); -static int vtnet_enable_tx_intr(struct vtnet_softc *); -static void vtnet_disable_rx_intr(struct vtnet_softc *); -static void vtnet_disable_tx_intr(struct vtnet_softc *); +static int vtnet_rxq_enable_intr(struct vtnet_rxq *); +static void vtnet_rxq_disable_intr(struct vtnet_rxq *); +static int vtnet_txq_enable_intr(struct vtnet_txq *); +static void vtnet_txq_disable_intr(struct vtnet_txq *); +static void vtnet_enable_rx_interrupts(struct vtnet_softc *); +static void vtnet_enable_tx_interrupts(struct vtnet_softc *); +static void vtnet_enable_interrupts(struct vtnet_softc *); +static void vtnet_disable_rx_interrupts(struct vtnet_softc *); +static void vtnet_disable_tx_interrupts(struct vtnet_softc *); +static void vtnet_disable_interrupts(struct vtnet_softc *); /* Tunables. */ static int vtnet_csum_disable = 0; @@ -171,6 +206,12 @@ static int vtnet_tso_disable = 0; TUNABLE_INT("hw.vtnet.tso_disable", &vtnet_tso_disable); static int vtnet_lro_disable = 0; TUNABLE_INT("hw.vtnet.lro_disable", &vtnet_lro_disable); +static int vtnet_mq_disable = 0; +TUNABLE_INT("hw.vtnet.mq_dislabe", &vtnet_mq_disable); +static int vtnet_mq_max_queues = 0; +TUNABLE_INT("hw.vtnet.mq_max_queues", &vtnet_mq_max_queues); +static int vtnet_rx_process_limit = 256; +TUNABLE_INT("hw.vtnet.rx_process_limit", &vtnet_rx_process_limit); /* * Reducing the number of transmit completed interrupts can @@ -203,6 +244,8 @@ static struct virtio_feature_desc vtnet_ { VIRTIO_NET_F_CTRL_RX, "RxMode" }, { VIRTIO_NET_F_CTRL_VLAN, "VLanFilter" }, { VIRTIO_NET_F_CTRL_RX_EXTRA, "RxModeExtra" }, + { VIRTIO_NET_F_GUEST_ANNOUNCE, "GuestAnnounce" }, + { VIRTIO_NET_F_MQ, "Multiqueue" }, { 0, NULL } }; @@ -282,56 +325,31 @@ static int vtnet_attach(device_t dev) { struct vtnet_softc *sc; - struct ifnet *ifp; - int tx_size, error; + int error; sc = device_get_softc(dev); sc->vtnet_dev = dev; - VTNET_LOCK_INIT(sc); - callout_init_mtx(&sc->vtnet_tick_ch, VTNET_MTX(sc), 0); - - ifmedia_init(&sc->vtnet_media, IFM_IMASK, vtnet_ifmedia_upd, - vtnet_ifmedia_sts); - ifmedia_add(&sc->vtnet_media, VTNET_MEDIATYPE, 0, NULL); - ifmedia_set(&sc->vtnet_media, VTNET_MEDIATYPE); - - vtnet_add_statistics(sc); - + /* Register our feature descriptions. */ virtio_set_feature_desc(dev, vtnet_feature_desc); - vtnet_negotiate_features(sc); - - if (virtio_with_feature(dev, VIRTIO_NET_F_MRG_RXBUF)) { - sc->vtnet_flags |= VTNET_FLAG_MRG_RXBUFS; - sc->vtnet_hdr_size = sizeof(struct virtio_net_hdr_mrg_rxbuf); - } else - sc->vtnet_hdr_size = sizeof(struct virtio_net_hdr); - - sc->vtnet_rx_mbuf_size = MCLBYTES; - sc->vtnet_rx_mbuf_count = VTNET_NEEDED_RX_MBUFS(sc); - - if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VQ)) { - sc->vtnet_flags |= VTNET_FLAG_CTRL_VQ; - if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_RX)) { - sc->vtnet_mac_filter = malloc( - sizeof(struct vtnet_mac_filter), M_DEVBUF, - M_NOWAIT | M_ZERO); - if (sc->vtnet_mac_filter == NULL) { - device_printf(dev, - "cannot allocate mac filter table\n"); - error = ENOMEM; - goto fail; - } + VTNET_CORE_LOCK_INIT(sc); + callout_init_mtx(&sc->vtnet_tick_ch, VTNET_CORE_MTX(sc), 0); - sc->vtnet_flags |= VTNET_FLAG_CTRL_RX; - } + vtnet_setup_sysctl(sc); + vtnet_setup_features(sc); - if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) - sc->vtnet_flags |= VTNET_FLAG_VLAN_FILTER; + error = vtnet_alloc_rx_filters(sc); + if (error) { + device_printf(dev, "cannot allocate Rx filters\n"); + goto fail; } - vtnet_get_hwaddr(sc); + error = vtnet_alloc_rxtx_queues(sc); + if (error) { + device_printf(dev, "cannot allocate queues\n"); + goto fail; + } error = vtnet_alloc_virtqueues(sc); if (error) { @@ -339,111 +357,26 @@ vtnet_attach(device_t dev) goto fail; } - ifp = sc->vtnet_ifp = if_alloc(IFT_ETHER); - if (ifp == NULL) { - device_printf(dev, "cannot allocate ifnet structure\n"); - error = ENOSPC; + error = vtnet_setup_interface(sc); + if (error) { + device_printf(dev, "cannot setup interface\n"); goto fail; } - ifp->if_softc = sc; - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; - ifp->if_init = vtnet_init; - ifp->if_start = vtnet_start; - ifp->if_ioctl = vtnet_ioctl; - - sc->vtnet_rx_size = virtqueue_size(sc->vtnet_rx_vq); - sc->vtnet_rx_process_limit = sc->vtnet_rx_size; - - tx_size = virtqueue_size(sc->vtnet_tx_vq); - sc->vtnet_tx_size = tx_size; - IFQ_SET_MAXLEN(&ifp->if_snd, tx_size - 1); - ifp->if_snd.ifq_drv_maxlen = tx_size - 1; - IFQ_SET_READY(&ifp->if_snd); - - ether_ifattach(ifp, sc->vtnet_hwaddr); - - if (virtio_with_feature(dev, VIRTIO_NET_F_STATUS)) - ifp->if_capabilities |= IFCAP_LINKSTATE; - - /* Tell the upper layer(s) we support long frames. */ - ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); - ifp->if_capabilities |= IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU; - - if (virtio_with_feature(dev, VIRTIO_NET_F_CSUM)) { - ifp->if_capabilities |= IFCAP_TXCSUM; - - if (virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO4)) - ifp->if_capabilities |= IFCAP_TSO4; - if (virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO6)) - ifp->if_capabilities |= IFCAP_TSO6; - if (ifp->if_capabilities & IFCAP_TSO) - ifp->if_capabilities |= IFCAP_VLAN_HWTSO; - - if (virtio_with_feature(dev, VIRTIO_NET_F_HOST_ECN)) - sc->vtnet_flags |= VTNET_FLAG_TSO_ECN; - } - - if (virtio_with_feature(dev, VIRTIO_NET_F_GUEST_CSUM)) { - ifp->if_capabilities |= IFCAP_RXCSUM; - - if (virtio_with_feature(dev, VIRTIO_NET_F_GUEST_TSO4) || - virtio_with_feature(dev, VIRTIO_NET_F_GUEST_TSO6)) - ifp->if_capabilities |= IFCAP_LRO; - } - - if (ifp->if_capabilities & IFCAP_HWCSUM) { - /* - * VirtIO does not support VLAN tagging, but we can fake - * it by inserting and removing the 802.1Q header during - * transmit and receive. We are then able to do checksum - * offloading of VLAN frames. - */ - ifp->if_capabilities |= - IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWCSUM; - } - - ifp->if_capenable = ifp->if_capabilities; - - /* - * Capabilities after here are not enabled by default. - */ - - if (sc->vtnet_flags & VTNET_FLAG_VLAN_FILTER) { - ifp->if_capabilities |= IFCAP_VLAN_HWFILTER; - - sc->vtnet_vlan_attach = EVENTHANDLER_REGISTER(vlan_config, - vtnet_register_vlan, sc, EVENTHANDLER_PRI_FIRST); - sc->vtnet_vlan_detach = EVENTHANDLER_REGISTER(vlan_unconfig, - vtnet_unregister_vlan, sc, EVENTHANDLER_PRI_FIRST); - } - -#ifdef DEVICE_POLLING - ifp->if_capabilities |= IFCAP_POLLING; -#endif - error = virtio_setup_intr(dev, INTR_TYPE_NET); if (error) { device_printf(dev, "cannot setup virtqueue interrupts\n"); - ether_ifdetach(ifp); + ether_ifdetach(sc->vtnet_ifp); goto fail; } + vtnet_start_taskqueues(sc); + /* - * Device defaults to promiscuous mode for backwards - * compatibility. Turn it off if possible. + * Even though this is a polling operation, it must be done after + * interrupts have been setup. */ - if (sc->vtnet_flags & VTNET_FLAG_CTRL_RX) { - VTNET_LOCK(sc); - if (vtnet_set_promisc(sc, 0) != 0) { - ifp->if_flags |= IFF_PROMISC; - device_printf(dev, - "cannot disable promiscuous mode\n"); - } - VTNET_UNLOCK(sc); - } else - ifp->if_flags |= IFF_PROMISC; + vtnet_attach_disable_promisc(sc); fail: if (error) @@ -461,24 +394,19 @@ vtnet_detach(device_t dev) sc = device_get_softc(dev); ifp = sc->vtnet_ifp; - KASSERT(mtx_initialized(VTNET_MTX(sc)), - ("vtnet mutex not initialized")); - -#ifdef DEVICE_POLLING - if (ifp != NULL && ifp->if_capenable & IFCAP_POLLING) - ether_poll_deregister(ifp); -#endif - if (device_is_attached(dev)) { - VTNET_LOCK(sc); + VTNET_CORE_LOCK(sc); vtnet_stop(sc); - VTNET_UNLOCK(sc); + VTNET_CORE_UNLOCK(sc); callout_drain(&sc->vtnet_tick_ch); + vtnet_drain_taskqueues(sc); ether_ifdetach(ifp); } + vtnet_free_taskqueues(sc); + if (sc->vtnet_vlan_attach != NULL) { EVENTHANDLER_DEREGISTER(vlan_config, sc->vtnet_vlan_attach); sc->vtnet_vlan_attach = NULL; @@ -488,25 +416,20 @@ vtnet_detach(device_t dev) sc->vtnet_vlan_detach = NULL; } - if (sc->vtnet_mac_filter != NULL) { - free(sc->vtnet_mac_filter, M_DEVBUF); - sc->vtnet_mac_filter = NULL; - } + ifmedia_removeall(&sc->vtnet_media); if (ifp != NULL) { if_free(ifp); sc->vtnet_ifp = NULL; } - if (sc->vtnet_rx_vq != NULL) - vtnet_free_rx_mbufs(sc); - if (sc->vtnet_tx_vq != NULL) - vtnet_free_tx_mbufs(sc); + vtnet_free_rxtx_queues(sc); + vtnet_free_rx_filters(sc); + if (sc->vtnet_ctrl_vq != NULL) vtnet_free_ctrl_vq(sc); - ifmedia_removeall(&sc->vtnet_media); - VTNET_LOCK_DESTROY(sc); + VTNET_CORE_LOCK_DESTROY(sc); return (0); } @@ -518,10 +441,10 @@ vtnet_suspend(device_t dev) sc = device_get_softc(dev); - VTNET_LOCK(sc); + VTNET_CORE_LOCK(sc); vtnet_stop(sc); sc->vtnet_flags |= VTNET_FLAG_SUSPENDED; - VTNET_UNLOCK(sc); + VTNET_CORE_UNLOCK(sc); return (0); } @@ -535,11 +458,11 @@ vtnet_resume(device_t dev) sc = device_get_softc(dev); ifp = sc->vtnet_ifp; - VTNET_LOCK(sc); + VTNET_CORE_LOCK(sc); if (ifp->if_flags & IFF_UP) vtnet_init_locked(sc); sc->vtnet_flags &= ~VTNET_FLAG_SUSPENDED; - VTNET_UNLOCK(sc); + VTNET_CORE_UNLOCK(sc); return (0); } @@ -562,9 +485,9 @@ vtnet_config_change(device_t dev) sc = device_get_softc(dev); - VTNET_LOCK(sc); + VTNET_CORE_LOCK(sc); vtnet_update_link_status(sc); - VTNET_UNLOCK(sc); + VTNET_CORE_UNLOCK(sc); return (0); } @@ -578,215 +501,485 @@ vtnet_negotiate_features(struct vtnet_so dev = sc->vtnet_dev; mask = 0; - if (vtnet_csum_disable) - mask |= VIRTIO_NET_F_CSUM | VIRTIO_NET_F_GUEST_CSUM; - /* - * TSO and LRO are only available when their corresponding - * checksum offload feature is also negotiated. + * TSO and LRO are only available when their corresponding checksum + * offload feature is also negotiated. */ - + if (vtnet_csum_disable) + mask |= VIRTIO_NET_F_CSUM | VIRTIO_NET_F_GUEST_CSUM; if (vtnet_csum_disable || vtnet_tso_disable) - mask |= VIRTIO_NET_F_HOST_TSO4 | VIRTIO_NET_F_HOST_TSO6 | - VIRTIO_NET_F_HOST_ECN; - + mask |= VTNET_TSO_FEATURES; if (vtnet_csum_disable || vtnet_lro_disable) mask |= VTNET_LRO_FEATURES; + if (vtnet_mq_disable) + mask |= VIRTIO_NET_F_MQ; features = VTNET_FEATURES & ~mask; -#ifdef VTNET_TX_INTR_MODERATION - features |= VIRTIO_F_NOTIFY_ON_EMPTY; -#endif sc->vtnet_features = virtio_negotiate_features(dev, features); - if (virtio_with_feature(dev, VIRTIO_NET_F_MRG_RXBUF) == 0 && - virtio_with_feature(dev, VTNET_LRO_FEATURES)) { - /* - * LRO without mergeable buffers requires special care. This - * is not ideal because every receive buffer must be large - * enough to hold the maximum TCP packet, the Ethernet header, - * and the vtnet_rx_header. This requires up to 34 descriptors - * when using MCLBYTES clusters. If we do not have indirect - * descriptors, LRO is disabled since the virtqueue will not - * be able to contain very many receive buffers. - */ - if (virtio_with_feature(dev, - VIRTIO_RING_F_INDIRECT_DESC) == 0) { - device_printf(dev, - "LRO disabled due to lack of both mergeable " - "buffers and indirect descriptors\n"); + if (virtio_with_feature(dev, VTNET_LRO_FEATURES) == 0) + return; + if (virtio_with_feature(dev, VIRTIO_NET_F_MRG_RXBUF)) + return; - sc->vtnet_features = virtio_negotiate_features(dev, - features & ~VTNET_LRO_FEATURES); - } else - sc->vtnet_flags |= VTNET_FLAG_LRO_NOMRG; - } + /* + * LRO without mergeable buffers requires special care. This is not + * ideal because every receive buffer must be large enough to hold + * the maximum TCP packet, the Ethernet header, and the header. This + * requires up to 34 descriptors with MCLBYTES clusters. If we do + * not have indirect descriptors, LRO is disabled since the virtqueue + * will not contain very many receive buffers. + */ + if (virtio_with_feature(dev, VIRTIO_RING_F_INDIRECT_DESC) == 0) { + device_printf(dev, + "LRO disabled due to both mergeable buffers and indirect " + "descriptors not negotiated\n"); + + features &= ~VTNET_LRO_FEATURES; + sc->vtnet_features = virtio_negotiate_features(dev, features); + } else + sc->vtnet_flags |= VTNET_FLAG_LRO_NOMRG; } -static int -vtnet_alloc_virtqueues(struct vtnet_softc *sc) +static void +vtnet_setup_features(struct vtnet_softc *sc) { device_t dev; - struct vq_alloc_info vq_info[3]; - int nvqs, rxsegs; + int max_pairs; dev = sc->vtnet_dev; - nvqs = 2; - /* - * Indirect descriptors are not needed for the Rx - * virtqueue when mergeable buffers are negotiated. - * The header is placed inline with the data, not - * in a separate descriptor, and mbuf clusters are - * always physically contiguous. - */ - if ((sc->vtnet_flags & VTNET_FLAG_MRG_RXBUFS) == 0) { - rxsegs = sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG ? - VTNET_MAX_RX_SEGS : VTNET_MIN_RX_SEGS; + vtnet_negotiate_features(sc); + + if (virtio_with_feature(dev, VIRTIO_NET_F_MRG_RXBUF)) { + sc->vtnet_flags |= VTNET_FLAG_MRG_RXBUFS; + sc->vtnet_hdr_size = sizeof(struct virtio_net_hdr_mrg_rxbuf); } else - rxsegs = 0; + sc->vtnet_hdr_size = sizeof(struct virtio_net_hdr); - VQ_ALLOC_INFO_INIT(&vq_info[0], rxsegs, - vtnet_rx_vq_intr, sc, &sc->vtnet_rx_vq, - "%s receive", device_get_nameunit(dev)); - - VQ_ALLOC_INFO_INIT(&vq_info[1], VTNET_MAX_TX_SEGS, - vtnet_tx_vq_intr, sc, &sc->vtnet_tx_vq, - "%s transmit", device_get_nameunit(dev)); + if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VQ)) { + sc->vtnet_flags |= VTNET_FLAG_CTRL_VQ; - if (sc->vtnet_flags & VTNET_FLAG_CTRL_VQ) { - nvqs++; + if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_RX)) + sc->vtnet_flags |= VTNET_FLAG_CTRL_RX; + if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VLAN)) + sc->vtnet_flags |= VTNET_FLAG_VLAN_FILTER; + } - VQ_ALLOC_INFO_INIT(&vq_info[2], 0, NULL, NULL, - &sc->vtnet_ctrl_vq, "%s control", - device_get_nameunit(dev)); + if (virtio_with_feature(dev, VIRTIO_NET_F_MQ) && + sc->vtnet_flags & VTNET_FLAG_CTRL_VQ) { + max_pairs = virtio_read_dev_config_2(dev, + offsetof(struct virtio_net_config, max_virtqueue_pairs)); + if (max_pairs < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN || + max_pairs > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX) + max_pairs = 1; + } else + max_pairs = 1; + + if (max_pairs > 1) { + /* + * Limit the maximum number of queue pairs to the number + * of CPUs or the configured maximum. The actual number + * of queues that get used may be less. + */ + if (max_pairs > mp_ncpus) + max_pairs = mp_ncpus; + if (max_pairs > VTNET_MAX_QUEUE_PAIRS) + max_pairs = VTNET_MAX_QUEUE_PAIRS; + if (vtnet_mq_max_queues != 0) + max_pairs = vtnet_mq_max_queues; + if (max_pairs > 1) + sc->vtnet_flags |= VTNET_FLAG_MULTIQ; } - return (virtio_alloc_virtqueues(dev, 0, nvqs, vq_info)); + sc->vtnet_max_vq_pairs = max_pairs; } -static void -vtnet_get_hwaddr(struct vtnet_softc *sc) +static int +vtnet_init_rxq(struct vtnet_softc *sc, int id) { - device_t dev; + struct vtnet_rxq *rxq; - dev = sc->vtnet_dev; - - if (virtio_with_feature(dev, VIRTIO_NET_F_MAC)) { - virtio_read_device_config(dev, - offsetof(struct virtio_net_config, mac), - sc->vtnet_hwaddr, ETHER_ADDR_LEN); - } else { - /* Generate random locally administered unicast address. */ - sc->vtnet_hwaddr[0] = 0xB2; - arc4rand(&sc->vtnet_hwaddr[1], ETHER_ADDR_LEN - 1, 0); + rxq = &sc->vtnet_rxqs[id]; - vtnet_set_hwaddr(sc); - } -} + snprintf(rxq->vtnrx_name, sizeof(rxq->vtnrx_name), "%s-rx%d", + device_get_nameunit(sc->vtnet_dev), id); + mtx_init(&rxq->vtnrx_mtx, rxq->vtnrx_name, NULL, MTX_DEF); -static void -vtnet_set_hwaddr(struct vtnet_softc *sc) -{ - device_t dev; + rxq->vtnrx_sc = sc; + rxq->vtnrx_id = id; + rxq->vtnrx_process_limit = vtnet_rx_process_limit; - dev = sc->vtnet_dev; + TASK_INIT(&rxq->vtnrx_task, 0, vtnet_rxq_taskqueue, rxq); + rxq->vtnrx_tq = taskqueue_create(rxq->vtnrx_name, M_NOWAIT, + taskqueue_thread_enqueue, &rxq->vtnrx_tq); - virtio_write_device_config(dev, - offsetof(struct virtio_net_config, mac), - sc->vtnet_hwaddr, ETHER_ADDR_LEN); + return (rxq->vtnrx_tq == NULL ? ENOMEM : 0); } static int -vtnet_is_link_up(struct vtnet_softc *sc) +vtnet_init_txq(struct vtnet_softc *sc, int id) { - device_t dev; - struct ifnet *ifp; - uint16_t status; + struct vtnet_txq *txq; - dev = sc->vtnet_dev; - ifp = sc->vtnet_ifp; + txq = &sc->vtnet_txqs[id]; - VTNET_LOCK_ASSERT(sc); + snprintf(txq->vtntx_name, sizeof(txq->vtntx_name), "%s-tx%d", + device_get_nameunit(sc->vtnet_dev), id); + mtx_init(&txq->vtntx_mtx, txq->vtntx_name, NULL, MTX_DEF); - if ((ifp->if_capenable & IFCAP_LINKSTATE) == 0) - return (1); + txq->vtntx_sc = sc; + txq->vtntx_id = id; - status = virtio_read_dev_config_2(dev, - offsetof(struct virtio_net_config, status)); +#ifndef VTNET_LEGACY_TX + txq->vtntx_br = buf_ring_alloc(VTNET_DEFAULT_BUFRING_SIZE, M_DEVBUF, + M_NOWAIT, &txq->vtntx_mtx); + if (txq->vtntx_br == NULL) + return (ENOMEM); - return ((status & VIRTIO_NET_S_LINK_UP) != 0); + TASK_INIT(&txq->vtntx_task, 0, vtnet_txq_taskqueue, txq); + txq->vtntx_tq = taskqueue_create(txq->vtntx_name, M_NOWAIT, + taskqueue_thread_enqueue, &txq->vtntx_tq); + if (txq->vtntx_tq == NULL) + return (ENOMEM); +#endif + + return (0); } -static void -vtnet_update_link_status(struct vtnet_softc *sc) +static int +vtnet_alloc_rxtx_queues(struct vtnet_softc *sc) { - struct ifnet *ifp; - int link; + int i, pairs, error; - ifp = sc->vtnet_ifp; + pairs = sc->vtnet_max_vq_pairs; - link = vtnet_is_link_up(sc); + sc->vtnet_rxqs = malloc(sizeof(struct vtnet_rxq) * pairs, M_DEVBUF, + M_NOWAIT | M_ZERO); + sc->vtnet_txqs = malloc(sizeof(struct vtnet_txq) * pairs, M_DEVBUF, + M_NOWAIT | M_ZERO); + if (sc->vtnet_rxqs == NULL || sc->vtnet_txqs == NULL) + return (ENOMEM); - if (link && ((sc->vtnet_flags & VTNET_FLAG_LINK) == 0)) { - sc->vtnet_flags |= VTNET_FLAG_LINK; - if_link_state_change(ifp, LINK_STATE_UP); - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) - vtnet_start_locked(ifp); - } else if (!link && (sc->vtnet_flags & VTNET_FLAG_LINK)) { - sc->vtnet_flags &= ~VTNET_FLAG_LINK; - if_link_state_change(ifp, LINK_STATE_DOWN); + for (i = 0; i < pairs; i++) { + error = vtnet_init_rxq(sc, i); + if (error) + return (error); + error = vtnet_init_txq(sc, i); + if (error) + return (error); } + + return (0); } static void -vtnet_watchdog(struct vtnet_softc *sc) +vtnet_destroy_rxq(struct vtnet_rxq *rxq) { - struct ifnet *ifp; - ifp = sc->vtnet_ifp; + rxq->vtnrx_sc = NULL; + rxq->vtnrx_id = -1; -#ifdef VTNET_TX_INTR_MODERATION - vtnet_txeof(sc); -#endif + if (mtx_initialized(&rxq->vtnrx_mtx) != 0) + mtx_destroy(&rxq->vtnrx_mtx); +} - if (sc->vtnet_watchdog_timer == 0 || --sc->vtnet_watchdog_timer) - return; +static void +vtnet_destroy_txq(struct vtnet_txq *txq) +{ - if_printf(ifp, "watchdog timeout -- resetting\n"); -#ifdef VTNET_DEBUG - virtqueue_dump(sc->vtnet_tx_vq); -#endif - ifp->if_oerrors++; - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - vtnet_init_locked(sc); + txq->vtntx_sc = NULL; + txq->vtntx_id = -1; + + if (txq->vtntx_br != NULL) { + buf_ring_free(txq->vtntx_br, M_DEVBUF); + txq->vtntx_br = NULL; + } + + if (mtx_initialized(&txq->vtntx_mtx) != 0) + mtx_destroy(&txq->vtntx_mtx); } -static int -vtnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) +static void +vtnet_free_rxtx_queues(struct vtnet_softc *sc) { - struct vtnet_softc *sc; + int i; + + if (sc->vtnet_rxqs != NULL) { + for (i = 0; i < sc->vtnet_max_vq_pairs; i++) + vtnet_destroy_rxq(&sc->vtnet_rxqs[i]); + free(sc->vtnet_rxqs, M_DEVBUF); + sc->vtnet_rxqs = NULL; + } + + if (sc->vtnet_txqs != NULL) { + for (i = 0; i < sc->vtnet_max_vq_pairs; i++) + vtnet_destroy_txq(&sc->vtnet_txqs[i]); + free(sc->vtnet_txqs, M_DEVBUF); + sc->vtnet_txqs = NULL; + } +} + +static int +vtnet_alloc_rx_filters(struct vtnet_softc *sc) +{ + + if (sc->vtnet_flags & VTNET_FLAG_CTRL_RX) { + sc->vtnet_mac_filter = malloc(sizeof(struct vtnet_mac_filter), + M_DEVBUF, M_NOWAIT | M_ZERO); + if (sc->vtnet_mac_filter == NULL) + return (ENOMEM); + } + + if (sc->vtnet_flags & VTNET_FLAG_VLAN_FILTER) { + sc->vtnet_vlan_filter = malloc(sizeof(uint32_t) * + VTNET_VLAN_FILTER_NWORDS, M_DEVBUF, M_NOWAIT | M_ZERO); + if (sc->vtnet_vlan_filter == NULL) + return (ENOMEM); + } + + return (0); +} + +static void +vtnet_free_rx_filters(struct vtnet_softc *sc) +{ + + if (sc->vtnet_mac_filter != NULL) { + free(sc->vtnet_mac_filter, M_DEVBUF); + sc->vtnet_mac_filter = NULL; + } + + if (sc->vtnet_vlan_filter != NULL) { + free(sc->vtnet_vlan_filter, M_DEVBUF); + sc->vtnet_vlan_filter = NULL; + } +} + +static int +vtnet_alloc_virtqueues(struct vtnet_softc *sc) +{ + device_t dev; + struct vq_alloc_info *info; + struct vtnet_rxq *rxq; + struct vtnet_txq *txq; + int i, idx, flags, nvqs, rxsegs, error; + + dev = sc->vtnet_dev; + flags = 0; + + /* + * Indirect descriptors are not needed for the Rx virtqueue when + * mergeable buffers are negotiated. The header is placed inline + * with the data, not in a separate descriptor, and mbuf clusters + * are always physically contiguous. + */ + if (sc->vtnet_flags & VTNET_FLAG_MRG_RXBUFS) + rxsegs = 0; + else if (sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG) + rxsegs = VTNET_MAX_RX_SEGS; + else + rxsegs = VTNET_MIN_RX_SEGS; + + nvqs = sc->vtnet_max_vq_pairs * 2; + if (sc->vtnet_flags & VTNET_FLAG_CTRL_VQ) + nvqs++; + + info = malloc(sizeof(struct vq_alloc_info) * nvqs , M_TEMP, M_NOWAIT); + if (info == NULL) + return (ENOMEM); + + for (i = 0, idx = 0; i < sc->vtnet_max_vq_pairs; i++, idx+=2) { + rxq = &sc->vtnet_rxqs[i]; + VQ_ALLOC_INFO_INIT(&info[idx], rxsegs, + vtnet_rx_vq_intr, rxq, &rxq->vtnrx_vq, + "%s-%d rx", device_get_nameunit(dev), rxq->vtnrx_id); + + txq = &sc->vtnet_txqs[i]; + VQ_ALLOC_INFO_INIT(&info[idx+1], VTNET_MAX_TX_SEGS, + vtnet_tx_vq_intr, txq, &txq->vtntx_vq, + "%s-%d tx", device_get_nameunit(dev), txq->vtntx_id); + } + + if (sc->vtnet_flags & VTNET_FLAG_CTRL_VQ) { + VQ_ALLOC_INFO_INIT(&info[idx], 0, NULL, NULL, + &sc->vtnet_ctrl_vq, "%s ctrl", device_get_nameunit(dev)); + } + + /* + * Enable interrupt binding if this is multiqueue. This only matters + * when per-vq MSIX is available. + */ + if (sc->vtnet_flags & VTNET_FLAG_MULTIQ) + flags |= 0; + + error = virtio_alloc_virtqueues(dev, flags, nvqs, info); + free(info, M_TEMP); + + return (error); +} + +static int +vtnet_setup_interface(struct vtnet_softc *sc) +{ + device_t dev; + struct ifnet *ifp; + + dev = sc->vtnet_dev; + + ifp = sc->vtnet_ifp = if_alloc(IFT_ETHER); + if (ifp == NULL) { + device_printf(dev, "cannot allocate ifnet structure\n"); + return (ENOSPC); + } + + if_initname(ifp, device_get_name(dev), device_get_unit(dev)); + if_initbaudrate(ifp, IF_Gbps(10)); /* Approx. */ + ifp->if_softc = sc; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_init = vtnet_init; + ifp->if_ioctl = vtnet_ioctl; + +#ifndef VTNET_LEGACY_TX + ifp->if_transmit = vtnet_txq_mq_start; + ifp->if_qflush = vtnet_qflush; +#else + struct virtqueue *vq = sc->vtnet_txqs[0].vtntx_vq; + ifp->if_start = vtnet_start; + IFQ_SET_MAXLEN(&ifp->if_snd, virtqueue_size(vq) - 1); + IFQ_SET_READY(&ifp->if_snd); +#endif + + ifmedia_init(&sc->vtnet_media, IFM_IMASK, vtnet_ifmedia_upd, + vtnet_ifmedia_sts); + ifmedia_add(&sc->vtnet_media, VTNET_MEDIATYPE, 0, NULL); + ifmedia_set(&sc->vtnet_media, VTNET_MEDIATYPE); + + /* Read (or generate) the MAC address for the adapter. */ + vtnet_get_hwaddr(sc); + + ether_ifattach(ifp, sc->vtnet_hwaddr); + + if (virtio_with_feature(dev, VIRTIO_NET_F_STATUS)) + ifp->if_capabilities |= IFCAP_LINKSTATE; + + /* Tell the upper layer(s) we support long frames. */ + ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); + ifp->if_capabilities |= IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU; + + if (virtio_with_feature(dev, VIRTIO_NET_F_CSUM)) { + ifp->if_capabilities |= IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6; + + if (virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO4)) + ifp->if_capabilities |= IFCAP_TSO4; + if (virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO6)) + ifp->if_capabilities |= IFCAP_TSO6; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 08:08:14 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 99A46C8D; Mon, 25 Feb 2013 08:08:14 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7398A33C; Mon, 25 Feb 2013 08:08:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1P88EBu086168; Mon, 25 Feb 2013 08:08:14 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1P88E5k086167; Mon, 25 Feb 2013 08:08:14 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201302250808.r1P88E5k086167@svn.freebsd.org> From: Rui Paulo Date: Mon, 25 Feb 2013 08:08:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247253 - user/rpaulo X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 08:08:14 -0000 Author: rpaulo Date: Mon Feb 25 08:08:13 2013 New Revision: 247253 URL: http://svnweb.freebsd.org/changeset/base/247253 Log: Add a script to convert the HTML schedule of AsiaBSDCon to a Calendar file. Added: user/rpaulo/asiabsdcon.rb Added: user/rpaulo/asiabsdcon.rb ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/rpaulo/asiabsdcon.rb Mon Feb 25 08:08:13 2013 (r247253) @@ -0,0 +1,84 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'open-uri' +require 'nokogiri' +require 'tzinfo' +require 'ri_cal' + +debug = true +require 'awesome_print' if debug + +if debug + doc = Nokogiri::HTML(File.open("Desktop/test.html")) +else + doc = Nokogiri::HTML(open("http://2013.asiabsdcon.org/timetable.html")) +end + +days = [] +rooms = [] + +# Find all the days +doc.xpath("//h2").each do |h2| + day = h2.text.match("(\\(.*\\))") + if day != nil + days.push(day.to_s[/[^()]+/]) + end +end +ap days if debug + +# Find all the rooms +doc.xpath("//div/table/thead/tr/th").each do |th| + room = th.text + if room.match("Room") and rooms.index(room) == nil + rooms.push(room) + end +end +ap rooms if debug + +# Find all the events +events = [] +currentday = 0 +doc.xpath("//div/table").each do |table| + table.xpath("tbody/tr").each do |tr| + time = tr.at("th").text.split("-") + tstart = DateTime.parse(days[currentday] + " " + time[0]) + tend = DateTime.parse(days[currentday] + " " + time[1]) + tstart.set_tzid("Asia/Tokyo") + tend.set_tzid("Asia/Tokyo") + + currentroom = 0 + tr.xpath("td").each do |td| + event = {} + event[:title] = td.search("a").text + event[:person] = td.search("i").text.split(" (eml")[0] + event[:tstart] = tstart + event[:tend] = tend + event[:room] = rooms[currentroom] + if event[:title] != "" + events.push(event) + end + currentroom += 1 + end + end + currentday += 1 +end +ap events if debug + +# Build the Calendar file +ics = RiCal.Calendar do |cal| + events.each do |event| + cal.event do |calevent| + summary = event[:title] + if event[:person] + summary += " - " + event[:person] + end + calevent.summary = summary + calevent.dtstart = event[:tstart] + calevent.dtend = event[:tend] + calevent.location = event[:room] + end + end +end + +print ics if debug From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 08:48:42 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E9F83B3C; Mon, 25 Feb 2013 08:48:42 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 62C3B733; Mon, 25 Feb 2013 08:48:42 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.6/8.14.6) with ESMTP id r1P8mZjZ024706; Mon, 25 Feb 2013 10:48:35 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.7.4 kib.kiev.ua r1P8mZjZ024706 Received: (from kostik@localhost) by tom.home (8.14.6/8.14.6/Submit) id r1P8mZH6024705; Mon, 25 Feb 2013 10:48:35 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 25 Feb 2013 10:48:35 +0200 From: Konstantin Belousov To: Rui Paulo Subject: Re: svn commit: r247253 - user/rpaulo Message-ID: <20130225084835.GT2454@kib.kiev.ua> References: <201302250808.r1P88E5k086167@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="2z7AKWNQ4hR/M4ga" Content-Disposition: inline In-Reply-To: <201302250808.r1P88E5k086167@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: src-committers@freebsd.org, svn-src-user@freebsd.org X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 08:48:43 -0000 --2z7AKWNQ4hR/M4ga Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Feb 25, 2013 at 08:08:14AM +0000, Rui Paulo wrote: > Author: rpaulo > Date: Mon Feb 25 08:08:13 2013 > New Revision: 247253 > URL: http://svnweb.freebsd.org/changeset/base/247253 >=20 > Log: > Add a script to convert the HTML schedule of AsiaBSDCon to a Calendar f= ile. Can we, please, avoid this kind of stuff in the src/ repository ? It is not your notebook, and not a social network. --2z7AKWNQ4hR/M4ga Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iQIcBAEBAgAGBQJRKyViAAoJEJDCuSvBvK1B2XMQAKLoe1FsjgIj2upuKaCSlLnQ DKVLb7RwnXjfDPIiiW1NQpVB2r85kv2N2aQuyNOHk9rhFZebnK3QP5px89eog7cj 0iszlD8iL3grV+A+mxx7xj6tpCu6hXd85kYmPaqdTKc4JZ0jU+yCddeDJ41d3pRF T9aU+ZLY7FuIS40A2JCfc6ai7HJdz0fdjxjw85YEbOajjSMk1KxUz6cYMqmaTgy4 KSxm9QAOywKTtobQ3+/B5leikhj0o0MduYqMu5KX1oUL9fOz/z//5YDoNBEyTPBZ MRYCUIDzU/vRpjZFVDMQ6dQxV/VEHNkWokhwZ6DOK0P81GjmMbsfp9VN4l3vIbIi 0MCJ+PXlfifK0KK/1917bKUA6/tkYkoypwGS6rK9rJ+p3Xb6YEGdHNZsR2aSRMkQ /yJqNpo1RQbms+BcOnrTBTt/iwLZXiTIIin9+mnk5dcdCRUJleQjjXWgiwm7n3/u QTwHt++bR7KMMtHzmbI6mOiANvoquXVj9uttc+wDLxJe5T5AcSE9D2+Z0jzWxAqz bnCv5jR9uLT3ViiIOQXuH84le/Xt7uvPcQOGPdYnEZVxAgVXbY2wgKhX881Llk/J LQBGFVkoDlWG62gsIcfgK0A2rAAaqlOb6cKpST05chEK3ysirixp4d39KF2Yo9+q iTQ7fHNMMMkVns7datll =lsqb -----END PGP SIGNATURE----- --2z7AKWNQ4hR/M4ga-- From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 09:00:51 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 04DD4167; Mon, 25 Feb 2013 09:00:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D58B17C6; Mon, 25 Feb 2013 09:00:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1P90o08003227; Mon, 25 Feb 2013 09:00:50 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1P90ovw003226; Mon, 25 Feb 2013 09:00:50 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201302250900.r1P90ovw003226@svn.freebsd.org> From: Rui Paulo Date: Mon, 25 Feb 2013 09:00:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247256 - user/rpaulo X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 09:00:51 -0000 Author: rpaulo Date: Mon Feb 25 09:00:49 2013 New Revision: 247256 URL: http://svnweb.freebsd.org/changeset/base/247256 Log: Parse anchor attributes. Modified: user/rpaulo/asiabsdcon.rb Modified: user/rpaulo/asiabsdcon.rb ============================================================================== --- user/rpaulo/asiabsdcon.rb Mon Feb 25 08:24:21 2013 (r247255) +++ user/rpaulo/asiabsdcon.rb Mon Feb 25 09:00:49 2013 (r247256) @@ -1,4 +1,28 @@ #!/usr/bin/env ruby +#- +# Copyright (c) 2013 Rui Paulo +# 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 ``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 BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS O R +# 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. require 'rubygems' require 'open-uri' @@ -9,10 +33,12 @@ require 'ri_cal' debug = true require 'awesome_print' if debug +timetable = "http://2013.asiabsdcon.org/timetable.html" + if debug - doc = Nokogiri::HTML(File.open("Desktop/test.html")) + doc = Nokogiri::HTML(File.open("test.html")) else - doc = Nokogiri::HTML(open("http://2013.asiabsdcon.org/timetable.html")) + doc = Nokogiri::HTML(open(timetable)) end days = [] @@ -40,6 +66,7 @@ ap rooms if debug events = [] currentday = 0 doc.xpath("//div/table").each do |table| + # XXX fix entries that span multiple rows table.xpath("tbody/tr").each do |tr| time = tr.at("th").text.split("-") tstart = DateTime.parse(days[currentday] + " " + time[0]) @@ -50,14 +77,22 @@ doc.xpath("//div/table").each do |table| currentroom = 0 tr.xpath("td").each do |td| event = {} - event[:title] = td.search("a").text + if td.text == "-" or td.text == "Lunch" or + td.text == "Break" + next + end + anchor = td.search("a").first + if anchor == nil + event[:title] = td.text + else + event[:title] = anchor.text + event[:url] = timetable + anchor.attr("href") + end event[:person] = td.search("i").text.split(" (eml")[0] event[:tstart] = tstart event[:tend] = tend event[:room] = rooms[currentroom] - if event[:title] != "" - events.push(event) - end + events.push(event) currentroom += 1 end end @@ -77,8 +112,11 @@ ics = RiCal.Calendar do |cal| calevent.dtstart = event[:tstart] calevent.dtend = event[:tend] calevent.location = event[:room] + if event[:url] + calevent.url = event[:url] + end end end end -print ics if debug +print ics From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 09:07:21 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 74ADD2C7; Mon, 25 Feb 2013 09:07:21 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from felyko.com (felyko.com [IPv6:2607:f2f8:a528::3:1337:ca7]) by mx1.freebsd.org (Postfix) with ESMTP id 4919B7F2; Mon, 25 Feb 2013 09:07:21 +0000 (UTC) Received: from [IPv6:2601:9:4d00:85:3195:5b02:bf94:101a] (unknown [IPv6:2601:9:4d00:85:3195:5b02:bf94:101a]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by felyko.com (Postfix) with ESMTPSA id E79353981E; Mon, 25 Feb 2013 01:07:13 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) Subject: Re: svn commit: r247253 - user/rpaulo From: Rui Paulo In-Reply-To: <20130225084835.GT2454@kib.kiev.ua> Date: Mon, 25 Feb 2013 01:07:13 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <2BF51D74-2094-4548-8A78-646641E8F71D@FreeBSD.org> References: <201302250808.r1P88E5k086167@svn.freebsd.org> <20130225084835.GT2454@kib.kiev.ua> To: Konstantin Belousov X-Mailer: Apple Mail (2.1499) Cc: src-committers@freebsd.org, svn-src-user@freebsd.org X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 09:07:21 -0000 On 2013/02/25, at 0:48, Konstantin Belousov wrote: > On Mon, Feb 25, 2013 at 08:08:14AM +0000, Rui Paulo wrote: >> Author: rpaulo >> Date: Mon Feb 25 08:08:13 2013 >> New Revision: 247253 >> URL: http://svnweb.freebsd.org/changeset/base/247253 >>=20 >> Log: >> Add a script to convert the HTML schedule of AsiaBSDCon to a = Calendar file. >=20 > Can we, please, avoid this kind of stuff in the src/ repository ? > It is not your notebook, and not a social network. I'll ignore your idiotic remark and I'll just say that this is code is = fine as is according to the project guidelines. If you disagree, I = suggest you talk to our core@ peers. -- Rui Paulo From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 09:22:03 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 4F95F476; Mon, 25 Feb 2013 09:22:03 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4320B847; Mon, 25 Feb 2013 09:22:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1P9M3qj009852; Mon, 25 Feb 2013 09:22:03 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1P9M3vn009851; Mon, 25 Feb 2013 09:22:03 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201302250922.r1P9M3vn009851@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 25 Feb 2013 09:22:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247257 - user/uqs/git_conv X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 09:22:03 -0000 Author: uqs Date: Mon Feb 25 09:22:02 2013 New Revision: 247257 URL: http://svnweb.freebsd.org/changeset/base/247257 Log: git_conv: the kludge is no longer needed and we push freebsd-base to github these days. Modified: user/uqs/git_conv/git_conv Modified: user/uqs/git_conv/git_conv ============================================================================== --- user/uqs/git_conv/git_conv Mon Feb 25 09:00:49 2013 (r247256) +++ user/uqs/git_conv/git_conv Mon Feb 25 09:22:02 2013 (r247257) @@ -69,8 +69,6 @@ svn2git() echo "Pushing $target to $dest" cd $target && for d in $dest; do - # XXX kludge around this till we can re-gen the whole thing - git update-ref -d refs/heads/user/uqs/git_conv >/dev/null 2>&1 # XXX freebsd-ports often needs a second try git push $d || git push $d || { echo "Error in pushing to $dest" >&2; exit 1; } done @@ -105,7 +103,6 @@ gitsvn src-head.git github gitsvn doc-head.git github gitsvn ports-head.git github -svn2git $RULES_DIR/freebsd.rules ${SRC_REPO} github -svn2git $RULES_DIR/freebsd-base.rules ${SRC_REPO} #github +svn2git $RULES_DIR/freebsd-base.rules ${SRC_REPO} github svn2git $RULES_DIR/freebsd-doc.rules ${DOC_REPO} github svn2git $RULES_DIR/freebsd-ports.rules ${PORTS_REPO} github From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 09:22:36 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C68CD594; Mon, 25 Feb 2013 09:22:36 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id A1D3184E; Mon, 25 Feb 2013 09:22:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1P9Manb009953; Mon, 25 Feb 2013 09:22:36 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1P9Ma9f009952; Mon, 25 Feb 2013 09:22:36 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201302250922.r1P9Ma9f009952@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 25 Feb 2013 09:22:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247258 - user/uqs/git_conv X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 09:22:36 -0000 Author: uqs Date: Mon Feb 25 09:22:36 2013 New Revision: 247258 URL: http://svnweb.freebsd.org/changeset/base/247258 Log: git_conv: ignore another stray file Modified: user/uqs/git_conv/freebsd.rules Modified: user/uqs/git_conv/freebsd.rules ============================================================================== --- user/uqs/git_conv/freebsd.rules Mon Feb 25 09:22:02 2013 (r247257) +++ user/uqs/git_conv/freebsd.rules Mon Feb 25 09:22:36 2013 (r247258) @@ -81,6 +81,8 @@ match /user/gad/README.txt end match match /user/des/Makefile.inc end match +match /user/rpaulo/asiabsdcon.rb +end match match /user/simon/test.txt end match match /user/peter/foo.txt From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 10:30:28 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id A34E22E2; Mon, 25 Feb 2013 10:30:28 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 9131CB17; Mon, 25 Feb 2013 10:30:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1PAUSJ0029266; Mon, 25 Feb 2013 10:30:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1PAUQT7029254; Mon, 25 Feb 2013 10:30:26 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201302251030.r1PAUQT7029254@svn.freebsd.org> From: Adrian Chadd Date: Mon, 25 Feb 2013 10:30:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247261 - in user/adrian/net80211_tx/sys: dev/ath dev/iwn net80211 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 10:30:28 -0000 Author: adrian Date: Mon Feb 25 10:30:25 2013 New Revision: 247261 URL: http://svnweb.freebsd.org/changeset/base/247261 Log: Introduce a new net80211 TX IC lock, to serialise both the VAP and the IC frame processing. This is a temporary(ish) thing, mostly to get the TX handling "correct" for now. The overview: * The TX IC lock is grabbed before any vap or raw xmit calls occur that invoke the 802.11 setup path; * it explicitly occurs _before_ fast frame queuing and ampdu handling - + the ff queuing may or may not pair it with a second frame, and go through the encap path; + the ampdu path can actually send a management frame at this point, so this avoids a recursive call. * modify iwn and ath TX path to grab the net80211 TX lock if the driver TX start path is called deferred - eg, during reset, or TX completion. This ensures that the same locking is done and in the same order. It's inefficient but hopefully (!) correct enough to stop all of the subtle races.. Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c user/adrian/net80211_tx/sys/dev/ath/if_ath_misc.h user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c user/adrian/net80211_tx/sys/dev/iwn/if_iwn.c user/adrian/net80211_tx/sys/net80211/ieee80211.c user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.h user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c user/adrian/net80211_tx/sys/net80211/ieee80211_output.c user/adrian/net80211_tx/sys/net80211/ieee80211_superg.c user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath.c Mon Feb 25 10:30:25 2013 (r247261) @@ -2525,9 +2525,14 @@ static void ath_start_queue(struct ifnet *ifp) { struct ath_softc *sc = ifp->if_softc; + struct ieee80211com *ic = ifp->if_l2com; + + IEEE80211_TX_LOCK_ASSERT(ic); ATH_KTR(sc, ATH_KTR_TX, 0, "ath_start_queue: start"); - ath_tx_kick(sc); + ATH_TX_LOCK(sc); + ath_start(ifp); + ATH_TX_UNLOCK(sc); ATH_KTR(sc, ATH_KTR_TX, 0, "ath_start_queue: finished"); } @@ -2535,6 +2540,7 @@ void ath_start_task(void *arg, int npending) { struct ath_softc *sc = (struct ath_softc *) arg; + struct ieee80211com *ic = sc->sc_ifp->if_l2com; struct ifnet *ifp = sc->sc_ifp; ATH_KTR(sc, ATH_KTR_TX, 0, "ath_start_task: start"); @@ -2555,9 +2561,11 @@ ath_start_task(void *arg, int npending) sc->sc_txstart_cnt++; ATH_PCU_UNLOCK(sc); + IEEE80211_TX_LOCK(ic); ATH_TX_LOCK(sc); ath_start(sc->sc_ifp); ATH_TX_UNLOCK(sc); + IEEE80211_TX_UNLOCK(ic); ATH_PCU_LOCK(sc); sc->sc_txstart_cnt--; @@ -2569,6 +2577,7 @@ void ath_start(struct ifnet *ifp) { struct ath_softc *sc = ifp->if_softc; + struct ieee80211com *ic = ifp->if_l2com; struct ieee80211_node *ni; struct ath_buf *bf; struct mbuf *m, *next; @@ -2578,6 +2587,7 @@ ath_start(struct ifnet *ifp) if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || sc->sc_invalid) return; + IEEE80211_TX_LOCK_ASSERT(ic); ATH_TX_LOCK_ASSERT(sc); ATH_KTR(sc, ATH_KTR_TX, 0, "ath_start: called"); Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath_misc.h ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath_misc.h Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath_misc.h Mon Feb 25 10:30:25 2013 (r247261) @@ -126,10 +126,16 @@ extern void ath_start_task(void *arg, in static inline void ath_tx_kick(struct ath_softc *sc) { + struct ieee80211com *ic = sc->sc_ifp->if_l2com; + IEEE80211_TX_UNLOCK_ASSERT(ic); + ATH_TX_UNLOCK_ASSERT(sc); + + IEEE80211_TX_LOCK(ic); ATH_TX_LOCK(sc); ath_start(sc->sc_ifp); ATH_TX_UNLOCK(sc); + IEEE80211_TX_UNLOCK(ic); } /* Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Mon Feb 25 10:30:25 2013 (r247261) @@ -1772,6 +1772,7 @@ ath_tx_start(struct ath_softc *sc, struc struct ath_buf *bf, struct mbuf *m0) { struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211com *ic = sc->sc_ifp->if_l2com; struct ath_vap *avp = ATH_VAP(vap); int r = 0; u_int pri; @@ -1784,6 +1785,7 @@ ath_tx_start(struct ath_softc *sc, struc uint8_t type, subtype; ATH_TX_LOCK_ASSERT(sc); + IEEE80211_TX_LOCK_ASSERT(ic); /* * Determine the target hardware queue. @@ -1971,6 +1973,7 @@ ath_tx_raw_start(struct ath_softc *sc, s int do_override; ATH_TX_LOCK_ASSERT(sc); + IEEE80211_TX_LOCK_ASSERT(ic); wh = mtod(m0, struct ieee80211_frame *); ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); @@ -4996,8 +4999,15 @@ void ath_txq_sched(struct ath_softc *sc, struct ath_txq *txq) { struct ath_tid *tid, *next, *last; + struct ieee80211com *ic = sc->sc_ifp->if_l2com; ATH_TX_LOCK_ASSERT(sc); + /* + * This shouldn't be directly called from the TX queue + * code path; it should be called from the TX completion + * or TX kick task. + */ + IEEE80211_TX_UNLOCK_ASSERT(ic); /* * Don't schedule if the hardware queue is busy. Modified: user/adrian/net80211_tx/sys/dev/iwn/if_iwn.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/iwn/if_iwn.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/dev/iwn/if_iwn.c Mon Feb 25 10:30:25 2013 (r247261) @@ -2716,6 +2716,7 @@ iwn_tx_done(struct iwn_softc *sc, struct struct mbuf *m; struct ieee80211_node *ni; struct ieee80211vap *vap; + struct ieee80211com *ic = ifp->if_l2com; KASSERT(data->ni != NULL, ("no node")); @@ -2770,7 +2771,16 @@ iwn_tx_done(struct iwn_softc *sc, struct if (sc->qfullmsk == 0 && (ifp->if_drv_flags & IFF_DRV_OACTIVE)) { ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + /* + * XXX turn this into a deferred taskqueue at some point. + */ + IWN_UNLOCK(sc); + + IEEE80211_TX_LOCK(ic); + IWN_LOCK(sc); iwn_start_locked(ifp); + IWN_UNLOCK(sc); + IEEE80211_TX_UNLOCK(ic); } } } @@ -2807,6 +2817,7 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, { struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; struct iwn_tx_ring *ring = &sc->txq[qid]; struct iwn_tx_data *data; struct mbuf *m; @@ -2903,6 +2914,18 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, if (sc->qfullmsk == 0 && (ifp->if_drv_flags & IFF_DRV_OACTIVE)) { ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + + /* + * XXX turn this into a deferred taskqueue at some point. + */ + IWN_UNLOCK(sc); + + IEEE80211_TX_LOCK(ic); + IWN_LOCK(sc); + iwn_start_locked(ifp); + IWN_UNLOCK(sc); + IEEE80211_TX_UNLOCK(ic); + iwn_start_locked(ifp); } } @@ -3850,6 +3873,9 @@ static void iwn_start(struct ifnet *ifp) { struct iwn_softc *sc = ifp->if_softc; + struct ieee80211com *ic = ifp->if_l2com; + + IEEE80211_TX_LOCK_ASSERT(ic); IWN_LOCK(sc); iwn_start_locked(ifp); @@ -3860,10 +3886,12 @@ static void iwn_start_locked(struct ifnet *ifp) { struct iwn_softc *sc = ifp->if_softc; + struct ieee80211com *ic = ifp->if_l2com; struct ieee80211_node *ni; struct mbuf *m; IWN_LOCK_ASSERT(sc); + IEEE80211_TX_LOCK_ASSERT(ic); if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) Modified: user/adrian/net80211_tx/sys/net80211/ieee80211.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211.c Mon Feb 25 10:30:25 2013 (r247261) @@ -278,6 +278,7 @@ ieee80211_ifattach(struct ieee80211com * KASSERT(ifp->if_type == IFT_IEEE80211, ("if_type %d", ifp->if_type)); IEEE80211_LOCK_INIT(ic, ifp->if_xname); + IEEE80211_TX_LOCK_INIT(ic, ifp->if_xname); TAILQ_INIT(&ic->ic_vaps); /* Create a taskqueue for all state changes */ @@ -385,6 +386,7 @@ ieee80211_ifdetach(struct ieee80211com * ifmedia_removeall(&ic->ic_media); taskqueue_free(ic->ic_tq); + IEEE80211_TX_LOCK_DESTROY(ic); IEEE80211_LOCK_DESTROY(ic); } Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.h ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.h Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.h Mon Feb 25 10:30:25 2013 (r247261) @@ -57,6 +57,30 @@ typedef struct { mtx_assert(IEEE80211_LOCK_OBJ(_ic), MA_NOTOWNED) /* + * Transmit lock. + * + * This is a (mostly) temporary lock designed to serialise all of the + * transmission operations throughout the stack. + */ +typedef struct { + char name[16]; /* e.g. "ath0_com_lock" */ + struct mtx mtx; +} ieee80211_tx_lock_t; +#define IEEE80211_TX_LOCK_INIT(_ic, _name) do { \ + ieee80211_tx_lock_t *cl = &(_ic)->ic_txlock; \ + snprintf(cl->name, sizeof(cl->name), "%s_tx_lock", _name); \ + mtx_init(&cl->mtx, cl->name, NULL, MTX_DEF); \ +} while (0) +#define IEEE80211_TX_LOCK_OBJ(_ic) (&(_ic)->ic_txlock.mtx) +#define IEEE80211_TX_LOCK_DESTROY(_ic) mtx_destroy(IEEE80211_TX_LOCK_OBJ(_ic)) +#define IEEE80211_TX_LOCK(_ic) mtx_lock(IEEE80211_TX_LOCK_OBJ(_ic)) +#define IEEE80211_TX_UNLOCK(_ic) mtx_unlock(IEEE80211_TX_LOCK_OBJ(_ic)) +#define IEEE80211_TX_LOCK_ASSERT(_ic) \ + mtx_assert(IEEE80211_TX_LOCK_OBJ(_ic), MA_OWNED) +#define IEEE80211_TX_UNLOCK_ASSERT(_ic) \ + mtx_assert(IEEE80211_TX_LOCK_OBJ(_ic), MA_NOTOWNED) + +/* * Node locking definitions. */ typedef struct { Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c Mon Feb 25 10:30:25 2013 (r247261) @@ -2392,7 +2392,9 @@ ieee80211_send_bar(struct ieee80211_node * ic_raw_xmit will free the node reference * regardless of queue/TX success or failure. */ + IEEE80211_TX_LOCK(ic); ret = ic->ic_raw_xmit(ni, m, NULL); + IEEE80211_TX_UNLOCK(ic); if (ret != 0) { IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N, ni, "send BAR: failed: (ret = %d)\n", Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c Mon Feb 25 10:30:25 2013 (r247261) @@ -592,6 +592,7 @@ hwmp_send_action(struct ieee80211vap *va struct ieee80211_bpf_params params; struct mbuf *m; uint8_t *frm; + int ret; if (IEEE80211_IS_MULTICAST(da)) { ni = ieee80211_ref_node(vap->iv_bss); @@ -654,6 +655,9 @@ hwmp_send_action(struct ieee80211vap *va vap->iv_stats.is_tx_nobuf++; return ENOMEM; } + + IEEE80211_TX_LOCK(ic); + ieee80211_send_setup(ni, m, IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_ACTION, IEEE80211_NONQOS_TID, vap->iv_myaddr, da, vap->iv_myaddr); @@ -669,7 +673,9 @@ hwmp_send_action(struct ieee80211vap *va else params.ibp_try0 = ni->ni_txparms->maxretry; params.ibp_power = ni->ni_txpower; - return ic->ic_raw_xmit(ni, m, ¶ms); + ret = ic->ic_raw_xmit(ni, m, ¶ms); + IEEE80211_TX_UNLOCK(ic); + return (ret); } #define ADDSHORT(frm, v) do { \ Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c Mon Feb 25 10:30:25 2013 (r247261) @@ -2743,6 +2743,7 @@ mesh_send_action(struct ieee80211_node * struct ieee80211com *ic = ni->ni_ic; struct ieee80211_bpf_params params; struct ieee80211_frame *wh; + int ret; KASSERT(ni != NULL, ("null node")); @@ -2761,6 +2762,7 @@ mesh_send_action(struct ieee80211_node * return ENOMEM; } + IEEE80211_TX_LOCK(ic); wh = mtod(m, struct ieee80211_frame *); ieee80211_send_setup(ni, m, IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_ACTION, @@ -2778,7 +2780,9 @@ mesh_send_action(struct ieee80211_node * IEEE80211_NODE_STAT(ni, tx_mgmt); - return ic->ic_raw_xmit(ni, m, ¶ms); + ret = ic->ic_raw_xmit(ni, m, ¶ms); + IEEE80211_TX_UNLOCK(ic); + return (ret); } #define ADDSHORT(frm, v) do { \ Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Mon Feb 25 10:30:25 2013 (r247261) @@ -282,6 +282,7 @@ ieee80211_start_pkt(struct ieee80211vap BPF_MTAP(ifp, m); /* 802.3 tx */ + /* * Check if A-MPDU tx aggregation is setup or if we * should try to enable it. The sta must be associated @@ -317,6 +318,7 @@ ieee80211_start_pkt(struct ieee80211vap /* XXX hold frame for reply? */ } } + #ifdef IEEE80211_SUPPORT_SUPERG else if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF)) { m = ieee80211_ff_check(ni, m); @@ -327,6 +329,14 @@ ieee80211_start_pkt(struct ieee80211vap } } #endif /* IEEE80211_SUPPORT_SUPERG */ + + /* + * Grab the TX lock - serialise the TX process from this + * point (where TX state is being checked/modified) + * through to driver queue. + */ + IEEE80211_TX_LOCK(ic); + if (__predict_true((vap->iv_caps & IEEE80211_C_8023ENCAP) == 0)) { /* * Encapsulate the packet in prep for transmission. @@ -334,12 +344,19 @@ ieee80211_start_pkt(struct ieee80211vap m = ieee80211_encap(vap, ni, m); if (m == NULL) { /* NB: stat+msg handled in ieee80211_encap */ + IEEE80211_TX_UNLOCK(ic); ieee80211_free_node(ni); /* XXX better status? */ return (ENOBUFS); } } error = parent->if_transmit(parent, m); + + /* + * Unlock at this point - no need to hold it across + * ieee80211_free_node() (ie, the comlock) + */ + IEEE80211_TX_UNLOCK(ic); if (error != 0) { /* NB: IFQ_HANDOFF reclaims mbuf */ ieee80211_free_node(ni); @@ -425,7 +442,9 @@ ieee80211_output(struct ifnet *ifp, stru struct ieee80211_node *ni = NULL; struct ieee80211vap *vap; struct ieee80211_frame *wh; + struct ieee80211com *ic = NULL; int error; + int ret; IFQ_LOCK(&ifp->if_snd); if (ifp->if_drv_flags & IFF_DRV_OACTIVE) { @@ -442,6 +461,7 @@ ieee80211_output(struct ifnet *ifp, stru } IFQ_UNLOCK(&ifp->if_snd); vap = ifp->if_softc; + ic = vap->iv_ic; /* * Hand to the 802.3 code if not tagged as * a raw 802.11 frame. @@ -522,15 +542,19 @@ ieee80211_output(struct ifnet *ifp, stru /* NB: ieee80211_encap does not include 802.11 header */ IEEE80211_NODE_STAT_ADD(ni, tx_bytes, m->m_pkthdr.len); + IEEE80211_TX_LOCK(ic); + /* * NB: DLT_IEEE802_11_RADIO identifies the parameters are * present by setting the sa_len field of the sockaddr (yes, * this is a hack). * NB: we assume sa_data is suitably aligned to cast. */ - return vap->iv_ic->ic_raw_xmit(ni, m, + ret = vap->iv_ic->ic_raw_xmit(ni, m, (const struct ieee80211_bpf_params *)(dst->sa_len ? dst->sa_data : NULL)); + IEEE80211_TX_UNLOCK(ic); + return (ret); bad: if (m != NULL) m_freem(m); @@ -559,8 +583,11 @@ ieee80211_send_setup( struct ieee80211vap *vap = ni->ni_vap; struct ieee80211_tx_ampdu *tap; struct ieee80211_frame *wh = mtod(m, struct ieee80211_frame *); + struct ieee80211com *ic = ni->ni_ic; ieee80211_seq seqno; + IEEE80211_TX_LOCK_ASSERT(ic); + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | type; if ((type & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) { switch (vap->iv_opmode) { @@ -654,6 +681,7 @@ ieee80211_mgmt_output(struct ieee80211_n struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; struct ieee80211_frame *wh; + int ret; KASSERT(ni != NULL, ("null node")); @@ -675,6 +703,8 @@ ieee80211_mgmt_output(struct ieee80211_n return ENOMEM; } + IEEE80211_TX_LOCK(ic); + wh = mtod(m, struct ieee80211_frame *); ieee80211_send_setup(ni, m, IEEE80211_FC0_TYPE_MGT | type, IEEE80211_NONQOS_TID, @@ -703,7 +733,9 @@ ieee80211_mgmt_output(struct ieee80211_n #endif IEEE80211_NODE_STAT(ni, tx_mgmt); - return ic->ic_raw_xmit(ni, m, params); + ret = ic->ic_raw_xmit(ni, m, params); + IEEE80211_TX_UNLOCK(ic); + return (ret); } /* @@ -727,6 +759,7 @@ ieee80211_send_nulldata(struct ieee80211 struct ieee80211_frame *wh; int hdrlen; uint8_t *frm; + int ret; if (vap->iv_state == IEEE80211_S_CAC) { IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT | IEEE80211_MSG_DOTH, @@ -762,6 +795,8 @@ ieee80211_send_nulldata(struct ieee80211 return ENOMEM; } + IEEE80211_TX_LOCK(ic); + wh = mtod(m, struct ieee80211_frame *); /* NB: a little lie */ if (ni->ni_flags & IEEE80211_NODE_QOS) { const int tid = WME_AC_TO_TID(WME_AC_BE); @@ -804,7 +839,9 @@ ieee80211_send_nulldata(struct ieee80211 ieee80211_chan2ieee(ic, ic->ic_curchan), wh->i_fc[1] & IEEE80211_FC1_PWR_MGT ? "ena" : "dis"); - return ic->ic_raw_xmit(ni, m, NULL); + ret = ic->ic_raw_xmit(ni, m, NULL); + IEEE80211_TX_UNLOCK(ic); + return (ret); } /* @@ -1067,6 +1104,8 @@ ieee80211_encap(struct ieee80211vap *vap ieee80211_seq seqno; int meshhdrsize, meshae; uint8_t *qos; + + IEEE80211_TX_LOCK_ASSERT(ic); /* * Copy existing Ethernet header to a safe place. The @@ -1839,6 +1878,7 @@ ieee80211_send_probereq(struct ieee80211 const struct ieee80211_rateset *rs; struct mbuf *m; uint8_t *frm; + int ret; if (vap->iv_state == IEEE80211_S_CAC) { IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, @@ -1911,6 +1951,7 @@ ieee80211_send_probereq(struct ieee80211 return ENOMEM; } + IEEE80211_TX_LOCK(ic); wh = mtod(m, struct ieee80211_frame *); ieee80211_send_setup(ni, m, IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_PROBE_REQ, @@ -1938,7 +1979,9 @@ ieee80211_send_probereq(struct ieee80211 } else params.ibp_try0 = tp->maxretry; params.ibp_power = ni->ni_txpower; - return ic->ic_raw_xmit(ni, m, ¶ms); + ret = ic->ic_raw_xmit(ni, m, ¶ms); + IEEE80211_TX_UNLOCK(ic); + return (ret); } /* @@ -2507,6 +2550,7 @@ ieee80211_send_proberesp(struct ieee8021 struct ieee80211com *ic = vap->iv_ic; struct ieee80211_frame *wh; struct mbuf *m; + int ret; if (vap->iv_state == IEEE80211_S_CAC) { IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, bss, @@ -2535,6 +2579,7 @@ ieee80211_send_proberesp(struct ieee8021 M_PREPEND(m, sizeof(struct ieee80211_frame), M_NOWAIT); KASSERT(m != NULL, ("no room for header")); + IEEE80211_TX_LOCK(ic); wh = mtod(m, struct ieee80211_frame *); ieee80211_send_setup(bss, m, IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_PROBE_RESP, @@ -2550,7 +2595,9 @@ ieee80211_send_proberesp(struct ieee8021 legacy ? " " : ""); IEEE80211_NODE_STAT(bss, tx_mgmt); - return ic->ic_raw_xmit(bss, m, NULL); + ret = ic->ic_raw_xmit(bss, m, NULL); + IEEE80211_TX_UNLOCK(ic); + return (ret); } /* Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_superg.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_superg.c Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_superg.c Mon Feb 25 10:30:25 2013 (r247261) @@ -503,6 +503,8 @@ ff_transmit(struct ieee80211_node *ni, s struct ieee80211vap *vap = ni->ni_vap; int error; + IEEE80211_TX_LOCK_ASSERT(vap->iv_ic); + /* encap and xmit */ m = ieee80211_encap(vap, ni, m); if (m != NULL) { @@ -532,6 +534,8 @@ ff_flush(struct mbuf *head, struct mbuf struct ieee80211_node *ni; struct ieee80211vap *vap; + IEEE80211_TX_LOCK_ASSERT(vap->iv_ic); + for (m = head; m != last; m = next) { next = m->m_nextpkt; m->m_nextpkt = NULL; @@ -590,7 +594,9 @@ ieee80211_ff_age(struct ieee80211com *ic M_AGE_SUB(m, quanta); IEEE80211_UNLOCK(ic); + IEEE80211_TX_LOCK(ic); ff_flush(head, m); + IEEE80211_TX_UNLOCK(ic); } static void @@ -679,6 +685,8 @@ ieee80211_ff_check(struct ieee80211_node struct mbuf *mstaged; uint32_t txtime, limit; + IEEE80211_TX_UNLOCK_ASSERT(ic); + /* * Check if the supplied frame can be aggregated. * @@ -734,10 +742,12 @@ ieee80211_ff_check(struct ieee80211_node IEEE80211_UNLOCK(ic); if (mstaged != NULL) { + IEEE80211_TX_LOCK(ic); IEEE80211_NOTE(vap, IEEE80211_MSG_SUPERG, ni, "%s: flush staged frame", __func__); /* encap and xmit */ ff_transmit(ni, mstaged); + IEEE80211_TX_UNLOCK(ic); } return m; /* NB: original frame */ } Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_var.h ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Mon Feb 25 10:07:54 2013 (r247260) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Mon Feb 25 10:30:25 2013 (r247261) @@ -118,6 +118,7 @@ struct ieee80211_frame; struct ieee80211com { struct ifnet *ic_ifp; /* associated device */ ieee80211_com_lock_t ic_comlock; /* state update lock */ + ieee80211_tx_lock_t ic_txlock; /* ic/vap TX lock */ TAILQ_HEAD(, ieee80211vap) ic_vaps; /* list of vap instances */ int ic_headroom; /* driver tx headroom needs */ enum ieee80211_phytype ic_phytype; /* XXX wrong for multi-mode */ From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 10:52:02 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 660F8ABA; Mon, 25 Feb 2013 10:52:02 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4F36DD2A; Mon, 25 Feb 2013 10:52:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1PAq2Ks036863; Mon, 25 Feb 2013 10:52:02 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1PAq26l036862; Mon, 25 Feb 2013 10:52:02 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201302251052.r1PAq26l036862@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 25 Feb 2013 10:52:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247262 - user/uqs/git_conv X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 10:52:02 -0000 Author: uqs Date: Mon Feb 25 10:52:01 2013 New Revision: 247262 URL: http://svnweb.freebsd.org/changeset/base/247262 Log: git_conv: this works better if you update the correct file Deleted: user/uqs/git_conv/freebsd.rules Modified: user/uqs/git_conv/freebsd-base.rules Modified: user/uqs/git_conv/freebsd-base.rules ============================================================================== --- user/uqs/git_conv/freebsd-base.rules Mon Feb 25 10:30:25 2013 (r247261) +++ user/uqs/git_conv/freebsd-base.rules Mon Feb 25 10:52:01 2013 (r247262) @@ -81,6 +81,8 @@ match /user/gad/README.txt end match match /user/des/Makefile.inc end match +match /user/rpaulo/asiabsdcon.rb +end match match /user/simon/test.txt end match match /user/peter/foo.txt From owner-svn-src-user@FreeBSD.ORG Mon Feb 25 22:51:53 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 03BF0B77; Mon, 25 Feb 2013 22:51:53 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id CAF32D7F; Mon, 25 Feb 2013 22:51:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1PMpqK4055023; Mon, 25 Feb 2013 22:51:52 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1PMpn2T055001; Mon, 25 Feb 2013 22:51:49 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201302252251.r1PMpn2T055001@svn.freebsd.org> From: Adrian Chadd Date: Mon, 25 Feb 2013 22:51:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247288 - in user/adrian/net80211_tx: . bin/sh bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sy... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 22:51:53 -0000 Author: adrian Date: Mon Feb 25 22:51:49 2013 New Revision: 247288 URL: http://svnweb.freebsd.org/changeset/base/247288 Log: MFH Added: user/adrian/net80211_tx/tools/regression/bin/sh/builtins/wait4.0 - copied unchanged from r247287, head/tools/regression/bin/sh/builtins/wait4.0 user/adrian/net80211_tx/tools/regression/bin/sh/builtins/wait5.0 - copied unchanged from r247287, head/tools/regression/bin/sh/builtins/wait5.0 user/adrian/net80211_tx/usr.sbin/bsdconfig/include/media.hlp - copied unchanged from r247287, head/usr.sbin/bsdconfig/include/media.hlp user/adrian/net80211_tx/usr.sbin/bsdconfig/include/network_device.hlp - copied unchanged from r247287, head/usr.sbin/bsdconfig/include/network_device.hlp user/adrian/net80211_tx/usr.sbin/bsdconfig/include/options.hlp - copied unchanged from r247287, head/usr.sbin/bsdconfig/include/options.hlp user/adrian/net80211_tx/usr.sbin/bsdconfig/include/tcp.hlp - copied unchanged from r247287, head/usr.sbin/bsdconfig/include/tcp.hlp user/adrian/net80211_tx/usr.sbin/bsdconfig/share/device.subr - copied unchanged from r247287, head/usr.sbin/bsdconfig/share/device.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/media/ - copied from r247287, head/usr.sbin/bsdconfig/share/media/ user/adrian/net80211_tx/usr.sbin/bsdconfig/share/struct.subr - copied unchanged from r247287, head/usr.sbin/bsdconfig/share/struct.subr Deleted: user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/include/tcp.hlp Modified: user/adrian/net80211_tx/Makefile.inc1 user/adrian/net80211_tx/bin/sh/eval.c user/adrian/net80211_tx/bin/sh/jobs.c user/adrian/net80211_tx/bin/sh/main.c user/adrian/net80211_tx/bin/sh/trap.c user/adrian/net80211_tx/bin/sh/trap.h user/adrian/net80211_tx/bin/test/test.1 user/adrian/net80211_tx/bin/test/test.c user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/translate.c user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/adrian/net80211_tx/contrib/llvm/lib/Target/X86/X86InstrCompiler.td user/adrian/net80211_tx/etc/rc.d/rtadvd user/adrian/net80211_tx/lib/libc/gen/opendir.c user/adrian/net80211_tx/lib/libelf/elf_update.c user/adrian/net80211_tx/sbin/fsck_ffs/dir.c user/adrian/net80211_tx/sbin/fsck_ffs/ea.c user/adrian/net80211_tx/sbin/fsck_ffs/fsck.h user/adrian/net80211_tx/sbin/fsck_ffs/fsutil.c user/adrian/net80211_tx/sbin/fsck_ffs/inode.c user/adrian/net80211_tx/sbin/fsck_ffs/main.c user/adrian/net80211_tx/sbin/fsck_ffs/setup.c user/adrian/net80211_tx/sbin/fsdb/fsdbutil.c user/adrian/net80211_tx/sbin/hastctl/hastctl.c user/adrian/net80211_tx/sbin/hastd/control.c user/adrian/net80211_tx/sbin/hastd/hast.h user/adrian/net80211_tx/sbin/hastd/primary.c user/adrian/net80211_tx/sbin/hastd/secondary.c user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h user/adrian/net80211_tx/sys/arm/ti/ti_gpio.c user/adrian/net80211_tx/sys/boot/common/bootstrap.h user/adrian/net80211_tx/sys/boot/common/module.c user/adrian/net80211_tx/sys/boot/fdt/dts/bcm2835-rpi-b.dts user/adrian/net80211_tx/sys/boot/fdt/fdt_loader_cmd.c user/adrian/net80211_tx/sys/cddl/compat/opensolaris/sys/time.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ah.h user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5210/ar5210.h user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5211/ar5211.h user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5212/ar5212.h user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416.h user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/adrian/net80211_tx/sys/dev/ath/if_ath.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tx_ht.c user/adrian/net80211_tx/sys/dev/ath/if_athvar.h user/adrian/net80211_tx/sys/dev/ciss/ciss.c user/adrian/net80211_tx/sys/dev/fdt/fdt_common.h user/adrian/net80211_tx/sys/dev/isp/isp.c user/adrian/net80211_tx/sys/dev/mxge/if_mxge.c user/adrian/net80211_tx/sys/dev/sym/sym_hipd.c user/adrian/net80211_tx/sys/dev/usb/usb_pf.c user/adrian/net80211_tx/sys/dev/usb/usbdevs user/adrian/net80211_tx/sys/ia64/ia64/pmap.c user/adrian/net80211_tx/sys/ia64/include/vmparam.h user/adrian/net80211_tx/sys/kern/kern_descrip.c user/adrian/net80211_tx/tools/regression/bin/test/regress.sh user/adrian/net80211_tx/usr.bin/systat/systat.1 user/adrian/net80211_tx/usr.sbin/bhyve/pci_emul.h user/adrian/net80211_tx/usr.sbin/bsdconfig/include/Makefile user/adrian/net80211_tx/usr.sbin/bsdconfig/include/messages.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/devices user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/include/Makefile user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/common.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/device.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/hostname.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/ipaddr.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/netmask.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/resolv.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/share/routing.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/Makefile user/adrian/net80211_tx/usr.sbin/bsdconfig/share/common.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/script.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/strings.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/variable.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcvar user/adrian/net80211_tx/usr.sbin/rtadvd/rtadvd.8 user/adrian/net80211_tx/usr.sbin/rtadvd/rtadvd.c Directory Properties: user/adrian/net80211_tx/ (props changed) user/adrian/net80211_tx/cddl/contrib/opensolaris/ (props changed) user/adrian/net80211_tx/contrib/llvm/ (props changed) user/adrian/net80211_tx/lib/libc/ (props changed) user/adrian/net80211_tx/sbin/ (props changed) user/adrian/net80211_tx/sys/ (props changed) user/adrian/net80211_tx/sys/boot/ (props changed) user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/ (props changed) user/adrian/net80211_tx/usr.sbin/bhyve/ (props changed) user/adrian/net80211_tx/usr.sbin/rtadvd/ (props changed) Modified: user/adrian/net80211_tx/Makefile.inc1 ============================================================================== --- user/adrian/net80211_tx/Makefile.inc1 Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/Makefile.inc1 Mon Feb 25 22:51:49 2013 (r247288) @@ -1132,7 +1132,8 @@ _lex= usr.bin/lex .endif .if ${BOOTSTRAPPING} < 1000013 -_yacc= usr.bin/yacc +_yacc= lib/liby \ + usr.bin/yacc .endif .if ${BOOTSTRAPPING} < 1000026 Modified: user/adrian/net80211_tx/bin/sh/eval.c ============================================================================== --- user/adrian/net80211_tx/bin/sh/eval.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/sh/eval.c Mon Feb 25 22:51:49 2013 (r247288) @@ -301,7 +301,7 @@ evaltree(union node *n, int flags) } while (n != NULL); out: popstackmark(&smark); - if (pendingsigs) + if (pendingsig) dotrap(); if (eflag && exitstatus != 0 && do_etest) exitshell(exitstatus); Modified: user/adrian/net80211_tx/bin/sh/jobs.c ============================================================================== --- user/adrian/net80211_tx/bin/sh/jobs.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/sh/jobs.c Mon Feb 25 22:51:49 2013 (r247288) @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv) } while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1); in_waitcmd--; - return 0; + return pendingsig + 128; } Modified: user/adrian/net80211_tx/bin/sh/main.c ============================================================================== --- user/adrian/net80211_tx/bin/sh/main.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/sh/main.c Mon Feb 25 22:51:49 2013 (r247288) @@ -196,7 +196,7 @@ cmdloop(int top) TRACE(("cmdloop(%d) called\n", top)); setstackmark(&smark); for (;;) { - if (pendingsigs) + if (pendingsig) dotrap(); inter = 0; if (iflag && top) { Modified: user/adrian/net80211_tx/bin/sh/trap.c ============================================================================== --- user/adrian/net80211_tx/bin/sh/trap.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/sh/trap.c Mon Feb 25 22:51:49 2013 (r247288) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); MKINIT char sigmode[NSIG]; /* current value of signal */ -int pendingsigs; /* indicates some signal received */ +volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -388,22 +388,25 @@ onsig(int signo) return; } - if (signo != SIGCHLD || !ignore_sigchld) - gotsig[signo] = 1; - pendingsigs++; - /* If we are currently in a wait builtin, prepare to break it */ - if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) - breakwaitcmd = 1; - /* - * If a trap is set, not ignored and not the null command, we need - * to make sure traps are executed even when a child blocks signals. - */ - if (Tflag && - trap[signo] != NULL && - ! (trap[signo][0] == '\0') && - ! (trap[signo][0] == ':' && trap[signo][1] == '\0')) + if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) { breakwaitcmd = 1; + pendingsig = signo; + } + + if (trap[signo] != NULL && trap[signo][0] != '\0' && + (signo != SIGCHLD || !ignore_sigchld)) { + gotsig[signo] = 1; + pendingsig = signo; + + /* + * If a trap is set, not ignored and not the null command, we + * need to make sure traps are executed even when a child + * blocks signals. + */ + if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0')) + breakwaitcmd = 1; + } #ifndef NO_HISTORY if (signo == SIGWINCH) @@ -424,7 +427,7 @@ dotrap(void) in_dotrap++; for (;;) { - pendingsigs = 0; + pendingsig = 0; for (i = 1; i < NSIG; i++) { if (gotsig[i]) { gotsig[i] = 0; Modified: user/adrian/net80211_tx/bin/sh/trap.h ============================================================================== --- user/adrian/net80211_tx/bin/sh/trap.h Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/sh/trap.h Mon Feb 25 22:51:49 2013 (r247288) @@ -33,7 +33,7 @@ * $FreeBSD$ */ -extern int pendingsigs; +extern volatile sig_atomic_t pendingsig; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; Modified: user/adrian/net80211_tx/bin/test/test.1 ============================================================================== --- user/adrian/net80211_tx/bin/test/test.1 Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/test/test.1 Mon Feb 25 22:51:49 2013 (r247288) @@ -169,15 +169,65 @@ True if .Ar file exists and is a socket. .It Ar file1 Fl nt Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and +.Ar file1 +is newer than +.Ar file2 . +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2 +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is newer than +has a more recent last access time +.Pq Ar X Ns = Ns Cm a , +inode creation time +.Pq Ar X Ns = Ns Cm b , +change time +.Pq Ar X Ns = Ns Cm c , +or modification time +.Pq Ar X Ns = Ns Cm m +than the last access time +.Pq Ar Y Ns = Ns Cm a , +inode creation time +.Pq Ar Y Ns = Ns Cm b , +change time +.Pq Ar Y Ns = Ns Cm c , +or modification time +.Pq Ar Y Ns = Ns Cm m +of .Ar file2 . +Note that +.Ic -ntmm +is equivalent to +.Ic -nt . .It Ar file1 Fl ot Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is older than +is older than .Ar file2 . +Note that +.Ar file1 +.Ic -ot +.Ar file2 +is equivalent to +.Ar file2 +.Ic -nt +.Ar file1 +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2 +Equivalent to +.Ar file2 +.Ic -nt Ns Ar Y Ns Ar X +.Ar file1 . .It Ar file1 Fl ef Ar file2 True if .Ar file1 Modified: user/adrian/net80211_tx/bin/test/test.c ============================================================================== --- user/adrian/net80211_tx/bin/test/test.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/bin/test/test.c Mon Feb 25 22:51:49 2013 (r247288) @@ -63,7 +63,7 @@ error(const char *msg, ...) "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| - "-nt"|"-ot"|"-ef"; + "-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef"; operand ::= */ @@ -85,8 +85,38 @@ enum token { FILSUID, FILSGID, FILSTCK, - FILNT, - FILOT, + FILNTAA, + FILNTAB, + FILNTAC, + FILNTAM, + FILNTBA, + FILNTBB, + FILNTBC, + FILNTBM, + FILNTCA, + FILNTCB, + FILNTCC, + FILNTCM, + FILNTMA, + FILNTMB, + FILNTMC, + FILNTMM, + FILOTAA, + FILOTAB, + FILOTAC, + FILOTAM, + FILOTBA, + FILOTBB, + FILOTBC, + FILOTBM, + FILOTCA, + FILOTCB, + FILOTCC, + FILOTCM, + FILOTMA, + FILOTMB, + FILOTMC, + FILOTMM, FILEQ, FILUID, FILGID, @@ -118,9 +148,16 @@ enum token_types { PAREN }; +enum time_types { + ATIME, + BTIME, + CTIME, + MTIME +}; + static struct t_op { - char op_text[4]; - short op_num, op_type; + char op_text[6]; + char op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, {"-w", FILWR, UNOP}, @@ -154,8 +191,40 @@ static struct t_op { {"-gt", INTGT, BINOP}, {"-le", INTLE, BINOP}, {"-lt", INTLT, BINOP}, - {"-nt", FILNT, BINOP}, - {"-ot", FILOT, BINOP}, + {"-nt", FILNTMM, BINOP}, + {"-ntaa", FILNTAA, BINOP}, + {"-ntab", FILNTAB, BINOP}, + {"-ntac", FILNTAC, BINOP}, + {"-ntam", FILNTAM, BINOP}, + {"-ntba", FILNTBA, BINOP}, + {"-ntbb", FILNTBB, BINOP}, + {"-ntbc", FILNTBC, BINOP}, + {"-ntbm", FILNTBM, BINOP}, + {"-ntca", FILNTCA, BINOP}, + {"-ntcb", FILNTCB, BINOP}, + {"-ntcc", FILNTCC, BINOP}, + {"-ntcm", FILNTCM, BINOP}, + {"-ntma", FILNTMA, BINOP}, + {"-ntmb", FILNTMB, BINOP}, + {"-ntmc", FILNTMC, BINOP}, + {"-ntmm", FILNTMM, BINOP}, + {"-ot", FILOTMM, BINOP}, + {"-otaa", FILOTAA, BINOP}, + {"-otab", FILOTBB, BINOP}, + {"-otac", FILOTAC, BINOP}, + {"-otam", FILOTAM, BINOP}, + {"-otba", FILOTBA, BINOP}, + {"-otbb", FILOTBB, BINOP}, + {"-otbc", FILOTBC, BINOP}, + {"-otbm", FILOTBM, BINOP}, + {"-otca", FILOTCA, BINOP}, + {"-otcb", FILOTCB, BINOP}, + {"-otcc", FILOTCC, BINOP}, + {"-otcm", FILOTCM, BINOP}, + {"-otma", FILOTMA, BINOP}, + {"-otmb", FILOTMB, BINOP}, + {"-otmc", FILOTMC, BINOP}, + {"-otmm", FILOTMM, BINOP}, {"-ef", FILEQ, BINOP}, {"!", UNOT, BUNOP}, {"-a", BAND, BBINOP}, @@ -180,10 +249,10 @@ static int intcmp(const char *, const ch static int isunopoperand(void); static int islparenoperand(void); static int isrparenoperand(void); -static int newerf(const char *, const char *); +static int newerf(const char *, const char *, enum time_types, + enum time_types); static int nexpr(enum token); static int oexpr(enum token); -static int olderf(const char *, const char *); static int primary(enum token); static void syntax(const char *, const char *); static enum token t_lex(char *); @@ -353,10 +422,70 @@ binop(void) return intcmp(opnd1, opnd2) <= 0; case INTLT: return intcmp(opnd1, opnd2) < 0; - case FILNT: - return newerf (opnd1, opnd2); - case FILOT: - return olderf (opnd1, opnd2); + case FILNTAA: + return newerf(opnd1, opnd2, ATIME, ATIME); + case FILNTAB: + return newerf(opnd1, opnd2, ATIME, BTIME); + case FILNTAC: + return newerf(opnd1, opnd2, ATIME, CTIME); + case FILNTAM: + return newerf(opnd1, opnd2, ATIME, MTIME); + case FILNTBA: + return newerf(opnd1, opnd2, BTIME, ATIME); + case FILNTBB: + return newerf(opnd1, opnd2, BTIME, BTIME); + case FILNTBC: + return newerf(opnd1, opnd2, BTIME, CTIME); + case FILNTBM: + return newerf(opnd1, opnd2, BTIME, MTIME); + case FILNTCA: + return newerf(opnd1, opnd2, CTIME, ATIME); + case FILNTCB: + return newerf(opnd1, opnd2, CTIME, BTIME); + case FILNTCC: + return newerf(opnd1, opnd2, CTIME, CTIME); + case FILNTCM: + return newerf(opnd1, opnd2, CTIME, MTIME); + case FILNTMA: + return newerf(opnd1, opnd2, MTIME, ATIME); + case FILNTMB: + return newerf(opnd1, opnd2, MTIME, BTIME); + case FILNTMC: + return newerf(opnd1, opnd2, MTIME, CTIME); + case FILNTMM: + return newerf(opnd1, opnd2, MTIME, MTIME); + case FILOTAA: + return newerf(opnd2, opnd1, ATIME, ATIME); + case FILOTAB: + return newerf(opnd2, opnd1, BTIME, ATIME); + case FILOTAC: + return newerf(opnd2, opnd1, CTIME, ATIME); + case FILOTAM: + return newerf(opnd2, opnd1, MTIME, ATIME); + case FILOTBA: + return newerf(opnd2, opnd1, ATIME, BTIME); + case FILOTBB: + return newerf(opnd2, opnd1, BTIME, BTIME); + case FILOTBC: + return newerf(opnd2, opnd1, CTIME, BTIME); + case FILOTBM: + return newerf(opnd2, opnd1, MTIME, BTIME); + case FILOTCA: + return newerf(opnd2, opnd1, ATIME, CTIME); + case FILOTCB: + return newerf(opnd2, opnd1, BTIME, CTIME); + case FILOTCC: + return newerf(opnd2, opnd1, CTIME, CTIME); + case FILOTCM: + return newerf(opnd2, opnd1, MTIME, CTIME); + case FILOTMA: + return newerf(opnd2, opnd1, ATIME, MTIME); + case FILOTMB: + return newerf(opnd2, opnd1, BTIME, MTIME); + case FILOTMC: + return newerf(opnd2, opnd1, CTIME, MTIME); + case FILOTMM: + return newerf(opnd2, opnd1, MTIME, MTIME); case FILEQ: return equalf (opnd1, opnd2); default: @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2) } static int -newerf (const char *f1, const char *f2) +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2) { struct stat b1, b2; + struct timespec *ts1, *ts2; if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0; - if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) + switch (t1) { + case ATIME: ts1 = &b1.st_atim; break; + case BTIME: ts1 = &b1.st_birthtim; break; + case CTIME: ts1 = &b1.st_ctim; break; + default: ts1 = &b1.st_mtim; break; + } + + switch (t2) { + case ATIME: ts2 = &b2.st_atim; break; + case BTIME: ts2 = &b2.st_birthtim; break; + case CTIME: ts2 = &b2.st_ctim; break; + default: ts2 = &b2.st_mtim; break; + } + + if (ts1->tv_sec > ts2->tv_sec) return 1; - if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) + if (ts1->tv_sec < ts2->tv_sec) return 0; - return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec); -} - -static int -olderf (const char *f1, const char *f2) -{ - return (newerf(f2, f1)); + return (ts1->tv_nsec > ts2->tv_nsec); } static int Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/translate.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/translate.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/translate.c Mon Feb 25 22:51:49 2013 (r247288) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #include @@ -455,6 +456,20 @@ translate_device(const char *pool, const &record->zi_guid) == 0); } + /* + * Device faults can take on three different forms: + * 1). delayed or hanging I/O + * 2). zfs label faults + * 3). generic disk faults + */ + if (record->zi_timer != 0) { + record->zi_cmd = ZINJECT_DELAY_IO; + } else if (label_type != TYPE_INVAL) { + record->zi_cmd = ZINJECT_LABEL_FAULT; + } else { + record->zi_cmd = ZINJECT_DEVICE_FAULT; + } + switch (label_type) { case TYPE_LABEL_UBERBLOCK: record->zi_start = offsetof(vdev_label_t, vl_uberblock[0]); Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/zinject.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zinject/zinject.c Mon Feb 25 22:51:49 2013 (r247288) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* @@ -603,7 +604,7 @@ main(int argc, char **argv) } while ((c = getopt(argc, argv, - ":aA:b:d:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { + ":aA:b:d:D:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { switch (c) { case 'a': flags |= ZINJECT_FLUSH_ARC; @@ -629,6 +630,15 @@ main(int argc, char **argv) case 'd': device = optarg; break; + case 'D': + record.zi_timer = strtoull(optarg, &end, 10); + if (errno != 0 || *end != '\0') { + (void) fprintf(stderr, "invalid i/o delay " + "value: '%s'\n", optarg); + usage(); + return (1); + } + break; case 'e': if (strcasecmp(optarg, "io") == 0) { error = EIO; @@ -693,6 +703,7 @@ main(int argc, char **argv) case 'p': (void) strlcpy(record.zi_func, optarg, sizeof (record.zi_func)); + record.zi_cmd = ZINJECT_PANIC; break; case 'q': quiet = 1; @@ -766,13 +777,15 @@ main(int argc, char **argv) argc -= optind; argv += optind; + if (record.zi_duration != 0) + record.zi_cmd = ZINJECT_IGNORED_WRITES; + if (cancel != NULL) { /* * '-c' is invalid with any other options. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "cancel (-c) incompatible with " "any other options\n"); usage(); @@ -804,8 +817,7 @@ main(int argc, char **argv) * for doing injection, so handle it separately here. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "device (-d) incompatible with " "data error injection\n"); usage(); @@ -839,7 +851,7 @@ main(int argc, char **argv) } else if (raw != NULL) { if (range != NULL || type != TYPE_INVAL || level != 0 || - record.zi_func[0] != '\0' || record.zi_duration != 0) { + record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "raw (-b) format with " "any other options\n"); usage(); @@ -862,13 +874,14 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_raw(raw, &record) != 0) return (1); if (!error) error = EIO; - } else if (record.zi_func[0] != '\0') { + } else if (record.zi_cmd == ZINJECT_PANIC) { if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || device != NULL || record.zi_duration != 0) { + level != 0 || device != NULL) { (void) fprintf(stderr, "panic (-p) incompatible with " "other options\n"); usage(); @@ -886,7 +899,7 @@ main(int argc, char **argv) if (argv[1] != NULL) record.zi_type = atoi(argv[1]); dataset[0] = '\0'; - } else if (record.zi_duration != 0) { + } else if (record.zi_cmd == ZINJECT_IGNORED_WRITES) { if (nowrites == 0) { (void) fprintf(stderr, "-s or -g meaningless " "without -I (ignore writes)\n"); @@ -940,6 +953,7 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_record(type, argv[0], range, level, &record, pool, dataset) != 0) return (1); Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Mon Feb 25 22:51:49 2013 (r247288) @@ -45,6 +45,9 @@ int aok; uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; +#ifdef illumos +kmutex_t cpu_lock; +#endif struct utsname utsname = { "userland", "libzpool", "1", "1", "na" @@ -842,6 +845,28 @@ ddi_strtoull(const char *str, char **npt return (0); } +#ifdef illumos +/* ARGSUSED */ +cyclic_id_t +cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when) +{ + return (1); +} + +/* ARGSUSED */ +void +cyclic_remove(cyclic_id_t id) +{ +} + +/* ARGSUSED */ +int +cyclic_reprogram(cyclic_id_t id, hrtime_t expiration) +{ + return (1); +} +#endif + /* * ========================================================================= * kernel emulation setup & teardown @@ -875,6 +900,10 @@ kernel_init(int mode) system_taskq_init(); +#ifdef illumos + mutex_init(&cpu_lock, NULL, MUTEX_DEFAULT, NULL); +#endif + spa_init(mode); } Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Mon Feb 25 22:51:49 2013 (r247288) @@ -457,6 +457,9 @@ extern vnode_t *rootdir; extern void delay(clock_t ticks); +#define SEC_TO_TICK(sec) ((sec) * hz) +#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) + #define gethrestime_sec() time(NULL) #define gethrestime(t) \ do {\ @@ -624,6 +627,36 @@ typedef uint32_t idmap_rid_t; #define ERESTART (-1) #endif +#ifdef illumos +/* + * Cyclic information + */ +extern kmutex_t cpu_lock; + +typedef uintptr_t cyclic_id_t; +typedef uint16_t cyc_level_t; +typedef void (*cyc_func_t)(void *); + +#define CY_LOW_LEVEL 0 +#define CY_INFINITY INT64_MAX +#define CYCLIC_NONE ((cyclic_id_t)0) + +typedef struct cyc_time { + hrtime_t cyt_when; + hrtime_t cyt_interval; +} cyc_time_t; + +typedef struct cyc_handler { + cyc_func_t cyh_func; + void *cyh_arg; + cyc_level_t cyh_level; +} cyc_handler_t; + +extern cyclic_id_t cyclic_add(cyc_handler_t *, cyc_time_t *); +extern void cyclic_remove(cyclic_id_t); +extern int cyclic_reprogram(cyclic_id_t, hrtime_t); +#endif /* illumos */ + #ifdef __cplusplus } #endif Modified: user/adrian/net80211_tx/contrib/llvm/lib/Target/X86/X86InstrCompiler.td ============================================================================== --- user/adrian/net80211_tx/contrib/llvm/lib/Target/X86/X86InstrCompiler.td Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/contrib/llvm/lib/Target/X86/X86InstrCompiler.td Mon Feb 25 22:51:49 2013 (r247288) @@ -1076,12 +1076,14 @@ def : Pat<(X86cmp GR64:$src1, 0), // inverted. multiclass CMOVmr { - def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS), - (Inst16 GR16:$src2, addr:$src1)>; - def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS), - (Inst32 GR32:$src2, addr:$src1)>; - def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS), - (Inst64 GR64:$src2, addr:$src1)>; + let Predicates = [HasCMov] in { + def : Pat<(X86cmov (loadi16 addr:$src1), GR16:$src2, InvertedCond, EFLAGS), + (Inst16 GR16:$src2, addr:$src1)>; + def : Pat<(X86cmov (loadi32 addr:$src1), GR32:$src2, InvertedCond, EFLAGS), + (Inst32 GR32:$src2, addr:$src1)>; + def : Pat<(X86cmov (loadi64 addr:$src1), GR64:$src2, InvertedCond, EFLAGS), + (Inst64 GR64:$src2, addr:$src1)>; + } } defm : CMOVmr; Modified: user/adrian/net80211_tx/etc/rc.d/rtadvd ============================================================================== --- user/adrian/net80211_tx/etc/rc.d/rtadvd Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/etc/rc.d/rtadvd Mon Feb 25 22:51:49 2013 (r247288) @@ -46,6 +46,8 @@ rtadvd_precmd() fi done ;; + [Nn][Oo][Nn][Ee]) + ;; *) command_args="${rtadvd_interfaces}" ;; Modified: user/adrian/net80211_tx/lib/libc/gen/opendir.c ============================================================================== --- user/adrian/net80211_tx/lib/libc/gen/opendir.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/lib/libc/gen/opendir.c Mon Feb 25 22:51:49 2013 (r247288) @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include "gen-private.h" #include "telldir.h" -static DIR * __opendir_common(int, const char *, int); +static DIR * __opendir_common(int, int); /* * Open a directory. @@ -78,7 +78,7 @@ fdopendir(int fd) } if (_fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) return (NULL); - return (__opendir_common(fd, NULL, DTF_HIDEW|DTF_NODUP)); + return (__opendir_common(fd, DTF_HIDEW|DTF_NODUP)); } DIR * @@ -92,7 +92,7 @@ __opendir2(const char *name, int flags) O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC)) == -1) return (NULL); - dir = __opendir_common(fd, name, flags); + dir = __opendir_common(fd, flags); if (dir == NULL) { saved_errno = errno; _close(fd); @@ -113,7 +113,7 @@ opendir_compar(const void *p1, const voi * Common routine for opendir(3), __opendir2(3) and fdopendir(3). */ static DIR * -__opendir_common(int fd, const char *name, int flags) +__opendir_common(int fd, int flags) { DIR *dirp; int incr; @@ -121,6 +121,8 @@ __opendir_common(int fd, const char *nam int unionstack; int fd2; + fd2 = -1; + if ((dirp = malloc(sizeof(DIR) + sizeof(struct _telldir))) == NULL) return (NULL); @@ -165,7 +167,22 @@ __opendir_common(int fd, const char *nam * entries into a buffer, sort the buffer, and * remove duplicate entries by setting the inode * number to zero. + * + * We reopen the directory because _getdirentries() + * on a MNT_UNION mount modifies the open directory, + * making it refer to the lower directory after the + * upper directory's entries are exhausted. + * This would otherwise break software that uses + * the directory descriptor for fchdir or *at + * functions, such as fts.c. */ + if ((fd2 = _openat(fd, ".", O_RDONLY | O_CLOEXEC)) == -1) { + saved_errno = errno; + free(buf); + free(dirp); + errno = saved_errno; + return (NULL); + } do { /* @@ -181,7 +198,7 @@ __opendir_common(int fd, const char *nam ddptr = buf + (len - space); } - n = _getdirentries(fd, ddptr, space, &dirp->dd_seek); + n = _getdirentries(fd2, ddptr, space, &dirp->dd_seek); if (n > 0) { ddptr += n; space -= n; @@ -191,25 +208,8 @@ __opendir_common(int fd, const char *nam ddeptr = ddptr; flags |= __DTF_READALL; - /* - * Re-open the directory. - * This has the effect of rewinding back to the - * top of the union stack and is needed by - * programs which plan to fchdir to a descriptor - * which has also been read -- see fts.c. - */ - if (flags & DTF_REWIND) { - if ((fd2 = _open(name, O_RDONLY | O_DIRECTORY | - O_CLOEXEC)) == -1) { - saved_errno = errno; - free(buf); - free(dirp); - errno = saved_errno; - return (NULL); - } - (void)_dup2(fd2, fd); - _close(fd2); - } + _close(fd2); + fd2 = -1; /* * There is now a buffer full of (possibly) duplicate @@ -293,7 +293,6 @@ __opendir_common(int fd, const char *nam if (dirp->dd_buf == NULL) goto fail; dirp->dd_seek = 0; - flags &= ~DTF_REWIND; } dirp->dd_loc = 0; @@ -310,6 +309,8 @@ __opendir_common(int fd, const char *nam fail: saved_errno = errno; + if (fd2 != -1) + _close(fd2); free(dirp); errno = saved_errno; return (NULL); Modified: user/adrian/net80211_tx/lib/libelf/elf_update.c ============================================================================== --- user/adrian/net80211_tx/lib/libelf/elf_update.c Mon Feb 25 22:45:02 2013 (r247287) +++ user/adrian/net80211_tx/lib/libelf/elf_update.c Mon Feb 25 22:51:49 2013 (r247288) @@ -41,89 +41,79 @@ __FBSDID("$FreeBSD$"); #include "_libelf.h" /* - * Update the internal data structures associated with an ELF object. - * Returns the size in bytes the ELF object would occupy in its file - * representation. + * Layout strategy: * - * After a successful call to this function, the following structures - * are updated: + * - Case 1: ELF_F_LAYOUT is asserted + * In this case the application has full control over where the + * section header table, program header table, and section data + * will reside. The library only perform error checks. * - * - The ELF header is updated. - * - All sections are sorted in order of ascending addresses and their - * section header table entries updated. An error is signalled - * if an overlap was detected among sections. - * - All data descriptors associated with a section are sorted in order - * of ascending addresses. Overlaps, if detected, are signalled as - * errors. Other sanity checks for alignments, section types etc. are - * made. + * - Case 2: ELF_F_LAYOUT is not asserted * - * After a resync_elf() successfully returns, the ELF descriptor is - * ready for being handed over to _libelf_write_elf(). + * The library will do the object layout using the following + * ordering: + * - The executable header is placed first, are required by the + * ELF specification. + * - The program header table is placed immediately following the + * executable header. + * - Section data, if any, is placed after the program header + * table, aligned appropriately. + * - The section header table, if needed, is placed last. * - * File alignments: - * PHDR - Addr - * SHDR - Addr + * There are two sub-cases to be taken care of: * - * XXX: how do we handle 'flags'. + * - Case 2a: e->e_cmd == ELF_C_READ or ELF_C_RDWR + * + * In this sub-case, the underlying ELF object may already have + * content in it, which the application may have modified. The + * library will retrieve content from the existing object as + * needed. + * + * - Case 2b: e->e_cmd == ELF_C_WRITE + * + * The ELF object is being created afresh in this sub-case; + * there is no pre-existing content in the underlying ELF + * object. */ /* * Compute the extents of a section, by looking at the data - * descriptors associated with it. The function returns zero if an - * error was detected. `*rc' holds the maximum file extent seen so - * far. + * descriptors associated with it. The function returns 1 if + * successful, or zero if an error was detected. */ static int -_libelf_compute_section_extents(Elf *e, Elf_Scn *s, off_t *rc) +_libelf_compute_section_extents(Elf *e, Elf_Scn *s, off_t rc) { int ec; - Elf_Data *d, *td; + size_t fsz, msz; + Elf_Data *d; + Elf32_Shdr *shdr32; + Elf64_Shdr *shdr64; unsigned int elftype; uint32_t sh_type; uint64_t d_align; uint64_t sh_align, sh_entsize, sh_offset, sh_size; uint64_t scn_size, scn_alignment; - /* - * We need to recompute library private data structures if one - * or more of the following is true: - * - The underlying Shdr structure has been marked `dirty'. Significant - * fields include: `sh_offset', `sh_type', `sh_size', `sh_addralign'. - * - The Elf_Data structures part of this section have been marked - * `dirty'. Affected members include `d_align', `d_offset', `d_type', - * and `d_size'. - * - The section as a whole is `dirty', e.g., it has been allocated - * using elf_newscn(), or if a new Elf_Data structure was added using - * elf_newdata(). - * - * Each of these conditions would result in the ELF_F_DIRTY bit being - * set on the section descriptor's `s_flags' field. - */ - ec = e->e_class; + shdr32 = &s->s_shdr.s_shdr32; + shdr64 = &s->s_shdr.s_shdr64; if (ec == ELFCLASS32) { - sh_type = s->s_shdr.s_shdr32.sh_type; - sh_align = (uint64_t) s->s_shdr.s_shdr32.sh_addralign; - sh_entsize = (uint64_t) s->s_shdr.s_shdr32.sh_entsize; - sh_offset = (uint64_t) s->s_shdr.s_shdr32.sh_offset; - sh_size = (uint64_t) s->s_shdr.s_shdr32.sh_size; + sh_type = shdr32->sh_type; + sh_align = (uint64_t) shdr32->sh_addralign; + sh_entsize = (uint64_t) shdr32->sh_entsize; + sh_offset = (uint64_t) shdr32->sh_offset; + sh_size = (uint64_t) shdr32->sh_size; } else { - sh_type = s->s_shdr.s_shdr64.sh_type; - sh_align = s->s_shdr.s_shdr64.sh_addralign; - sh_entsize = s->s_shdr.s_shdr64.sh_entsize; - sh_offset = s->s_shdr.s_shdr64.sh_offset; - sh_size = s->s_shdr.s_shdr64.sh_size; + sh_type = shdr64->sh_type; + sh_align = shdr64->sh_addralign; + sh_entsize = shdr64->sh_entsize; + sh_offset = shdr64->sh_offset; + sh_size = shdr64->sh_size; } - if (sh_type == SHT_NULL || sh_type == SHT_NOBITS) - return (1); - - if ((s->s_flags & ELF_F_DIRTY) == 0) { - if ((size_t) *rc < sh_offset + sh_size) - *rc = sh_offset + sh_size; - return (1); - } + assert(sh_type != SHT_NULL && sh_type != SHT_NOBITS); elftype = _libelf_xlate_shtype(sh_type); if (elftype > ELF_T_LAST) { @@ -131,15 +121,52 @@ _libelf_compute_section_extents(Elf *e, return (0); } - /* - * Compute the extent of the data descriptors associated with - * this section. - */ - scn_alignment = 0; if (sh_align == 0) sh_align = _libelf_falign(elftype, ec); - /* Compute the section alignment. */ + /* + * Check the section's data buffers for sanity and compute the + * section's alignment. + * Compute the section's size and alignment using the data + * descriptors associated with the section. + */ + if (STAILQ_EMPTY(&s->s_data)) { + /* *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 00:18:50 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id C67B9B17; Tue, 26 Feb 2013 00:18:50 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id B7B97EC; Tue, 26 Feb 2013 00:18:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1Q0IoVk080358; Tue, 26 Feb 2013 00:18:50 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1Q0Io8o080357; Tue, 26 Feb 2013 00:18:50 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201302260018.r1Q0Io8o080357@svn.freebsd.org> From: Alan Cox Date: Tue, 26 Feb 2013 00:18:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247290 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 00:18:50 -0000 Author: alc Date: Tue Feb 26 00:18:50 2013 New Revision: 247290 URL: http://svnweb.freebsd.org/changeset/base/247290 Log: Revise the comment describing uma_zone_reserve_kva(). Sponsored by: EMC / Isilon Storage Division Reviewed by: attilio Modified: user/attilio/vmc-playground/sys/vm/uma.h Modified: user/attilio/vmc-playground/sys/vm/uma.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma.h Tue Feb 26 00:10:28 2013 (r247289) +++ user/attilio/vmc-playground/sys/vm/uma.h Tue Feb 26 00:18:50 2013 (r247290) @@ -432,19 +432,21 @@ void uma_reclaim(void); void uma_set_align(int align); /* - * Switches the backing object of a zone to VM_ALLOC_NOOBJ. + * Reserves the maximum KVA space required by the zone and configures the zone + * to use a VM_ALLOC_NOOBJ-based backend allocator. * * Arguments: * zone The zone to update. - * nitems The number of items previewed to be allocated. + * nitems The upper limit on the number of items that can be allocated. * * Returns: - * 0 if kva space can not be allocated + * 0 if KVA space can not be allocated * 1 if successful * * Discussion: - * The size will limit the amount of memory allocated to this zone. - * + * When the machine supports a direct map and the zone's items are smaller + * than a page, the zone will use the direct map instead of allocating KVA + * space. */ int uma_zone_reserve_kva(uma_zone_t zone, int nitems); From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 00:34:53 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id A233FE63; Tue, 26 Feb 2013 00:34:53 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7284615C; Tue, 26 Feb 2013 00:34:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1Q0YrYK085940; Tue, 26 Feb 2013 00:34:53 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1Q0Yqlq085939; Tue, 26 Feb 2013 00:34:52 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302260034.r1Q0Yqlq085939@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 00:34:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247292 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 00:34:53 -0000 Author: attilio Date: Tue Feb 26 00:34:52 2013 New Revision: 247292 URL: http://svnweb.freebsd.org/changeset/base/247292 Log: Revert wrongly added asserts: lookup and remove from the collection of cached pages doesn't require the object lock to be held. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmc-playground/sys/vm/vm_page.c Modified: user/attilio/vmc-playground/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_page.c Tue Feb 26 00:27:27 2013 (r247291) +++ user/attilio/vmc-playground/sys/vm/vm_page.c Tue Feb 26 00:34:52 2013 (r247292) @@ -1006,8 +1006,6 @@ vm_page_rename(vm_page_t m, vm_object_t * infinity. If the given object is backed by a vnode and it * transitions from having one or more cached pages to none, the * vnode's hold count is reduced. - * - * The object must be locked. */ void vm_page_cache_free(vm_object_t object, vm_pindex_t start, vm_pindex_t end) @@ -1015,8 +1013,6 @@ vm_page_cache_free(vm_object_t object, v vm_page_t m; boolean_t empty; - VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - mtx_lock(&vm_page_queue_free_mtx); if (vm_object_cache_is_empty(object)) { mtx_unlock(&vm_page_queue_free_mtx); @@ -1045,13 +1041,12 @@ vm_page_cache_free(vm_object_t object, v * Returns the cached page that is associated with the given * object and offset. If, however, none exists, returns NULL. * - * The free page queue and object must be locked. + * The free page queue must be locked. */ static inline vm_page_t vm_page_cache_lookup(vm_object_t object, vm_pindex_t pindex) { - VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); return (vm_radix_lookup(&object->cache, pindex)); } @@ -1083,7 +1078,7 @@ vm_page_cache_remove(vm_page_t m) * empty. Offset 'offidxstart' in the original object must * correspond to offset zero in the new object. * - * The new object and original object must be locked. + * The new object must be locked. */ void vm_page_cache_transfer(vm_object_t orig_object, vm_pindex_t offidxstart, @@ -1097,7 +1092,6 @@ vm_page_cache_transfer(vm_object_t orig_ * not. */ VM_OBJECT_LOCK_ASSERT(new_object, MA_OWNED); - VM_OBJECT_LOCK_ASSERT(orig_object, MA_OWNED); KASSERT(vm_object_cache_is_empty(new_object), ("vm_page_cache_transfer: object %p has cached pages", new_object)); From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 01:05:28 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 7E7E6AD4; Tue, 26 Feb 2013 01:05:28 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6138126D; Tue, 26 Feb 2013 01:05:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1Q15S7M095511; Tue, 26 Feb 2013 01:05:28 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1Q15QJM095496; Tue, 26 Feb 2013 01:05:26 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302260105.r1Q15QJM095496@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 01:05:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247298 - in user/attilio/vmobj-rwlock: . bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys con... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 01:05:28 -0000 Author: attilio Date: Tue Feb 26 01:05:25 2013 New Revision: 247298 URL: http://svnweb.freebsd.org/changeset/base/247298 Log: MFC Added: user/attilio/vmobj-rwlock/contrib/expat/FREEBSD-Xlist - copied unchanged from r247297, head/contrib/expat/FREEBSD-Xlist user/attilio/vmobj-rwlock/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu - copied unchanged from r247297, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/media.hlp - copied unchanged from r247297, head/usr.sbin/bsdconfig/include/media.hlp user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/network_device.hlp - copied unchanged from r247297, head/usr.sbin/bsdconfig/include/network_device.hlp user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/options.hlp - copied unchanged from r247297, head/usr.sbin/bsdconfig/include/options.hlp user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/tcp.hlp - copied unchanged from r247297, head/usr.sbin/bsdconfig/include/tcp.hlp user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/device.subr - copied unchanged from r247297, head/usr.sbin/bsdconfig/share/device.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/media/ - copied from r247297, head/usr.sbin/bsdconfig/share/media/ user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/struct.subr - copied unchanged from r247297, head/usr.sbin/bsdconfig/share/struct.subr Deleted: user/attilio/vmobj-rwlock/contrib/expat/FREEBSD-upgrade user/attilio/vmobj-rwlock/contrib/expat/configure user/attilio/vmobj-rwlock/contrib/expat/doc/valid-xhtml10.png user/attilio/vmobj-rwlock/contrib/expat/lib/winconfig.h user/attilio/vmobj-rwlock/contrib/expat/tests/benchmark/benchmark.dsp user/attilio/vmobj-rwlock/contrib/expat/tests/benchmark/benchmark.dsw user/attilio/vmobj-rwlock/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/include/tcp.hlp Modified: user/attilio/vmobj-rwlock/Makefile.inc1 user/attilio/vmobj-rwlock/bin/test/test.1 user/attilio/vmobj-rwlock/bin/test/test.c user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/translate.c user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/attilio/vmobj-rwlock/contrib/expat/Changes (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/MANIFEST (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/Makefile.in (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/README (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/configure.in (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/doc/reference.html (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/doc/xmlwf.sgml (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/expat_config.h.in (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/expat.h (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmlparse.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmlrole.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmltok.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmltok_impl.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/tests/README.txt (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/tests/minicheck.h user/attilio/vmobj-rwlock/contrib/expat/tests/runtests.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/tests/xmltest.sh (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/readfilemap.c (contents, props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlwf.c (contents, props changed) user/attilio/vmobj-rwlock/etc/rc.d/rtadvd user/attilio/vmobj-rwlock/lib/libc/gen/opendir.c user/attilio/vmobj-rwlock/lib/libexpat/expat_config.h user/attilio/vmobj-rwlock/lib/libexpat/libbsdxml.3 user/attilio/vmobj-rwlock/sbin/fsck_ffs/fsutil.c user/attilio/vmobj-rwlock/sbin/fsdb/fsdbutil.c user/attilio/vmobj-rwlock/sbin/hastctl/hastctl.c user/attilio/vmobj-rwlock/sbin/hastd/control.c user/attilio/vmobj-rwlock/sbin/hastd/hast.h user/attilio/vmobj-rwlock/sbin/hastd/primary.c user/attilio/vmobj-rwlock/sbin/hastd/secondary.c user/attilio/vmobj-rwlock/sys/arm/ti/ti_gpio.c user/attilio/vmobj-rwlock/sys/boot/common/bootstrap.h user/attilio/vmobj-rwlock/sys/boot/common/module.c user/attilio/vmobj-rwlock/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/time.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/attilio/vmobj-rwlock/sys/conf/files user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.h user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5210/ar5210.h user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5211/ar5211.h user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5212/ar5212.h user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5416/ar5416.h user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/attilio/vmobj-rwlock/sys/dev/ath/if_ath.c user/attilio/vmobj-rwlock/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmobj-rwlock/sys/dev/ath/if_athvar.h user/attilio/vmobj-rwlock/sys/dev/ciss/ciss.c user/attilio/vmobj-rwlock/sys/dev/cxgbe/adapter.h user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/common.h user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_msg.h user/attilio/vmobj-rwlock/sys/dev/cxgbe/firmware/t4fw_interface.h user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_main.c user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_sge.c user/attilio/vmobj-rwlock/sys/dev/isp/isp.c user/attilio/vmobj-rwlock/sys/dev/mxge/if_mxge.c user/attilio/vmobj-rwlock/sys/dev/sym/sym_hipd.c user/attilio/vmobj-rwlock/sys/dev/usb/usb_pf.c user/attilio/vmobj-rwlock/sys/dev/usb/usbdevs user/attilio/vmobj-rwlock/sys/ia64/ia64/pmap.c user/attilio/vmobj-rwlock/sys/ia64/include/vmparam.h user/attilio/vmobj-rwlock/sys/kern/kern_descrip.c user/attilio/vmobj-rwlock/sys/modules/cxgbe/firmware/Makefile user/attilio/vmobj-rwlock/tools/regression/bin/test/regress.sh user/attilio/vmobj-rwlock/usr.bin/systat/systat.1 user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_emul.h user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/Makefile user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/include/messages.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/devices user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/include/Makefile user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/common.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/device.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/hostname.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/ipaddr.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/netmask.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/resolv.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/networking/share/routing.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/Makefile user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/common.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/script.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/strings.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/share/variable.subr user/attilio/vmobj-rwlock/usr.sbin/bsdconfig/startup/rcvar user/attilio/vmobj-rwlock/usr.sbin/rtadvd/rtadvd.8 user/attilio/vmobj-rwlock/usr.sbin/rtadvd/rtadvd.c Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-rwlock/contrib/expat/ (props changed) user/attilio/vmobj-rwlock/contrib/expat/COPYING (props changed) user/attilio/vmobj-rwlock/contrib/expat/doc/style.css (props changed) user/attilio/vmobj-rwlock/contrib/expat/doc/xmlwf.1 (props changed) user/attilio/vmobj-rwlock/contrib/expat/examples/elements.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/examples/outline.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/ascii.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/asciitab.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/iasciitab.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/internal.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/latin1tab.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/nametab.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/utf8tab.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmlrole.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmltok.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmltok_impl.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/lib/xmltok_ns.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/tests/chardata.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/tests/chardata.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/codepage.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/codepage.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/ct.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/filemap.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/unixfilemap.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/win32filemap.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlfile.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlfile.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlmime.c (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlmime.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmltchar.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlurl.h (props changed) user/attilio/vmobj-rwlock/contrib/expat/xmlwf/xmlwin32url.cxx (props changed) user/attilio/vmobj-rwlock/lib/libc/ (props changed) user/attilio/vmobj-rwlock/sbin/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) user/attilio/vmobj-rwlock/sys/boot/ (props changed) user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-rwlock/sys/conf/ (props changed) user/attilio/vmobj-rwlock/usr.sbin/bhyve/ (props changed) user/attilio/vmobj-rwlock/usr.sbin/rtadvd/ (props changed) Modified: user/attilio/vmobj-rwlock/Makefile.inc1 ============================================================================== --- user/attilio/vmobj-rwlock/Makefile.inc1 Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/Makefile.inc1 Tue Feb 26 01:05:25 2013 (r247298) @@ -1132,7 +1132,8 @@ _lex= usr.bin/lex .endif .if ${BOOTSTRAPPING} < 1000013 -_yacc= usr.bin/yacc +_yacc= lib/liby \ + usr.bin/yacc .endif .if ${BOOTSTRAPPING} < 1000026 Modified: user/attilio/vmobj-rwlock/bin/test/test.1 ============================================================================== --- user/attilio/vmobj-rwlock/bin/test/test.1 Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/bin/test/test.1 Tue Feb 26 01:05:25 2013 (r247298) @@ -169,15 +169,65 @@ True if .Ar file exists and is a socket. .It Ar file1 Fl nt Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and +.Ar file1 +is newer than +.Ar file2 . +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2 +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is newer than +has a more recent last access time +.Pq Ar X Ns = Ns Cm a , +inode creation time +.Pq Ar X Ns = Ns Cm b , +change time +.Pq Ar X Ns = Ns Cm c , +or modification time +.Pq Ar X Ns = Ns Cm m +than the last access time +.Pq Ar Y Ns = Ns Cm a , +inode creation time +.Pq Ar Y Ns = Ns Cm b , +change time +.Pq Ar Y Ns = Ns Cm c , +or modification time +.Pq Ar Y Ns = Ns Cm m +of .Ar file2 . +Note that +.Ic -ntmm +is equivalent to +.Ic -nt . .It Ar file1 Fl ot Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is older than +is older than .Ar file2 . +Note that +.Ar file1 +.Ic -ot +.Ar file2 +is equivalent to +.Ar file2 +.Ic -nt +.Ar file1 +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2 +Equivalent to +.Ar file2 +.Ic -nt Ns Ar Y Ns Ar X +.Ar file1 . .It Ar file1 Fl ef Ar file2 True if .Ar file1 Modified: user/attilio/vmobj-rwlock/bin/test/test.c ============================================================================== --- user/attilio/vmobj-rwlock/bin/test/test.c Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/bin/test/test.c Tue Feb 26 01:05:25 2013 (r247298) @@ -63,7 +63,7 @@ error(const char *msg, ...) "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| - "-nt"|"-ot"|"-ef"; + "-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef"; operand ::= */ @@ -85,8 +85,38 @@ enum token { FILSUID, FILSGID, FILSTCK, - FILNT, - FILOT, + FILNTAA, + FILNTAB, + FILNTAC, + FILNTAM, + FILNTBA, + FILNTBB, + FILNTBC, + FILNTBM, + FILNTCA, + FILNTCB, + FILNTCC, + FILNTCM, + FILNTMA, + FILNTMB, + FILNTMC, + FILNTMM, + FILOTAA, + FILOTAB, + FILOTAC, + FILOTAM, + FILOTBA, + FILOTBB, + FILOTBC, + FILOTBM, + FILOTCA, + FILOTCB, + FILOTCC, + FILOTCM, + FILOTMA, + FILOTMB, + FILOTMC, + FILOTMM, FILEQ, FILUID, FILGID, @@ -118,9 +148,16 @@ enum token_types { PAREN }; +enum time_types { + ATIME, + BTIME, + CTIME, + MTIME +}; + static struct t_op { - char op_text[4]; - short op_num, op_type; + char op_text[6]; + char op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, {"-w", FILWR, UNOP}, @@ -154,8 +191,40 @@ static struct t_op { {"-gt", INTGT, BINOP}, {"-le", INTLE, BINOP}, {"-lt", INTLT, BINOP}, - {"-nt", FILNT, BINOP}, - {"-ot", FILOT, BINOP}, + {"-nt", FILNTMM, BINOP}, + {"-ntaa", FILNTAA, BINOP}, + {"-ntab", FILNTAB, BINOP}, + {"-ntac", FILNTAC, BINOP}, + {"-ntam", FILNTAM, BINOP}, + {"-ntba", FILNTBA, BINOP}, + {"-ntbb", FILNTBB, BINOP}, + {"-ntbc", FILNTBC, BINOP}, + {"-ntbm", FILNTBM, BINOP}, + {"-ntca", FILNTCA, BINOP}, + {"-ntcb", FILNTCB, BINOP}, + {"-ntcc", FILNTCC, BINOP}, + {"-ntcm", FILNTCM, BINOP}, + {"-ntma", FILNTMA, BINOP}, + {"-ntmb", FILNTMB, BINOP}, + {"-ntmc", FILNTMC, BINOP}, + {"-ntmm", FILNTMM, BINOP}, + {"-ot", FILOTMM, BINOP}, + {"-otaa", FILOTAA, BINOP}, + {"-otab", FILOTBB, BINOP}, + {"-otac", FILOTAC, BINOP}, + {"-otam", FILOTAM, BINOP}, + {"-otba", FILOTBA, BINOP}, + {"-otbb", FILOTBB, BINOP}, + {"-otbc", FILOTBC, BINOP}, + {"-otbm", FILOTBM, BINOP}, + {"-otca", FILOTCA, BINOP}, + {"-otcb", FILOTCB, BINOP}, + {"-otcc", FILOTCC, BINOP}, + {"-otcm", FILOTCM, BINOP}, + {"-otma", FILOTMA, BINOP}, + {"-otmb", FILOTMB, BINOP}, + {"-otmc", FILOTMC, BINOP}, + {"-otmm", FILOTMM, BINOP}, {"-ef", FILEQ, BINOP}, {"!", UNOT, BUNOP}, {"-a", BAND, BBINOP}, @@ -180,10 +249,10 @@ static int intcmp(const char *, const ch static int isunopoperand(void); static int islparenoperand(void); static int isrparenoperand(void); -static int newerf(const char *, const char *); +static int newerf(const char *, const char *, enum time_types, + enum time_types); static int nexpr(enum token); static int oexpr(enum token); -static int olderf(const char *, const char *); static int primary(enum token); static void syntax(const char *, const char *); static enum token t_lex(char *); @@ -353,10 +422,70 @@ binop(void) return intcmp(opnd1, opnd2) <= 0; case INTLT: return intcmp(opnd1, opnd2) < 0; - case FILNT: - return newerf (opnd1, opnd2); - case FILOT: - return olderf (opnd1, opnd2); + case FILNTAA: + return newerf(opnd1, opnd2, ATIME, ATIME); + case FILNTAB: + return newerf(opnd1, opnd2, ATIME, BTIME); + case FILNTAC: + return newerf(opnd1, opnd2, ATIME, CTIME); + case FILNTAM: + return newerf(opnd1, opnd2, ATIME, MTIME); + case FILNTBA: + return newerf(opnd1, opnd2, BTIME, ATIME); + case FILNTBB: + return newerf(opnd1, opnd2, BTIME, BTIME); + case FILNTBC: + return newerf(opnd1, opnd2, BTIME, CTIME); + case FILNTBM: + return newerf(opnd1, opnd2, BTIME, MTIME); + case FILNTCA: + return newerf(opnd1, opnd2, CTIME, ATIME); + case FILNTCB: + return newerf(opnd1, opnd2, CTIME, BTIME); + case FILNTCC: + return newerf(opnd1, opnd2, CTIME, CTIME); + case FILNTCM: + return newerf(opnd1, opnd2, CTIME, MTIME); + case FILNTMA: + return newerf(opnd1, opnd2, MTIME, ATIME); + case FILNTMB: + return newerf(opnd1, opnd2, MTIME, BTIME); + case FILNTMC: + return newerf(opnd1, opnd2, MTIME, CTIME); + case FILNTMM: + return newerf(opnd1, opnd2, MTIME, MTIME); + case FILOTAA: + return newerf(opnd2, opnd1, ATIME, ATIME); + case FILOTAB: + return newerf(opnd2, opnd1, BTIME, ATIME); + case FILOTAC: + return newerf(opnd2, opnd1, CTIME, ATIME); + case FILOTAM: + return newerf(opnd2, opnd1, MTIME, ATIME); + case FILOTBA: + return newerf(opnd2, opnd1, ATIME, BTIME); + case FILOTBB: + return newerf(opnd2, opnd1, BTIME, BTIME); + case FILOTBC: + return newerf(opnd2, opnd1, CTIME, BTIME); + case FILOTBM: + return newerf(opnd2, opnd1, MTIME, BTIME); + case FILOTCA: + return newerf(opnd2, opnd1, ATIME, CTIME); + case FILOTCB: + return newerf(opnd2, opnd1, BTIME, CTIME); + case FILOTCC: + return newerf(opnd2, opnd1, CTIME, CTIME); + case FILOTCM: + return newerf(opnd2, opnd1, MTIME, CTIME); + case FILOTMA: + return newerf(opnd2, opnd1, ATIME, MTIME); + case FILOTMB: + return newerf(opnd2, opnd1, BTIME, MTIME); + case FILOTMC: + return newerf(opnd2, opnd1, CTIME, MTIME); + case FILOTMM: + return newerf(opnd2, opnd1, MTIME, MTIME); case FILEQ: return equalf (opnd1, opnd2); default: @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2) } static int -newerf (const char *f1, const char *f2) +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2) { struct stat b1, b2; + struct timespec *ts1, *ts2; if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0; - if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) + switch (t1) { + case ATIME: ts1 = &b1.st_atim; break; + case BTIME: ts1 = &b1.st_birthtim; break; + case CTIME: ts1 = &b1.st_ctim; break; + default: ts1 = &b1.st_mtim; break; + } + + switch (t2) { + case ATIME: ts2 = &b2.st_atim; break; + case BTIME: ts2 = &b2.st_birthtim; break; + case CTIME: ts2 = &b2.st_ctim; break; + default: ts2 = &b2.st_mtim; break; + } + + if (ts1->tv_sec > ts2->tv_sec) return 1; - if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) + if (ts1->tv_sec < ts2->tv_sec) return 0; - return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec); -} - -static int -olderf (const char *f1, const char *f2) -{ - return (newerf(f2, f1)); + return (ts1->tv_nsec > ts2->tv_nsec); } static int Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/translate.c ============================================================================== --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 01:05:25 2013 (r247298) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #include @@ -455,6 +456,20 @@ translate_device(const char *pool, const &record->zi_guid) == 0); } + /* + * Device faults can take on three different forms: + * 1). delayed or hanging I/O + * 2). zfs label faults + * 3). generic disk faults + */ + if (record->zi_timer != 0) { + record->zi_cmd = ZINJECT_DELAY_IO; + } else if (label_type != TYPE_INVAL) { + record->zi_cmd = ZINJECT_LABEL_FAULT; + } else { + record->zi_cmd = ZINJECT_DEVICE_FAULT; + } + switch (label_type) { case TYPE_LABEL_UBERBLOCK: record->zi_start = offsetof(vdev_label_t, vl_uberblock[0]); Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 01:05:25 2013 (r247298) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* @@ -603,7 +604,7 @@ main(int argc, char **argv) } while ((c = getopt(argc, argv, - ":aA:b:d:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { + ":aA:b:d:D:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { switch (c) { case 'a': flags |= ZINJECT_FLUSH_ARC; @@ -629,6 +630,15 @@ main(int argc, char **argv) case 'd': device = optarg; break; + case 'D': + record.zi_timer = strtoull(optarg, &end, 10); + if (errno != 0 || *end != '\0') { + (void) fprintf(stderr, "invalid i/o delay " + "value: '%s'\n", optarg); + usage(); + return (1); + } + break; case 'e': if (strcasecmp(optarg, "io") == 0) { error = EIO; @@ -693,6 +703,7 @@ main(int argc, char **argv) case 'p': (void) strlcpy(record.zi_func, optarg, sizeof (record.zi_func)); + record.zi_cmd = ZINJECT_PANIC; break; case 'q': quiet = 1; @@ -766,13 +777,15 @@ main(int argc, char **argv) argc -= optind; argv += optind; + if (record.zi_duration != 0) + record.zi_cmd = ZINJECT_IGNORED_WRITES; + if (cancel != NULL) { /* * '-c' is invalid with any other options. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "cancel (-c) incompatible with " "any other options\n"); usage(); @@ -804,8 +817,7 @@ main(int argc, char **argv) * for doing injection, so handle it separately here. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "device (-d) incompatible with " "data error injection\n"); usage(); @@ -839,7 +851,7 @@ main(int argc, char **argv) } else if (raw != NULL) { if (range != NULL || type != TYPE_INVAL || level != 0 || - record.zi_func[0] != '\0' || record.zi_duration != 0) { + record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "raw (-b) format with " "any other options\n"); usage(); @@ -862,13 +874,14 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_raw(raw, &record) != 0) return (1); if (!error) error = EIO; - } else if (record.zi_func[0] != '\0') { + } else if (record.zi_cmd == ZINJECT_PANIC) { if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || device != NULL || record.zi_duration != 0) { + level != 0 || device != NULL) { (void) fprintf(stderr, "panic (-p) incompatible with " "other options\n"); usage(); @@ -886,7 +899,7 @@ main(int argc, char **argv) if (argv[1] != NULL) record.zi_type = atoi(argv[1]); dataset[0] = '\0'; - } else if (record.zi_duration != 0) { + } else if (record.zi_cmd == ZINJECT_IGNORED_WRITES) { if (nowrites == 0) { (void) fprintf(stderr, "-s or -g meaningless " "without -I (ignore writes)\n"); @@ -940,6 +953,7 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_record(type, argv[0], range, level, &record, pool, dataset) != 0) return (1); Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 01:05:25 2013 (r247298) @@ -45,6 +45,9 @@ int aok; uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; +#ifdef illumos +kmutex_t cpu_lock; +#endif struct utsname utsname = { "userland", "libzpool", "1", "1", "na" @@ -842,6 +845,28 @@ ddi_strtoull(const char *str, char **npt return (0); } +#ifdef illumos +/* ARGSUSED */ +cyclic_id_t +cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when) +{ + return (1); +} + +/* ARGSUSED */ +void +cyclic_remove(cyclic_id_t id) +{ +} + +/* ARGSUSED */ +int +cyclic_reprogram(cyclic_id_t id, hrtime_t expiration) +{ + return (1); +} +#endif + /* * ========================================================================= * kernel emulation setup & teardown @@ -875,6 +900,10 @@ kernel_init(int mode) system_taskq_init(); +#ifdef illumos + mutex_init(&cpu_lock, NULL, MUTEX_DEFAULT, NULL); +#endif + spa_init(mode); } Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 01:05:25 2013 (r247298) @@ -457,6 +457,9 @@ extern vnode_t *rootdir; extern void delay(clock_t ticks); +#define SEC_TO_TICK(sec) ((sec) * hz) +#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) + #define gethrestime_sec() time(NULL) #define gethrestime(t) \ do {\ @@ -624,6 +627,36 @@ typedef uint32_t idmap_rid_t; #define ERESTART (-1) #endif +#ifdef illumos +/* + * Cyclic information + */ +extern kmutex_t cpu_lock; + +typedef uintptr_t cyclic_id_t; +typedef uint16_t cyc_level_t; +typedef void (*cyc_func_t)(void *); + +#define CY_LOW_LEVEL 0 +#define CY_INFINITY INT64_MAX +#define CYCLIC_NONE ((cyclic_id_t)0) + +typedef struct cyc_time { + hrtime_t cyt_when; + hrtime_t cyt_interval; +} cyc_time_t; + +typedef struct cyc_handler { + cyc_func_t cyh_func; + void *cyh_arg; + cyc_level_t cyh_level; +} cyc_handler_t; + +extern cyclic_id_t cyclic_add(cyc_handler_t *, cyc_time_t *); +extern void cyclic_remove(cyclic_id_t); +extern int cyclic_reprogram(cyclic_id_t, hrtime_t); +#endif /* illumos */ + #ifdef __cplusplus } #endif Modified: user/attilio/vmobj-rwlock/contrib/expat/Changes ============================================================================== --- user/attilio/vmobj-rwlock/contrib/expat/Changes Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/contrib/expat/Changes Tue Feb 26 01:05:25 2013 (r247298) @@ -1,5 +1,41 @@ +Release 2.1.0 Sat March 24 2012 + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Unitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + #3496608: CVE-2012-0876 - Hash DOS attack. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an intial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, 1515600: The character data handler's calling + - Fixed bugs #1515266, #1515600: The character data handler's calling of XML_StopParser() was not handled properly; if the parser was stopped and the handler set to NULL, the parser would segfault. - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed @@ -8,7 +44,7 @@ Release 2.0.1 Tue June 5 2007 - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, 1548182, 1602769, 1717322. + bugs #1409451, #1476160, #1548182, #1602769, #1717322. - Build fixes for various platforms: HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. All Unix: #1554618 (refreshed config.sub/config.guess). @@ -30,8 +66,8 @@ Release 2.0.0 Wed Jan 11 2006 byte indexes and line/column numbers. - Updated to use libtool 1.5.22 (the most recent). - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: 1006708, - 1021776, 1023646, 1114960, 1156398, 1221160, 1271642. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. Release 1.95.8 Fri Jul 23 2004 - Major new feature: suspend/resume. Handlers can now request @@ -40,8 +76,8 @@ Release 1.95.8 Fri Jul 23 2004 documentation for more details. - Some mostly minor bug fixes, but compilation should no longer generate warnings on most platforms. SF issues - include: 827319, 840173, 846309, 888329, 896188, 923913, - 928113, 961698, 985192. + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. Release 1.95.7 Mon Oct 20 2003 - Fixed enum XML_Status issue (reported on SourceForge many @@ -54,19 +90,19 @@ Release 1.95.7 Mon Oct 20 2003 - Improved ability to build without the configure-generated expat_config.h header. This is useful for applications which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues 458907, 609603, - 676844, 679754, 692878, 692964, 695401, 699323, 699487, - 820946. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. - Improved hash table lookups. - Added more regression tests and improved documentation. Release 1.95.6 Tue Jan 28 2003 - Added XML_FreeContentModel(). - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues 615606, 616863, - 618199, 653180, 673791. + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. - Enhanced the regression test suite. - - Man page improvements: includes SF issue 632146. + - Man page improvements: includes SF issue #632146. Release 1.95.5 Fri Sep 6 2002 - Added XML_UseForeignDTD() for improved SAX2 support. @@ -84,9 +120,9 @@ Release 1.95.5 Fri Sep 6 2002 - Reduced line-length for all source code and headers to be no longer than 80 characters, to help with AS/400 support. - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues 580793, 434664, - 483514, 580503, 581069, 584041, 584183, 584832, 585537, - 596555, 596678, 598352, 598944, 599715, 600479, 600971. + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. Release 1.95.4 Fri Jul 12 2002 - Added support for VMS, contributed by Craig Berry. See @@ -95,14 +131,14 @@ Release 1.95.4 Fri Jul 12 2002 contributed by Thomas Wegner and Daryle Walker. - Added Borland C++ Builder 5 / BCC 5.5 support, contributed by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues 441449, 563184, - 564342, 566334, 566901, 569461, 570263, 575168, 579196. + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. - Made skippedEntityHandler conform to SAX2 (see source comment) - Re-implemented WFC: Entity Declared from XML 1.0 spec and added a new error "entity declared in parameter entity": - see SF bug report 569461 and SF patch 578161 + see SF bug report #569461 and SF patch #578161 - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report 570263 and SF patch 578161 + see SF bug report #570263 and SF patch #578161 Release 1.95.3 Mon Jun 3 2002 - Added a project to the MSVC workspace to create a wchar_t @@ -114,9 +150,9 @@ Release 1.95.3 Mon Jun 3 2002 - Made the XML_UNICODE builds usable (thanks, Karl!). - Allow xmlwf to read from standard input. - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports 231864, 461380, 464837, - 466885, 469226, 477667, 484419, 487840, 494749, 496505, - 547350. Other bugs which we can't test as easily may also + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also have been fixed, especially in the area of build support. Release 1.95.2 Fri Jul 27 2001 Copied: user/attilio/vmobj-rwlock/contrib/expat/FREEBSD-Xlist (from r247297, head/contrib/expat/FREEBSD-Xlist) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-rwlock/contrib/expat/FREEBSD-Xlist Tue Feb 26 01:05:25 2013 (r247298, copy of r247297, head/contrib/expat/FREEBSD-Xlist) @@ -0,0 +1,19 @@ +# $FreeBSD$ +*.MPW +*.cmake +*.def +*.dsp +*.dsw +*.m4 +*.pc.in +*config.h +CMake* +Configure* +amiga +bcb5 +configure +conftools +doc/valid-xhtml10.png +m4 +vms +win32 Modified: user/attilio/vmobj-rwlock/contrib/expat/MANIFEST ============================================================================== --- user/attilio/vmobj-rwlock/contrib/expat/MANIFEST Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/contrib/expat/MANIFEST Tue Feb 26 01:05:25 2013 (r247298) @@ -1,5 +1,8 @@ -amiga/stdlib.c amiga/launch.c +amiga/expat_68k.c +amiga/expat_68k.h +amiga/expat_68k_handler_stubs.c +amiga/expat_base.h amiga/expat_vectors.c amiga/expat_lib.c amiga/expat.xml @@ -42,25 +45,35 @@ doc/style.css doc/valid-xhtml10.png doc/xmlwf.1 doc/xmlwf.sgml +CMakeLists.txt +CMake.README COPYING Changes +ConfigureChecks.cmake MANIFEST Makefile.in README configure configure.in expat_config.h.in +expat_config.h.cmake +expat.pc.in expat.dsw +aclocal.m4 conftools/PrintPath conftools/ac_c_bigendian_cross.m4 -conftools/config.guess -conftools/config.sub conftools/expat.m4 conftools/get-version.sh +conftools/mkinstalldirs +conftools/config.guess +conftools/config.sub conftools/install-sh -conftools/libtool.m4 conftools/ltmain.sh -conftools/mkinstalldirs +m4/libtool.m4 +m4/ltversion.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/lt~obsolete.m4 examples/elements.c examples/elements.dsp examples/outline.c Modified: user/attilio/vmobj-rwlock/contrib/expat/Makefile.in ============================================================================== --- user/attilio/vmobj-rwlock/contrib/expat/Makefile.in Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/contrib/expat/Makefile.in Tue Feb 26 01:05:25 2013 (r247298) @@ -31,6 +31,7 @@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ man1dir = @mandir@/man1 +pkgconfigdir = $(libdir)/pkgconfig top_builddir = . @@ -46,18 +47,18 @@ LIBRARY = libexpat.la DESTDIR = $(INSTALL_ROOT) -default: buildlib xmlwf/xmlwf +default: buildlib xmlwf/xmlwf@EXEEXT@ -buildlib: $(LIBRARY) +buildlib: $(LIBRARY) expat.pc -all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline clean: - cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs - cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs - cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs - cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o - cd tests && rm -f chardata.o minicheck.o + cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ + cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ rm -rf .libs libexpat.la rm -f examples/core tests/core xmlwf/core @@ -65,34 +66,37 @@ clobber: clean distclean: clean rm -f expat_config.h config.status config.log config.cache libtool - rm -f Makefile + rm -f Makefile expat.pc extraclean: distclean rm -f expat_config.h.in configure - rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4 + rm -f aclocal.m4 m4/* + rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub check: tests/runtests tests/runtestspp tests/runtests tests/runtestspp -install: xmlwf/xmlwf installlib +install: xmlwf/xmlwf@EXEEXT@ installlib $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) -installlib: $(LIBRARY) $(APIHEADER) - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) +installlib: $(LIBRARY) $(APIHEADER) expat.pc + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done + $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc uninstall: uninstalllib - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ rm -f $(DESTDIR)$(man1dir)/xmlwf.1 uninstalllib: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) rm -f $(DESTDIR)$(includedir)/expat.h rm -f $(DESTDIR)$(includedir)/expat_external.h + rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc # for VPATH builds (invoked by configure) mkdir-init: @@ -125,6 +129,9 @@ LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo $(LIBRARY): $(LIB_OBJS) $(LINK_LIB) $(LIB_OBJS) +expat.pc: $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ + lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h @@ -137,46 +144,53 @@ lib/xmltok.lo: lib/xmltok.c lib/xmltok_i $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h -XMLWF_OBJS = xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/@FILEMAP@.o -xmlwf/xmlwf.o: xmlwf/xmlwf.c -xmlwf/xmlfile.o: xmlwf/xmlfile.c -xmlwf/codepage.o: xmlwf/codepage.c -xmlwf/@FILEMAP@.o: xmlwf/@FILEMAP@.c -xmlwf/xmlwf: $(XMLWF_OBJS) $(LIBRARY) +XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ +xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c +xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c +xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c +xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c +xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) -examples/elements.o: examples/elements.c -examples/elements: examples/elements.o $(LIBRARY) +examples/elements.@OBJEXT@: examples/elements.c +examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -examples/outline.o: examples/outline.c -examples/outline: examples/outline.o $(LIBRARY) +examples/outline.@OBJEXT@: examples/outline.c +examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -tests/chardata.o: tests/chardata.c tests/chardata.h -tests/minicheck.o: tests/minicheck.c tests/minicheck.h -tests/runtests.o: tests/runtests.c tests/chardata.h -tests/runtests: tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_EXE) tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) -tests/runtestspp.o: tests/runtestspp.cpp tests/runtests.c tests/chardata.h -tests/runtestspp: tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_CXX_EXE) tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) +tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h +tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h +tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h +tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) +tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h +tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + +tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c +tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + +run-benchmark: tests/benchmark/benchmark + tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 tests/xmlts.zip: wget --output-document=tests/xmlts.zip \ - http://www.w3.org/XML/Test/xmlts20020606.zip + http://www.w3.org/XML/Test/xmlts20080827.zip tests/XML-Test-Suite: tests/xmlts.zip cd tests && unzip -q xmlts.zip -run-xmltest: xmlwf/xmlwf tests/XML-Test-Suite +run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite tests/xmltest.sh -.SUFFIXES: .c .cpp .lo .o +.SUFFIXES: .c .cpp .lo .@OBJEXT@ -.cpp.o: +.cpp.@OBJEXT@: $(CXXCOMPILE) -o $@ -c $< -.c.o: +.c.@OBJEXT@: $(COMPILE) -o $@ -c $< .c.lo: $(LTCOMPILE) -o $@ -c $< Modified: user/attilio/vmobj-rwlock/contrib/expat/README ============================================================================== --- user/attilio/vmobj-rwlock/contrib/expat/README Tue Feb 26 01:00:11 2013 (r247297) +++ user/attilio/vmobj-rwlock/contrib/expat/README Tue Feb 26 01:05:25 2013 (r247298) @@ -1,5 +1,5 @@ - Expat, Release 2.0.1 + Expat, Release 2.1.0 This is Expat, a C library for parsing XML, written by James Clark. Expat is a stream-oriented XML parser. This means that you register @@ -25,8 +25,7 @@ intended to be production grade software If you are building Expat from a check-out from the CVS repository, you need to run a script that generates the configure script using the GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.52 or newer and libtool 1.4 or newer (1.5 or newer preferred). -Run the script like this: +autoconf 2.58 or newer. Run the script like this: ./buildconf.sh @@ -65,8 +64,8 @@ location. Have a look at the "Makefile" the directories into which things will be installed. If you are interested in building Expat to provide document -information in UTF-16 rather than the default UTF-8, follow these -instructions (after having run "make distclean"): +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): 1. For UTF-16 output as unsigned short (and version/error strings as char), run: @@ -106,7 +105,10 @@ use DESTDIR=$(INSTALL_ROOT), even if DES environment, because variable-setting priority is 1) commandline *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 01:38:14 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 1B022EF0; Tue, 26 Feb 2013 01:38:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 0D75D343; Tue, 26 Feb 2013 01:38:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1Q1cDnr005241; Tue, 26 Feb 2013 01:38:13 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1Q1cCBw005235; Tue, 26 Feb 2013 01:38:12 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302260138.r1Q1cCBw005235@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 01:38:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247299 - user/attilio/vmobj-rwlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 01:38:14 -0000 Author: attilio Date: Tue Feb 26 01:38:12 2013 New Revision: 247299 URL: http://svnweb.freebsd.org/changeset/base/247299 Log: As VM_OBJECT_SLEEP() is a vm_object_t specific function, make the passed object as the first argument of the function for consistency. Sponsored by: EMC / Isilon storage revision Modified: user/attilio/vmobj-rwlock/sys/vm/swap_pager.c user/attilio/vmobj-rwlock/sys/vm/vm_object.c user/attilio/vmobj-rwlock/sys/vm/vm_object.h user/attilio/vmobj-rwlock/sys/vm/vm_page.c Modified: user/attilio/vmobj-rwlock/sys/vm/swap_pager.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/swap_pager.c Tue Feb 26 01:05:25 2013 (r247298) +++ user/attilio/vmobj-rwlock/sys/vm/swap_pager.c Tue Feb 26 01:38:12 2013 (r247299) @@ -1214,7 +1214,7 @@ swap_pager_getpages(vm_object_t object, while ((mreq->oflags & VPO_SWAPINPROG) != 0) { mreq->oflags |= VPO_WANTED; PCPU_INC(cnt.v_intrans); - if (VM_OBJECT_SLEEP(mreq, object, PSWP, "swread", hz * 20)) { + if (VM_OBJECT_SLEEP(object, mreq, PSWP, "swread", hz * 20)) { printf( "swap_pager: indefinite wait buffer: bufobj: %p, blkno: %jd, size: %ld\n", bp->b_bufobj, (intmax_t)bp->b_blkno, bp->b_bcount); Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 01:05:25 2013 (r247298) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 01:38:12 2013 (r247299) @@ -1139,7 +1139,7 @@ shadowlookup: if (object != tobject) VM_OBJECT_WUNLOCK(object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(m, tobject, PDROP | PVM, "madvpo" , 0); + VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo" , 0); VM_OBJECT_WLOCK(object); goto relookup; } @@ -1337,7 +1337,7 @@ retry: if ((m->oflags & VPO_BUSY) || m->busy) { VM_OBJECT_WUNLOCK(new_object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(m, orig_object, PVM, "spltwt" , 0); + VM_OBJECT_SLEEP(orig_object, m, PVM, "spltwt" , 0); VM_OBJECT_WLOCK(new_object); goto retry; } @@ -1495,7 +1495,7 @@ vm_object_backing_scan(vm_object_t objec if ((p->oflags & VPO_BUSY) || p->busy) { VM_OBJECT_WUNLOCK(object); p->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(p, backing_object, + VM_OBJECT_SLEEP(backing_object, p, PDROP | PVM, "vmocol", 0); VM_OBJECT_WLOCK(object); VM_OBJECT_WLOCK(backing_object); Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.h Tue Feb 26 01:05:25 2013 (r247298) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.h Tue Feb 26 01:38:12 2013 (r247299) @@ -216,7 +216,7 @@ extern struct vm_object kmem_object_stor rw_rlock(&(object)->lock) #define VM_OBJECT_RUNLOCK(object) \ rw_runlock(&(object)->lock) -#define VM_OBJECT_SLEEP(wchan, object, pri, wmesg, timo) \ +#define VM_OBJECT_SLEEP(object, wchan, pri, wmesg, timo) \ rw_sleep((wchan), &(object)->lock, (pri), (wmesg), (timo)) #define VM_OBJECT_TRYRLOCK(object) \ rw_try_rlock(&(object)->lock) Modified: user/attilio/vmobj-rwlock/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_page.c Tue Feb 26 01:05:25 2013 (r247298) +++ user/attilio/vmobj-rwlock/sys/vm/vm_page.c Tue Feb 26 01:38:12 2013 (r247299) @@ -764,7 +764,7 @@ vm_page_sleep(vm_page_t m, const char *m * it. */ m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(m, m->object, PVM, msg, 0); + VM_OBJECT_SLEEP(m->object, m, PVM, msg, 0); } /* From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 06:38:01 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 7B089BAD; Tue, 26 Feb 2013 06:38:01 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 58846FD4; Tue, 26 Feb 2013 06:38:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1Q6c1nX097726; Tue, 26 Feb 2013 06:38:01 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1Q6c1VF097725; Tue, 26 Feb 2013 06:38:01 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201302260638.r1Q6c1VF097725@svn.freebsd.org> From: Alan Cox Date: Tue, 26 Feb 2013 06:38:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247311 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 06:38:01 -0000 Author: alc Date: Tue Feb 26 06:38:00 2013 New Revision: 247311 URL: http://svnweb.freebsd.org/changeset/base/247311 Log: Update a comment: noobj_alloc() has replaced obj_alloc(), but it doesn't really make sense for this comment to name specific backend allocators, instead simply refer to backend allocators. Sponsored by: EMC / Isilon Storage Division Modified: user/attilio/vmc-playground/sys/vm/uma.h Modified: user/attilio/vmc-playground/sys/vm/uma.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma.h Tue Feb 26 06:01:58 2013 (r247310) +++ user/attilio/vmc-playground/sys/vm/uma.h Tue Feb 26 06:38:00 2013 (r247311) @@ -520,7 +520,7 @@ void uma_zone_set_zinit(uma_zone_t zone, void uma_zone_set_zfini(uma_zone_t zone, uma_fini zfini); /* - * Replaces the standard page_alloc or obj_alloc functions for this zone + * Replaces the standard backend allocator for this zone. * * Arguments: * zone The zone whose backend allocator is being changed. From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 17:33:21 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C1973AF5; Tue, 26 Feb 2013 17:33:21 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id A529311BB; Tue, 26 Feb 2013 17:33:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QHXLK2098255; Tue, 26 Feb 2013 17:33:21 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QHXJTE098239; Tue, 26 Feb 2013 17:33:19 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302261733.r1QHXJTE098239@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 17:33:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247324 - in user/attilio/vmobj-rwlock: sys/arm/at91 sys/arm/conf sys/arm/include sys/arm/sa11x0 sys/boot/common sys/dev/ath/ath_rate/sample sys/dev/hwpmc sys/fs/fuse sys/sys sys/vm usr... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 17:33:21 -0000 Author: attilio Date: Tue Feb 26 17:33:18 2013 New Revision: 247324 URL: http://svnweb.freebsd.org/changeset/base/247324 Log: MFC Modified: user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c user/attilio/vmobj-rwlock/sys/arm/conf/RPI-B user/attilio/vmobj-rwlock/sys/arm/include/vmparam.h user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c user/attilio/vmobj-rwlock/sys/sys/time.h user/attilio/vmobj-rwlock/sys/vm/vm_object.c user/attilio/vmobj-rwlock/usr.bin/truss/main.c user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c user/attilio/vmobj-rwlock/usr.bin/truss/truss.h Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) user/attilio/vmobj-rwlock/sys/boot/ (props changed) Modified: user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c Tue Feb 26 17:33:18 2013 (r247324) @@ -77,7 +77,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include Modified: user/attilio/vmobj-rwlock/sys/arm/conf/RPI-B ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/conf/RPI-B Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/arm/conf/RPI-B Tue Feb 26 17:33:18 2013 (r247324) @@ -42,6 +42,7 @@ options FFS #Berkeley Fast Filesystem options SOFTUPDATES #Enable FFS soft updates support options UFS_ACL #Support for access control lists options UFS_DIRHASH #Improve performance on big directories +options MSDOSFS #MSDOS Filesystem device snp options NFSCL #Network Filesystem Client @@ -113,5 +114,7 @@ device smsc # Flattened Device Tree options FDT -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=bcm2835-rpi-b.dts +# Note: DTB is normally loaded and modified by RPi boot loader, then +# handed to kernel via U-Boot and ubldr. +#options FDT_DTB_STATIC +#makeoptions FDT_DTS_FILE=bcm2835-rpi-b.dts Modified: user/attilio/vmobj-rwlock/sys/arm/include/vmparam.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/include/vmparam.h Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/arm/include/vmparam.h Tue Feb 26 17:33:18 2013 (r247324) @@ -142,15 +142,15 @@ #define VM_KMEM_SIZE (12*1024*1024) #endif #ifndef VM_KMEM_SIZE_SCALE -#define VM_KMEM_SIZE_SCALE (2) +#define VM_KMEM_SIZE_SCALE (3) #endif /* - * Ceiling on the size of the kmem submap: 60% of the kernel map. + * Ceiling on the size of the kmem submap: 40% of the kernel map. */ #ifndef VM_KMEM_SIZE_MAX #define VM_KMEM_SIZE_MAX ((vm_max_kernel_address - \ - VM_MIN_KERNEL_ADDRESS + 1) * 3 / 5) + VM_MIN_KERNEL_ADDRESS + 1) * 2 / 5) #endif #define MAXTSIZ (16*1024*1024) Modified: user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c Tue Feb 26 17:33:18 2013 (r247324) @@ -80,7 +80,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include Modified: user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c Tue Feb 26 17:33:18 2013 (r247324) @@ -290,14 +290,25 @@ __elfN(loadimage)(struct preloaded_file } else off = 0; #elif defined(__arm__) - if (off & 0xf0000000u) { - off = -(off & 0xf0000000u); - ehdr->e_entry += off; + /* + * The elf headers in some kernels specify virtual addresses in all + * header fields. More recently, the e_entry and p_paddr fields are the + * proper physical addresses. Even when the p_paddr fields are correct, + * the MI code below uses the p_vaddr fields with an offset added for + * loading (doing so is arguably wrong). To make loading work, we need + * an offset that represents the difference between physical and virtual + * addressing. ARM kernels are always linked at 0xC0000000. Depending + * on the headers, the offset value passed in may be physical or virtual + * (because it typically comes from e_entry), but we always replace + * whatever is passed in with the va<->pa offset. On the other hand, we + * only adjust the entry point if it's a virtual address to begin with. + */ + off = -0xc0000000u; + if ((ehdr->e_entry & 0xc0000000u) == 0xc000000u) + ehdr->e_entry += off; #ifdef ELF_VERBOSE - printf("Converted entry 0x%08x\n", ehdr->e_entry); + printf("ehdr->e_entry 0x%08x, va<->pa off %llx\n", ehdr->e_entry, off); #endif - } else - off = 0; #else off = 0; /* other archs use direct mapped kernels */ #endif Modified: user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c Tue Feb 26 17:33:18 2013 (r247324) @@ -1008,6 +1008,15 @@ ath_rate_tx_complete(struct ath_softc *s short_tries, long_tries, long_tries > rc[0].tries, nframes, nbad); + update_ewma_stats(sc, an, frame_size, + rc[0].rix, rc[0].tries, + rc[1].rix, rc[1].tries, + rc[2].rix, rc[2].tries, + rc[3].rix, rc[3].tries, + short_tries, long_tries, + long_tries > rc[0].tries, + nframes, nbad); + long_tries -= rc[0].tries; } @@ -1020,6 +1029,14 @@ ath_rate_tx_complete(struct ath_softc *s short_tries, long_tries, status, nframes, nbad); + update_ewma_stats(sc, an, frame_size, + rc[1].rix, rc[1].tries, + rc[2].rix, rc[2].tries, + rc[3].rix, rc[3].tries, + 0, 0, + short_tries, long_tries, + status, + nframes, nbad); long_tries -= rc[1].tries; } @@ -1032,6 +1049,14 @@ ath_rate_tx_complete(struct ath_softc *s short_tries, long_tries, status, nframes, nbad); + update_ewma_stats(sc, an, frame_size, + rc[2].rix, rc[2].tries, + rc[3].rix, rc[3].tries, + 0, 0, + 0, 0, + short_tries, long_tries, + status, + nframes, nbad); long_tries -= rc[2].tries; } @@ -1044,17 +1069,15 @@ ath_rate_tx_complete(struct ath_softc *s short_tries, long_tries, status, nframes, nbad); + update_ewma_stats(sc, an, frame_size, + rc[3].rix, rc[3].tries, + 0, 0, + 0, 0, + 0, 0, + short_tries, long_tries, + status, + nframes, nbad); } - - update_ewma_stats(sc, an, frame_size, - rc[0].rix, rc[0].tries, - rc[1].rix, rc[1].tries, - rc[2].rix, rc[2].tries, - rc[3].rix, rc[3].tries, - short_tries, long_tries, - long_tries > rc[0].tries, - nframes, nbad); - } } Modified: user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 17:33:18 2013 (r247324) @@ -408,8 +408,11 @@ pmc_soft_intr(struct pmckern_soft *ks) } processed = 1; - pc->soft_values[ri]++; if (PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm))) { + if ((pc->soft_values[ri]--) <= 0) + pc->soft_values[ri] += pm->pm_sc.pm_reloadcount; + else + continue; user_mode = TRAPF_USERMODE(ks->pm_tf); error = pmc_process_interrupt(ks->pm_cpu, PMC_SR, pm, ks->pm_tf, user_mode); @@ -424,7 +427,8 @@ pmc_soft_intr(struct pmckern_soft *ks) */ curthread->td_flags |= TDF_ASTPENDING; } - } + } else + pc->soft_values[ri]++; } atomic_add_int(processed ? &pmc_stats.pm_intr_processed : Modified: user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c Tue Feb 26 17:33:18 2013 (r247324) @@ -88,7 +88,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include "fuse.h" #include "fuse_file.h" Modified: user/attilio/vmobj-rwlock/sys/sys/time.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/sys/time.h Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/sys/time.h Tue Feb 26 17:33:18 2013 (r247324) @@ -156,9 +156,6 @@ timeval2bintime(const struct timeval *tv /* 18446744073709 = int(2^64 / 1000000) */ bt->frac = tv->tv_usec * (uint64_t)18446744073709LL; } -#endif /* __BSD_VISIBLE */ - -#ifdef _KERNEL /* Operations on timespecs */ #define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) @@ -197,7 +194,7 @@ timeval2bintime(const struct timeval *tv /* timevaladd and timevalsub are not inlined */ -#endif /* _KERNEL */ +#endif /* __BSD_VISIBLE */ #ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 17:33:18 2013 (r247324) @@ -581,7 +581,7 @@ retry: VM_OBJECT_WUNLOCK(robject); object->flags |= OBJ_PIPWNT; VM_OBJECT_SLEEP(object, object, - PDROP | PVM, "objde2" , 0); + PDROP | PVM, "objde2", 0); VM_OBJECT_WLOCK(robject); temp = robject->backing_object; if (object == temp) { Modified: user/attilio/vmobj-rwlock/usr.bin/truss/main.c ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/main.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/usr.bin/truss/main.c Tue Feb 26 17:33:18 2013 (r247324) @@ -323,14 +323,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, @@ -349,14 +349,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); Modified: user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c Tue Feb 26 17:33:18 2013 (r247324) @@ -1126,14 +1126,14 @@ print_syscall(struct trussinfo *trussinf } if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); @@ -1165,9 +1165,9 @@ print_syscall_ret(struct trussinfo *trus if (!sc) return; clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after); - timespecsubt(&trussinfo->curthread->after, + timespecsubt_to(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); - timespecadd(&sc->time, &timediff, &sc->time); + timespecadd_to(&sc->time, &timediff, &sc->time); sc->ncalls++; if (errorp) sc->nerror++; @@ -1205,7 +1205,7 @@ print_summary(struct trussinfo *trussinf fprintf(trussinfo->outfile, "%-20s%5jd.%09ld%8d%8d\n", sc->name, (intmax_t)sc->time.tv_sec, sc->time.tv_nsec, sc->ncalls, sc->nerror); - timespecadd(&total, &sc->time, &total); + timespecadd_to(&total, &sc->time, &total); ncall += sc->ncalls; nerror += sc->nerror; } Modified: user/attilio/vmobj-rwlock/usr.bin/truss/truss.h ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/truss.h Tue Feb 26 17:22:08 2013 (r247323) +++ user/attilio/vmobj-rwlock/usr.bin/truss/truss.h Tue Feb 26 17:33:18 2013 (r247324) @@ -62,7 +62,7 @@ struct trussinfo SLIST_HEAD(, threadinfo) threadlist; }; -#define timespecsubt(tvp, uvp, vvp) \ +#define timespecsubt_to(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec - (uvp)->tv_nsec; \ @@ -72,7 +72,7 @@ struct trussinfo } \ } while (0) -#define timespecadd(tvp, uvp, vvp) \ +#define timespecadd_to(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec + (uvp)->tv_nsec; \ From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 18:07:31 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0673BA01; Tue, 26 Feb 2013 18:07:31 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id EA34C1503; Tue, 26 Feb 2013 18:07:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QI7U2o007993; Tue, 26 Feb 2013 18:07:30 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QI7Uia007984; Tue, 26 Feb 2013 18:07:30 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302261807.r1QI7Uia007984@svn.freebsd.org> From: Dmitry Chagin Date: Tue, 26 Feb 2013 18:07:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247326 - in user/dchagin/lemul/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 18:07:31 -0000 Author: dchagin Date: Tue Feb 26 18:07:29 2013 New Revision: 247326 URL: http://svnweb.freebsd.org/changeset/base/247326 Log: Implement dup3() system call. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c user/dchagin/lemul/sys/amd64/linux32/syscalls.master user/dchagin/lemul/sys/compat/linux/linux_file.c user/dchagin/lemul/sys/i386/linux/linux_dummy.c user/dchagin/lemul/sys/i386/linux/syscalls.master Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Tue Feb 26 17:49:06 2013 (r247325) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Tue Feb 26 18:07:29 2013 (r247326) @@ -128,7 +128,6 @@ DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); DUMMY(epoll_create1); -DUMMY(dup3); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: user/dchagin/lemul/sys/amd64/linux32/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/syscalls.master Tue Feb 26 17:49:06 2013 (r247325) +++ user/dchagin/lemul/sys/amd64/linux32/syscalls.master Tue Feb 26 18:07:29 2013 (r247326) @@ -536,7 +536,8 @@ 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } 329 AUE_NULL STD { int linux_epoll_create1(void); } -330 AUE_NULL STD { int linux_dup3(void); } +330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ + l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } 332 AUE_NULL STD { int linux_inotify_init1(void); } ; linux 2.6.30: Modified: user/dchagin/lemul/sys/compat/linux/linux_file.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_file.c Tue Feb 26 17:49:06 2013 (r247325) +++ user/dchagin/lemul/sys/compat/linux/linux_file.c Tue Feb 26 18:07:29 2013 (r247326) @@ -1618,3 +1618,22 @@ linux_pipe2(struct thread *td, struct li /* XXX: Close descriptors on error. */ return (copyout(fildes, args->pipefds, sizeof(fildes))); } + +int +linux_dup3(struct thread *td, struct linux_dup3_args *args) +{ + int cmd; + intptr_t newfd; + + if (args->oldfd == args->newfd) + return (EINVAL); + if ((args->flags & ~LINUX_O_CLOEXEC) != 0) + return (EINVAL); + if (args->flags & LINUX_O_CLOEXEC) + cmd = F_DUP2FD_CLOEXEC; + else + cmd = F_DUP2FD; + + newfd = args->newfd; + return (kern_fcntl(td, args->oldfd, cmd, newfd)); +} Modified: user/dchagin/lemul/sys/i386/linux/linux_dummy.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_dummy.c Tue Feb 26 17:49:06 2013 (r247325) +++ user/dchagin/lemul/sys/i386/linux/linux_dummy.c Tue Feb 26 18:07:29 2013 (r247326) @@ -119,7 +119,6 @@ DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); DUMMY(epoll_create1); -DUMMY(dup3); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: user/dchagin/lemul/sys/i386/linux/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/i386/linux/syscalls.master Tue Feb 26 17:49:06 2013 (r247325) +++ user/dchagin/lemul/sys/i386/linux/syscalls.master Tue Feb 26 18:07:29 2013 (r247326) @@ -546,7 +546,8 @@ 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } 329 AUE_NULL STD { int linux_epoll_create1(void); } -330 AUE_NULL STD { int linux_dup3(void); } +330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ + l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } 332 AUE_NULL STD { int linux_inotify_init1(void); } ; linux 2.6.30: From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 18:09:20 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8548EBD3; Tue, 26 Feb 2013 18:09:20 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D3E0E151E; Tue, 26 Feb 2013 18:09:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QI9Jsj008337; Tue, 26 Feb 2013 18:09:19 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QI9HRU008320; Tue, 26 Feb 2013 18:09:17 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302261809.r1QI9HRU008320@svn.freebsd.org> From: Dmitry Chagin Date: Tue, 26 Feb 2013 18:09:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247327 - in user/dchagin/lemul/sys: amd64/linux32 i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 18:09:20 -0000 Author: dchagin Date: Tue Feb 26 18:09:17 2013 New Revision: 247327 URL: http://svnweb.freebsd.org/changeset/base/247327 Log: Regen for r247326. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c user/dchagin/lemul/sys/i386/linux/linux_proto.h user/dchagin/lemul/sys/i386/linux/linux_syscall.h user/dchagin/lemul/sys/i386/linux/linux_syscalls.c user/dchagin/lemul/sys/i386/linux/linux_sysent.c user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1057,7 +1057,9 @@ struct linux_epoll_create1_args { register_t dummy; }; struct linux_dup3_args { - register_t dummy; + char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; + char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_pipe2_args { char pipefds_l_[PADL_(l_int *)]; l_int * pipefds; char pipefds_r_[PADR_(l_int *)]; Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #include "opt_compat.h" @@ -349,7 +349,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ - { 0, (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ + { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ { 0, (sy_call_t *)linux_preadv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 333 = linux_preadv */ Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Tue Feb 26 18:09:17 2013 (r247327) @@ -2174,7 +2174,11 @@ systrace_args(int sysnum, void *params, } /* linux_dup3 */ case 330: { - *n_args = 0; + struct linux_dup3_args *p = params; + iarg[0] = p->oldfd; /* l_int */ + iarg[1] = p->newfd; /* l_int */ + iarg[2] = p->flags; /* l_int */ + *n_args = 3; break; } /* linux_pipe2 */ @@ -5398,6 +5402,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_dup3 */ case 330: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + default: + break; + }; break; /* linux_pipe2 */ case 331: @@ -6668,6 +6685,9 @@ systrace_return_setargdesc(int sysnum, i case 329: /* linux_dup3 */ case 330: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_pipe2 */ case 331: if (ndx == 0 || ndx == 1) Modified: user/dchagin/lemul/sys/i386/linux/linux_proto.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_proto.h Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/i386/linux/linux_proto.h Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1080,7 +1080,9 @@ struct linux_epoll_create1_args { register_t dummy; }; struct linux_dup3_args { - register_t dummy; + char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; + char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_pipe2_args { char pipefds_l_[PADL_(l_int *)]; l_int * pipefds; char pipefds_r_[PADR_(l_int *)]; Modified: user/dchagin/lemul/sys/i386/linux/linux_syscall.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscall.h Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/i386/linux/linux_syscall.h Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/i386/linux/linux_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/i386/linux/linux_sysent.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_sysent.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/i386/linux/linux_sysent.c Tue Feb 26 18:09:17 2013 (r247327) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247228 2013-02-24 18:12:30Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin */ #include @@ -348,7 +348,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ - { 0, (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ + { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ { 0, (sy_call_t *)linux_preadv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 333 = linux_preadv */ Modified: user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Tue Feb 26 18:07:29 2013 (r247326) +++ user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Tue Feb 26 18:09:17 2013 (r247327) @@ -2265,7 +2265,11 @@ systrace_args(int sysnum, void *params, } /* linux_dup3 */ case 330: { - *n_args = 0; + struct linux_dup3_args *p = params; + iarg[0] = p->oldfd; /* l_int */ + iarg[1] = p->newfd; /* l_int */ + iarg[2] = p->flags; /* l_int */ + *n_args = 3; break; } /* linux_pipe2 */ @@ -5694,6 +5698,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_dup3 */ case 330: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + default: + break; + }; break; /* linux_pipe2 */ case 331: @@ -7026,6 +7043,9 @@ systrace_return_setargdesc(int sysnum, i case 329: /* linux_dup3 */ case 330: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_pipe2 */ case 331: if (ndx == 0 || ndx == 1) From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 18:11:46 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E9ABAD55; Tue, 26 Feb 2013 18:11:46 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D36471571; Tue, 26 Feb 2013 18:11:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QIBknq010419; Tue, 26 Feb 2013 18:11:46 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QIBi22010404; Tue, 26 Feb 2013 18:11:44 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302261811.r1QIBi22010404@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 18:11:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247328 - in user/attilio/vmcontention: . bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys con... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 18:11:47 -0000 Author: attilio Date: Tue Feb 26 18:11:43 2013 New Revision: 247328 URL: http://svnweb.freebsd.org/changeset/base/247328 Log: MFC Added: user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist - copied unchanged from r247325, head/contrib/expat/FREEBSD-Xlist user/attilio/vmcontention/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu - copied unchanged from r247325, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu user/attilio/vmcontention/usr.sbin/bsdconfig/include/media.hlp - copied unchanged from r247325, head/usr.sbin/bsdconfig/include/media.hlp user/attilio/vmcontention/usr.sbin/bsdconfig/include/network_device.hlp - copied unchanged from r247325, head/usr.sbin/bsdconfig/include/network_device.hlp user/attilio/vmcontention/usr.sbin/bsdconfig/include/options.hlp - copied unchanged from r247325, head/usr.sbin/bsdconfig/include/options.hlp user/attilio/vmcontention/usr.sbin/bsdconfig/include/tcp.hlp - copied unchanged from r247325, head/usr.sbin/bsdconfig/include/tcp.hlp user/attilio/vmcontention/usr.sbin/bsdconfig/share/device.subr - copied unchanged from r247325, head/usr.sbin/bsdconfig/share/device.subr user/attilio/vmcontention/usr.sbin/bsdconfig/share/media/ - copied from r247325, head/usr.sbin/bsdconfig/share/media/ user/attilio/vmcontention/usr.sbin/bsdconfig/share/struct.subr - copied unchanged from r247325, head/usr.sbin/bsdconfig/share/struct.subr Deleted: user/attilio/vmcontention/contrib/expat/FREEBSD-upgrade user/attilio/vmcontention/contrib/expat/configure user/attilio/vmcontention/contrib/expat/doc/valid-xhtml10.png user/attilio/vmcontention/contrib/expat/lib/winconfig.h user/attilio/vmcontention/contrib/expat/tests/benchmark/benchmark.dsp user/attilio/vmcontention/contrib/expat/tests/benchmark/benchmark.dsw user/attilio/vmcontention/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu user/attilio/vmcontention/usr.sbin/bsdconfig/networking/include/tcp.hlp Modified: user/attilio/vmcontention/Makefile.inc1 user/attilio/vmcontention/bin/test/test.1 user/attilio/vmcontention/bin/test/test.c user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/translate.c user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/attilio/vmcontention/contrib/expat/Changes (contents, props changed) user/attilio/vmcontention/contrib/expat/MANIFEST (contents, props changed) user/attilio/vmcontention/contrib/expat/Makefile.in (contents, props changed) user/attilio/vmcontention/contrib/expat/README (contents, props changed) user/attilio/vmcontention/contrib/expat/configure.in (contents, props changed) user/attilio/vmcontention/contrib/expat/doc/reference.html (contents, props changed) user/attilio/vmcontention/contrib/expat/doc/xmlwf.sgml (contents, props changed) user/attilio/vmcontention/contrib/expat/expat_config.h.in (contents, props changed) user/attilio/vmcontention/contrib/expat/lib/expat.h (contents, props changed) user/attilio/vmcontention/contrib/expat/lib/xmlparse.c (contents, props changed) user/attilio/vmcontention/contrib/expat/lib/xmlrole.c (contents, props changed) user/attilio/vmcontention/contrib/expat/lib/xmltok.c (contents, props changed) user/attilio/vmcontention/contrib/expat/lib/xmltok_impl.c (contents, props changed) user/attilio/vmcontention/contrib/expat/tests/README.txt (contents, props changed) user/attilio/vmcontention/contrib/expat/tests/minicheck.h user/attilio/vmcontention/contrib/expat/tests/runtests.c (contents, props changed) user/attilio/vmcontention/contrib/expat/tests/xmltest.sh (contents, props changed) user/attilio/vmcontention/contrib/expat/xmlwf/readfilemap.c (contents, props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlwf.c (contents, props changed) user/attilio/vmcontention/etc/rc.d/rtadvd user/attilio/vmcontention/lib/libc/gen/opendir.c user/attilio/vmcontention/lib/libexpat/expat_config.h user/attilio/vmcontention/lib/libexpat/libbsdxml.3 user/attilio/vmcontention/sbin/fsck_ffs/fsutil.c user/attilio/vmcontention/sbin/fsdb/fsdbutil.c user/attilio/vmcontention/sbin/hastctl/hastctl.c user/attilio/vmcontention/sbin/hastd/control.c user/attilio/vmcontention/sbin/hastd/hast.h user/attilio/vmcontention/sbin/hastd/primary.c user/attilio/vmcontention/sbin/hastd/secondary.c user/attilio/vmcontention/sys/arm/at91/at91_machdep.c user/attilio/vmcontention/sys/arm/conf/RPI-B user/attilio/vmcontention/sys/arm/include/vmparam.h user/attilio/vmcontention/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmcontention/sys/arm/ti/ti_gpio.c user/attilio/vmcontention/sys/boot/common/bootstrap.h user/attilio/vmcontention/sys/boot/common/load_elf.c user/attilio/vmcontention/sys/boot/common/module.c user/attilio/vmcontention/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/time.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/attilio/vmcontention/sys/conf/files user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/attilio/vmcontention/sys/dev/ath/ath_rate/sample/sample.c user/attilio/vmcontention/sys/dev/ath/if_ath.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmcontention/sys/dev/ath/if_athvar.h user/attilio/vmcontention/sys/dev/ciss/ciss.c user/attilio/vmcontention/sys/dev/cxgbe/adapter.h user/attilio/vmcontention/sys/dev/cxgbe/common/common.h user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmcontention/sys/dev/cxgbe/common/t4_msg.h user/attilio/vmcontention/sys/dev/cxgbe/firmware/t4fw_interface.h user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c user/attilio/vmcontention/sys/dev/cxgbe/t4_sge.c user/attilio/vmcontention/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmcontention/sys/dev/isp/isp.c user/attilio/vmcontention/sys/dev/mxge/if_mxge.c user/attilio/vmcontention/sys/dev/sym/sym_hipd.c user/attilio/vmcontention/sys/dev/usb/usb_pf.c user/attilio/vmcontention/sys/dev/usb/usbdevs user/attilio/vmcontention/sys/fs/fuse/fuse_io.c user/attilio/vmcontention/sys/ia64/ia64/pmap.c user/attilio/vmcontention/sys/ia64/include/vmparam.h user/attilio/vmcontention/sys/kern/kern_descrip.c user/attilio/vmcontention/sys/kern/sys_process.c user/attilio/vmcontention/sys/mips/adm5120/adm5120_machdep.c user/attilio/vmcontention/sys/mips/alchemy/alchemy_machdep.c user/attilio/vmcontention/sys/mips/beri/beri_machdep.c user/attilio/vmcontention/sys/mips/cavium/octeon_machdep.c user/attilio/vmcontention/sys/mips/gxemul/gxemul_machdep.c user/attilio/vmcontention/sys/mips/idt/idt_machdep.c user/attilio/vmcontention/sys/mips/malta/malta_machdep.c user/attilio/vmcontention/sys/mips/rt305x/rt305x_machdep.c user/attilio/vmcontention/sys/mips/sentry5/s5_machdep.c user/attilio/vmcontention/sys/mips/sibyte/sb_machdep.c user/attilio/vmcontention/sys/modules/cxgbe/firmware/Makefile user/attilio/vmcontention/sys/powerpc/aim/mmu_oea.c user/attilio/vmcontention/sys/powerpc/aim/mmu_oea64.c user/attilio/vmcontention/sys/powerpc/aim/moea64_native.c user/attilio/vmcontention/sys/powerpc/ps3/mmu_ps3.c user/attilio/vmcontention/sys/sparc64/sparc64/tsb.c user/attilio/vmcontention/sys/sys/time.h user/attilio/vmcontention/sys/vm/swap_pager.c user/attilio/vmcontention/sys/vm/vm_object.c user/attilio/vmcontention/sys/vm/vm_object.h user/attilio/vmcontention/sys/vm/vm_page.c user/attilio/vmcontention/sys/vm/vnode_pager.c user/attilio/vmcontention/tools/regression/bin/test/regress.sh user/attilio/vmcontention/usr.bin/systat/systat.1 user/attilio/vmcontention/usr.bin/truss/main.c user/attilio/vmcontention/usr.bin/truss/syscalls.c user/attilio/vmcontention/usr.bin/truss/truss.h user/attilio/vmcontention/usr.sbin/bhyve/pci_emul.h user/attilio/vmcontention/usr.sbin/bsdconfig/include/Makefile user/attilio/vmcontention/usr.sbin/bsdconfig/include/messages.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/devices user/attilio/vmcontention/usr.sbin/bsdconfig/networking/include/Makefile user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/common.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/device.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/hostname.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/ipaddr.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/netmask.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/resolv.subr user/attilio/vmcontention/usr.sbin/bsdconfig/networking/share/routing.subr user/attilio/vmcontention/usr.sbin/bsdconfig/share/Makefile user/attilio/vmcontention/usr.sbin/bsdconfig/share/common.subr user/attilio/vmcontention/usr.sbin/bsdconfig/share/script.subr user/attilio/vmcontention/usr.sbin/bsdconfig/share/strings.subr user/attilio/vmcontention/usr.sbin/bsdconfig/share/variable.subr user/attilio/vmcontention/usr.sbin/bsdconfig/startup/rcvar user/attilio/vmcontention/usr.sbin/rtadvd/rtadvd.8 user/attilio/vmcontention/usr.sbin/rtadvd/rtadvd.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/contrib/expat/ (props changed) user/attilio/vmcontention/contrib/expat/COPYING (props changed) user/attilio/vmcontention/contrib/expat/doc/style.css (props changed) user/attilio/vmcontention/contrib/expat/doc/xmlwf.1 (props changed) user/attilio/vmcontention/contrib/expat/examples/elements.c (props changed) user/attilio/vmcontention/contrib/expat/examples/outline.c (props changed) user/attilio/vmcontention/contrib/expat/lib/ascii.h (props changed) user/attilio/vmcontention/contrib/expat/lib/asciitab.h (props changed) user/attilio/vmcontention/contrib/expat/lib/iasciitab.h (props changed) user/attilio/vmcontention/contrib/expat/lib/internal.h (props changed) user/attilio/vmcontention/contrib/expat/lib/latin1tab.h (props changed) user/attilio/vmcontention/contrib/expat/lib/nametab.h (props changed) user/attilio/vmcontention/contrib/expat/lib/utf8tab.h (props changed) user/attilio/vmcontention/contrib/expat/lib/xmlrole.h (props changed) user/attilio/vmcontention/contrib/expat/lib/xmltok.h (props changed) user/attilio/vmcontention/contrib/expat/lib/xmltok_impl.h (props changed) user/attilio/vmcontention/contrib/expat/lib/xmltok_ns.c (props changed) user/attilio/vmcontention/contrib/expat/tests/chardata.c (props changed) user/attilio/vmcontention/contrib/expat/tests/chardata.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/codepage.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/codepage.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/ct.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/filemap.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/unixfilemap.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/win32filemap.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlfile.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlfile.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlmime.c (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlmime.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmltchar.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlurl.h (props changed) user/attilio/vmcontention/contrib/expat/xmlwf/xmlwin32url.cxx (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/boot/ (props changed) user/attilio/vmcontention/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/sys/conf/ (props changed) user/attilio/vmcontention/usr.sbin/bhyve/ (props changed) user/attilio/vmcontention/usr.sbin/rtadvd/ (props changed) Modified: user/attilio/vmcontention/Makefile.inc1 ============================================================================== --- user/attilio/vmcontention/Makefile.inc1 Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/Makefile.inc1 Tue Feb 26 18:11:43 2013 (r247328) @@ -1132,7 +1132,8 @@ _lex= usr.bin/lex .endif .if ${BOOTSTRAPPING} < 1000013 -_yacc= usr.bin/yacc +_yacc= lib/liby \ + usr.bin/yacc .endif .if ${BOOTSTRAPPING} < 1000026 Modified: user/attilio/vmcontention/bin/test/test.1 ============================================================================== --- user/attilio/vmcontention/bin/test/test.1 Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/bin/test/test.1 Tue Feb 26 18:11:43 2013 (r247328) @@ -169,15 +169,65 @@ True if .Ar file exists and is a socket. .It Ar file1 Fl nt Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and +.Ar file1 +is newer than +.Ar file2 . +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2 +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is newer than +has a more recent last access time +.Pq Ar X Ns = Ns Cm a , +inode creation time +.Pq Ar X Ns = Ns Cm b , +change time +.Pq Ar X Ns = Ns Cm c , +or modification time +.Pq Ar X Ns = Ns Cm m +than the last access time +.Pq Ar Y Ns = Ns Cm a , +inode creation time +.Pq Ar Y Ns = Ns Cm b , +change time +.Pq Ar Y Ns = Ns Cm c , +or modification time +.Pq Ar Y Ns = Ns Cm m +of .Ar file2 . +Note that +.Ic -ntmm +is equivalent to +.Ic -nt . .It Ar file1 Fl ot Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is older than +is older than .Ar file2 . +Note that +.Ar file1 +.Ic -ot +.Ar file2 +is equivalent to +.Ar file2 +.Ic -nt +.Ar file1 +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2 +Equivalent to +.Ar file2 +.Ic -nt Ns Ar Y Ns Ar X +.Ar file1 . .It Ar file1 Fl ef Ar file2 True if .Ar file1 Modified: user/attilio/vmcontention/bin/test/test.c ============================================================================== --- user/attilio/vmcontention/bin/test/test.c Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/bin/test/test.c Tue Feb 26 18:11:43 2013 (r247328) @@ -63,7 +63,7 @@ error(const char *msg, ...) "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| - "-nt"|"-ot"|"-ef"; + "-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef"; operand ::= */ @@ -85,8 +85,38 @@ enum token { FILSUID, FILSGID, FILSTCK, - FILNT, - FILOT, + FILNTAA, + FILNTAB, + FILNTAC, + FILNTAM, + FILNTBA, + FILNTBB, + FILNTBC, + FILNTBM, + FILNTCA, + FILNTCB, + FILNTCC, + FILNTCM, + FILNTMA, + FILNTMB, + FILNTMC, + FILNTMM, + FILOTAA, + FILOTAB, + FILOTAC, + FILOTAM, + FILOTBA, + FILOTBB, + FILOTBC, + FILOTBM, + FILOTCA, + FILOTCB, + FILOTCC, + FILOTCM, + FILOTMA, + FILOTMB, + FILOTMC, + FILOTMM, FILEQ, FILUID, FILGID, @@ -118,9 +148,16 @@ enum token_types { PAREN }; +enum time_types { + ATIME, + BTIME, + CTIME, + MTIME +}; + static struct t_op { - char op_text[4]; - short op_num, op_type; + char op_text[6]; + char op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, {"-w", FILWR, UNOP}, @@ -154,8 +191,40 @@ static struct t_op { {"-gt", INTGT, BINOP}, {"-le", INTLE, BINOP}, {"-lt", INTLT, BINOP}, - {"-nt", FILNT, BINOP}, - {"-ot", FILOT, BINOP}, + {"-nt", FILNTMM, BINOP}, + {"-ntaa", FILNTAA, BINOP}, + {"-ntab", FILNTAB, BINOP}, + {"-ntac", FILNTAC, BINOP}, + {"-ntam", FILNTAM, BINOP}, + {"-ntba", FILNTBA, BINOP}, + {"-ntbb", FILNTBB, BINOP}, + {"-ntbc", FILNTBC, BINOP}, + {"-ntbm", FILNTBM, BINOP}, + {"-ntca", FILNTCA, BINOP}, + {"-ntcb", FILNTCB, BINOP}, + {"-ntcc", FILNTCC, BINOP}, + {"-ntcm", FILNTCM, BINOP}, + {"-ntma", FILNTMA, BINOP}, + {"-ntmb", FILNTMB, BINOP}, + {"-ntmc", FILNTMC, BINOP}, + {"-ntmm", FILNTMM, BINOP}, + {"-ot", FILOTMM, BINOP}, + {"-otaa", FILOTAA, BINOP}, + {"-otab", FILOTBB, BINOP}, + {"-otac", FILOTAC, BINOP}, + {"-otam", FILOTAM, BINOP}, + {"-otba", FILOTBA, BINOP}, + {"-otbb", FILOTBB, BINOP}, + {"-otbc", FILOTBC, BINOP}, + {"-otbm", FILOTBM, BINOP}, + {"-otca", FILOTCA, BINOP}, + {"-otcb", FILOTCB, BINOP}, + {"-otcc", FILOTCC, BINOP}, + {"-otcm", FILOTCM, BINOP}, + {"-otma", FILOTMA, BINOP}, + {"-otmb", FILOTMB, BINOP}, + {"-otmc", FILOTMC, BINOP}, + {"-otmm", FILOTMM, BINOP}, {"-ef", FILEQ, BINOP}, {"!", UNOT, BUNOP}, {"-a", BAND, BBINOP}, @@ -180,10 +249,10 @@ static int intcmp(const char *, const ch static int isunopoperand(void); static int islparenoperand(void); static int isrparenoperand(void); -static int newerf(const char *, const char *); +static int newerf(const char *, const char *, enum time_types, + enum time_types); static int nexpr(enum token); static int oexpr(enum token); -static int olderf(const char *, const char *); static int primary(enum token); static void syntax(const char *, const char *); static enum token t_lex(char *); @@ -353,10 +422,70 @@ binop(void) return intcmp(opnd1, opnd2) <= 0; case INTLT: return intcmp(opnd1, opnd2) < 0; - case FILNT: - return newerf (opnd1, opnd2); - case FILOT: - return olderf (opnd1, opnd2); + case FILNTAA: + return newerf(opnd1, opnd2, ATIME, ATIME); + case FILNTAB: + return newerf(opnd1, opnd2, ATIME, BTIME); + case FILNTAC: + return newerf(opnd1, opnd2, ATIME, CTIME); + case FILNTAM: + return newerf(opnd1, opnd2, ATIME, MTIME); + case FILNTBA: + return newerf(opnd1, opnd2, BTIME, ATIME); + case FILNTBB: + return newerf(opnd1, opnd2, BTIME, BTIME); + case FILNTBC: + return newerf(opnd1, opnd2, BTIME, CTIME); + case FILNTBM: + return newerf(opnd1, opnd2, BTIME, MTIME); + case FILNTCA: + return newerf(opnd1, opnd2, CTIME, ATIME); + case FILNTCB: + return newerf(opnd1, opnd2, CTIME, BTIME); + case FILNTCC: + return newerf(opnd1, opnd2, CTIME, CTIME); + case FILNTCM: + return newerf(opnd1, opnd2, CTIME, MTIME); + case FILNTMA: + return newerf(opnd1, opnd2, MTIME, ATIME); + case FILNTMB: + return newerf(opnd1, opnd2, MTIME, BTIME); + case FILNTMC: + return newerf(opnd1, opnd2, MTIME, CTIME); + case FILNTMM: + return newerf(opnd1, opnd2, MTIME, MTIME); + case FILOTAA: + return newerf(opnd2, opnd1, ATIME, ATIME); + case FILOTAB: + return newerf(opnd2, opnd1, BTIME, ATIME); + case FILOTAC: + return newerf(opnd2, opnd1, CTIME, ATIME); + case FILOTAM: + return newerf(opnd2, opnd1, MTIME, ATIME); + case FILOTBA: + return newerf(opnd2, opnd1, ATIME, BTIME); + case FILOTBB: + return newerf(opnd2, opnd1, BTIME, BTIME); + case FILOTBC: + return newerf(opnd2, opnd1, CTIME, BTIME); + case FILOTBM: + return newerf(opnd2, opnd1, MTIME, BTIME); + case FILOTCA: + return newerf(opnd2, opnd1, ATIME, CTIME); + case FILOTCB: + return newerf(opnd2, opnd1, BTIME, CTIME); + case FILOTCC: + return newerf(opnd2, opnd1, CTIME, CTIME); + case FILOTCM: + return newerf(opnd2, opnd1, MTIME, CTIME); + case FILOTMA: + return newerf(opnd2, opnd1, ATIME, MTIME); + case FILOTMB: + return newerf(opnd2, opnd1, BTIME, MTIME); + case FILOTMC: + return newerf(opnd2, opnd1, CTIME, MTIME); + case FILOTMM: + return newerf(opnd2, opnd1, MTIME, MTIME); case FILEQ: return equalf (opnd1, opnd2); default: @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2) } static int -newerf (const char *f1, const char *f2) +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2) { struct stat b1, b2; + struct timespec *ts1, *ts2; if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0; - if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) + switch (t1) { + case ATIME: ts1 = &b1.st_atim; break; + case BTIME: ts1 = &b1.st_birthtim; break; + case CTIME: ts1 = &b1.st_ctim; break; + default: ts1 = &b1.st_mtim; break; + } + + switch (t2) { + case ATIME: ts2 = &b2.st_atim; break; + case BTIME: ts2 = &b2.st_birthtim; break; + case CTIME: ts2 = &b2.st_ctim; break; + default: ts2 = &b2.st_mtim; break; + } + + if (ts1->tv_sec > ts2->tv_sec) return 1; - if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) + if (ts1->tv_sec < ts2->tv_sec) return 0; - return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec); -} - -static int -olderf (const char *f1, const char *f2) -{ - return (newerf(f2, f1)); + return (ts1->tv_nsec > ts2->tv_nsec); } static int Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/translate.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 18:11:43 2013 (r247328) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #include @@ -455,6 +456,20 @@ translate_device(const char *pool, const &record->zi_guid) == 0); } + /* + * Device faults can take on three different forms: + * 1). delayed or hanging I/O + * 2). zfs label faults + * 3). generic disk faults + */ + if (record->zi_timer != 0) { + record->zi_cmd = ZINJECT_DELAY_IO; + } else if (label_type != TYPE_INVAL) { + record->zi_cmd = ZINJECT_LABEL_FAULT; + } else { + record->zi_cmd = ZINJECT_DEVICE_FAULT; + } + switch (label_type) { case TYPE_LABEL_UBERBLOCK: record->zi_start = offsetof(vdev_label_t, vl_uberblock[0]); Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 18:11:43 2013 (r247328) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* @@ -603,7 +604,7 @@ main(int argc, char **argv) } while ((c = getopt(argc, argv, - ":aA:b:d:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { + ":aA:b:d:D:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { switch (c) { case 'a': flags |= ZINJECT_FLUSH_ARC; @@ -629,6 +630,15 @@ main(int argc, char **argv) case 'd': device = optarg; break; + case 'D': + record.zi_timer = strtoull(optarg, &end, 10); + if (errno != 0 || *end != '\0') { + (void) fprintf(stderr, "invalid i/o delay " + "value: '%s'\n", optarg); + usage(); + return (1); + } + break; case 'e': if (strcasecmp(optarg, "io") == 0) { error = EIO; @@ -693,6 +703,7 @@ main(int argc, char **argv) case 'p': (void) strlcpy(record.zi_func, optarg, sizeof (record.zi_func)); + record.zi_cmd = ZINJECT_PANIC; break; case 'q': quiet = 1; @@ -766,13 +777,15 @@ main(int argc, char **argv) argc -= optind; argv += optind; + if (record.zi_duration != 0) + record.zi_cmd = ZINJECT_IGNORED_WRITES; + if (cancel != NULL) { /* * '-c' is invalid with any other options. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "cancel (-c) incompatible with " "any other options\n"); usage(); @@ -804,8 +817,7 @@ main(int argc, char **argv) * for doing injection, so handle it separately here. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "device (-d) incompatible with " "data error injection\n"); usage(); @@ -839,7 +851,7 @@ main(int argc, char **argv) } else if (raw != NULL) { if (range != NULL || type != TYPE_INVAL || level != 0 || - record.zi_func[0] != '\0' || record.zi_duration != 0) { + record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "raw (-b) format with " "any other options\n"); usage(); @@ -862,13 +874,14 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_raw(raw, &record) != 0) return (1); if (!error) error = EIO; - } else if (record.zi_func[0] != '\0') { + } else if (record.zi_cmd == ZINJECT_PANIC) { if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || device != NULL || record.zi_duration != 0) { + level != 0 || device != NULL) { (void) fprintf(stderr, "panic (-p) incompatible with " "other options\n"); usage(); @@ -886,7 +899,7 @@ main(int argc, char **argv) if (argv[1] != NULL) record.zi_type = atoi(argv[1]); dataset[0] = '\0'; - } else if (record.zi_duration != 0) { + } else if (record.zi_cmd == ZINJECT_IGNORED_WRITES) { if (nowrites == 0) { (void) fprintf(stderr, "-s or -g meaningless " "without -I (ignore writes)\n"); @@ -940,6 +953,7 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_record(type, argv[0], range, level, &record, pool, dataset) != 0) return (1); Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 18:11:43 2013 (r247328) @@ -45,6 +45,9 @@ int aok; uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; +#ifdef illumos +kmutex_t cpu_lock; +#endif struct utsname utsname = { "userland", "libzpool", "1", "1", "na" @@ -842,6 +845,28 @@ ddi_strtoull(const char *str, char **npt return (0); } +#ifdef illumos +/* ARGSUSED */ +cyclic_id_t +cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when) +{ + return (1); +} + +/* ARGSUSED */ +void +cyclic_remove(cyclic_id_t id) +{ +} + +/* ARGSUSED */ +int +cyclic_reprogram(cyclic_id_t id, hrtime_t expiration) +{ + return (1); +} +#endif + /* * ========================================================================= * kernel emulation setup & teardown @@ -875,6 +900,10 @@ kernel_init(int mode) system_taskq_init(); +#ifdef illumos + mutex_init(&cpu_lock, NULL, MUTEX_DEFAULT, NULL); +#endif + spa_init(mode); } Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 18:11:43 2013 (r247328) @@ -457,6 +457,9 @@ extern vnode_t *rootdir; extern void delay(clock_t ticks); +#define SEC_TO_TICK(sec) ((sec) * hz) +#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) + #define gethrestime_sec() time(NULL) #define gethrestime(t) \ do {\ @@ -624,6 +627,36 @@ typedef uint32_t idmap_rid_t; #define ERESTART (-1) #endif +#ifdef illumos +/* + * Cyclic information + */ +extern kmutex_t cpu_lock; + +typedef uintptr_t cyclic_id_t; +typedef uint16_t cyc_level_t; +typedef void (*cyc_func_t)(void *); + +#define CY_LOW_LEVEL 0 +#define CY_INFINITY INT64_MAX +#define CYCLIC_NONE ((cyclic_id_t)0) + +typedef struct cyc_time { + hrtime_t cyt_when; + hrtime_t cyt_interval; +} cyc_time_t; + +typedef struct cyc_handler { + cyc_func_t cyh_func; + void *cyh_arg; + cyc_level_t cyh_level; +} cyc_handler_t; + +extern cyclic_id_t cyclic_add(cyc_handler_t *, cyc_time_t *); +extern void cyclic_remove(cyclic_id_t); +extern int cyclic_reprogram(cyclic_id_t, hrtime_t); +#endif /* illumos */ + #ifdef __cplusplus } #endif Modified: user/attilio/vmcontention/contrib/expat/Changes ============================================================================== --- user/attilio/vmcontention/contrib/expat/Changes Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/contrib/expat/Changes Tue Feb 26 18:11:43 2013 (r247328) @@ -1,5 +1,41 @@ +Release 2.1.0 Sat March 24 2012 + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Unitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + #3496608: CVE-2012-0876 - Hash DOS attack. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an intial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, 1515600: The character data handler's calling + - Fixed bugs #1515266, #1515600: The character data handler's calling of XML_StopParser() was not handled properly; if the parser was stopped and the handler set to NULL, the parser would segfault. - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed @@ -8,7 +44,7 @@ Release 2.0.1 Tue June 5 2007 - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, 1548182, 1602769, 1717322. + bugs #1409451, #1476160, #1548182, #1602769, #1717322. - Build fixes for various platforms: HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. All Unix: #1554618 (refreshed config.sub/config.guess). @@ -30,8 +66,8 @@ Release 2.0.0 Wed Jan 11 2006 byte indexes and line/column numbers. - Updated to use libtool 1.5.22 (the most recent). - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: 1006708, - 1021776, 1023646, 1114960, 1156398, 1221160, 1271642. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. Release 1.95.8 Fri Jul 23 2004 - Major new feature: suspend/resume. Handlers can now request @@ -40,8 +76,8 @@ Release 1.95.8 Fri Jul 23 2004 documentation for more details. - Some mostly minor bug fixes, but compilation should no longer generate warnings on most platforms. SF issues - include: 827319, 840173, 846309, 888329, 896188, 923913, - 928113, 961698, 985192. + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. Release 1.95.7 Mon Oct 20 2003 - Fixed enum XML_Status issue (reported on SourceForge many @@ -54,19 +90,19 @@ Release 1.95.7 Mon Oct 20 2003 - Improved ability to build without the configure-generated expat_config.h header. This is useful for applications which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues 458907, 609603, - 676844, 679754, 692878, 692964, 695401, 699323, 699487, - 820946. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. - Improved hash table lookups. - Added more regression tests and improved documentation. Release 1.95.6 Tue Jan 28 2003 - Added XML_FreeContentModel(). - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues 615606, 616863, - 618199, 653180, 673791. + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. - Enhanced the regression test suite. - - Man page improvements: includes SF issue 632146. + - Man page improvements: includes SF issue #632146. Release 1.95.5 Fri Sep 6 2002 - Added XML_UseForeignDTD() for improved SAX2 support. @@ -84,9 +120,9 @@ Release 1.95.5 Fri Sep 6 2002 - Reduced line-length for all source code and headers to be no longer than 80 characters, to help with AS/400 support. - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues 580793, 434664, - 483514, 580503, 581069, 584041, 584183, 584832, 585537, - 596555, 596678, 598352, 598944, 599715, 600479, 600971. + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. Release 1.95.4 Fri Jul 12 2002 - Added support for VMS, contributed by Craig Berry. See @@ -95,14 +131,14 @@ Release 1.95.4 Fri Jul 12 2002 contributed by Thomas Wegner and Daryle Walker. - Added Borland C++ Builder 5 / BCC 5.5 support, contributed by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues 441449, 563184, - 564342, 566334, 566901, 569461, 570263, 575168, 579196. + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. - Made skippedEntityHandler conform to SAX2 (see source comment) - Re-implemented WFC: Entity Declared from XML 1.0 spec and added a new error "entity declared in parameter entity": - see SF bug report 569461 and SF patch 578161 + see SF bug report #569461 and SF patch #578161 - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report 570263 and SF patch 578161 + see SF bug report #570263 and SF patch #578161 Release 1.95.3 Mon Jun 3 2002 - Added a project to the MSVC workspace to create a wchar_t @@ -114,9 +150,9 @@ Release 1.95.3 Mon Jun 3 2002 - Made the XML_UNICODE builds usable (thanks, Karl!). - Allow xmlwf to read from standard input. - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports 231864, 461380, 464837, - 466885, 469226, 477667, 484419, 487840, 494749, 496505, - 547350. Other bugs which we can't test as easily may also + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also have been fixed, especially in the area of build support. Release 1.95.2 Fri Jul 27 2001 Copied: user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist (from r247325, head/contrib/expat/FREEBSD-Xlist) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist Tue Feb 26 18:11:43 2013 (r247328, copy of r247325, head/contrib/expat/FREEBSD-Xlist) @@ -0,0 +1,19 @@ +# $FreeBSD$ +*.MPW +*.cmake +*.def +*.dsp +*.dsw +*.m4 +*.pc.in +*config.h +CMake* +Configure* +amiga +bcb5 +configure +conftools +doc/valid-xhtml10.png +m4 +vms +win32 Modified: user/attilio/vmcontention/contrib/expat/MANIFEST ============================================================================== --- user/attilio/vmcontention/contrib/expat/MANIFEST Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/contrib/expat/MANIFEST Tue Feb 26 18:11:43 2013 (r247328) @@ -1,5 +1,8 @@ -amiga/stdlib.c amiga/launch.c +amiga/expat_68k.c +amiga/expat_68k.h +amiga/expat_68k_handler_stubs.c +amiga/expat_base.h amiga/expat_vectors.c amiga/expat_lib.c amiga/expat.xml @@ -42,25 +45,35 @@ doc/style.css doc/valid-xhtml10.png doc/xmlwf.1 doc/xmlwf.sgml +CMakeLists.txt +CMake.README COPYING Changes +ConfigureChecks.cmake MANIFEST Makefile.in README configure configure.in expat_config.h.in +expat_config.h.cmake +expat.pc.in expat.dsw +aclocal.m4 conftools/PrintPath conftools/ac_c_bigendian_cross.m4 -conftools/config.guess -conftools/config.sub conftools/expat.m4 conftools/get-version.sh +conftools/mkinstalldirs +conftools/config.guess +conftools/config.sub conftools/install-sh -conftools/libtool.m4 conftools/ltmain.sh -conftools/mkinstalldirs +m4/libtool.m4 +m4/ltversion.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/lt~obsolete.m4 examples/elements.c examples/elements.dsp examples/outline.c Modified: user/attilio/vmcontention/contrib/expat/Makefile.in ============================================================================== --- user/attilio/vmcontention/contrib/expat/Makefile.in Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/contrib/expat/Makefile.in Tue Feb 26 18:11:43 2013 (r247328) @@ -31,6 +31,7 @@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ man1dir = @mandir@/man1 +pkgconfigdir = $(libdir)/pkgconfig top_builddir = . @@ -46,18 +47,18 @@ LIBRARY = libexpat.la DESTDIR = $(INSTALL_ROOT) -default: buildlib xmlwf/xmlwf +default: buildlib xmlwf/xmlwf@EXEEXT@ -buildlib: $(LIBRARY) +buildlib: $(LIBRARY) expat.pc -all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline clean: - cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs - cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs - cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs - cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o - cd tests && rm -f chardata.o minicheck.o + cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ + cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ rm -rf .libs libexpat.la rm -f examples/core tests/core xmlwf/core @@ -65,34 +66,37 @@ clobber: clean distclean: clean rm -f expat_config.h config.status config.log config.cache libtool - rm -f Makefile + rm -f Makefile expat.pc extraclean: distclean rm -f expat_config.h.in configure - rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4 + rm -f aclocal.m4 m4/* + rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub check: tests/runtests tests/runtestspp tests/runtests tests/runtestspp -install: xmlwf/xmlwf installlib +install: xmlwf/xmlwf@EXEEXT@ installlib $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) -installlib: $(LIBRARY) $(APIHEADER) - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) +installlib: $(LIBRARY) $(APIHEADER) expat.pc + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done + $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc uninstall: uninstalllib - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ rm -f $(DESTDIR)$(man1dir)/xmlwf.1 uninstalllib: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) rm -f $(DESTDIR)$(includedir)/expat.h rm -f $(DESTDIR)$(includedir)/expat_external.h + rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc # for VPATH builds (invoked by configure) mkdir-init: @@ -125,6 +129,9 @@ LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo $(LIBRARY): $(LIB_OBJS) $(LINK_LIB) $(LIB_OBJS) +expat.pc: $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ + lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h @@ -137,46 +144,53 @@ lib/xmltok.lo: lib/xmltok.c lib/xmltok_i $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h -XMLWF_OBJS = xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/@FILEMAP@.o -xmlwf/xmlwf.o: xmlwf/xmlwf.c -xmlwf/xmlfile.o: xmlwf/xmlfile.c -xmlwf/codepage.o: xmlwf/codepage.c -xmlwf/@FILEMAP@.o: xmlwf/@FILEMAP@.c -xmlwf/xmlwf: $(XMLWF_OBJS) $(LIBRARY) +XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ +xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c +xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c +xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c +xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c +xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) -examples/elements.o: examples/elements.c -examples/elements: examples/elements.o $(LIBRARY) +examples/elements.@OBJEXT@: examples/elements.c +examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -examples/outline.o: examples/outline.c -examples/outline: examples/outline.o $(LIBRARY) +examples/outline.@OBJEXT@: examples/outline.c +examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -tests/chardata.o: tests/chardata.c tests/chardata.h -tests/minicheck.o: tests/minicheck.c tests/minicheck.h -tests/runtests.o: tests/runtests.c tests/chardata.h -tests/runtests: tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_EXE) tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) -tests/runtestspp.o: tests/runtestspp.cpp tests/runtests.c tests/chardata.h -tests/runtestspp: tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_CXX_EXE) tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) +tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h +tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h +tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h +tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) +tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h +tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + +tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c +tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + +run-benchmark: tests/benchmark/benchmark + tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 tests/xmlts.zip: wget --output-document=tests/xmlts.zip \ - http://www.w3.org/XML/Test/xmlts20020606.zip + http://www.w3.org/XML/Test/xmlts20080827.zip tests/XML-Test-Suite: tests/xmlts.zip cd tests && unzip -q xmlts.zip -run-xmltest: xmlwf/xmlwf tests/XML-Test-Suite +run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite tests/xmltest.sh -.SUFFIXES: .c .cpp .lo .o +.SUFFIXES: .c .cpp .lo .@OBJEXT@ -.cpp.o: +.cpp.@OBJEXT@: $(CXXCOMPILE) -o $@ -c $< -.c.o: +.c.@OBJEXT@: $(COMPILE) -o $@ -c $< .c.lo: $(LTCOMPILE) -o $@ -c $< Modified: user/attilio/vmcontention/contrib/expat/README ============================================================================== --- user/attilio/vmcontention/contrib/expat/README Tue Feb 26 18:09:17 2013 (r247327) +++ user/attilio/vmcontention/contrib/expat/README Tue Feb 26 18:11:43 2013 (r247328) @@ -1,5 +1,5 @@ - Expat, Release 2.0.1 + Expat, Release 2.1.0 This is Expat, a C library for parsing XML, written by James Clark. Expat is a stream-oriented XML parser. This means that you register @@ -25,8 +25,7 @@ intended to be production grade software If you are building Expat from a check-out from the CVS repository, you need to run a script that generates the configure script using the GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.52 or newer and libtool 1.4 or newer (1.5 or newer preferred). -Run the script like this: +autoconf 2.58 or newer. Run the script like this: ./buildconf.sh @@ -65,8 +64,8 @@ location. Have a look at the "Makefile" the directories into which things will be installed. If you are interested in building Expat to provide document -information in UTF-16 rather than the default UTF-8, follow these -instructions (after having run "make distclean"): +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): 1. For UTF-16 output as unsigned short (and version/error strings as char), run: @@ -106,7 +105,10 @@ use DESTDIR=$(INSTALL_ROOT), even if DES environment, because variable-setting priority is 1) commandline *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 18:18:42 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B7DB015A; Tue, 26 Feb 2013 18:18:42 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 99F5215C6; Tue, 26 Feb 2013 18:18:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QIIgL2011555; Tue, 26 Feb 2013 18:18:42 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QIIeXb011536; Tue, 26 Feb 2013 18:18:40 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302261818.r1QIIeXb011536@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 18:18:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247330 - in user/attilio/vmc-playground: . bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys c... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 18:18:42 -0000 Author: attilio Date: Tue Feb 26 18:18:39 2013 New Revision: 247330 URL: http://svnweb.freebsd.org/changeset/base/247330 Log: Merge from vmcontention Added: user/attilio/vmc-playground/contrib/expat/FREEBSD-Xlist - copied unchanged from r247328, user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu - copied unchanged from r247328, user/attilio/vmcontention/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu user/attilio/vmc-playground/usr.sbin/bsdconfig/include/media.hlp - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/include/media.hlp user/attilio/vmc-playground/usr.sbin/bsdconfig/include/network_device.hlp - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/include/network_device.hlp user/attilio/vmc-playground/usr.sbin/bsdconfig/include/options.hlp - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/include/options.hlp user/attilio/vmc-playground/usr.sbin/bsdconfig/include/tcp.hlp - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/include/tcp.hlp user/attilio/vmc-playground/usr.sbin/bsdconfig/share/device.subr - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/share/device.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/share/media/ - copied from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/share/media/ user/attilio/vmc-playground/usr.sbin/bsdconfig/share/struct.subr - copied unchanged from r247328, user/attilio/vmcontention/usr.sbin/bsdconfig/share/struct.subr Deleted: user/attilio/vmc-playground/contrib/expat/FREEBSD-upgrade user/attilio/vmc-playground/contrib/expat/configure user/attilio/vmc-playground/contrib/expat/doc/valid-xhtml10.png user/attilio/vmc-playground/contrib/expat/lib/winconfig.h user/attilio/vmc-playground/contrib/expat/tests/benchmark/benchmark.dsp user/attilio/vmc-playground/contrib/expat/tests/benchmark/benchmark.dsw user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/include/tcp.hlp Modified: user/attilio/vmc-playground/Makefile.inc1 user/attilio/vmc-playground/bin/test/test.1 user/attilio/vmc-playground/bin/test/test.c user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/translate.c user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/attilio/vmc-playground/contrib/expat/Changes (contents, props changed) user/attilio/vmc-playground/contrib/expat/MANIFEST (contents, props changed) user/attilio/vmc-playground/contrib/expat/Makefile.in (contents, props changed) user/attilio/vmc-playground/contrib/expat/README (contents, props changed) user/attilio/vmc-playground/contrib/expat/configure.in (contents, props changed) user/attilio/vmc-playground/contrib/expat/doc/reference.html (contents, props changed) user/attilio/vmc-playground/contrib/expat/doc/xmlwf.sgml (contents, props changed) user/attilio/vmc-playground/contrib/expat/expat_config.h.in (contents, props changed) user/attilio/vmc-playground/contrib/expat/lib/expat.h (contents, props changed) user/attilio/vmc-playground/contrib/expat/lib/xmlparse.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/lib/xmlrole.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/lib/xmltok.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/lib/xmltok_impl.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/tests/README.txt (contents, props changed) user/attilio/vmc-playground/contrib/expat/tests/minicheck.h user/attilio/vmc-playground/contrib/expat/tests/runtests.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/tests/xmltest.sh (contents, props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/readfilemap.c (contents, props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlwf.c (contents, props changed) user/attilio/vmc-playground/etc/rc.d/rtadvd user/attilio/vmc-playground/lib/libc/gen/opendir.c user/attilio/vmc-playground/lib/libexpat/expat_config.h user/attilio/vmc-playground/lib/libexpat/libbsdxml.3 user/attilio/vmc-playground/sbin/fsck_ffs/fsutil.c user/attilio/vmc-playground/sbin/fsdb/fsdbutil.c user/attilio/vmc-playground/sbin/hastctl/hastctl.c user/attilio/vmc-playground/sbin/hastd/control.c user/attilio/vmc-playground/sbin/hastd/hast.h user/attilio/vmc-playground/sbin/hastd/primary.c user/attilio/vmc-playground/sbin/hastd/secondary.c user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c user/attilio/vmc-playground/sys/arm/conf/RPI-B user/attilio/vmc-playground/sys/arm/include/vmparam.h user/attilio/vmc-playground/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmc-playground/sys/arm/ti/ti_gpio.c user/attilio/vmc-playground/sys/boot/common/bootstrap.h user/attilio/vmc-playground/sys/boot/common/load_elf.c user/attilio/vmc-playground/sys/boot/common/module.c user/attilio/vmc-playground/sys/boot/fdt/fdt_loader_cmd.c user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/time.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/attilio/vmc-playground/sys/conf/files user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5210/ar5210.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5211/ar5211.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5212/ar5212.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c user/attilio/vmc-playground/sys/dev/ath/if_ath.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmc-playground/sys/dev/ath/if_athvar.h user/attilio/vmc-playground/sys/dev/ciss/ciss.c user/attilio/vmc-playground/sys/dev/cxgbe/adapter.h user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_msg.h user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw_interface.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c user/attilio/vmc-playground/sys/dev/cxgbe/t4_sge.c user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmc-playground/sys/dev/isp/isp.c user/attilio/vmc-playground/sys/dev/mxge/if_mxge.c user/attilio/vmc-playground/sys/dev/sym/sym_hipd.c user/attilio/vmc-playground/sys/dev/usb/usb_pf.c user/attilio/vmc-playground/sys/dev/usb/usbdevs user/attilio/vmc-playground/sys/fs/fuse/fuse_io.c user/attilio/vmc-playground/sys/ia64/ia64/pmap.c user/attilio/vmc-playground/sys/ia64/include/vmparam.h user/attilio/vmc-playground/sys/kern/kern_descrip.c user/attilio/vmc-playground/sys/kern/sys_process.c user/attilio/vmc-playground/sys/mips/adm5120/adm5120_machdep.c user/attilio/vmc-playground/sys/mips/alchemy/alchemy_machdep.c user/attilio/vmc-playground/sys/mips/beri/beri_machdep.c user/attilio/vmc-playground/sys/mips/cavium/octeon_machdep.c user/attilio/vmc-playground/sys/mips/gxemul/gxemul_machdep.c user/attilio/vmc-playground/sys/mips/idt/idt_machdep.c user/attilio/vmc-playground/sys/mips/malta/malta_machdep.c user/attilio/vmc-playground/sys/mips/rt305x/rt305x_machdep.c user/attilio/vmc-playground/sys/mips/sentry5/s5_machdep.c user/attilio/vmc-playground/sys/mips/sibyte/sb_machdep.c user/attilio/vmc-playground/sys/modules/cxgbe/firmware/Makefile user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea.c user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea64.c user/attilio/vmc-playground/sys/powerpc/aim/moea64_native.c user/attilio/vmc-playground/sys/powerpc/ps3/mmu_ps3.c user/attilio/vmc-playground/sys/sparc64/sparc64/tsb.c user/attilio/vmc-playground/sys/sys/time.h user/attilio/vmc-playground/sys/vm/swap_pager.c user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vm_object.h user/attilio/vmc-playground/sys/vm/vm_page.c user/attilio/vmc-playground/sys/vm/vnode_pager.c user/attilio/vmc-playground/tools/regression/bin/test/regress.sh user/attilio/vmc-playground/usr.bin/systat/systat.1 user/attilio/vmc-playground/usr.bin/truss/main.c user/attilio/vmc-playground/usr.bin/truss/syscalls.c user/attilio/vmc-playground/usr.bin/truss/truss.h user/attilio/vmc-playground/usr.sbin/bhyve/pci_emul.h user/attilio/vmc-playground/usr.sbin/bsdconfig/include/Makefile user/attilio/vmc-playground/usr.sbin/bsdconfig/include/messages.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/devices user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/include/Makefile user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/common.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/device.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/hostname.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/ipaddr.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/netmask.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/resolv.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/networking/share/routing.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/share/Makefile user/attilio/vmc-playground/usr.sbin/bsdconfig/share/common.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/share/script.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/share/strings.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/share/variable.subr user/attilio/vmc-playground/usr.sbin/bsdconfig/startup/rcvar user/attilio/vmc-playground/usr.sbin/rtadvd/rtadvd.8 user/attilio/vmc-playground/usr.sbin/rtadvd/rtadvd.c Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/contrib/expat/ (props changed) user/attilio/vmc-playground/contrib/expat/COPYING (props changed) user/attilio/vmc-playground/contrib/expat/doc/style.css (props changed) user/attilio/vmc-playground/contrib/expat/doc/xmlwf.1 (props changed) user/attilio/vmc-playground/contrib/expat/examples/elements.c (props changed) user/attilio/vmc-playground/contrib/expat/examples/outline.c (props changed) user/attilio/vmc-playground/contrib/expat/lib/ascii.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/asciitab.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/iasciitab.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/internal.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/latin1tab.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/nametab.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/utf8tab.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/xmlrole.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/xmltok.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/xmltok_impl.h (props changed) user/attilio/vmc-playground/contrib/expat/lib/xmltok_ns.c (props changed) user/attilio/vmc-playground/contrib/expat/tests/chardata.c (props changed) user/attilio/vmc-playground/contrib/expat/tests/chardata.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/codepage.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/codepage.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/ct.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/filemap.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/unixfilemap.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/win32filemap.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlfile.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlfile.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlmime.c (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlmime.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmltchar.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlurl.h (props changed) user/attilio/vmc-playground/contrib/expat/xmlwf/xmlwin32url.cxx (props changed) user/attilio/vmc-playground/lib/libc/ (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/sys/ (props changed) user/attilio/vmc-playground/sys/boot/ (props changed) user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/sys/conf/ (props changed) user/attilio/vmc-playground/usr.sbin/bhyve/ (props changed) user/attilio/vmc-playground/usr.sbin/rtadvd/ (props changed) Modified: user/attilio/vmc-playground/Makefile.inc1 ============================================================================== --- user/attilio/vmc-playground/Makefile.inc1 Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/Makefile.inc1 Tue Feb 26 18:18:39 2013 (r247330) @@ -1132,7 +1132,8 @@ _lex= usr.bin/lex .endif .if ${BOOTSTRAPPING} < 1000013 -_yacc= usr.bin/yacc +_yacc= lib/liby \ + usr.bin/yacc .endif .if ${BOOTSTRAPPING} < 1000026 Modified: user/attilio/vmc-playground/bin/test/test.1 ============================================================================== --- user/attilio/vmc-playground/bin/test/test.1 Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/bin/test/test.1 Tue Feb 26 18:18:39 2013 (r247330) @@ -169,15 +169,65 @@ True if .Ar file exists and is a socket. .It Ar file1 Fl nt Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and +.Ar file1 +is newer than +.Ar file2 . +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2 +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is newer than +has a more recent last access time +.Pq Ar X Ns = Ns Cm a , +inode creation time +.Pq Ar X Ns = Ns Cm b , +change time +.Pq Ar X Ns = Ns Cm c , +or modification time +.Pq Ar X Ns = Ns Cm m +than the last access time +.Pq Ar Y Ns = Ns Cm a , +inode creation time +.Pq Ar Y Ns = Ns Cm b , +change time +.Pq Ar Y Ns = Ns Cm c , +or modification time +.Pq Ar Y Ns = Ns Cm m +of .Ar file2 . +Note that +.Ic -ntmm +is equivalent to +.Ic -nt . .It Ar file1 Fl ot Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is older than +is older than .Ar file2 . +Note that +.Ar file1 +.Ic -ot +.Ar file2 +is equivalent to +.Ar file2 +.Ic -nt +.Ar file1 +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2 +Equivalent to +.Ar file2 +.Ic -nt Ns Ar Y Ns Ar X +.Ar file1 . .It Ar file1 Fl ef Ar file2 True if .Ar file1 Modified: user/attilio/vmc-playground/bin/test/test.c ============================================================================== --- user/attilio/vmc-playground/bin/test/test.c Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/bin/test/test.c Tue Feb 26 18:18:39 2013 (r247330) @@ -63,7 +63,7 @@ error(const char *msg, ...) "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| - "-nt"|"-ot"|"-ef"; + "-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef"; operand ::= */ @@ -85,8 +85,38 @@ enum token { FILSUID, FILSGID, FILSTCK, - FILNT, - FILOT, + FILNTAA, + FILNTAB, + FILNTAC, + FILNTAM, + FILNTBA, + FILNTBB, + FILNTBC, + FILNTBM, + FILNTCA, + FILNTCB, + FILNTCC, + FILNTCM, + FILNTMA, + FILNTMB, + FILNTMC, + FILNTMM, + FILOTAA, + FILOTAB, + FILOTAC, + FILOTAM, + FILOTBA, + FILOTBB, + FILOTBC, + FILOTBM, + FILOTCA, + FILOTCB, + FILOTCC, + FILOTCM, + FILOTMA, + FILOTMB, + FILOTMC, + FILOTMM, FILEQ, FILUID, FILGID, @@ -118,9 +148,16 @@ enum token_types { PAREN }; +enum time_types { + ATIME, + BTIME, + CTIME, + MTIME +}; + static struct t_op { - char op_text[4]; - short op_num, op_type; + char op_text[6]; + char op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, {"-w", FILWR, UNOP}, @@ -154,8 +191,40 @@ static struct t_op { {"-gt", INTGT, BINOP}, {"-le", INTLE, BINOP}, {"-lt", INTLT, BINOP}, - {"-nt", FILNT, BINOP}, - {"-ot", FILOT, BINOP}, + {"-nt", FILNTMM, BINOP}, + {"-ntaa", FILNTAA, BINOP}, + {"-ntab", FILNTAB, BINOP}, + {"-ntac", FILNTAC, BINOP}, + {"-ntam", FILNTAM, BINOP}, + {"-ntba", FILNTBA, BINOP}, + {"-ntbb", FILNTBB, BINOP}, + {"-ntbc", FILNTBC, BINOP}, + {"-ntbm", FILNTBM, BINOP}, + {"-ntca", FILNTCA, BINOP}, + {"-ntcb", FILNTCB, BINOP}, + {"-ntcc", FILNTCC, BINOP}, + {"-ntcm", FILNTCM, BINOP}, + {"-ntma", FILNTMA, BINOP}, + {"-ntmb", FILNTMB, BINOP}, + {"-ntmc", FILNTMC, BINOP}, + {"-ntmm", FILNTMM, BINOP}, + {"-ot", FILOTMM, BINOP}, + {"-otaa", FILOTAA, BINOP}, + {"-otab", FILOTBB, BINOP}, + {"-otac", FILOTAC, BINOP}, + {"-otam", FILOTAM, BINOP}, + {"-otba", FILOTBA, BINOP}, + {"-otbb", FILOTBB, BINOP}, + {"-otbc", FILOTBC, BINOP}, + {"-otbm", FILOTBM, BINOP}, + {"-otca", FILOTCA, BINOP}, + {"-otcb", FILOTCB, BINOP}, + {"-otcc", FILOTCC, BINOP}, + {"-otcm", FILOTCM, BINOP}, + {"-otma", FILOTMA, BINOP}, + {"-otmb", FILOTMB, BINOP}, + {"-otmc", FILOTMC, BINOP}, + {"-otmm", FILOTMM, BINOP}, {"-ef", FILEQ, BINOP}, {"!", UNOT, BUNOP}, {"-a", BAND, BBINOP}, @@ -180,10 +249,10 @@ static int intcmp(const char *, const ch static int isunopoperand(void); static int islparenoperand(void); static int isrparenoperand(void); -static int newerf(const char *, const char *); +static int newerf(const char *, const char *, enum time_types, + enum time_types); static int nexpr(enum token); static int oexpr(enum token); -static int olderf(const char *, const char *); static int primary(enum token); static void syntax(const char *, const char *); static enum token t_lex(char *); @@ -353,10 +422,70 @@ binop(void) return intcmp(opnd1, opnd2) <= 0; case INTLT: return intcmp(opnd1, opnd2) < 0; - case FILNT: - return newerf (opnd1, opnd2); - case FILOT: - return olderf (opnd1, opnd2); + case FILNTAA: + return newerf(opnd1, opnd2, ATIME, ATIME); + case FILNTAB: + return newerf(opnd1, opnd2, ATIME, BTIME); + case FILNTAC: + return newerf(opnd1, opnd2, ATIME, CTIME); + case FILNTAM: + return newerf(opnd1, opnd2, ATIME, MTIME); + case FILNTBA: + return newerf(opnd1, opnd2, BTIME, ATIME); + case FILNTBB: + return newerf(opnd1, opnd2, BTIME, BTIME); + case FILNTBC: + return newerf(opnd1, opnd2, BTIME, CTIME); + case FILNTBM: + return newerf(opnd1, opnd2, BTIME, MTIME); + case FILNTCA: + return newerf(opnd1, opnd2, CTIME, ATIME); + case FILNTCB: + return newerf(opnd1, opnd2, CTIME, BTIME); + case FILNTCC: + return newerf(opnd1, opnd2, CTIME, CTIME); + case FILNTCM: + return newerf(opnd1, opnd2, CTIME, MTIME); + case FILNTMA: + return newerf(opnd1, opnd2, MTIME, ATIME); + case FILNTMB: + return newerf(opnd1, opnd2, MTIME, BTIME); + case FILNTMC: + return newerf(opnd1, opnd2, MTIME, CTIME); + case FILNTMM: + return newerf(opnd1, opnd2, MTIME, MTIME); + case FILOTAA: + return newerf(opnd2, opnd1, ATIME, ATIME); + case FILOTAB: + return newerf(opnd2, opnd1, BTIME, ATIME); + case FILOTAC: + return newerf(opnd2, opnd1, CTIME, ATIME); + case FILOTAM: + return newerf(opnd2, opnd1, MTIME, ATIME); + case FILOTBA: + return newerf(opnd2, opnd1, ATIME, BTIME); + case FILOTBB: + return newerf(opnd2, opnd1, BTIME, BTIME); + case FILOTBC: + return newerf(opnd2, opnd1, CTIME, BTIME); + case FILOTBM: + return newerf(opnd2, opnd1, MTIME, BTIME); + case FILOTCA: + return newerf(opnd2, opnd1, ATIME, CTIME); + case FILOTCB: + return newerf(opnd2, opnd1, BTIME, CTIME); + case FILOTCC: + return newerf(opnd2, opnd1, CTIME, CTIME); + case FILOTCM: + return newerf(opnd2, opnd1, MTIME, CTIME); + case FILOTMA: + return newerf(opnd2, opnd1, ATIME, MTIME); + case FILOTMB: + return newerf(opnd2, opnd1, BTIME, MTIME); + case FILOTMC: + return newerf(opnd2, opnd1, CTIME, MTIME); + case FILOTMM: + return newerf(opnd2, opnd1, MTIME, MTIME); case FILEQ: return equalf (opnd1, opnd2); default: @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2) } static int -newerf (const char *f1, const char *f2) +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2) { struct stat b1, b2; + struct timespec *ts1, *ts2; if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0; - if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) + switch (t1) { + case ATIME: ts1 = &b1.st_atim; break; + case BTIME: ts1 = &b1.st_birthtim; break; + case CTIME: ts1 = &b1.st_ctim; break; + default: ts1 = &b1.st_mtim; break; + } + + switch (t2) { + case ATIME: ts2 = &b2.st_atim; break; + case BTIME: ts2 = &b2.st_birthtim; break; + case CTIME: ts2 = &b2.st_ctim; break; + default: ts2 = &b2.st_mtim; break; + } + + if (ts1->tv_sec > ts2->tv_sec) return 1; - if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) + if (ts1->tv_sec < ts2->tv_sec) return 0; - return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec); -} - -static int -olderf (const char *f1, const char *f2) -{ - return (newerf(f2, f1)); + return (ts1->tv_nsec > ts2->tv_nsec); } static int Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/translate.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/translate.c Tue Feb 26 18:18:39 2013 (r247330) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #include @@ -455,6 +456,20 @@ translate_device(const char *pool, const &record->zi_guid) == 0); } + /* + * Device faults can take on three different forms: + * 1). delayed or hanging I/O + * 2). zfs label faults + * 3). generic disk faults + */ + if (record->zi_timer != 0) { + record->zi_cmd = ZINJECT_DELAY_IO; + } else if (label_type != TYPE_INVAL) { + record->zi_cmd = ZINJECT_LABEL_FAULT; + } else { + record->zi_cmd = ZINJECT_DEVICE_FAULT; + } + switch (label_type) { case TYPE_LABEL_UBERBLOCK: record->zi_start = offsetof(vdev_label_t, vl_uberblock[0]); Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zinject/zinject.c Tue Feb 26 18:18:39 2013 (r247330) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* @@ -603,7 +604,7 @@ main(int argc, char **argv) } while ((c = getopt(argc, argv, - ":aA:b:d:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { + ":aA:b:d:D:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) { switch (c) { case 'a': flags |= ZINJECT_FLUSH_ARC; @@ -629,6 +630,15 @@ main(int argc, char **argv) case 'd': device = optarg; break; + case 'D': + record.zi_timer = strtoull(optarg, &end, 10); + if (errno != 0 || *end != '\0') { + (void) fprintf(stderr, "invalid i/o delay " + "value: '%s'\n", optarg); + usage(); + return (1); + } + break; case 'e': if (strcasecmp(optarg, "io") == 0) { error = EIO; @@ -693,6 +703,7 @@ main(int argc, char **argv) case 'p': (void) strlcpy(record.zi_func, optarg, sizeof (record.zi_func)); + record.zi_cmd = ZINJECT_PANIC; break; case 'q': quiet = 1; @@ -766,13 +777,15 @@ main(int argc, char **argv) argc -= optind; argv += optind; + if (record.zi_duration != 0) + record.zi_cmd = ZINJECT_IGNORED_WRITES; + if (cancel != NULL) { /* * '-c' is invalid with any other options. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "cancel (-c) incompatible with " "any other options\n"); usage(); @@ -804,8 +817,7 @@ main(int argc, char **argv) * for doing injection, so handle it separately here. */ if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || record.zi_func[0] != '\0' || - record.zi_duration != 0) { + level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "device (-d) incompatible with " "data error injection\n"); usage(); @@ -839,7 +851,7 @@ main(int argc, char **argv) } else if (raw != NULL) { if (range != NULL || type != TYPE_INVAL || level != 0 || - record.zi_func[0] != '\0' || record.zi_duration != 0) { + record.zi_cmd != ZINJECT_UNINITIALIZED) { (void) fprintf(stderr, "raw (-b) format with " "any other options\n"); usage(); @@ -862,13 +874,14 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_raw(raw, &record) != 0) return (1); if (!error) error = EIO; - } else if (record.zi_func[0] != '\0') { + } else if (record.zi_cmd == ZINJECT_PANIC) { if (raw != NULL || range != NULL || type != TYPE_INVAL || - level != 0 || device != NULL || record.zi_duration != 0) { + level != 0 || device != NULL) { (void) fprintf(stderr, "panic (-p) incompatible with " "other options\n"); usage(); @@ -886,7 +899,7 @@ main(int argc, char **argv) if (argv[1] != NULL) record.zi_type = atoi(argv[1]); dataset[0] = '\0'; - } else if (record.zi_duration != 0) { + } else if (record.zi_cmd == ZINJECT_IGNORED_WRITES) { if (nowrites == 0) { (void) fprintf(stderr, "-s or -g meaningless " "without -I (ignore writes)\n"); @@ -940,6 +953,7 @@ main(int argc, char **argv) return (1); } + record.zi_cmd = ZINJECT_DATA_FAULT; if (translate_record(type, argv[0], range, level, &record, pool, dataset) != 0) return (1); Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Tue Feb 26 18:18:39 2013 (r247330) @@ -45,6 +45,9 @@ int aok; uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; +#ifdef illumos +kmutex_t cpu_lock; +#endif struct utsname utsname = { "userland", "libzpool", "1", "1", "na" @@ -842,6 +845,28 @@ ddi_strtoull(const char *str, char **npt return (0); } +#ifdef illumos +/* ARGSUSED */ +cyclic_id_t +cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when) +{ + return (1); +} + +/* ARGSUSED */ +void +cyclic_remove(cyclic_id_t id) +{ +} + +/* ARGSUSED */ +int +cyclic_reprogram(cyclic_id_t id, hrtime_t expiration) +{ + return (1); +} +#endif + /* * ========================================================================= * kernel emulation setup & teardown @@ -875,6 +900,10 @@ kernel_init(int mode) system_taskq_init(); +#ifdef illumos + mutex_init(&cpu_lock, NULL, MUTEX_DEFAULT, NULL); +#endif + spa_init(mode); } Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue Feb 26 18:18:39 2013 (r247330) @@ -457,6 +457,9 @@ extern vnode_t *rootdir; extern void delay(clock_t ticks); +#define SEC_TO_TICK(sec) ((sec) * hz) +#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) + #define gethrestime_sec() time(NULL) #define gethrestime(t) \ do {\ @@ -624,6 +627,36 @@ typedef uint32_t idmap_rid_t; #define ERESTART (-1) #endif +#ifdef illumos +/* + * Cyclic information + */ +extern kmutex_t cpu_lock; + +typedef uintptr_t cyclic_id_t; +typedef uint16_t cyc_level_t; +typedef void (*cyc_func_t)(void *); + +#define CY_LOW_LEVEL 0 +#define CY_INFINITY INT64_MAX +#define CYCLIC_NONE ((cyclic_id_t)0) + +typedef struct cyc_time { + hrtime_t cyt_when; + hrtime_t cyt_interval; +} cyc_time_t; + +typedef struct cyc_handler { + cyc_func_t cyh_func; + void *cyh_arg; + cyc_level_t cyh_level; +} cyc_handler_t; + +extern cyclic_id_t cyclic_add(cyc_handler_t *, cyc_time_t *); +extern void cyclic_remove(cyclic_id_t); +extern int cyclic_reprogram(cyclic_id_t, hrtime_t); +#endif /* illumos */ + #ifdef __cplusplus } #endif Modified: user/attilio/vmc-playground/contrib/expat/Changes ============================================================================== --- user/attilio/vmc-playground/contrib/expat/Changes Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/contrib/expat/Changes Tue Feb 26 18:18:39 2013 (r247330) @@ -1,5 +1,41 @@ +Release 2.1.0 Sat March 24 2012 + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Unitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + #3496608: CVE-2012-0876 - Hash DOS attack. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an intial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, 1515600: The character data handler's calling + - Fixed bugs #1515266, #1515600: The character data handler's calling of XML_StopParser() was not handled properly; if the parser was stopped and the handler set to NULL, the parser would segfault. - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed @@ -8,7 +44,7 @@ Release 2.0.1 Tue June 5 2007 - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, 1548182, 1602769, 1717322. + bugs #1409451, #1476160, #1548182, #1602769, #1717322. - Build fixes for various platforms: HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. All Unix: #1554618 (refreshed config.sub/config.guess). @@ -30,8 +66,8 @@ Release 2.0.0 Wed Jan 11 2006 byte indexes and line/column numbers. - Updated to use libtool 1.5.22 (the most recent). - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: 1006708, - 1021776, 1023646, 1114960, 1156398, 1221160, 1271642. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. Release 1.95.8 Fri Jul 23 2004 - Major new feature: suspend/resume. Handlers can now request @@ -40,8 +76,8 @@ Release 1.95.8 Fri Jul 23 2004 documentation for more details. - Some mostly minor bug fixes, but compilation should no longer generate warnings on most platforms. SF issues - include: 827319, 840173, 846309, 888329, 896188, 923913, - 928113, 961698, 985192. + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. Release 1.95.7 Mon Oct 20 2003 - Fixed enum XML_Status issue (reported on SourceForge many @@ -54,19 +90,19 @@ Release 1.95.7 Mon Oct 20 2003 - Improved ability to build without the configure-generated expat_config.h header. This is useful for applications which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues 458907, 609603, - 676844, 679754, 692878, 692964, 695401, 699323, 699487, - 820946. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. - Improved hash table lookups. - Added more regression tests and improved documentation. Release 1.95.6 Tue Jan 28 2003 - Added XML_FreeContentModel(). - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues 615606, 616863, - 618199, 653180, 673791. + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. - Enhanced the regression test suite. - - Man page improvements: includes SF issue 632146. + - Man page improvements: includes SF issue #632146. Release 1.95.5 Fri Sep 6 2002 - Added XML_UseForeignDTD() for improved SAX2 support. @@ -84,9 +120,9 @@ Release 1.95.5 Fri Sep 6 2002 - Reduced line-length for all source code and headers to be no longer than 80 characters, to help with AS/400 support. - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues 580793, 434664, - 483514, 580503, 581069, 584041, 584183, 584832, 585537, - 596555, 596678, 598352, 598944, 599715, 600479, 600971. + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. Release 1.95.4 Fri Jul 12 2002 - Added support for VMS, contributed by Craig Berry. See @@ -95,14 +131,14 @@ Release 1.95.4 Fri Jul 12 2002 contributed by Thomas Wegner and Daryle Walker. - Added Borland C++ Builder 5 / BCC 5.5 support, contributed by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues 441449, 563184, - 564342, 566334, 566901, 569461, 570263, 575168, 579196. + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. - Made skippedEntityHandler conform to SAX2 (see source comment) - Re-implemented WFC: Entity Declared from XML 1.0 spec and added a new error "entity declared in parameter entity": - see SF bug report 569461 and SF patch 578161 + see SF bug report #569461 and SF patch #578161 - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report 570263 and SF patch 578161 + see SF bug report #570263 and SF patch #578161 Release 1.95.3 Mon Jun 3 2002 - Added a project to the MSVC workspace to create a wchar_t @@ -114,9 +150,9 @@ Release 1.95.3 Mon Jun 3 2002 - Made the XML_UNICODE builds usable (thanks, Karl!). - Allow xmlwf to read from standard input. - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports 231864, 461380, 464837, - 466885, 469226, 477667, 484419, 487840, 494749, 496505, - 547350. Other bugs which we can't test as easily may also + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also have been fixed, especially in the area of build support. Release 1.95.2 Fri Jul 27 2001 Copied: user/attilio/vmc-playground/contrib/expat/FREEBSD-Xlist (from r247328, user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmc-playground/contrib/expat/FREEBSD-Xlist Tue Feb 26 18:18:39 2013 (r247330, copy of r247328, user/attilio/vmcontention/contrib/expat/FREEBSD-Xlist) @@ -0,0 +1,19 @@ +# $FreeBSD$ +*.MPW +*.cmake +*.def +*.dsp +*.dsw +*.m4 +*.pc.in +*config.h +CMake* +Configure* +amiga +bcb5 +configure +conftools +doc/valid-xhtml10.png +m4 +vms +win32 Modified: user/attilio/vmc-playground/contrib/expat/MANIFEST ============================================================================== --- user/attilio/vmc-playground/contrib/expat/MANIFEST Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/contrib/expat/MANIFEST Tue Feb 26 18:18:39 2013 (r247330) @@ -1,5 +1,8 @@ -amiga/stdlib.c amiga/launch.c +amiga/expat_68k.c +amiga/expat_68k.h +amiga/expat_68k_handler_stubs.c +amiga/expat_base.h amiga/expat_vectors.c amiga/expat_lib.c amiga/expat.xml @@ -42,25 +45,35 @@ doc/style.css doc/valid-xhtml10.png doc/xmlwf.1 doc/xmlwf.sgml +CMakeLists.txt +CMake.README COPYING Changes +ConfigureChecks.cmake MANIFEST Makefile.in README configure configure.in expat_config.h.in +expat_config.h.cmake +expat.pc.in expat.dsw +aclocal.m4 conftools/PrintPath conftools/ac_c_bigendian_cross.m4 -conftools/config.guess -conftools/config.sub conftools/expat.m4 conftools/get-version.sh +conftools/mkinstalldirs +conftools/config.guess +conftools/config.sub conftools/install-sh -conftools/libtool.m4 conftools/ltmain.sh -conftools/mkinstalldirs +m4/libtool.m4 +m4/ltversion.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/lt~obsolete.m4 examples/elements.c examples/elements.dsp examples/outline.c Modified: user/attilio/vmc-playground/contrib/expat/Makefile.in ============================================================================== --- user/attilio/vmc-playground/contrib/expat/Makefile.in Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/contrib/expat/Makefile.in Tue Feb 26 18:18:39 2013 (r247330) @@ -31,6 +31,7 @@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ man1dir = @mandir@/man1 +pkgconfigdir = $(libdir)/pkgconfig top_builddir = . @@ -46,18 +47,18 @@ LIBRARY = libexpat.la DESTDIR = $(INSTALL_ROOT) -default: buildlib xmlwf/xmlwf +default: buildlib xmlwf/xmlwf@EXEEXT@ -buildlib: $(LIBRARY) +buildlib: $(LIBRARY) expat.pc -all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline clean: - cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs - cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs - cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs - cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o - cd tests && rm -f chardata.o minicheck.o + cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ + cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ rm -rf .libs libexpat.la rm -f examples/core tests/core xmlwf/core @@ -65,34 +66,37 @@ clobber: clean distclean: clean rm -f expat_config.h config.status config.log config.cache libtool - rm -f Makefile + rm -f Makefile expat.pc extraclean: distclean rm -f expat_config.h.in configure - rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4 + rm -f aclocal.m4 m4/* + rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub check: tests/runtests tests/runtestspp tests/runtests tests/runtestspp -install: xmlwf/xmlwf installlib +install: xmlwf/xmlwf@EXEEXT@ installlib $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) -installlib: $(LIBRARY) $(APIHEADER) - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) +installlib: $(LIBRARY) $(APIHEADER) expat.pc + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done + $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc uninstall: uninstalllib - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ rm -f $(DESTDIR)$(man1dir)/xmlwf.1 uninstalllib: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) rm -f $(DESTDIR)$(includedir)/expat.h rm -f $(DESTDIR)$(includedir)/expat_external.h + rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc # for VPATH builds (invoked by configure) mkdir-init: @@ -125,6 +129,9 @@ LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo $(LIBRARY): $(LIB_OBJS) $(LINK_LIB) $(LIB_OBJS) +expat.pc: $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ + lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h @@ -137,46 +144,53 @@ lib/xmltok.lo: lib/xmltok.c lib/xmltok_i $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h -XMLWF_OBJS = xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/@FILEMAP@.o -xmlwf/xmlwf.o: xmlwf/xmlwf.c -xmlwf/xmlfile.o: xmlwf/xmlfile.c -xmlwf/codepage.o: xmlwf/codepage.c -xmlwf/@FILEMAP@.o: xmlwf/@FILEMAP@.c -xmlwf/xmlwf: $(XMLWF_OBJS) $(LIBRARY) +XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ +xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c +xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c +xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c +xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c +xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) -examples/elements.o: examples/elements.c -examples/elements: examples/elements.o $(LIBRARY) +examples/elements.@OBJEXT@: examples/elements.c +examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -examples/outline.o: examples/outline.c -examples/outline: examples/outline.o $(LIBRARY) +examples/outline.@OBJEXT@: examples/outline.c +examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -tests/chardata.o: tests/chardata.c tests/chardata.h -tests/minicheck.o: tests/minicheck.c tests/minicheck.h -tests/runtests.o: tests/runtests.c tests/chardata.h -tests/runtests: tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_EXE) tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) -tests/runtestspp.o: tests/runtestspp.cpp tests/runtests.c tests/chardata.h -tests/runtestspp: tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_CXX_EXE) tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) +tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h +tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h +tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h +tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) +tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h +tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + +tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c +tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + +run-benchmark: tests/benchmark/benchmark + tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 tests/xmlts.zip: wget --output-document=tests/xmlts.zip \ - http://www.w3.org/XML/Test/xmlts20020606.zip + http://www.w3.org/XML/Test/xmlts20080827.zip tests/XML-Test-Suite: tests/xmlts.zip cd tests && unzip -q xmlts.zip -run-xmltest: xmlwf/xmlwf tests/XML-Test-Suite +run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite tests/xmltest.sh -.SUFFIXES: .c .cpp .lo .o +.SUFFIXES: .c .cpp .lo .@OBJEXT@ -.cpp.o: +.cpp.@OBJEXT@: $(CXXCOMPILE) -o $@ -c $< -.c.o: +.c.@OBJEXT@: $(COMPILE) -o $@ -c $< .c.lo: $(LTCOMPILE) -o $@ -c $< Modified: user/attilio/vmc-playground/contrib/expat/README ============================================================================== --- user/attilio/vmc-playground/contrib/expat/README Tue Feb 26 18:13:42 2013 (r247329) +++ user/attilio/vmc-playground/contrib/expat/README Tue Feb 26 18:18:39 2013 (r247330) @@ -1,5 +1,5 @@ - Expat, Release 2.0.1 + Expat, Release 2.1.0 This is Expat, a C library for parsing XML, written by James Clark. Expat is a stream-oriented XML parser. This means that you register @@ -25,8 +25,7 @@ intended to be production grade software If you are building Expat from a check-out from the CVS repository, you need to run a script that generates the configure script using the GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.52 or newer and libtool 1.4 or newer (1.5 or newer preferred). -Run the script like this: +autoconf 2.58 or newer. Run the script like this: ./buildconf.sh @@ -65,8 +64,8 @@ location. Have a look at the "Makefile" the directories into which things will be installed. If you are interested in building Expat to provide document -information in UTF-16 rather than the default UTF-8, follow these -instructions (after having run "make distclean"): +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): 1. For UTF-16 output as unsigned short (and version/error strings as char), run: @@ -106,7 +105,10 @@ use DESTDIR=$(INSTALL_ROOT), even if DES environment, because variable-setting priority is 1) commandline *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 20:18:26 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 54F21ACE; Tue, 26 Feb 2013 20:18:26 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 259D31D03; Tue, 26 Feb 2013 20:18:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QKIQLn048118; Tue, 26 Feb 2013 20:18:26 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QKIQDw048117; Tue, 26 Feb 2013 20:18:26 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262018.r1QKIQDw048117@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 20:18:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247343 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 20:18:26 -0000 Author: attilio Date: Tue Feb 26 20:18:25 2013 New Revision: 247343 URL: http://svnweb.freebsd.org/changeset/base/247343 Log: Revert the moving of vm_object objects initialization: the objects zone ensures type-stability and thus we want to execute actual lock initialization only when the objects are brought into the zone otherwise there could be races between lock threads doing re-initilization and other threads that want to acquire the lock without a reference. Sponsored by: EMC / Isilon storage division Reported by: alc Modified: user/attilio/vmc-playground/sys/vm/vm_object.c Modified: user/attilio/vmc-playground/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.c Tue Feb 26 20:02:17 2013 (r247342) +++ user/attilio/vmc-playground/sys/vm/vm_object.c Tue Feb 26 20:18:25 2013 (r247343) @@ -194,23 +194,20 @@ vm_object_zinit(void *mem, int size, int vm_object_t object; object = (vm_object_t)mem; + bzero(&object->mtx, sizeof(object->mtx)); + mtx_init(&object->mtx, "vm object", NULL, MTX_DEF | MTX_DUPOK); /* These are true for any object that has been freed */ object->paging_in_progress = 0; object->resident_page_count = 0; object->shadow_count = 0; - - /* It relies on vm object mutex to be initialized afterwards. */ return (0); } static void -_vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object, - const char *mtxname) +_vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object) { - bzero(&object->mtx, sizeof(object->mtx)); - mtx_init(&object->mtx, "vm object", mtxname, MTX_DEF | MTX_DUPOK); TAILQ_INIT(&object->memq); LIST_INIT(&object->shadow_head); @@ -270,15 +267,17 @@ vm_object_init(void) TAILQ_INIT(&vm_object_list); mtx_init(&vm_object_list_mtx, "vm object_list", NULL, MTX_DEF); + mtx_init(&kernel_object->mtx, "vm object", "kernel object", MTX_DEF); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), - kernel_object, "kernel object"); + kernel_object); #if VM_NRESERVLEVEL > 0 kernel_object->flags |= OBJ_COLORED; kernel_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); #endif + mtx_init(&kmem_object->mtx, "vm object", "kmem object", MTX_DEF); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), - kmem_object, "kmem object"); + kmem_object); #if VM_NRESERVLEVEL > 0 kmem_object->flags |= OBJ_COLORED; kmem_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); @@ -404,7 +403,7 @@ vm_object_allocate(objtype_t type, vm_pi vm_object_t object; object = (vm_object_t)uma_zalloc(obj_zone, M_WAITOK); - _vm_object_allocate(type, size, object, NULL); + _vm_object_allocate(type, size, object); return (object); } From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 21:09:40 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 75DBC5F7; Tue, 26 Feb 2013 21:09:40 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 5927FD7; Tue, 26 Feb 2013 21:09:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QL9eNq063746; Tue, 26 Feb 2013 21:09:40 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QL9aM4063710; Tue, 26 Feb 2013 21:09:36 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262109.r1QL9aM4063710@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 21:09:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247351 - in user/attilio/vmobj-rwlock: lib/libkiconv lib/libpmc sbin/hastctl share/man/man4 sys/arm/arm sys/arm/include sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/cpufreq s... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 21:09:40 -0000 Author: attilio Date: Tue Feb 26 21:09:35 2013 New Revision: 247351 URL: http://svnweb.freebsd.org/changeset/base/247351 Log: MFC Modified: user/attilio/vmobj-rwlock/lib/libkiconv/kiconv.3 user/attilio/vmobj-rwlock/lib/libpmc/pmc.soft.3 user/attilio/vmobj-rwlock/sbin/hastctl/hastctl.c user/attilio/vmobj-rwlock/share/man/man4/cxgbe.4 user/attilio/vmobj-rwlock/sys/arm/arm/mp_machdep.c user/attilio/vmobj-rwlock/sys/arm/arm/vfp.c user/attilio/vmobj-rwlock/sys/arm/include/vfp.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmobj-rwlock/sys/dev/cpufreq/ichss.c user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/common.h user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_main.c user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmobj-rwlock/sys/dev/random/randomdev_soft.c user/attilio/vmobj-rwlock/sys/kern/kern_clock.c user/attilio/vmobj-rwlock/sys/kern/kern_clocksource.c user/attilio/vmobj-rwlock/sys/sys/time.h user/attilio/vmobj-rwlock/sys/vm/vm_object.c user/attilio/vmobj-rwlock/sys/vm/vnode_pager.c user/attilio/vmobj-rwlock/usr.bin/truss/main.c user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c user/attilio/vmobj-rwlock/usr.bin/truss/truss.h user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_block.c Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/sbin/ (props changed) user/attilio/vmobj-rwlock/share/man/man4/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-rwlock/usr.sbin/bhyve/ (props changed) Modified: user/attilio/vmobj-rwlock/lib/libkiconv/kiconv.3 ============================================================================== --- user/attilio/vmobj-rwlock/lib/libkiconv/kiconv.3 Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/lib/libkiconv/kiconv.3 Tue Feb 26 21:09:35 2013 (r247351) @@ -126,5 +126,4 @@ not using .Sh SEE ALSO .Xr iconv 3 , .Xr tolower 3 , -.Xr toupper 3 , -.Xr iconv 9 +.Xr toupper 3 Modified: user/attilio/vmobj-rwlock/lib/libpmc/pmc.soft.3 ============================================================================== --- user/attilio/vmobj-rwlock/lib/libpmc/pmc.soft.3 Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/lib/libpmc/pmc.soft.3 Tue Feb 26 21:09:35 2013 (r247351) @@ -23,7 +23,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 28, 2012 +.Dd February 26, 2013 .Dt PMC.SOFT 3 .Os .Sh NAME @@ -61,6 +61,8 @@ The event specifiers supported by softwa Hard clock ticks. .It Li CLOCK.STAT Stat clock ticks. +.It Li CLOCK.PROF +Profiling clock ticks. .It Li LOCK.FAILED Lock acquisition failed. .It Li PAGE_FAULT.ALL Modified: user/attilio/vmobj-rwlock/sbin/hastctl/hastctl.c ============================================================================== --- user/attilio/vmobj-rwlock/sbin/hastctl/hastctl.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sbin/hastctl/hastctl.c Tue Feb 26 21:09:35 2013 (r247351) @@ -342,15 +342,15 @@ control_status(struct nv *nv) (intmax_t)nv_get_uint64(nv, "dirty%u", ii)); printf(" statistics:\n"); printf(" reads: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_read%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_read%u", ii)); printf(" writes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_write%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_write%u", ii)); printf(" deletes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_delete%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_delete%u", ii)); printf(" flushes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_flush%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_flush%u", ii)); printf(" activemap updates: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); printf(" local errors: " "read: %ju, write: %ju, delete: %ju, flush: %ju\n", (uintmax_t)nv_get_uint64(nv, "stat_read_error%u", ii), Modified: user/attilio/vmobj-rwlock/share/man/man4/cxgbe.4 ============================================================================== --- user/attilio/vmobj-rwlock/share/man/man4/cxgbe.4 Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/share/man/man4/cxgbe.4 Tue Feb 26 21:09:35 2013 (r247351) @@ -178,6 +178,15 @@ Bit 0 represents INTx (line interrupts), The default is 7 (all allowed). The driver will select the best possible type out of the allowed types by itself. +.It Va hw.cxgbe.fw_install +0 prohibits the driver from installing a firmware on the card. +1 allows the driver to install a new firmware if internal driver +heuristics indicate that the new firmware is preferable to the one +already on the card. +2 instructs the driver to always install the new firmware on the card as +long as it is compatible with the driver and is a different version than +the one already on the card. +The default is 1. .It Va hw.cxgbe.config_file Select a pre-packaged device configuration file. A configuration file contains a recipe for partitioning and configuring the Modified: user/attilio/vmobj-rwlock/sys/arm/arm/mp_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/arm/mp_machdep.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/arm/arm/mp_machdep.c Tue Feb 26 21:09:35 2013 (r247351) @@ -49,6 +49,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef ARM_VFP_SUPPORT +#include +#endif #include "opt_smp.h" @@ -181,6 +184,11 @@ init_secondary(int cpu) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); pc->pc_curthread = pc->pc_idlethread; pc->pc_curpcb = pc->pc_idlethread->td_pcb; +#ifdef ARM_VFP_SUPPORT + pc->pc_cpu = cpu; + + vfp_init(); +#endif mtx_lock_spin(&ap_boot_mtx); Modified: user/attilio/vmobj-rwlock/sys/arm/arm/vfp.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/arm/vfp.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/arm/arm/vfp.c Tue Feb 26 21:09:35 2013 (r247351) @@ -43,7 +43,6 @@ unsigned int get_coprocessorACR(void); int vfp_bounce(u_int, u_int, struct trapframe *, int); void vfp_discard(void); void vfp_enable(void); -void vfp_init(void); void vfp_restore(struct vfp_state *); void vfp_store(struct vfp_state *); void set_coprocessorACR(u_int); @@ -74,8 +73,8 @@ void set_coprocessorACR(u_int val) { __asm __volatile("mcr p15, 0, %0, c1, c0, 2\n\t" - "isb\n\t" : : "r" (val) : "cc"); + isb(); } @@ -140,7 +139,7 @@ vfp_bounce(u_int addr, u_int insn, struc #ifdef SMP /* don't save if newer registers are on another processor */ if (vfptd /* && (vfptd == curthread) */ && - (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(vfpcpu)) + (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(cpu))) #else /* someone did not save their registers, */ if (vfptd /* && (vfptd == curthread) */) @@ -168,7 +167,7 @@ vfp_bounce(u_int addr, u_int insn, struc */ vfp_restore(&curpcb->pcb_vfpstate); #ifdef SMP - curpcb->pcb_cpu = PCPU_GET(cpu); + curpcb->pcb_vfpcpu = PCPU_GET(cpu); #endif PCPU_SET(vfpcthread, PCPU_GET(curthread)); return 0; Modified: user/attilio/vmobj-rwlock/sys/arm/include/vfp.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/include/vfp.h Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/arm/include/vfp.h Tue Feb 26 21:09:35 2013 (r247351) @@ -124,5 +124,6 @@ #define COPROC10 (0x3 << 20) #define COPROC11 (0x3 << 22) +void vfp_init(void); #endif Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:09:35 2013 (r247351) @@ -23,6 +23,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2013 Martin Matuska . All rights reserved. */ #include @@ -3205,7 +3206,10 @@ vdev_deadman(vdev_t *vd) fio->io_timestamp, delta, vq->vq_io_complete_ts); fm_panic("I/O to pool '%s' appears to be " - "hung.", spa_name(spa)); + "hung on vdev guid %llu at '%s'.", + spa_name(spa), + (long long unsigned int) vd->vdev_guid, + vd->vdev_path); } } mutex_exit(&vq->vq_lock); Modified: user/attilio/vmobj-rwlock/sys/dev/cpufreq/ichss.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/cpufreq/ichss.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/dev/cpufreq/ichss.c Tue Feb 26 21:09:35 2013 (r247351) @@ -67,7 +67,7 @@ struct ichss_softc { #define PCI_DEV_82801BA 0x244c /* ICH2M */ #define PCI_DEV_82801CA 0x248c /* ICH3M */ #define PCI_DEV_82801DB 0x24cc /* ICH4M */ -#define PCI_DEV_82815BA 0x1130 /* Unsupported/buggy part */ +#define PCI_DEV_82815_MC 0x1130 /* Unsupported/buggy part */ /* PCI config registers for finding PMBASE and enabling SpeedStep. */ #define ICHSS_PMBASE_OFFSET 0x40 @@ -155,9 +155,6 @@ ichss_identify(driver_t *driver, device_ * E.g. see Section 6.1 "PCI Devices and Functions" and table 6.1 of * Intel(r) 82801BA I/O Controller Hub 2 (ICH2) and Intel(r) 82801BAM * I/O Controller Hub 2 Mobile (ICH2-M). - * - * TODO: add a quirk to disable if we see the 82815_MC along - * with the 82801BA and revision < 5. */ ich_device = pci_find_bsf(0, 0x1f, 0); if (ich_device == NULL || @@ -167,6 +164,22 @@ ichss_identify(driver_t *driver, device_ pci_get_device(ich_device) != PCI_DEV_82801DB)) return; + /* + * Certain systems with ICH2 and an Intel 82815_MC host bridge + * where the host bridge's revision is < 5 lockup if SpeedStep + * is used. + */ + if (pci_get_device(ich_device) == PCI_DEV_82801BA) { + device_t hostb; + + hostb = pci_find_bsf(0, 0, 0); + if (hostb != NULL && + pci_get_vendor(hostb) == PCI_VENDOR_INTEL && + pci_get_device(hostb) == PCI_DEV_82815_MC && + pci_get_revid(hostb) < 5) + return; + } + /* Find the PMBASE register from our PCI config header. */ pmbase = pci_read_config(ich_device, ICHSS_PMBASE_OFFSET, sizeof(pmbase)); Modified: user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/common.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/common.h Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/common.h Tue Feb 26 21:09:35 2013 (r247351) @@ -68,6 +68,11 @@ enum { #define FW_VERSION_MICRO 4 #define FW_VERSION_BUILD 0 +#define FW_VERSION (V_FW_HDR_FW_VER_MAJOR(FW_VERSION_MAJOR) | \ + V_FW_HDR_FW_VER_MINOR(FW_VERSION_MINOR) | \ + V_FW_HDR_FW_VER_MICRO(FW_VERSION_MICRO) | \ + V_FW_HDR_FW_VER_BUILD(FW_VERSION_BUILD)) + struct port_stats { u64 tx_octets; /* total # of octets in good frames */ u64 tx_frames; /* all good frames */ Modified: user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_main.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:09:35 2013 (r247351) @@ -213,6 +213,13 @@ static char t4_cfg_file[32] = "default"; TUNABLE_STR("hw.cxgbe.config_file", t4_cfg_file, sizeof(t4_cfg_file)); /* + * Firmware auto-install by driver during attach (0, 1, 2 = prohibited, allowed, + * encouraged respectively). + */ +static unsigned int t4_fw_install = 1; +TUNABLE_INT("hw.cxgbe.fw_install", &t4_fw_install); + +/* * ASIC features that will be used. Disable the ones you don't want so that the * chip resources aren't wasted on features that will not be used. */ @@ -1503,6 +1510,33 @@ allocate: } /* + * Is the given firmware compatible with the one the driver was compiled with? + */ +static int +fw_compatible(const struct fw_hdr *hdr) +{ + + if (hdr->fw_ver == htonl(FW_VERSION)) + return (1); + + /* + * XXX: Is this too conservative? Perhaps I should limit this to the + * features that are supported in the driver. + */ + if (hdr->intfver_nic == FW_HDR_INTFVER_NIC && + hdr->intfver_vnic == FW_HDR_INTFVER_VNIC && + hdr->intfver_ofld == FW_HDR_INTFVER_OFLD && + hdr->intfver_ri == FW_HDR_INTFVER_RI && + hdr->intfver_iscsipdu == FW_HDR_INTFVER_ISCSIPDU && + hdr->intfver_iscsi == FW_HDR_INTFVER_ISCSI && + hdr->intfver_fcoepdu == FW_HDR_INTFVER_FCOEPDU && + hdr->intfver_fcoe == FW_HDR_INTFVER_FCOEPDU) + return (1); + + return (0); +} + +/* * Install a compatible firmware (if required), establish contact with it (by * saying hello), and reset the device. If we end up as the master driver, * partition adapter resources by providing a configuration file to the @@ -1512,84 +1546,99 @@ static int prep_firmware(struct adapter *sc) { const struct firmware *fw = NULL, *cfg = NULL, *default_cfg; - int rc; + int rc, card_fw_usable, kld_fw_usable; enum dev_state state; + struct fw_hdr *card_fw; + const struct fw_hdr *kld_fw; default_cfg = firmware_get(T4_CFGNAME); - /* Check firmware version and install a different one if necessary */ - rc = t4_check_fw_version(sc); - snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - if (rc != 0) { - uint32_t v = 0; - - fw = firmware_get(T4_FWNAME); - if (fw != NULL) { - const struct fw_hdr *hdr = (const void *)fw->data; + /* Read the header of the firmware on the card */ + card_fw = malloc(sizeof(*card_fw), M_CXGBE, M_ZERO | M_WAITOK); + rc = -t4_read_flash(sc, FLASH_FW_START, + sizeof (*card_fw) / sizeof (uint32_t), (uint32_t *)card_fw, 1); + if (rc == 0) + card_fw_usable = fw_compatible((const void*)card_fw); + else { + device_printf(sc->dev, + "Unable to read card's firmware header: %d\n", rc); + card_fw_usable = 0; + } - v = ntohl(hdr->fw_ver); + /* This is the firmware in the KLD */ + fw = firmware_get(T4_FWNAME); + if (fw != NULL) { + kld_fw = (const void *)fw->data; + kld_fw_usable = fw_compatible(kld_fw); + } else { + kld_fw = NULL; + kld_fw_usable = 0; + } - /* - * The firmware module will not be used if it isn't the - * same major version as what the driver was compiled - * with. - */ - if (G_FW_HDR_FW_VER_MAJOR(v) != FW_VERSION_MAJOR) { - device_printf(sc->dev, - "Found firmware image but version %d " - "can not be used with this driver (%d)\n", - G_FW_HDR_FW_VER_MAJOR(v), FW_VERSION_MAJOR); + /* + * Short circuit for the common case: the firmware on the card is an + * exact match and the KLD is an exact match too, or it's + * absent/incompatible, or we're prohibited from using it. Note that + * t4_fw_install = 2 is ignored here -- use cxgbetool loadfw if you want + * to reinstall the same firmware as the one on the card. + */ + if (card_fw_usable && card_fw->fw_ver == htonl(FW_VERSION) && + (!kld_fw_usable || kld_fw->fw_ver == htonl(FW_VERSION) || + t4_fw_install == 0)) + goto hello; + + if (kld_fw_usable && (!card_fw_usable || + ntohl(kld_fw->fw_ver) > ntohl(card_fw->fw_ver) || + (t4_fw_install == 2 && kld_fw->fw_ver != card_fw->fw_ver))) { + uint32_t v = ntohl(kld_fw->fw_ver); - firmware_put(fw, FIRMWARE_UNLOAD); - fw = NULL; - } - } + device_printf(sc->dev, + "installing firmware %d.%d.%d.%d on card.\n", + G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), + G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - if (fw == NULL && rc < 0) { - device_printf(sc->dev, "No usable firmware. " - "card has %d.%d.%d, driver compiled with %d.%d.%d", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - FW_VERSION_MAJOR, FW_VERSION_MINOR, - FW_VERSION_MICRO); - rc = EAGAIN; + rc = -t4_load_fw(sc, fw->data, fw->datasize); + if (rc != 0) { + device_printf(sc->dev, + "failed to install firmware: %d\n", rc); goto done; } - /* - * Always upgrade, even for minor/micro/build mismatches. - * Downgrade only for a major version mismatch or if - * force_firmware_install was specified. - */ - if (fw != NULL && (rc < 0 || v > sc->params.fw_vers)) { - device_printf(sc->dev, - "installing firmware %d.%d.%d.%d on card.\n", - G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), - G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - - rc = -t4_load_fw(sc, fw->data, fw->datasize); - if (rc != 0) { - device_printf(sc->dev, - "failed to install firmware: %d\n", rc); - goto done; - } else { - /* refresh */ - (void) t4_check_fw_version(sc); - snprintf(sc->fw_version, - sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - } - } + /* Installed successfully, update the cached header too. */ + memcpy(card_fw, kld_fw, sizeof(*card_fw)); + card_fw_usable = 1; + } + + if (!card_fw_usable) { + uint32_t c, k; + + c = ntohl(card_fw->fw_ver); + k = kld_fw ? ntohl(kld_fw->fw_ver) : 0; + + device_printf(sc->dev, "Cannot find a usable firmware: " + "fw_install %d, driver compiled with %d.%d.%d.%d, " + "card has %d.%d.%d.%d, KLD has %d.%d.%d.%d\n", + t4_fw_install, + G_FW_HDR_FW_VER_MAJOR(FW_VERSION), + G_FW_HDR_FW_VER_MINOR(FW_VERSION), + G_FW_HDR_FW_VER_MICRO(FW_VERSION), + G_FW_HDR_FW_VER_BUILD(FW_VERSION), + G_FW_HDR_FW_VER_MAJOR(c), G_FW_HDR_FW_VER_MINOR(c), + G_FW_HDR_FW_VER_MICRO(c), G_FW_HDR_FW_VER_BUILD(c), + G_FW_HDR_FW_VER_MAJOR(k), G_FW_HDR_FW_VER_MINOR(k), + G_FW_HDR_FW_VER_MICRO(k), G_FW_HDR_FW_VER_BUILD(k)); + goto done; } +hello: + /* We're using whatever's on the card and it's known to be good. */ + sc->params.fw_vers = ntohl(card_fw->fw_ver); + snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", + G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), + G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); + /* Contact firmware. */ rc = t4_fw_hello(sc, sc->mbox, sc->mbox, MASTER_MAY, &state); if (rc < 0) { @@ -1639,6 +1688,7 @@ prep_firmware(struct adapter *sc) sc->flags |= FW_OK; done: + free(card_fw, M_CXGBE); if (fw != NULL) firmware_put(fw, FIRMWARE_UNLOAD); if (cfg != NULL) Modified: user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:09:35 2013 (r247351) @@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$"); #define SOFT_CAPS (PMC_CAP_READ | PMC_CAP_WRITE | PMC_CAP_INTERRUPT | \ PMC_CAP_USER | PMC_CAP_SYSTEM) +PMC_SOFT_DECLARE( , , clock, prof); + struct soft_descr { struct pmc_descr pm_descr; /* "base class" */ }; @@ -125,6 +127,8 @@ soft_allocate_pmc(int cpu, int ri, struc return (EINVAL); pmc_soft_ev_release(ps); + if (ev == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_startprofclock(); return (0); } @@ -324,9 +328,8 @@ soft_release_pmc(int cpu, int ri, struct KASSERT(phw->phw_pmc == NULL, ("[soft,%d] PHW pmc %p non-NULL", __LINE__, phw->phw_pmc)); - /* - * Nothing to do. - */ + if (pmc->pm_event == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_stopprofclock(); return (0); } Modified: user/attilio/vmobj-rwlock/sys/dev/random/randomdev_soft.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/random/randomdev_soft.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/dev/random/randomdev_soft.c Tue Feb 26 21:09:35 2013 (r247351) @@ -391,7 +391,7 @@ random_yarrow_block(int flag) mtx_lock(&random_reseed_mtx); /* Blocking logic */ - while (random_systat.seeded && !error) { + while (!random_systat.seeded && !error) { if (flag & O_NONBLOCK) error = EWOULDBLOCK; else { Modified: user/attilio/vmobj-rwlock/sys/kern/kern_clock.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/kern/kern_clock.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/kern/kern_clock.c Tue Feb 26 21:09:35 2013 (r247351) @@ -78,6 +78,7 @@ __FBSDID("$FreeBSD$"); #include PMC_SOFT_DEFINE( , , clock, hard); PMC_SOFT_DEFINE( , , clock, stat); +PMC_SOFT_DEFINE( , , clock, prof); #endif #ifdef DEVICE_POLLING @@ -817,6 +818,10 @@ profclock_cnt(int cnt, int usermode, uin } } #endif +#ifdef HWPMC_HOOKS + if (td->td_intr_frame != NULL) + PMC_SOFT_CALL_TF( , , clock, prof, td->td_intr_frame); +#endif } /* Modified: user/attilio/vmobj-rwlock/sys/kern/kern_clocksource.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/kern/kern_clocksource.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/kern/kern_clocksource.c Tue Feb 26 21:09:35 2013 (r247351) @@ -732,12 +732,15 @@ cpu_startprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); - profiling = 1; - configtimer(1); + if (profiling == 0) { + if (periodic) { + configtimer(0); + profiling = 1; + configtimer(1); + } else + profiling = 1; } else - profiling = 1; + profiling++; ET_UNLOCK(); } @@ -749,12 +752,15 @@ cpu_stopprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); + if (profiling == 1) { + if (periodic) { + configtimer(0); + profiling = 0; + configtimer(1); + } else profiling = 0; - configtimer(1); } else - profiling = 0; + profiling--; ET_UNLOCK(); } Modified: user/attilio/vmobj-rwlock/sys/sys/time.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/sys/time.h Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/sys/time.h Tue Feb 26 21:09:35 2013 (r247351) @@ -156,6 +156,9 @@ timeval2bintime(const struct timeval *tv /* 18446744073709 = int(2^64 / 1000000) */ bt->frac = tv->tv_usec * (uint64_t)18446744073709LL; } +#endif /* __BSD_VISIBLE */ + +#ifdef _KERNEL /* Operations on timespecs */ #define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) @@ -194,7 +197,7 @@ timeval2bintime(const struct timeval *tv /* timevaladd and timevalsub are not inlined */ -#endif /* __BSD_VISIBLE */ +#endif /* _KERNEL */ #ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 21:09:35 2013 (r247351) @@ -1139,7 +1139,7 @@ shadowlookup: if (object != tobject) VM_OBJECT_WUNLOCK(object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo" , 0); + VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo", 0); VM_OBJECT_WLOCK(object); goto relookup; } @@ -1337,7 +1337,7 @@ retry: if ((m->oflags & VPO_BUSY) || m->busy) { VM_OBJECT_WUNLOCK(new_object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(orig_object, m, PVM, "spltwt" , 0); + VM_OBJECT_SLEEP(orig_object, m, PVM, "spltwt", 0); VM_OBJECT_WLOCK(new_object); goto retry; } Modified: user/attilio/vmobj-rwlock/sys/vm/vnode_pager.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vnode_pager.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/sys/vm/vnode_pager.c Tue Feb 26 21:09:35 2013 (r247351) @@ -117,7 +117,7 @@ vnode_create_vobject(struct vnode *vp, o } VOP_UNLOCK(vp, 0); vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); } @@ -211,7 +211,7 @@ retry: if ((object->flags & OBJ_DEAD) == 0) break; vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead", 0); } if (vp->v_usecount == 0) Modified: user/attilio/vmobj-rwlock/usr.bin/truss/main.c ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/main.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/usr.bin/truss/main.c Tue Feb 26 21:09:35 2013 (r247351) @@ -323,14 +323,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, @@ -349,14 +349,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); Modified: user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/usr.bin/truss/syscalls.c Tue Feb 26 21:09:35 2013 (r247351) @@ -1126,14 +1126,14 @@ print_syscall(struct trussinfo *trussinf } if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); @@ -1165,9 +1165,9 @@ print_syscall_ret(struct trussinfo *trus if (!sc) return; clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after); - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); - timespecadd_to(&sc->time, &timediff, &sc->time); + timespecadd(&sc->time, &timediff, &sc->time); sc->ncalls++; if (errorp) sc->nerror++; @@ -1205,7 +1205,7 @@ print_summary(struct trussinfo *trussinf fprintf(trussinfo->outfile, "%-20s%5jd.%09ld%8d%8d\n", sc->name, (intmax_t)sc->time.tv_sec, sc->time.tv_nsec, sc->ncalls, sc->nerror); - timespecadd_to(&total, &sc->time, &total); + timespecadd(&total, &sc->time, &total); ncall += sc->ncalls; nerror += sc->nerror; } Modified: user/attilio/vmobj-rwlock/usr.bin/truss/truss.h ============================================================================== --- user/attilio/vmobj-rwlock/usr.bin/truss/truss.h Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/usr.bin/truss/truss.h Tue Feb 26 21:09:35 2013 (r247351) @@ -62,7 +62,7 @@ struct trussinfo SLIST_HEAD(, threadinfo) threadlist; }; -#define timespecsubt_to(tvp, uvp, vvp) \ +#define timespecsubt(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec - (uvp)->tv_nsec; \ @@ -72,7 +72,7 @@ struct trussinfo } \ } while (0) -#define timespecadd_to(tvp, uvp, vvp) \ +#define timespecadd(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec + (uvp)->tv_nsec; \ Modified: user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_block.c ============================================================================== --- user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:05:06 2013 (r247350) +++ user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:09:35 2013 (r247351) @@ -110,8 +110,9 @@ CTASSERT(sizeof(struct vtblk_config) == * Fixed-size block header */ struct virtio_blk_hdr { -#define VBH_OP_READ 0 -#define VBH_OP_WRITE 1 +#define VBH_OP_READ 0 +#define VBH_OP_WRITE 1 +#define VBH_FLAG_BARRIER 0x80000000 /* OR'ed into vbh_type */ uint32_t vbh_type; uint32_t vbh_ioprio; uint64_t vbh_sector; @@ -198,7 +199,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *s int iolen; int nsegs; int uidx, aidx, didx; - int writeop; + int writeop, type; off_t offset; uidx = *hq->hq_used_idx; @@ -232,7 +233,13 @@ pci_vtblk_proc(struct pci_vtblk_softc *s assert(vid[0].vd_flags & VRING_DESC_F_NEXT); assert((vid[0].vd_flags & VRING_DESC_F_WRITE) == 0); - writeop = (vbh->vbh_type == VBH_OP_WRITE); + /* + * XXX + * The guest should not be setting the BARRIER flag because + * we don't advertise the capability. + */ + type = vbh->vbh_type & ~VBH_FLAG_BARRIER; + writeop = (type == VBH_OP_WRITE); offset = vbh->vbh_sector * DEV_BSIZE; From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 21:13:14 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 34AA7884; Tue, 26 Feb 2013 21:13:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2535F102; Tue, 26 Feb 2013 21:13:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QLDEqQ066026; Tue, 26 Feb 2013 21:13:14 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QLD9vZ065992; Tue, 26 Feb 2013 21:13:09 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262113.r1QLD9vZ065992@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 21:13:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247352 - in user/attilio/vmcontention: lib/libkiconv lib/libpmc sbin/hastctl share/man/man4 sys/arm/arm sys/arm/include sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/cpufreq s... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 21:13:14 -0000 Author: attilio Date: Tue Feb 26 21:13:09 2013 New Revision: 247352 URL: http://svnweb.freebsd.org/changeset/base/247352 Log: MFC Modified: user/attilio/vmcontention/lib/libkiconv/kiconv.3 user/attilio/vmcontention/lib/libpmc/pmc.soft.3 user/attilio/vmcontention/sbin/hastctl/hastctl.c user/attilio/vmcontention/share/man/man4/cxgbe.4 user/attilio/vmcontention/sys/arm/arm/mp_machdep.c user/attilio/vmcontention/sys/arm/arm/vfp.c user/attilio/vmcontention/sys/arm/include/vfp.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmcontention/sys/dev/cpufreq/ichss.c user/attilio/vmcontention/sys/dev/cxgbe/common/common.h user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c user/attilio/vmcontention/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmcontention/sys/dev/random/randomdev_soft.c user/attilio/vmcontention/sys/kern/kern_clock.c user/attilio/vmcontention/sys/kern/kern_clocksource.c user/attilio/vmcontention/sys/sys/time.h user/attilio/vmcontention/sys/vm/vm_object.c user/attilio/vmcontention/sys/vm/vnode_pager.c user/attilio/vmcontention/usr.bin/truss/main.c user/attilio/vmcontention/usr.bin/truss/syscalls.c user/attilio/vmcontention/usr.bin/truss/truss.h user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_block.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/share/man/man4/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/usr.sbin/bhyve/ (props changed) Modified: user/attilio/vmcontention/lib/libkiconv/kiconv.3 ============================================================================== --- user/attilio/vmcontention/lib/libkiconv/kiconv.3 Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/lib/libkiconv/kiconv.3 Tue Feb 26 21:13:09 2013 (r247352) @@ -126,5 +126,4 @@ not using .Sh SEE ALSO .Xr iconv 3 , .Xr tolower 3 , -.Xr toupper 3 , -.Xr iconv 9 +.Xr toupper 3 Modified: user/attilio/vmcontention/lib/libpmc/pmc.soft.3 ============================================================================== --- user/attilio/vmcontention/lib/libpmc/pmc.soft.3 Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/lib/libpmc/pmc.soft.3 Tue Feb 26 21:13:09 2013 (r247352) @@ -23,7 +23,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 28, 2012 +.Dd February 26, 2013 .Dt PMC.SOFT 3 .Os .Sh NAME @@ -61,6 +61,8 @@ The event specifiers supported by softwa Hard clock ticks. .It Li CLOCK.STAT Stat clock ticks. +.It Li CLOCK.PROF +Profiling clock ticks. .It Li LOCK.FAILED Lock acquisition failed. .It Li PAGE_FAULT.ALL Modified: user/attilio/vmcontention/sbin/hastctl/hastctl.c ============================================================================== --- user/attilio/vmcontention/sbin/hastctl/hastctl.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sbin/hastctl/hastctl.c Tue Feb 26 21:13:09 2013 (r247352) @@ -342,15 +342,15 @@ control_status(struct nv *nv) (intmax_t)nv_get_uint64(nv, "dirty%u", ii)); printf(" statistics:\n"); printf(" reads: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_read%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_read%u", ii)); printf(" writes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_write%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_write%u", ii)); printf(" deletes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_delete%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_delete%u", ii)); printf(" flushes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_flush%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_flush%u", ii)); printf(" activemap updates: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); printf(" local errors: " "read: %ju, write: %ju, delete: %ju, flush: %ju\n", (uintmax_t)nv_get_uint64(nv, "stat_read_error%u", ii), Modified: user/attilio/vmcontention/share/man/man4/cxgbe.4 ============================================================================== --- user/attilio/vmcontention/share/man/man4/cxgbe.4 Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/share/man/man4/cxgbe.4 Tue Feb 26 21:13:09 2013 (r247352) @@ -178,6 +178,15 @@ Bit 0 represents INTx (line interrupts), The default is 7 (all allowed). The driver will select the best possible type out of the allowed types by itself. +.It Va hw.cxgbe.fw_install +0 prohibits the driver from installing a firmware on the card. +1 allows the driver to install a new firmware if internal driver +heuristics indicate that the new firmware is preferable to the one +already on the card. +2 instructs the driver to always install the new firmware on the card as +long as it is compatible with the driver and is a different version than +the one already on the card. +The default is 1. .It Va hw.cxgbe.config_file Select a pre-packaged device configuration file. A configuration file contains a recipe for partitioning and configuring the Modified: user/attilio/vmcontention/sys/arm/arm/mp_machdep.c ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/mp_machdep.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/arm/arm/mp_machdep.c Tue Feb 26 21:13:09 2013 (r247352) @@ -49,6 +49,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef ARM_VFP_SUPPORT +#include +#endif #include "opt_smp.h" @@ -181,6 +184,11 @@ init_secondary(int cpu) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); pc->pc_curthread = pc->pc_idlethread; pc->pc_curpcb = pc->pc_idlethread->td_pcb; +#ifdef ARM_VFP_SUPPORT + pc->pc_cpu = cpu; + + vfp_init(); +#endif mtx_lock_spin(&ap_boot_mtx); Modified: user/attilio/vmcontention/sys/arm/arm/vfp.c ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/vfp.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/arm/arm/vfp.c Tue Feb 26 21:13:09 2013 (r247352) @@ -43,7 +43,6 @@ unsigned int get_coprocessorACR(void); int vfp_bounce(u_int, u_int, struct trapframe *, int); void vfp_discard(void); void vfp_enable(void); -void vfp_init(void); void vfp_restore(struct vfp_state *); void vfp_store(struct vfp_state *); void set_coprocessorACR(u_int); @@ -74,8 +73,8 @@ void set_coprocessorACR(u_int val) { __asm __volatile("mcr p15, 0, %0, c1, c0, 2\n\t" - "isb\n\t" : : "r" (val) : "cc"); + isb(); } @@ -140,7 +139,7 @@ vfp_bounce(u_int addr, u_int insn, struc #ifdef SMP /* don't save if newer registers are on another processor */ if (vfptd /* && (vfptd == curthread) */ && - (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(vfpcpu)) + (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(cpu))) #else /* someone did not save their registers, */ if (vfptd /* && (vfptd == curthread) */) @@ -168,7 +167,7 @@ vfp_bounce(u_int addr, u_int insn, struc */ vfp_restore(&curpcb->pcb_vfpstate); #ifdef SMP - curpcb->pcb_cpu = PCPU_GET(cpu); + curpcb->pcb_vfpcpu = PCPU_GET(cpu); #endif PCPU_SET(vfpcthread, PCPU_GET(curthread)); return 0; Modified: user/attilio/vmcontention/sys/arm/include/vfp.h ============================================================================== --- user/attilio/vmcontention/sys/arm/include/vfp.h Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/arm/include/vfp.h Tue Feb 26 21:13:09 2013 (r247352) @@ -124,5 +124,6 @@ #define COPROC10 (0x3 << 20) #define COPROC11 (0x3 << 22) +void vfp_init(void); #endif Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c ============================================================================== --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:13:09 2013 (r247352) @@ -23,6 +23,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2013 Martin Matuska . All rights reserved. */ #include @@ -3205,7 +3206,10 @@ vdev_deadman(vdev_t *vd) fio->io_timestamp, delta, vq->vq_io_complete_ts); fm_panic("I/O to pool '%s' appears to be " - "hung.", spa_name(spa)); + "hung on vdev guid %llu at '%s'.", + spa_name(spa), + (long long unsigned int) vd->vdev_guid, + vd->vdev_path); } } mutex_exit(&vq->vq_lock); Modified: user/attilio/vmcontention/sys/dev/cpufreq/ichss.c ============================================================================== --- user/attilio/vmcontention/sys/dev/cpufreq/ichss.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/dev/cpufreq/ichss.c Tue Feb 26 21:13:09 2013 (r247352) @@ -67,7 +67,7 @@ struct ichss_softc { #define PCI_DEV_82801BA 0x244c /* ICH2M */ #define PCI_DEV_82801CA 0x248c /* ICH3M */ #define PCI_DEV_82801DB 0x24cc /* ICH4M */ -#define PCI_DEV_82815BA 0x1130 /* Unsupported/buggy part */ +#define PCI_DEV_82815_MC 0x1130 /* Unsupported/buggy part */ /* PCI config registers for finding PMBASE and enabling SpeedStep. */ #define ICHSS_PMBASE_OFFSET 0x40 @@ -155,9 +155,6 @@ ichss_identify(driver_t *driver, device_ * E.g. see Section 6.1 "PCI Devices and Functions" and table 6.1 of * Intel(r) 82801BA I/O Controller Hub 2 (ICH2) and Intel(r) 82801BAM * I/O Controller Hub 2 Mobile (ICH2-M). - * - * TODO: add a quirk to disable if we see the 82815_MC along - * with the 82801BA and revision < 5. */ ich_device = pci_find_bsf(0, 0x1f, 0); if (ich_device == NULL || @@ -167,6 +164,22 @@ ichss_identify(driver_t *driver, device_ pci_get_device(ich_device) != PCI_DEV_82801DB)) return; + /* + * Certain systems with ICH2 and an Intel 82815_MC host bridge + * where the host bridge's revision is < 5 lockup if SpeedStep + * is used. + */ + if (pci_get_device(ich_device) == PCI_DEV_82801BA) { + device_t hostb; + + hostb = pci_find_bsf(0, 0, 0); + if (hostb != NULL && + pci_get_vendor(hostb) == PCI_VENDOR_INTEL && + pci_get_device(hostb) == PCI_DEV_82815_MC && + pci_get_revid(hostb) < 5) + return; + } + /* Find the PMBASE register from our PCI config header. */ pmbase = pci_read_config(ich_device, ICHSS_PMBASE_OFFSET, sizeof(pmbase)); Modified: user/attilio/vmcontention/sys/dev/cxgbe/common/common.h ============================================================================== --- user/attilio/vmcontention/sys/dev/cxgbe/common/common.h Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/dev/cxgbe/common/common.h Tue Feb 26 21:13:09 2013 (r247352) @@ -68,6 +68,11 @@ enum { #define FW_VERSION_MICRO 4 #define FW_VERSION_BUILD 0 +#define FW_VERSION (V_FW_HDR_FW_VER_MAJOR(FW_VERSION_MAJOR) | \ + V_FW_HDR_FW_VER_MINOR(FW_VERSION_MINOR) | \ + V_FW_HDR_FW_VER_MICRO(FW_VERSION_MICRO) | \ + V_FW_HDR_FW_VER_BUILD(FW_VERSION_BUILD)) + struct port_stats { u64 tx_octets; /* total # of octets in good frames */ u64 tx_frames; /* all good frames */ Modified: user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c ============================================================================== --- user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:13:09 2013 (r247352) @@ -213,6 +213,13 @@ static char t4_cfg_file[32] = "default"; TUNABLE_STR("hw.cxgbe.config_file", t4_cfg_file, sizeof(t4_cfg_file)); /* + * Firmware auto-install by driver during attach (0, 1, 2 = prohibited, allowed, + * encouraged respectively). + */ +static unsigned int t4_fw_install = 1; +TUNABLE_INT("hw.cxgbe.fw_install", &t4_fw_install); + +/* * ASIC features that will be used. Disable the ones you don't want so that the * chip resources aren't wasted on features that will not be used. */ @@ -1503,6 +1510,33 @@ allocate: } /* + * Is the given firmware compatible with the one the driver was compiled with? + */ +static int +fw_compatible(const struct fw_hdr *hdr) +{ + + if (hdr->fw_ver == htonl(FW_VERSION)) + return (1); + + /* + * XXX: Is this too conservative? Perhaps I should limit this to the + * features that are supported in the driver. + */ + if (hdr->intfver_nic == FW_HDR_INTFVER_NIC && + hdr->intfver_vnic == FW_HDR_INTFVER_VNIC && + hdr->intfver_ofld == FW_HDR_INTFVER_OFLD && + hdr->intfver_ri == FW_HDR_INTFVER_RI && + hdr->intfver_iscsipdu == FW_HDR_INTFVER_ISCSIPDU && + hdr->intfver_iscsi == FW_HDR_INTFVER_ISCSI && + hdr->intfver_fcoepdu == FW_HDR_INTFVER_FCOEPDU && + hdr->intfver_fcoe == FW_HDR_INTFVER_FCOEPDU) + return (1); + + return (0); +} + +/* * Install a compatible firmware (if required), establish contact with it (by * saying hello), and reset the device. If we end up as the master driver, * partition adapter resources by providing a configuration file to the @@ -1512,84 +1546,99 @@ static int prep_firmware(struct adapter *sc) { const struct firmware *fw = NULL, *cfg = NULL, *default_cfg; - int rc; + int rc, card_fw_usable, kld_fw_usable; enum dev_state state; + struct fw_hdr *card_fw; + const struct fw_hdr *kld_fw; default_cfg = firmware_get(T4_CFGNAME); - /* Check firmware version and install a different one if necessary */ - rc = t4_check_fw_version(sc); - snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - if (rc != 0) { - uint32_t v = 0; - - fw = firmware_get(T4_FWNAME); - if (fw != NULL) { - const struct fw_hdr *hdr = (const void *)fw->data; + /* Read the header of the firmware on the card */ + card_fw = malloc(sizeof(*card_fw), M_CXGBE, M_ZERO | M_WAITOK); + rc = -t4_read_flash(sc, FLASH_FW_START, + sizeof (*card_fw) / sizeof (uint32_t), (uint32_t *)card_fw, 1); + if (rc == 0) + card_fw_usable = fw_compatible((const void*)card_fw); + else { + device_printf(sc->dev, + "Unable to read card's firmware header: %d\n", rc); + card_fw_usable = 0; + } - v = ntohl(hdr->fw_ver); + /* This is the firmware in the KLD */ + fw = firmware_get(T4_FWNAME); + if (fw != NULL) { + kld_fw = (const void *)fw->data; + kld_fw_usable = fw_compatible(kld_fw); + } else { + kld_fw = NULL; + kld_fw_usable = 0; + } - /* - * The firmware module will not be used if it isn't the - * same major version as what the driver was compiled - * with. - */ - if (G_FW_HDR_FW_VER_MAJOR(v) != FW_VERSION_MAJOR) { - device_printf(sc->dev, - "Found firmware image but version %d " - "can not be used with this driver (%d)\n", - G_FW_HDR_FW_VER_MAJOR(v), FW_VERSION_MAJOR); + /* + * Short circuit for the common case: the firmware on the card is an + * exact match and the KLD is an exact match too, or it's + * absent/incompatible, or we're prohibited from using it. Note that + * t4_fw_install = 2 is ignored here -- use cxgbetool loadfw if you want + * to reinstall the same firmware as the one on the card. + */ + if (card_fw_usable && card_fw->fw_ver == htonl(FW_VERSION) && + (!kld_fw_usable || kld_fw->fw_ver == htonl(FW_VERSION) || + t4_fw_install == 0)) + goto hello; + + if (kld_fw_usable && (!card_fw_usable || + ntohl(kld_fw->fw_ver) > ntohl(card_fw->fw_ver) || + (t4_fw_install == 2 && kld_fw->fw_ver != card_fw->fw_ver))) { + uint32_t v = ntohl(kld_fw->fw_ver); - firmware_put(fw, FIRMWARE_UNLOAD); - fw = NULL; - } - } + device_printf(sc->dev, + "installing firmware %d.%d.%d.%d on card.\n", + G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), + G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - if (fw == NULL && rc < 0) { - device_printf(sc->dev, "No usable firmware. " - "card has %d.%d.%d, driver compiled with %d.%d.%d", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - FW_VERSION_MAJOR, FW_VERSION_MINOR, - FW_VERSION_MICRO); - rc = EAGAIN; + rc = -t4_load_fw(sc, fw->data, fw->datasize); + if (rc != 0) { + device_printf(sc->dev, + "failed to install firmware: %d\n", rc); goto done; } - /* - * Always upgrade, even for minor/micro/build mismatches. - * Downgrade only for a major version mismatch or if - * force_firmware_install was specified. - */ - if (fw != NULL && (rc < 0 || v > sc->params.fw_vers)) { - device_printf(sc->dev, - "installing firmware %d.%d.%d.%d on card.\n", - G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), - G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - - rc = -t4_load_fw(sc, fw->data, fw->datasize); - if (rc != 0) { - device_printf(sc->dev, - "failed to install firmware: %d\n", rc); - goto done; - } else { - /* refresh */ - (void) t4_check_fw_version(sc); - snprintf(sc->fw_version, - sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - } - } + /* Installed successfully, update the cached header too. */ + memcpy(card_fw, kld_fw, sizeof(*card_fw)); + card_fw_usable = 1; + } + + if (!card_fw_usable) { + uint32_t c, k; + + c = ntohl(card_fw->fw_ver); + k = kld_fw ? ntohl(kld_fw->fw_ver) : 0; + + device_printf(sc->dev, "Cannot find a usable firmware: " + "fw_install %d, driver compiled with %d.%d.%d.%d, " + "card has %d.%d.%d.%d, KLD has %d.%d.%d.%d\n", + t4_fw_install, + G_FW_HDR_FW_VER_MAJOR(FW_VERSION), + G_FW_HDR_FW_VER_MINOR(FW_VERSION), + G_FW_HDR_FW_VER_MICRO(FW_VERSION), + G_FW_HDR_FW_VER_BUILD(FW_VERSION), + G_FW_HDR_FW_VER_MAJOR(c), G_FW_HDR_FW_VER_MINOR(c), + G_FW_HDR_FW_VER_MICRO(c), G_FW_HDR_FW_VER_BUILD(c), + G_FW_HDR_FW_VER_MAJOR(k), G_FW_HDR_FW_VER_MINOR(k), + G_FW_HDR_FW_VER_MICRO(k), G_FW_HDR_FW_VER_BUILD(k)); + goto done; } +hello: + /* We're using whatever's on the card and it's known to be good. */ + sc->params.fw_vers = ntohl(card_fw->fw_ver); + snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", + G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), + G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); + /* Contact firmware. */ rc = t4_fw_hello(sc, sc->mbox, sc->mbox, MASTER_MAY, &state); if (rc < 0) { @@ -1639,6 +1688,7 @@ prep_firmware(struct adapter *sc) sc->flags |= FW_OK; done: + free(card_fw, M_CXGBE); if (fw != NULL) firmware_put(fw, FIRMWARE_UNLOAD); if (cfg != NULL) Modified: user/attilio/vmcontention/sys/dev/hwpmc/hwpmc_soft.c ============================================================================== --- user/attilio/vmcontention/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:13:09 2013 (r247352) @@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$"); #define SOFT_CAPS (PMC_CAP_READ | PMC_CAP_WRITE | PMC_CAP_INTERRUPT | \ PMC_CAP_USER | PMC_CAP_SYSTEM) +PMC_SOFT_DECLARE( , , clock, prof); + struct soft_descr { struct pmc_descr pm_descr; /* "base class" */ }; @@ -125,6 +127,8 @@ soft_allocate_pmc(int cpu, int ri, struc return (EINVAL); pmc_soft_ev_release(ps); + if (ev == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_startprofclock(); return (0); } @@ -324,9 +328,8 @@ soft_release_pmc(int cpu, int ri, struct KASSERT(phw->phw_pmc == NULL, ("[soft,%d] PHW pmc %p non-NULL", __LINE__, phw->phw_pmc)); - /* - * Nothing to do. - */ + if (pmc->pm_event == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_stopprofclock(); return (0); } Modified: user/attilio/vmcontention/sys/dev/random/randomdev_soft.c ============================================================================== --- user/attilio/vmcontention/sys/dev/random/randomdev_soft.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/dev/random/randomdev_soft.c Tue Feb 26 21:13:09 2013 (r247352) @@ -391,7 +391,7 @@ random_yarrow_block(int flag) mtx_lock(&random_reseed_mtx); /* Blocking logic */ - while (random_systat.seeded && !error) { + while (!random_systat.seeded && !error) { if (flag & O_NONBLOCK) error = EWOULDBLOCK; else { Modified: user/attilio/vmcontention/sys/kern/kern_clock.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_clock.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/kern/kern_clock.c Tue Feb 26 21:13:09 2013 (r247352) @@ -78,6 +78,7 @@ __FBSDID("$FreeBSD$"); #include PMC_SOFT_DEFINE( , , clock, hard); PMC_SOFT_DEFINE( , , clock, stat); +PMC_SOFT_DEFINE( , , clock, prof); #endif #ifdef DEVICE_POLLING @@ -817,6 +818,10 @@ profclock_cnt(int cnt, int usermode, uin } } #endif +#ifdef HWPMC_HOOKS + if (td->td_intr_frame != NULL) + PMC_SOFT_CALL_TF( , , clock, prof, td->td_intr_frame); +#endif } /* Modified: user/attilio/vmcontention/sys/kern/kern_clocksource.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_clocksource.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/kern/kern_clocksource.c Tue Feb 26 21:13:09 2013 (r247352) @@ -732,12 +732,15 @@ cpu_startprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); - profiling = 1; - configtimer(1); + if (profiling == 0) { + if (periodic) { + configtimer(0); + profiling = 1; + configtimer(1); + } else + profiling = 1; } else - profiling = 1; + profiling++; ET_UNLOCK(); } @@ -749,12 +752,15 @@ cpu_stopprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); + if (profiling == 1) { + if (periodic) { + configtimer(0); + profiling = 0; + configtimer(1); + } else profiling = 0; - configtimer(1); } else - profiling = 0; + profiling--; ET_UNLOCK(); } Modified: user/attilio/vmcontention/sys/sys/time.h ============================================================================== --- user/attilio/vmcontention/sys/sys/time.h Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/sys/time.h Tue Feb 26 21:13:09 2013 (r247352) @@ -156,6 +156,9 @@ timeval2bintime(const struct timeval *tv /* 18446744073709 = int(2^64 / 1000000) */ bt->frac = tv->tv_usec * (uint64_t)18446744073709LL; } +#endif /* __BSD_VISIBLE */ + +#ifdef _KERNEL /* Operations on timespecs */ #define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) @@ -194,7 +197,7 @@ timeval2bintime(const struct timeval *tv /* timevaladd and timevalsub are not inlined */ -#endif /* __BSD_VISIBLE */ +#endif /* _KERNEL */ #ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ Modified: user/attilio/vmcontention/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_object.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/vm/vm_object.c Tue Feb 26 21:13:09 2013 (r247352) @@ -1176,7 +1176,7 @@ shadowlookup: if (object != tobject) VM_OBJECT_UNLOCK(object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo" , 0); + VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo", 0); VM_OBJECT_LOCK(object); goto relookup; } Modified: user/attilio/vmcontention/sys/vm/vnode_pager.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vnode_pager.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/sys/vm/vnode_pager.c Tue Feb 26 21:13:09 2013 (r247352) @@ -116,7 +116,7 @@ vnode_create_vobject(struct vnode *vp, o } VOP_UNLOCK(vp, 0); vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); } @@ -210,7 +210,7 @@ retry: if ((object->flags & OBJ_DEAD) == 0) break; vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead", 0); } if (vp->v_usecount == 0) Modified: user/attilio/vmcontention/usr.bin/truss/main.c ============================================================================== --- user/attilio/vmcontention/usr.bin/truss/main.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/usr.bin/truss/main.c Tue Feb 26 21:13:09 2013 (r247352) @@ -323,14 +323,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, @@ -349,14 +349,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); Modified: user/attilio/vmcontention/usr.bin/truss/syscalls.c ============================================================================== --- user/attilio/vmcontention/usr.bin/truss/syscalls.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/usr.bin/truss/syscalls.c Tue Feb 26 21:13:09 2013 (r247352) @@ -1126,14 +1126,14 @@ print_syscall(struct trussinfo *trussinf } if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); @@ -1165,9 +1165,9 @@ print_syscall_ret(struct trussinfo *trus if (!sc) return; clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after); - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); - timespecadd_to(&sc->time, &timediff, &sc->time); + timespecadd(&sc->time, &timediff, &sc->time); sc->ncalls++; if (errorp) sc->nerror++; @@ -1205,7 +1205,7 @@ print_summary(struct trussinfo *trussinf fprintf(trussinfo->outfile, "%-20s%5jd.%09ld%8d%8d\n", sc->name, (intmax_t)sc->time.tv_sec, sc->time.tv_nsec, sc->ncalls, sc->nerror); - timespecadd_to(&total, &sc->time, &total); + timespecadd(&total, &sc->time, &total); ncall += sc->ncalls; nerror += sc->nerror; } Modified: user/attilio/vmcontention/usr.bin/truss/truss.h ============================================================================== --- user/attilio/vmcontention/usr.bin/truss/truss.h Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/usr.bin/truss/truss.h Tue Feb 26 21:13:09 2013 (r247352) @@ -62,7 +62,7 @@ struct trussinfo SLIST_HEAD(, threadinfo) threadlist; }; -#define timespecsubt_to(tvp, uvp, vvp) \ +#define timespecsubt(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec - (uvp)->tv_nsec; \ @@ -72,7 +72,7 @@ struct trussinfo } \ } while (0) -#define timespecadd_to(tvp, uvp, vvp) \ +#define timespecadd(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec + (uvp)->tv_nsec; \ Modified: user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_block.c ============================================================================== --- user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:09:35 2013 (r247351) +++ user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:13:09 2013 (r247352) @@ -110,8 +110,9 @@ CTASSERT(sizeof(struct vtblk_config) == * Fixed-size block header */ struct virtio_blk_hdr { -#define VBH_OP_READ 0 -#define VBH_OP_WRITE 1 +#define VBH_OP_READ 0 +#define VBH_OP_WRITE 1 +#define VBH_FLAG_BARRIER 0x80000000 /* OR'ed into vbh_type */ uint32_t vbh_type; uint32_t vbh_ioprio; uint64_t vbh_sector; @@ -198,7 +199,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *s int iolen; int nsegs; int uidx, aidx, didx; - int writeop; + int writeop, type; off_t offset; uidx = *hq->hq_used_idx; @@ -232,7 +233,13 @@ pci_vtblk_proc(struct pci_vtblk_softc *s assert(vid[0].vd_flags & VRING_DESC_F_NEXT); assert((vid[0].vd_flags & VRING_DESC_F_WRITE) == 0); - writeop = (vbh->vbh_type == VBH_OP_WRITE); + /* + * XXX + * The guest should not be setting the BARRIER flag because + * we don't advertise the capability. + */ + type = vbh->vbh_type & ~VBH_FLAG_BARRIER; + writeop = (type == VBH_OP_WRITE); offset = vbh->vbh_sector * DEV_BSIZE; From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 21:17:43 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 48B80B00; Tue, 26 Feb 2013 21:17:43 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2C3FE129; Tue, 26 Feb 2013 21:17:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QLHhIb066720; Tue, 26 Feb 2013 21:17:43 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QLHcA9066690; Tue, 26 Feb 2013 21:17:38 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262117.r1QLHcA9066690@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 21:17:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247354 - in user/attilio/vmc-playground: lib/libkiconv lib/libpmc sbin/hastctl share/man/man4 sys/arm/arm sys/arm/include sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/cpufreq... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 21:17:43 -0000 Author: attilio Date: Tue Feb 26 21:17:38 2013 New Revision: 247354 URL: http://svnweb.freebsd.org/changeset/base/247354 Log: Merge from vmcontention Modified: user/attilio/vmc-playground/lib/libkiconv/kiconv.3 user/attilio/vmc-playground/lib/libpmc/pmc.soft.3 user/attilio/vmc-playground/sbin/hastctl/hastctl.c user/attilio/vmc-playground/share/man/man4/cxgbe.4 user/attilio/vmc-playground/sys/arm/arm/mp_machdep.c user/attilio/vmc-playground/sys/arm/arm/vfp.c user/attilio/vmc-playground/sys/arm/include/vfp.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmc-playground/sys/dev/cpufreq/ichss.c user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_soft.c user/attilio/vmc-playground/sys/dev/random/randomdev_soft.c user/attilio/vmc-playground/sys/kern/kern_clock.c user/attilio/vmc-playground/sys/kern/kern_clocksource.c user/attilio/vmc-playground/sys/sys/time.h user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vnode_pager.c user/attilio/vmc-playground/usr.bin/truss/main.c user/attilio/vmc-playground/usr.bin/truss/syscalls.c user/attilio/vmc-playground/usr.bin/truss/truss.h user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_block.c Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/share/man/man4/ (props changed) user/attilio/vmc-playground/sys/ (props changed) user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/usr.sbin/bhyve/ (props changed) Modified: user/attilio/vmc-playground/lib/libkiconv/kiconv.3 ============================================================================== --- user/attilio/vmc-playground/lib/libkiconv/kiconv.3 Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/lib/libkiconv/kiconv.3 Tue Feb 26 21:17:38 2013 (r247354) @@ -126,5 +126,4 @@ not using .Sh SEE ALSO .Xr iconv 3 , .Xr tolower 3 , -.Xr toupper 3 , -.Xr iconv 9 +.Xr toupper 3 Modified: user/attilio/vmc-playground/lib/libpmc/pmc.soft.3 ============================================================================== --- user/attilio/vmc-playground/lib/libpmc/pmc.soft.3 Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/lib/libpmc/pmc.soft.3 Tue Feb 26 21:17:38 2013 (r247354) @@ -23,7 +23,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 28, 2012 +.Dd February 26, 2013 .Dt PMC.SOFT 3 .Os .Sh NAME @@ -61,6 +61,8 @@ The event specifiers supported by softwa Hard clock ticks. .It Li CLOCK.STAT Stat clock ticks. +.It Li CLOCK.PROF +Profiling clock ticks. .It Li LOCK.FAILED Lock acquisition failed. .It Li PAGE_FAULT.ALL Modified: user/attilio/vmc-playground/sbin/hastctl/hastctl.c ============================================================================== --- user/attilio/vmc-playground/sbin/hastctl/hastctl.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sbin/hastctl/hastctl.c Tue Feb 26 21:17:38 2013 (r247354) @@ -342,15 +342,15 @@ control_status(struct nv *nv) (intmax_t)nv_get_uint64(nv, "dirty%u", ii)); printf(" statistics:\n"); printf(" reads: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_read%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_read%u", ii)); printf(" writes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_write%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_write%u", ii)); printf(" deletes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_delete%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_delete%u", ii)); printf(" flushes: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_flush%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_flush%u", ii)); printf(" activemap updates: %ju\n", - (uint64_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); + (uintmax_t)nv_get_uint64(nv, "stat_activemap_update%u", ii)); printf(" local errors: " "read: %ju, write: %ju, delete: %ju, flush: %ju\n", (uintmax_t)nv_get_uint64(nv, "stat_read_error%u", ii), Modified: user/attilio/vmc-playground/share/man/man4/cxgbe.4 ============================================================================== --- user/attilio/vmc-playground/share/man/man4/cxgbe.4 Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/share/man/man4/cxgbe.4 Tue Feb 26 21:17:38 2013 (r247354) @@ -178,6 +178,15 @@ Bit 0 represents INTx (line interrupts), The default is 7 (all allowed). The driver will select the best possible type out of the allowed types by itself. +.It Va hw.cxgbe.fw_install +0 prohibits the driver from installing a firmware on the card. +1 allows the driver to install a new firmware if internal driver +heuristics indicate that the new firmware is preferable to the one +already on the card. +2 instructs the driver to always install the new firmware on the card as +long as it is compatible with the driver and is a different version than +the one already on the card. +The default is 1. .It Va hw.cxgbe.config_file Select a pre-packaged device configuration file. A configuration file contains a recipe for partitioning and configuring the Modified: user/attilio/vmc-playground/sys/arm/arm/mp_machdep.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/arm/mp_machdep.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/arm/arm/mp_machdep.c Tue Feb 26 21:17:38 2013 (r247354) @@ -49,6 +49,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef ARM_VFP_SUPPORT +#include +#endif #include "opt_smp.h" @@ -181,6 +184,11 @@ init_secondary(int cpu) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); pc->pc_curthread = pc->pc_idlethread; pc->pc_curpcb = pc->pc_idlethread->td_pcb; +#ifdef ARM_VFP_SUPPORT + pc->pc_cpu = cpu; + + vfp_init(); +#endif mtx_lock_spin(&ap_boot_mtx); Modified: user/attilio/vmc-playground/sys/arm/arm/vfp.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/arm/vfp.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/arm/arm/vfp.c Tue Feb 26 21:17:38 2013 (r247354) @@ -43,7 +43,6 @@ unsigned int get_coprocessorACR(void); int vfp_bounce(u_int, u_int, struct trapframe *, int); void vfp_discard(void); void vfp_enable(void); -void vfp_init(void); void vfp_restore(struct vfp_state *); void vfp_store(struct vfp_state *); void set_coprocessorACR(u_int); @@ -74,8 +73,8 @@ void set_coprocessorACR(u_int val) { __asm __volatile("mcr p15, 0, %0, c1, c0, 2\n\t" - "isb\n\t" : : "r" (val) : "cc"); + isb(); } @@ -140,7 +139,7 @@ vfp_bounce(u_int addr, u_int insn, struc #ifdef SMP /* don't save if newer registers are on another processor */ if (vfptd /* && (vfptd == curthread) */ && - (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(vfpcpu)) + (vfptd->td_pcb->pcb_vfpcpu == PCPU_GET(cpu))) #else /* someone did not save their registers, */ if (vfptd /* && (vfptd == curthread) */) @@ -168,7 +167,7 @@ vfp_bounce(u_int addr, u_int insn, struc */ vfp_restore(&curpcb->pcb_vfpstate); #ifdef SMP - curpcb->pcb_cpu = PCPU_GET(cpu); + curpcb->pcb_vfpcpu = PCPU_GET(cpu); #endif PCPU_SET(vfpcthread, PCPU_GET(curthread)); return 0; Modified: user/attilio/vmc-playground/sys/arm/include/vfp.h ============================================================================== --- user/attilio/vmc-playground/sys/arm/include/vfp.h Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/arm/include/vfp.h Tue Feb 26 21:17:38 2013 (r247354) @@ -124,5 +124,6 @@ #define COPROC10 (0x3 << 20) #define COPROC11 (0x3 << 22) +void vfp_init(void); #endif Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c ============================================================================== --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Tue Feb 26 21:17:38 2013 (r247354) @@ -23,6 +23,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2013 Martin Matuska . All rights reserved. */ #include @@ -3205,7 +3206,10 @@ vdev_deadman(vdev_t *vd) fio->io_timestamp, delta, vq->vq_io_complete_ts); fm_panic("I/O to pool '%s' appears to be " - "hung.", spa_name(spa)); + "hung on vdev guid %llu at '%s'.", + spa_name(spa), + (long long unsigned int) vd->vdev_guid, + vd->vdev_path); } } mutex_exit(&vq->vq_lock); Modified: user/attilio/vmc-playground/sys/dev/cpufreq/ichss.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/cpufreq/ichss.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/dev/cpufreq/ichss.c Tue Feb 26 21:17:38 2013 (r247354) @@ -67,7 +67,7 @@ struct ichss_softc { #define PCI_DEV_82801BA 0x244c /* ICH2M */ #define PCI_DEV_82801CA 0x248c /* ICH3M */ #define PCI_DEV_82801DB 0x24cc /* ICH4M */ -#define PCI_DEV_82815BA 0x1130 /* Unsupported/buggy part */ +#define PCI_DEV_82815_MC 0x1130 /* Unsupported/buggy part */ /* PCI config registers for finding PMBASE and enabling SpeedStep. */ #define ICHSS_PMBASE_OFFSET 0x40 @@ -155,9 +155,6 @@ ichss_identify(driver_t *driver, device_ * E.g. see Section 6.1 "PCI Devices and Functions" and table 6.1 of * Intel(r) 82801BA I/O Controller Hub 2 (ICH2) and Intel(r) 82801BAM * I/O Controller Hub 2 Mobile (ICH2-M). - * - * TODO: add a quirk to disable if we see the 82815_MC along - * with the 82801BA and revision < 5. */ ich_device = pci_find_bsf(0, 0x1f, 0); if (ich_device == NULL || @@ -167,6 +164,22 @@ ichss_identify(driver_t *driver, device_ pci_get_device(ich_device) != PCI_DEV_82801DB)) return; + /* + * Certain systems with ICH2 and an Intel 82815_MC host bridge + * where the host bridge's revision is < 5 lockup if SpeedStep + * is used. + */ + if (pci_get_device(ich_device) == PCI_DEV_82801BA) { + device_t hostb; + + hostb = pci_find_bsf(0, 0, 0); + if (hostb != NULL && + pci_get_vendor(hostb) == PCI_VENDOR_INTEL && + pci_get_device(hostb) == PCI_DEV_82815_MC && + pci_get_revid(hostb) < 5) + return; + } + /* Find the PMBASE register from our PCI config header. */ pmbase = pci_read_config(ich_device, ICHSS_PMBASE_OFFSET, sizeof(pmbase)); Modified: user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h ============================================================================== --- user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h Tue Feb 26 21:17:38 2013 (r247354) @@ -68,6 +68,11 @@ enum { #define FW_VERSION_MICRO 4 #define FW_VERSION_BUILD 0 +#define FW_VERSION (V_FW_HDR_FW_VER_MAJOR(FW_VERSION_MAJOR) | \ + V_FW_HDR_FW_VER_MINOR(FW_VERSION_MINOR) | \ + V_FW_HDR_FW_VER_MICRO(FW_VERSION_MICRO) | \ + V_FW_HDR_FW_VER_BUILD(FW_VERSION_BUILD)) + struct port_stats { u64 tx_octets; /* total # of octets in good frames */ u64 tx_frames; /* all good frames */ Modified: user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c Tue Feb 26 21:17:38 2013 (r247354) @@ -213,6 +213,13 @@ static char t4_cfg_file[32] = "default"; TUNABLE_STR("hw.cxgbe.config_file", t4_cfg_file, sizeof(t4_cfg_file)); /* + * Firmware auto-install by driver during attach (0, 1, 2 = prohibited, allowed, + * encouraged respectively). + */ +static unsigned int t4_fw_install = 1; +TUNABLE_INT("hw.cxgbe.fw_install", &t4_fw_install); + +/* * ASIC features that will be used. Disable the ones you don't want so that the * chip resources aren't wasted on features that will not be used. */ @@ -1503,6 +1510,33 @@ allocate: } /* + * Is the given firmware compatible with the one the driver was compiled with? + */ +static int +fw_compatible(const struct fw_hdr *hdr) +{ + + if (hdr->fw_ver == htonl(FW_VERSION)) + return (1); + + /* + * XXX: Is this too conservative? Perhaps I should limit this to the + * features that are supported in the driver. + */ + if (hdr->intfver_nic == FW_HDR_INTFVER_NIC && + hdr->intfver_vnic == FW_HDR_INTFVER_VNIC && + hdr->intfver_ofld == FW_HDR_INTFVER_OFLD && + hdr->intfver_ri == FW_HDR_INTFVER_RI && + hdr->intfver_iscsipdu == FW_HDR_INTFVER_ISCSIPDU && + hdr->intfver_iscsi == FW_HDR_INTFVER_ISCSI && + hdr->intfver_fcoepdu == FW_HDR_INTFVER_FCOEPDU && + hdr->intfver_fcoe == FW_HDR_INTFVER_FCOEPDU) + return (1); + + return (0); +} + +/* * Install a compatible firmware (if required), establish contact with it (by * saying hello), and reset the device. If we end up as the master driver, * partition adapter resources by providing a configuration file to the @@ -1512,84 +1546,99 @@ static int prep_firmware(struct adapter *sc) { const struct firmware *fw = NULL, *cfg = NULL, *default_cfg; - int rc; + int rc, card_fw_usable, kld_fw_usable; enum dev_state state; + struct fw_hdr *card_fw; + const struct fw_hdr *kld_fw; default_cfg = firmware_get(T4_CFGNAME); - /* Check firmware version and install a different one if necessary */ - rc = t4_check_fw_version(sc); - snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - if (rc != 0) { - uint32_t v = 0; - - fw = firmware_get(T4_FWNAME); - if (fw != NULL) { - const struct fw_hdr *hdr = (const void *)fw->data; + /* Read the header of the firmware on the card */ + card_fw = malloc(sizeof(*card_fw), M_CXGBE, M_ZERO | M_WAITOK); + rc = -t4_read_flash(sc, FLASH_FW_START, + sizeof (*card_fw) / sizeof (uint32_t), (uint32_t *)card_fw, 1); + if (rc == 0) + card_fw_usable = fw_compatible((const void*)card_fw); + else { + device_printf(sc->dev, + "Unable to read card's firmware header: %d\n", rc); + card_fw_usable = 0; + } - v = ntohl(hdr->fw_ver); + /* This is the firmware in the KLD */ + fw = firmware_get(T4_FWNAME); + if (fw != NULL) { + kld_fw = (const void *)fw->data; + kld_fw_usable = fw_compatible(kld_fw); + } else { + kld_fw = NULL; + kld_fw_usable = 0; + } - /* - * The firmware module will not be used if it isn't the - * same major version as what the driver was compiled - * with. - */ - if (G_FW_HDR_FW_VER_MAJOR(v) != FW_VERSION_MAJOR) { - device_printf(sc->dev, - "Found firmware image but version %d " - "can not be used with this driver (%d)\n", - G_FW_HDR_FW_VER_MAJOR(v), FW_VERSION_MAJOR); + /* + * Short circuit for the common case: the firmware on the card is an + * exact match and the KLD is an exact match too, or it's + * absent/incompatible, or we're prohibited from using it. Note that + * t4_fw_install = 2 is ignored here -- use cxgbetool loadfw if you want + * to reinstall the same firmware as the one on the card. + */ + if (card_fw_usable && card_fw->fw_ver == htonl(FW_VERSION) && + (!kld_fw_usable || kld_fw->fw_ver == htonl(FW_VERSION) || + t4_fw_install == 0)) + goto hello; + + if (kld_fw_usable && (!card_fw_usable || + ntohl(kld_fw->fw_ver) > ntohl(card_fw->fw_ver) || + (t4_fw_install == 2 && kld_fw->fw_ver != card_fw->fw_ver))) { + uint32_t v = ntohl(kld_fw->fw_ver); - firmware_put(fw, FIRMWARE_UNLOAD); - fw = NULL; - } - } + device_printf(sc->dev, + "installing firmware %d.%d.%d.%d on card.\n", + G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), + G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - if (fw == NULL && rc < 0) { - device_printf(sc->dev, "No usable firmware. " - "card has %d.%d.%d, driver compiled with %d.%d.%d", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - FW_VERSION_MAJOR, FW_VERSION_MINOR, - FW_VERSION_MICRO); - rc = EAGAIN; + rc = -t4_load_fw(sc, fw->data, fw->datasize); + if (rc != 0) { + device_printf(sc->dev, + "failed to install firmware: %d\n", rc); goto done; } - /* - * Always upgrade, even for minor/micro/build mismatches. - * Downgrade only for a major version mismatch or if - * force_firmware_install was specified. - */ - if (fw != NULL && (rc < 0 || v > sc->params.fw_vers)) { - device_printf(sc->dev, - "installing firmware %d.%d.%d.%d on card.\n", - G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), - G_FW_HDR_FW_VER_MICRO(v), G_FW_HDR_FW_VER_BUILD(v)); - - rc = -t4_load_fw(sc, fw->data, fw->datasize); - if (rc != 0) { - device_printf(sc->dev, - "failed to install firmware: %d\n", rc); - goto done; - } else { - /* refresh */ - (void) t4_check_fw_version(sc); - snprintf(sc->fw_version, - sizeof(sc->fw_version), "%u.%u.%u.%u", - G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), - G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), - G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); - } - } + /* Installed successfully, update the cached header too. */ + memcpy(card_fw, kld_fw, sizeof(*card_fw)); + card_fw_usable = 1; + } + + if (!card_fw_usable) { + uint32_t c, k; + + c = ntohl(card_fw->fw_ver); + k = kld_fw ? ntohl(kld_fw->fw_ver) : 0; + + device_printf(sc->dev, "Cannot find a usable firmware: " + "fw_install %d, driver compiled with %d.%d.%d.%d, " + "card has %d.%d.%d.%d, KLD has %d.%d.%d.%d\n", + t4_fw_install, + G_FW_HDR_FW_VER_MAJOR(FW_VERSION), + G_FW_HDR_FW_VER_MINOR(FW_VERSION), + G_FW_HDR_FW_VER_MICRO(FW_VERSION), + G_FW_HDR_FW_VER_BUILD(FW_VERSION), + G_FW_HDR_FW_VER_MAJOR(c), G_FW_HDR_FW_VER_MINOR(c), + G_FW_HDR_FW_VER_MICRO(c), G_FW_HDR_FW_VER_BUILD(c), + G_FW_HDR_FW_VER_MAJOR(k), G_FW_HDR_FW_VER_MINOR(k), + G_FW_HDR_FW_VER_MICRO(k), G_FW_HDR_FW_VER_BUILD(k)); + goto done; } +hello: + /* We're using whatever's on the card and it's known to be good. */ + sc->params.fw_vers = ntohl(card_fw->fw_ver); + snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u", + G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers), + G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers), + G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers)); + /* Contact firmware. */ rc = t4_fw_hello(sc, sc->mbox, sc->mbox, MASTER_MAY, &state); if (rc < 0) { @@ -1639,6 +1688,7 @@ prep_firmware(struct adapter *sc) sc->flags |= FW_OK; done: + free(card_fw, M_CXGBE); if (fw != NULL) firmware_put(fw, FIRMWARE_UNLOAD); if (cfg != NULL) Modified: user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_soft.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_soft.c Tue Feb 26 21:17:38 2013 (r247354) @@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$"); #define SOFT_CAPS (PMC_CAP_READ | PMC_CAP_WRITE | PMC_CAP_INTERRUPT | \ PMC_CAP_USER | PMC_CAP_SYSTEM) +PMC_SOFT_DECLARE( , , clock, prof); + struct soft_descr { struct pmc_descr pm_descr; /* "base class" */ }; @@ -125,6 +127,8 @@ soft_allocate_pmc(int cpu, int ri, struc return (EINVAL); pmc_soft_ev_release(ps); + if (ev == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_startprofclock(); return (0); } @@ -324,9 +328,8 @@ soft_release_pmc(int cpu, int ri, struct KASSERT(phw->phw_pmc == NULL, ("[soft,%d] PHW pmc %p non-NULL", __LINE__, phw->phw_pmc)); - /* - * Nothing to do. - */ + if (pmc->pm_event == pmc___clock_prof.ps_ev.pm_ev_code) + cpu_stopprofclock(); return (0); } Modified: user/attilio/vmc-playground/sys/dev/random/randomdev_soft.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/random/randomdev_soft.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/dev/random/randomdev_soft.c Tue Feb 26 21:17:38 2013 (r247354) @@ -391,7 +391,7 @@ random_yarrow_block(int flag) mtx_lock(&random_reseed_mtx); /* Blocking logic */ - while (random_systat.seeded && !error) { + while (!random_systat.seeded && !error) { if (flag & O_NONBLOCK) error = EWOULDBLOCK; else { Modified: user/attilio/vmc-playground/sys/kern/kern_clock.c ============================================================================== --- user/attilio/vmc-playground/sys/kern/kern_clock.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/kern/kern_clock.c Tue Feb 26 21:17:38 2013 (r247354) @@ -78,6 +78,7 @@ __FBSDID("$FreeBSD$"); #include PMC_SOFT_DEFINE( , , clock, hard); PMC_SOFT_DEFINE( , , clock, stat); +PMC_SOFT_DEFINE( , , clock, prof); #endif #ifdef DEVICE_POLLING @@ -817,6 +818,10 @@ profclock_cnt(int cnt, int usermode, uin } } #endif +#ifdef HWPMC_HOOKS + if (td->td_intr_frame != NULL) + PMC_SOFT_CALL_TF( , , clock, prof, td->td_intr_frame); +#endif } /* Modified: user/attilio/vmc-playground/sys/kern/kern_clocksource.c ============================================================================== --- user/attilio/vmc-playground/sys/kern/kern_clocksource.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/kern/kern_clocksource.c Tue Feb 26 21:17:38 2013 (r247354) @@ -732,12 +732,15 @@ cpu_startprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); - profiling = 1; - configtimer(1); + if (profiling == 0) { + if (periodic) { + configtimer(0); + profiling = 1; + configtimer(1); + } else + profiling = 1; } else - profiling = 1; + profiling++; ET_UNLOCK(); } @@ -749,12 +752,15 @@ cpu_stopprofclock(void) { ET_LOCK(); - if (periodic) { - configtimer(0); + if (profiling == 1) { + if (periodic) { + configtimer(0); + profiling = 0; + configtimer(1); + } else profiling = 0; - configtimer(1); } else - profiling = 0; + profiling--; ET_UNLOCK(); } Modified: user/attilio/vmc-playground/sys/sys/time.h ============================================================================== --- user/attilio/vmc-playground/sys/sys/time.h Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/sys/time.h Tue Feb 26 21:17:38 2013 (r247354) @@ -156,6 +156,9 @@ timeval2bintime(const struct timeval *tv /* 18446744073709 = int(2^64 / 1000000) */ bt->frac = tv->tv_usec * (uint64_t)18446744073709LL; } +#endif /* __BSD_VISIBLE */ + +#ifdef _KERNEL /* Operations on timespecs */ #define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) @@ -194,7 +197,7 @@ timeval2bintime(const struct timeval *tv /* timevaladd and timevalsub are not inlined */ -#endif /* __BSD_VISIBLE */ +#endif /* _KERNEL */ #ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ Modified: user/attilio/vmc-playground/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/vm/vm_object.c Tue Feb 26 21:17:38 2013 (r247354) @@ -1139,7 +1139,7 @@ shadowlookup: if (object != tobject) VM_OBJECT_UNLOCK(object); m->oflags |= VPO_WANTED; - VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo" , 0); + VM_OBJECT_SLEEP(tobject, m, PDROP | PVM, "madvpo", 0); VM_OBJECT_LOCK(object); goto relookup; } Modified: user/attilio/vmc-playground/sys/vm/vnode_pager.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vnode_pager.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/sys/vm/vnode_pager.c Tue Feb 26 21:17:38 2013 (r247354) @@ -116,7 +116,7 @@ vnode_create_vobject(struct vnode *vp, o } VOP_UNLOCK(vp, 0); vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vodead", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); } @@ -210,7 +210,7 @@ retry: if ((object->flags & OBJ_DEAD) == 0) break; vm_object_set_flag(object, OBJ_DISCONNECTWNT); - VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead" , 0); + VM_OBJECT_SLEEP(object, object, PDROP | PVM, "vadead", 0); } if (vp->v_usecount == 0) Modified: user/attilio/vmc-playground/usr.bin/truss/main.c ============================================================================== --- user/attilio/vmc-playground/usr.bin/truss/main.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/usr.bin/truss/main.c Tue Feb 26 21:17:38 2013 (r247354) @@ -323,14 +323,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, @@ -349,14 +349,14 @@ START_TRACE: fprintf(trussinfo->outfile, "%5d: ", trussinfo->pid); if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); Modified: user/attilio/vmc-playground/usr.bin/truss/syscalls.c ============================================================================== --- user/attilio/vmc-playground/usr.bin/truss/syscalls.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/usr.bin/truss/syscalls.c Tue Feb 26 21:17:38 2013 (r247354) @@ -1126,14 +1126,14 @@ print_syscall(struct trussinfo *trussinf } if (trussinfo->flags & ABSOLUTETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->start_time, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); } if (trussinfo->flags & RELATIVETIMESTAMPS) { - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); len += fprintf(trussinfo->outfile, "%ld.%09ld ", (long)timediff.tv_sec, timediff.tv_nsec); @@ -1165,9 +1165,9 @@ print_syscall_ret(struct trussinfo *trus if (!sc) return; clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after); - timespecsubt_to(&trussinfo->curthread->after, + timespecsubt(&trussinfo->curthread->after, &trussinfo->curthread->before, &timediff); - timespecadd_to(&sc->time, &timediff, &sc->time); + timespecadd(&sc->time, &timediff, &sc->time); sc->ncalls++; if (errorp) sc->nerror++; @@ -1205,7 +1205,7 @@ print_summary(struct trussinfo *trussinf fprintf(trussinfo->outfile, "%-20s%5jd.%09ld%8d%8d\n", sc->name, (intmax_t)sc->time.tv_sec, sc->time.tv_nsec, sc->ncalls, sc->nerror); - timespecadd_to(&total, &sc->time, &total); + timespecadd(&total, &sc->time, &total); ncall += sc->ncalls; nerror += sc->nerror; } Modified: user/attilio/vmc-playground/usr.bin/truss/truss.h ============================================================================== --- user/attilio/vmc-playground/usr.bin/truss/truss.h Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/usr.bin/truss/truss.h Tue Feb 26 21:17:38 2013 (r247354) @@ -62,7 +62,7 @@ struct trussinfo SLIST_HEAD(, threadinfo) threadlist; }; -#define timespecsubt_to(tvp, uvp, vvp) \ +#define timespecsubt(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec - (uvp)->tv_nsec; \ @@ -72,7 +72,7 @@ struct trussinfo } \ } while (0) -#define timespecadd_to(tvp, uvp, vvp) \ +#define timespecadd(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ (vvp)->tv_nsec = (tvp)->tv_nsec + (uvp)->tv_nsec; \ Modified: user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_block.c ============================================================================== --- user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:16:10 2013 (r247353) +++ user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_block.c Tue Feb 26 21:17:38 2013 (r247354) @@ -110,8 +110,9 @@ CTASSERT(sizeof(struct vtblk_config) == * Fixed-size block header */ struct virtio_blk_hdr { -#define VBH_OP_READ 0 -#define VBH_OP_WRITE 1 +#define VBH_OP_READ 0 +#define VBH_OP_WRITE 1 +#define VBH_FLAG_BARRIER 0x80000000 /* OR'ed into vbh_type */ uint32_t vbh_type; uint32_t vbh_ioprio; uint64_t vbh_sector; @@ -198,7 +199,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *s int iolen; int nsegs; int uidx, aidx, didx; - int writeop; + int writeop, type; off_t offset; uidx = *hq->hq_used_idx; @@ -232,7 +233,13 @@ pci_vtblk_proc(struct pci_vtblk_softc *s assert(vid[0].vd_flags & VRING_DESC_F_NEXT); assert((vid[0].vd_flags & VRING_DESC_F_WRITE) == 0); - writeop = (vbh->vbh_type == VBH_OP_WRITE); + /* + * XXX + * The guest should not be setting the BARRIER flag because + * we don't advertise the capability. + */ + type = vbh->vbh_type & ~VBH_FLAG_BARRIER; + writeop = (type == VBH_OP_WRITE); offset = vbh->vbh_sector * DEV_BSIZE; From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 23:43:31 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B5F3ACFC; Tue, 26 Feb 2013 23:43:31 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 8D1D39AB; Tue, 26 Feb 2013 23:43:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QNhVo2011964; Tue, 26 Feb 2013 23:43:31 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QNhT94011945; Tue, 26 Feb 2013 23:43:29 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262343.r1QNhT94011945@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 23:43:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247361 - in user/attilio/vmcontention: sbin/reboot sys/arm/arm sys/dev/cxgbe/common sys/dev/isp sys/powerpc/booke sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 23:43:31 -0000 Author: attilio Date: Tue Feb 26 23:43:28 2013 New Revision: 247361 URL: http://svnweb.freebsd.org/changeset/base/247361 Log: MFC Modified: user/attilio/vmcontention/sbin/reboot/boot_i386.8 user/attilio/vmcontention/sys/arm/arm/pmap-v6.c user/attilio/vmcontention/sys/arm/arm/pmap.c user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmcontention/sys/dev/isp/isp_freebsd.c user/attilio/vmcontention/sys/powerpc/booke/pmap.c user/attilio/vmcontention/sys/vm/swap_pager.c user/attilio/vmcontention/sys/vm/uma.h user/attilio/vmcontention/sys/vm/uma_core.c user/attilio/vmcontention/sys/vm/uma_int.h user/attilio/vmcontention/sys/vm/vm_map.c user/attilio/vmcontention/sys/vm/vm_object.c user/attilio/vmcontention/sys/vm/vm_object.h Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sys/ (props changed) Modified: user/attilio/vmcontention/sbin/reboot/boot_i386.8 ============================================================================== --- user/attilio/vmcontention/sbin/reboot/boot_i386.8 Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sbin/reboot/boot_i386.8 Tue Feb 26 23:43:28 2013 (r247361) @@ -220,15 +220,14 @@ you can use the option to force the kernel to use the serial port as its console device. The serial port driver -.Xr uart 4 +.Xr sio 4 +(but not +.Xr uart 4 ) has a flag (0x20) to override this option. If that flag is set, the serial port will always be used as the console, regardless of the .Fl h option described here. -See the man page for -.Xr uart 4 -for more details. .It Fl m mute the console to suppress all console input and output during the boot. Modified: user/attilio/vmcontention/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/pmap-v6.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/arm/arm/pmap-v6.c Tue Feb 26 23:43:28 2013 (r247361) @@ -392,7 +392,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1164,7 +1163,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmcontention/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/pmap.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/arm/arm/pmap.c Tue Feb 26 23:43:28 2013 (r247361) @@ -397,7 +397,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1828,7 +1827,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:43:28 2013 (r247361) @@ -154,6 +154,36 @@ u32 t4_hw_pci_read_cfg4(adapter_t *adap, } /* + * t4_report_fw_error - report firmware error + * @adap: the adapter + * + * The adapter firmware can indicate error conditions to the host. + * This routine prints out the reason for the firmware error (as + * reported by the firmware). + */ +static void t4_report_fw_error(struct adapter *adap) +{ + static const char *reason[] = { + "Crash", /* PCIE_FW_EVAL_CRASH */ + "During Device Preparation", /* PCIE_FW_EVAL_PREP */ + "During Device Configuration", /* PCIE_FW_EVAL_CONF */ + "During Device Initialization", /* PCIE_FW_EVAL_INIT */ + "Unexpected Event", /* PCIE_FW_EVAL_UNEXPECTEDEVENT */ + "Insufficient Airflow", /* PCIE_FW_EVAL_OVERHEAT */ + "Device Shutdown", /* PCIE_FW_EVAL_DEVICESHUTDOWN */ + "Reserved", /* reserved */ + }; + u32 pcie_fw; + + pcie_fw = t4_read_reg(adap, A_PCIE_FW); + if (!(pcie_fw & F_PCIE_FW_ERR)) + CH_ERR(adap, "Firmware error report called with no error\n"); + else + CH_ERR(adap, "Firmware reports adapter error: %s\n", + reason[G_PCIE_FW_EVAL(pcie_fw)]); +} + +/* * Get the reply to a mailbox command and store it in @rpl in big-endian order. */ static void get_mbox_rpl(struct adapter *adap, __be64 *rpl, int nflit, @@ -267,8 +297,15 @@ int t4_wr_mbox_meat(struct adapter *adap } } + /* + * We timed out waiting for a reply to our mailbox command. Report + * the error and also check to see if the firmware reported any + * errors ... + */ CH_ERR(adap, "command %#x in mailbox %d timed out\n", *(const u8 *)cmd, mbox); + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return -ETIMEDOUT; } @@ -2033,9 +2070,11 @@ static void cim_intr_handler(struct adap { F_TIMEOUTMAINT , "CIM PIF MA timeout", -1, 1 }, { 0 } }; - int fat; + if (t4_read_reg(adapter, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adapter); + fat = t4_handle_intr_status(adapter, A_CIM_HOST_INT_CAUSE, cim_intr_info) + t4_handle_intr_status(adapter, A_CIM_HOST_UPACC_INT_CAUSE, @@ -4103,12 +4142,16 @@ retry: /* * Issue the HELLO command to the firmware. If it's not successful * but indicates that we got a "busy" or "timeout" condition, retry - * the HELLO until we exhaust our retry limit. + * the HELLO until we exhaust our retry limit. If we do exceed our + * retry limit, check to see if the firmware left us any error + * information and report that if so ... */ ret = t4_wr_mbox(adap, mbox, &c, sizeof(c), &c); if (ret != FW_SUCCESS) { if ((ret == -EBUSY || ret == -ETIMEDOUT) && retries-- > 0) goto retry; + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return ret; } Modified: user/attilio/vmcontention/sys/dev/isp/isp_freebsd.c ============================================================================== --- user/attilio/vmcontention/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:43:28 2013 (r247361) @@ -4140,8 +4140,6 @@ isp_target_thread(ispsoftc_t *isp, int c return; } - ccb = xpt_alloc_ccb(); - ISP_LOCK(isp); status = cam_periph_alloc(isptargctor, NULL, isptargdtor, isptargstart, "isptarg", CAM_PERIPH_BIO, wpath, NULL, 0, softc); if (status != CAM_REQ_CMP) { Modified: user/attilio/vmcontention/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmcontention/sys/powerpc/booke/pmap.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/powerpc/booke/pmap.c Tue Feb 26 23:43:28 2013 (r247361) @@ -217,7 +217,6 @@ static struct rwlock_padalign pvh_global /* Data for the pv entry allocation mechanism */ 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; #define PV_ENTRY_ZONE_MIN 2048 /* min pv entries in uma zone */ @@ -1343,7 +1342,7 @@ mmu_booke_init(mmu_t mmu) TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); /* Pre-fill pvzone with initial number of pv entries. */ uma_prealloc(pvzone, PV_ENTRY_ZONE_MIN); Modified: user/attilio/vmcontention/sys/vm/swap_pager.c ============================================================================== --- user/attilio/vmcontention/sys/vm/swap_pager.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/swap_pager.c Tue Feb 26 23:43:28 2013 (r247361) @@ -343,7 +343,6 @@ SYSCTL_INT(_vm, OID_AUTO, swap_async_max static struct mtx sw_alloc_mtx; /* protect list manipulation */ static struct pagerlst swap_pager_object_list[NOBJLISTS]; static uma_zone_t swap_zone; -static struct vm_object swap_zone_obj; /* * pagerops for OBJT_SWAP - "swap pager". Some ops are also global procedure @@ -554,7 +553,7 @@ swap_pager_swap_init(void) if (swap_zone == NULL) panic("failed to create swap_zone."); do { - if (uma_zone_set_obj(swap_zone, &swap_zone_obj, n)) + if (uma_zone_reserve_kva(swap_zone, n)) break; /* * if the allocation failed, try a zone two thirds the Modified: user/attilio/vmcontention/sys/vm/uma.h ============================================================================== --- user/attilio/vmcontention/sys/vm/uma.h Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/uma.h Tue Feb 26 23:43:28 2013 (r247361) @@ -432,24 +432,23 @@ void uma_reclaim(void); void uma_set_align(int align); /* - * Switches the backing object of a zone + * Reserves the maximum KVA space required by the zone and configures the zone + * to use a VM_ALLOC_NOOBJ-based backend allocator. * * Arguments: * zone The zone to update. - * obj The VM object to use for future allocations. - * size The size of the object to allocate. + * nitems The upper limit on the number of items that can be allocated. * * Returns: - * 0 if kva space can not be allocated + * 0 if KVA space can not be allocated * 1 if successful * * Discussion: - * A NULL object can be used and uma will allocate one for you. Setting - * the size will limit the amount of memory allocated to this zone. - * + * When the machine supports a direct map and the zone's items are smaller + * than a page, the zone will use the direct map instead of allocating KVA + * space. */ -struct vm_object; -int uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int size); +int uma_zone_reserve_kva(uma_zone_t zone, int nitems); /* * Sets a high limit on the number of items allowed in a zone @@ -521,7 +520,7 @@ void uma_zone_set_zinit(uma_zone_t zone, void uma_zone_set_zfini(uma_zone_t zone, uma_fini zfini); /* - * Replaces the standard page_alloc or obj_alloc functions for this zone + * Replaces the standard backend allocator for this zone. * * Arguments: * zone The zone whose backend allocator is being changed. Modified: user/attilio/vmcontention/sys/vm/uma_core.c ============================================================================== --- user/attilio/vmcontention/sys/vm/uma_core.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/uma_core.c Tue Feb 26 23:43:28 2013 (r247361) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -213,7 +214,7 @@ enum zfreeskip { SKIP_NONE, SKIP_DTOR, S /* Prototypes.. */ -static void *obj_alloc(uma_zone_t, int, u_int8_t *, int); +static void *noobj_alloc(uma_zone_t, int, u_int8_t *, int); static void *page_alloc(uma_zone_t, int, u_int8_t *, int); static void *startup_alloc(uma_zone_t, int, u_int8_t *, int); static void page_free(void *, int, u_int8_t); @@ -1030,50 +1031,53 @@ page_alloc(uma_zone_t zone, int bytes, u * NULL if M_NOWAIT is set. */ static void * -obj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) +noobj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) { - vm_object_t object; + TAILQ_HEAD(, vm_page) alloctail; + u_long npages; vm_offset_t retkva, zkva; - vm_page_t p; - int pages, startpages; + vm_page_t p, p_next; uma_keg_t keg; + TAILQ_INIT(&alloctail); keg = zone_first_keg(zone); - object = keg->uk_obj; - retkva = 0; - /* - * This looks a little weird since we're getting one page at a time. - */ - VM_OBJECT_LOCK(object); - p = TAILQ_LAST(&object->memq, pglist); - pages = p != NULL ? p->pindex + 1 : 0; - startpages = pages; - zkva = keg->uk_kva + pages * PAGE_SIZE; - for (; bytes > 0; bytes -= PAGE_SIZE) { - p = vm_page_alloc(object, pages, - VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED); - if (p == NULL) { - if (pages != startpages) - pmap_qremove(retkva, pages - startpages); - while (pages != startpages) { - pages--; - p = TAILQ_LAST(&object->memq, pglist); - vm_page_unwire(p, 0); - vm_page_free(p); - } - retkva = 0; - goto done; + npages = howmany(bytes, PAGE_SIZE); + while (npages > 0) { + p = vm_page_alloc(NULL, 0, VM_ALLOC_INTERRUPT | + VM_ALLOC_WIRED | VM_ALLOC_NOOBJ); + if (p != NULL) { + /* + * Since the page does not belong to an object, its + * listq is unused. + */ + TAILQ_INSERT_TAIL(&alloctail, p, listq); + npages--; + continue; + } + if (wait & M_WAITOK) { + VM_WAIT; + continue; } + + /* + * Page allocation failed, free intermediate pages and + * exit. + */ + TAILQ_FOREACH_SAFE(p, &alloctail, listq, p_next) { + vm_page_unwire(p, 0); + vm_page_free(p); + } + return (NULL); + } + *flags = UMA_SLAB_PRIV; + zkva = keg->uk_kva + + atomic_fetchadd_long(&keg->uk_offset, round_page(bytes)); + retkva = zkva; + TAILQ_FOREACH(p, &alloctail, listq) { pmap_qenter(zkva, &p, 1); - if (retkva == 0) - retkva = zkva; zkva += PAGE_SIZE; - pages += 1; } -done: - VM_OBJECT_UNLOCK(object); - *flags = UMA_SLAB_PRIV; return ((void *)retkva); } @@ -3012,7 +3016,7 @@ uma_zone_set_allocf(uma_zone_t zone, uma /* See uma.h */ int -uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int count) +uma_zone_reserve_kva(uma_zone_t zone, int count) { uma_keg_t keg; vm_offset_t kva; @@ -3024,21 +3028,25 @@ uma_zone_set_obj(uma_zone_t zone, struct if (pages * keg->uk_ipers < count) pages++; - kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); - - if (kva == 0) - return (0); - if (obj == NULL) - obj = vm_object_allocate(OBJT_PHYS, pages); - else { - VM_OBJECT_LOCK_INIT(obj, "uma object"); - _vm_object_allocate(OBJT_PHYS, pages, obj); - } +#ifdef UMA_MD_SMALL_ALLOC + if (keg->uk_ppera > 1) { +#else + if (1) { +#endif + kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); + if (kva == 0) + return (0); + } else + kva = 0; ZONE_LOCK(zone); keg->uk_kva = kva; - keg->uk_obj = obj; + keg->uk_offset = 0; keg->uk_maxpages = pages; - keg->uk_allocf = obj_alloc; +#ifdef UMA_MD_SMALL_ALLOC + keg->uk_allocf = (keg->uk_ppera > 1) ? noobj_alloc : uma_small_alloc; +#else + keg->uk_allocf = noobj_alloc; +#endif keg->uk_flags |= UMA_ZONE_NOFREE | UMA_ZFLAG_PRIVALLOC; ZONE_UNLOCK(zone); return (1); Modified: user/attilio/vmcontention/sys/vm/uma_int.h ============================================================================== --- user/attilio/vmcontention/sys/vm/uma_int.h Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/uma_int.h Tue Feb 26 23:43:28 2013 (r247361) @@ -221,8 +221,8 @@ struct uma_keg { uma_alloc uk_allocf; /* Allocation function */ uma_free uk_freef; /* Free routine */ - struct vm_object *uk_obj; /* Zone specific object */ - vm_offset_t uk_kva; /* Base kva for zones with objs */ + u_long uk_offset; /* Next free offset from base KVA */ + vm_offset_t uk_kva; /* Zone base KVA */ uma_zone_t uk_slabzone; /* Slab zone backing us, if OFFPAGE */ u_int16_t uk_pgoff; /* Offset to uma_slab struct */ Modified: user/attilio/vmcontention/sys/vm/vm_map.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_map.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/vm_map.c Tue Feb 26 23:43:28 2013 (r247361) @@ -125,7 +125,6 @@ static uma_zone_t mapentzone; static uma_zone_t kmapentzone; static uma_zone_t mapzone; static uma_zone_t vmspace_zone; -static struct vm_object kmapentobj; static int vmspace_zinit(void *mem, int size, int flags); static void vmspace_zfini(void *mem, int size); static int vm_map_zinit(void *mem, int ize, int flags); @@ -303,7 +302,7 @@ vmspace_alloc(min, max) void vm_init2(void) { - uma_zone_set_obj(kmapentzone, &kmapentobj, lmin(cnt.v_page_count, + uma_zone_reserve_kva(kmapentzone, lmin(cnt.v_page_count, (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / PAGE_SIZE) / 8 + maxproc * 2 + maxfiles); vmspace_zone = uma_zcreate("VMSPACE", sizeof(struct vmspace), NULL, Modified: user/attilio/vmcontention/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_object.c Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/vm_object.c Tue Feb 26 23:43:28 2013 (r247361) @@ -194,7 +194,7 @@ vm_object_zinit(void *mem, int size, int object = (vm_object_t)mem; bzero(&object->mtx, sizeof(object->mtx)); - VM_OBJECT_LOCK_INIT(object, "standard object"); + mtx_init(&object->mtx, "vm object", NULL, MTX_DEF | MTX_DUPOK); /* These are true for any object that has been freed */ object->paging_in_progress = 0; @@ -203,7 +203,7 @@ vm_object_zinit(void *mem, int size, int return (0); } -void +static void _vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object) { @@ -265,7 +265,7 @@ vm_object_init(void) TAILQ_INIT(&vm_object_list); mtx_init(&vm_object_list_mtx, "vm object_list", NULL, MTX_DEF); - VM_OBJECT_LOCK_INIT(kernel_object, "kernel object"); + mtx_init(&kernel_object->mtx, "vm object", "kernel object", MTX_DEF); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kernel_object); #if VM_NRESERVLEVEL > 0 @@ -273,7 +273,7 @@ vm_object_init(void) kernel_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); #endif - VM_OBJECT_LOCK_INIT(kmem_object, "kmem object"); + mtx_init(&kmem_object->mtx, "vm object", "kmem object", MTX_DEF); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kmem_object); #if VM_NRESERVLEVEL > 0 Modified: user/attilio/vmcontention/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_object.h Tue Feb 26 23:35:27 2013 (r247360) +++ user/attilio/vmcontention/sys/vm/vm_object.h Tue Feb 26 23:43:28 2013 (r247361) @@ -208,9 +208,6 @@ extern struct vm_object kmem_object_stor #define VM_OBJECT_LOCK(object) mtx_lock(&(object)->mtx) #define VM_OBJECT_LOCK_ASSERT(object, type) \ mtx_assert(&(object)->mtx, (type)) -#define VM_OBJECT_LOCK_INIT(object, type) \ - mtx_init(&(object)->mtx, "vm object", \ - (type), MTX_DEF | MTX_DUPOK) #define VM_OBJECT_LOCKED(object) mtx_owned(&(object)->mtx) #define VM_OBJECT_SLEEP(object, wchan, pri, wmesg, timo) \ msleep((wchan), &(object)->mtx, (pri), \ @@ -236,7 +233,6 @@ void vm_object_pip_wakeupn(vm_object_t o void vm_object_pip_wait(vm_object_t object, char *waitid); vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); -void _vm_object_allocate (objtype_t, vm_pindex_t, vm_object_t); boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t); void vm_object_collapse (vm_object_t); From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 23:46:21 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 10BECE38; Tue, 26 Feb 2013 23:46:21 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E87AC9C2; Tue, 26 Feb 2013 23:46:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QNkKU1012419; Tue, 26 Feb 2013 23:46:20 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QNkKOA012414; Tue, 26 Feb 2013 23:46:20 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262346.r1QNkKOA012414@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 23:46:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247362 - in user/attilio/vmc-playground: sbin/reboot sys/dev/cxgbe/common sys/dev/isp sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 23:46:21 -0000 Author: attilio Date: Tue Feb 26 23:46:19 2013 New Revision: 247362 URL: http://svnweb.freebsd.org/changeset/base/247362 Log: Merge from vmcontention Modified: user/attilio/vmc-playground/sbin/reboot/boot_i386.8 user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.c user/attilio/vmc-playground/sys/vm/uma_int.h Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/sys/ (props changed) Modified: user/attilio/vmc-playground/sbin/reboot/boot_i386.8 ============================================================================== --- user/attilio/vmc-playground/sbin/reboot/boot_i386.8 Tue Feb 26 23:43:28 2013 (r247361) +++ user/attilio/vmc-playground/sbin/reboot/boot_i386.8 Tue Feb 26 23:46:19 2013 (r247362) @@ -220,15 +220,14 @@ you can use the option to force the kernel to use the serial port as its console device. The serial port driver -.Xr uart 4 +.Xr sio 4 +(but not +.Xr uart 4 ) has a flag (0x20) to override this option. If that flag is set, the serial port will always be used as the console, regardless of the .Fl h option described here. -See the man page for -.Xr uart 4 -for more details. .It Fl m mute the console to suppress all console input and output during the boot. Modified: user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:43:28 2013 (r247361) +++ user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:46:19 2013 (r247362) @@ -154,6 +154,36 @@ u32 t4_hw_pci_read_cfg4(adapter_t *adap, } /* + * t4_report_fw_error - report firmware error + * @adap: the adapter + * + * The adapter firmware can indicate error conditions to the host. + * This routine prints out the reason for the firmware error (as + * reported by the firmware). + */ +static void t4_report_fw_error(struct adapter *adap) +{ + static const char *reason[] = { + "Crash", /* PCIE_FW_EVAL_CRASH */ + "During Device Preparation", /* PCIE_FW_EVAL_PREP */ + "During Device Configuration", /* PCIE_FW_EVAL_CONF */ + "During Device Initialization", /* PCIE_FW_EVAL_INIT */ + "Unexpected Event", /* PCIE_FW_EVAL_UNEXPECTEDEVENT */ + "Insufficient Airflow", /* PCIE_FW_EVAL_OVERHEAT */ + "Device Shutdown", /* PCIE_FW_EVAL_DEVICESHUTDOWN */ + "Reserved", /* reserved */ + }; + u32 pcie_fw; + + pcie_fw = t4_read_reg(adap, A_PCIE_FW); + if (!(pcie_fw & F_PCIE_FW_ERR)) + CH_ERR(adap, "Firmware error report called with no error\n"); + else + CH_ERR(adap, "Firmware reports adapter error: %s\n", + reason[G_PCIE_FW_EVAL(pcie_fw)]); +} + +/* * Get the reply to a mailbox command and store it in @rpl in big-endian order. */ static void get_mbox_rpl(struct adapter *adap, __be64 *rpl, int nflit, @@ -267,8 +297,15 @@ int t4_wr_mbox_meat(struct adapter *adap } } + /* + * We timed out waiting for a reply to our mailbox command. Report + * the error and also check to see if the firmware reported any + * errors ... + */ CH_ERR(adap, "command %#x in mailbox %d timed out\n", *(const u8 *)cmd, mbox); + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return -ETIMEDOUT; } @@ -2033,9 +2070,11 @@ static void cim_intr_handler(struct adap { F_TIMEOUTMAINT , "CIM PIF MA timeout", -1, 1 }, { 0 } }; - int fat; + if (t4_read_reg(adapter, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adapter); + fat = t4_handle_intr_status(adapter, A_CIM_HOST_INT_CAUSE, cim_intr_info) + t4_handle_intr_status(adapter, A_CIM_HOST_UPACC_INT_CAUSE, @@ -4103,12 +4142,16 @@ retry: /* * Issue the HELLO command to the firmware. If it's not successful * but indicates that we got a "busy" or "timeout" condition, retry - * the HELLO until we exhaust our retry limit. + * the HELLO until we exhaust our retry limit. If we do exceed our + * retry limit, check to see if the firmware left us any error + * information and report that if so ... */ ret = t4_wr_mbox(adap, mbox, &c, sizeof(c), &c); if (ret != FW_SUCCESS) { if ((ret == -EBUSY || ret == -ETIMEDOUT) && retries-- > 0) goto retry; + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return ret; } Modified: user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.c ============================================================================== --- user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:43:28 2013 (r247361) +++ user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:46:19 2013 (r247362) @@ -4140,8 +4140,6 @@ isp_target_thread(ispsoftc_t *isp, int c return; } - ccb = xpt_alloc_ccb(); - ISP_LOCK(isp); status = cam_periph_alloc(isptargctor, NULL, isptargdtor, isptargstart, "isptarg", CAM_PERIPH_BIO, wpath, NULL, 0, softc); if (status != CAM_REQ_CMP) { Modified: user/attilio/vmc-playground/sys/vm/uma_int.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/uma_int.h Tue Feb 26 23:43:28 2013 (r247361) +++ user/attilio/vmc-playground/sys/vm/uma_int.h Tue Feb 26 23:46:19 2013 (r247362) @@ -221,8 +221,8 @@ struct uma_keg { uma_alloc uk_allocf; /* Allocation function */ uma_free uk_freef; /* Free routine */ - u_long uk_offset; /* Zone specific next page index */ - vm_offset_t uk_kva; /* Zone base kva */ + u_long uk_offset; /* Next free offset from base KVA */ + vm_offset_t uk_kva; /* Zone base KVA */ uma_zone_t uk_slabzone; /* Slab zone backing us, if OFFPAGE */ u_int16_t uk_pgoff; /* Offset to uma_slab struct */ From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 23:52:27 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 667D6F97; Tue, 26 Feb 2013 23:52:27 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 3D6AB9E7; Tue, 26 Feb 2013 23:52:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QNqQuP014827; Tue, 26 Feb 2013 23:52:26 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QNqN9x014814; Tue, 26 Feb 2013 23:52:23 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262352.r1QNqN9x014814@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 23:52:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247363 - in user/attilio/vmobj-rwlock: sbin/reboot sys/arm/arm sys/dev/cxgbe/common sys/dev/isp sys/powerpc/booke sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 23:52:27 -0000 Author: attilio Date: Tue Feb 26 23:52:23 2013 New Revision: 247363 URL: http://svnweb.freebsd.org/changeset/base/247363 Log: MFC Modified: user/attilio/vmobj-rwlock/sbin/reboot/boot_i386.8 user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmobj-rwlock/sys/dev/isp/isp_freebsd.c user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-rwlock/sys/vm/swap_pager.c user/attilio/vmobj-rwlock/sys/vm/uma.h user/attilio/vmobj-rwlock/sys/vm/uma_core.c user/attilio/vmobj-rwlock/sys/vm/uma_int.h user/attilio/vmobj-rwlock/sys/vm/vm_map.c user/attilio/vmobj-rwlock/sys/vm/vm_object.c user/attilio/vmobj-rwlock/sys/vm/vm_object.h Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/sbin/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) Modified: user/attilio/vmobj-rwlock/sbin/reboot/boot_i386.8 ============================================================================== --- user/attilio/vmobj-rwlock/sbin/reboot/boot_i386.8 Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sbin/reboot/boot_i386.8 Tue Feb 26 23:52:23 2013 (r247363) @@ -220,15 +220,14 @@ you can use the option to force the kernel to use the serial port as its console device. The serial port driver -.Xr uart 4 +.Xr sio 4 +(but not +.Xr uart 4 ) has a flag (0x20) to override this option. If that flag is set, the serial port will always be used as the console, regardless of the .Fl h option described here. -See the man page for -.Xr uart 4 -for more details. .It Fl m mute the console to suppress all console input and output during the boot. Modified: user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c Tue Feb 26 23:52:23 2013 (r247363) @@ -392,7 +392,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1164,7 +1163,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c Tue Feb 26 23:52:23 2013 (r247363) @@ -397,7 +397,6 @@ static uma_zone_t l2table_zone; static vm_offset_t pmap_kernel_l2dtable_kva; static vm_offset_t pmap_kernel_l2ptp_kva; static vm_paddr_t pmap_kernel_l2ptp_phys; -static struct vm_object pvzone_obj; static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0; static struct rwlock pvh_global_lock; @@ -1828,7 +1827,7 @@ pmap_init(void) NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); /* Modified: user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/dev/cxgbe/common/t4_hw.c Tue Feb 26 23:52:23 2013 (r247363) @@ -154,6 +154,36 @@ u32 t4_hw_pci_read_cfg4(adapter_t *adap, } /* + * t4_report_fw_error - report firmware error + * @adap: the adapter + * + * The adapter firmware can indicate error conditions to the host. + * This routine prints out the reason for the firmware error (as + * reported by the firmware). + */ +static void t4_report_fw_error(struct adapter *adap) +{ + static const char *reason[] = { + "Crash", /* PCIE_FW_EVAL_CRASH */ + "During Device Preparation", /* PCIE_FW_EVAL_PREP */ + "During Device Configuration", /* PCIE_FW_EVAL_CONF */ + "During Device Initialization", /* PCIE_FW_EVAL_INIT */ + "Unexpected Event", /* PCIE_FW_EVAL_UNEXPECTEDEVENT */ + "Insufficient Airflow", /* PCIE_FW_EVAL_OVERHEAT */ + "Device Shutdown", /* PCIE_FW_EVAL_DEVICESHUTDOWN */ + "Reserved", /* reserved */ + }; + u32 pcie_fw; + + pcie_fw = t4_read_reg(adap, A_PCIE_FW); + if (!(pcie_fw & F_PCIE_FW_ERR)) + CH_ERR(adap, "Firmware error report called with no error\n"); + else + CH_ERR(adap, "Firmware reports adapter error: %s\n", + reason[G_PCIE_FW_EVAL(pcie_fw)]); +} + +/* * Get the reply to a mailbox command and store it in @rpl in big-endian order. */ static void get_mbox_rpl(struct adapter *adap, __be64 *rpl, int nflit, @@ -267,8 +297,15 @@ int t4_wr_mbox_meat(struct adapter *adap } } + /* + * We timed out waiting for a reply to our mailbox command. Report + * the error and also check to see if the firmware reported any + * errors ... + */ CH_ERR(adap, "command %#x in mailbox %d timed out\n", *(const u8 *)cmd, mbox); + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return -ETIMEDOUT; } @@ -2033,9 +2070,11 @@ static void cim_intr_handler(struct adap { F_TIMEOUTMAINT , "CIM PIF MA timeout", -1, 1 }, { 0 } }; - int fat; + if (t4_read_reg(adapter, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adapter); + fat = t4_handle_intr_status(adapter, A_CIM_HOST_INT_CAUSE, cim_intr_info) + t4_handle_intr_status(adapter, A_CIM_HOST_UPACC_INT_CAUSE, @@ -4103,12 +4142,16 @@ retry: /* * Issue the HELLO command to the firmware. If it's not successful * but indicates that we got a "busy" or "timeout" condition, retry - * the HELLO until we exhaust our retry limit. + * the HELLO until we exhaust our retry limit. If we do exceed our + * retry limit, check to see if the firmware left us any error + * information and report that if so ... */ ret = t4_wr_mbox(adap, mbox, &c, sizeof(c), &c); if (ret != FW_SUCCESS) { if ((ret == -EBUSY || ret == -ETIMEDOUT) && retries-- > 0) goto retry; + if (t4_read_reg(adap, A_PCIE_FW) & F_PCIE_FW_ERR) + t4_report_fw_error(adap); return ret; } Modified: user/attilio/vmobj-rwlock/sys/dev/isp/isp_freebsd.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/dev/isp/isp_freebsd.c Tue Feb 26 23:52:23 2013 (r247363) @@ -4140,8 +4140,6 @@ isp_target_thread(ispsoftc_t *isp, int c return; } - ccb = xpt_alloc_ccb(); - ISP_LOCK(isp); status = cam_periph_alloc(isptargctor, NULL, isptargdtor, isptargstart, "isptarg", CAM_PERIPH_BIO, wpath, NULL, 0, softc); if (status != CAM_REQ_CMP) { Modified: user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c Tue Feb 26 23:52:23 2013 (r247363) @@ -217,7 +217,6 @@ static struct rwlock_padalign pvh_global /* Data for the pv entry allocation mechanism */ 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; #define PV_ENTRY_ZONE_MIN 2048 /* min pv entries in uma zone */ @@ -1343,7 +1342,7 @@ mmu_booke_init(mmu_t mmu) TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); pv_entry_high_water = 9 * (pv_entry_max / 10); - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_reserve_kva(pvzone, pv_entry_max); /* Pre-fill pvzone with initial number of pv entries. */ uma_prealloc(pvzone, PV_ENTRY_ZONE_MIN); Modified: user/attilio/vmobj-rwlock/sys/vm/swap_pager.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/swap_pager.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/swap_pager.c Tue Feb 26 23:52:23 2013 (r247363) @@ -344,7 +344,6 @@ SYSCTL_INT(_vm, OID_AUTO, swap_async_max static struct mtx sw_alloc_mtx; /* protect list manipulation */ static struct pagerlst swap_pager_object_list[NOBJLISTS]; static uma_zone_t swap_zone; -static struct vm_object swap_zone_obj; /* * pagerops for OBJT_SWAP - "swap pager". Some ops are also global procedure @@ -555,7 +554,7 @@ swap_pager_swap_init(void) if (swap_zone == NULL) panic("failed to create swap_zone."); do { - if (uma_zone_set_obj(swap_zone, &swap_zone_obj, n)) + if (uma_zone_reserve_kva(swap_zone, n)) break; /* * if the allocation failed, try a zone two thirds the Modified: user/attilio/vmobj-rwlock/sys/vm/uma.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/uma.h Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/uma.h Tue Feb 26 23:52:23 2013 (r247363) @@ -432,24 +432,23 @@ void uma_reclaim(void); void uma_set_align(int align); /* - * Switches the backing object of a zone + * Reserves the maximum KVA space required by the zone and configures the zone + * to use a VM_ALLOC_NOOBJ-based backend allocator. * * Arguments: * zone The zone to update. - * obj The VM object to use for future allocations. - * size The size of the object to allocate. + * nitems The upper limit on the number of items that can be allocated. * * Returns: - * 0 if kva space can not be allocated + * 0 if KVA space can not be allocated * 1 if successful * * Discussion: - * A NULL object can be used and uma will allocate one for you. Setting - * the size will limit the amount of memory allocated to this zone. - * + * When the machine supports a direct map and the zone's items are smaller + * than a page, the zone will use the direct map instead of allocating KVA + * space. */ -struct vm_object; -int uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int size); +int uma_zone_reserve_kva(uma_zone_t zone, int nitems); /* * Sets a high limit on the number of items allowed in a zone @@ -521,7 +520,7 @@ void uma_zone_set_zinit(uma_zone_t zone, void uma_zone_set_zfini(uma_zone_t zone, uma_fini zfini); /* - * Replaces the standard page_alloc or obj_alloc functions for this zone + * Replaces the standard backend allocator for this zone. * * Arguments: * zone The zone whose backend allocator is being changed. Modified: user/attilio/vmobj-rwlock/sys/vm/uma_core.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/uma_core.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/uma_core.c Tue Feb 26 23:52:23 2013 (r247363) @@ -80,6 +80,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -214,7 +215,7 @@ enum zfreeskip { SKIP_NONE, SKIP_DTOR, S /* Prototypes.. */ -static void *obj_alloc(uma_zone_t, int, u_int8_t *, int); +static void *noobj_alloc(uma_zone_t, int, u_int8_t *, int); static void *page_alloc(uma_zone_t, int, u_int8_t *, int); static void *startup_alloc(uma_zone_t, int, u_int8_t *, int); static void page_free(void *, int, u_int8_t); @@ -1031,50 +1032,53 @@ page_alloc(uma_zone_t zone, int bytes, u * NULL if M_NOWAIT is set. */ static void * -obj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) +noobj_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) { - vm_object_t object; + TAILQ_HEAD(, vm_page) alloctail; + u_long npages; vm_offset_t retkva, zkva; - vm_page_t p; - int pages, startpages; + vm_page_t p, p_next; uma_keg_t keg; + TAILQ_INIT(&alloctail); keg = zone_first_keg(zone); - object = keg->uk_obj; - retkva = 0; - /* - * This looks a little weird since we're getting one page at a time. - */ - VM_OBJECT_WLOCK(object); - p = TAILQ_LAST(&object->memq, pglist); - pages = p != NULL ? p->pindex + 1 : 0; - startpages = pages; - zkva = keg->uk_kva + pages * PAGE_SIZE; - for (; bytes > 0; bytes -= PAGE_SIZE) { - p = vm_page_alloc(object, pages, - VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED); - if (p == NULL) { - if (pages != startpages) - pmap_qremove(retkva, pages - startpages); - while (pages != startpages) { - pages--; - p = TAILQ_LAST(&object->memq, pglist); - vm_page_unwire(p, 0); - vm_page_free(p); - } - retkva = 0; - goto done; + npages = howmany(bytes, PAGE_SIZE); + while (npages > 0) { + p = vm_page_alloc(NULL, 0, VM_ALLOC_INTERRUPT | + VM_ALLOC_WIRED | VM_ALLOC_NOOBJ); + if (p != NULL) { + /* + * Since the page does not belong to an object, its + * listq is unused. + */ + TAILQ_INSERT_TAIL(&alloctail, p, listq); + npages--; + continue; + } + if (wait & M_WAITOK) { + VM_WAIT; + continue; } + + /* + * Page allocation failed, free intermediate pages and + * exit. + */ + TAILQ_FOREACH_SAFE(p, &alloctail, listq, p_next) { + vm_page_unwire(p, 0); + vm_page_free(p); + } + return (NULL); + } + *flags = UMA_SLAB_PRIV; + zkva = keg->uk_kva + + atomic_fetchadd_long(&keg->uk_offset, round_page(bytes)); + retkva = zkva; + TAILQ_FOREACH(p, &alloctail, listq) { pmap_qenter(zkva, &p, 1); - if (retkva == 0) - retkva = zkva; zkva += PAGE_SIZE; - pages += 1; } -done: - VM_OBJECT_WUNLOCK(object); - *flags = UMA_SLAB_PRIV; return ((void *)retkva); } @@ -3013,7 +3017,7 @@ uma_zone_set_allocf(uma_zone_t zone, uma /* See uma.h */ int -uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int count) +uma_zone_reserve_kva(uma_zone_t zone, int count) { uma_keg_t keg; vm_offset_t kva; @@ -3025,21 +3029,25 @@ uma_zone_set_obj(uma_zone_t zone, struct if (pages * keg->uk_ipers < count) pages++; - kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); - - if (kva == 0) - return (0); - if (obj == NULL) - obj = vm_object_allocate(OBJT_PHYS, pages); - else { - VM_OBJECT_LOCK_INIT(obj, "uma vm object"); - _vm_object_allocate(OBJT_PHYS, pages, obj); - } +#ifdef UMA_MD_SMALL_ALLOC + if (keg->uk_ppera > 1) { +#else + if (1) { +#endif + kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); + if (kva == 0) + return (0); + } else + kva = 0; ZONE_LOCK(zone); keg->uk_kva = kva; - keg->uk_obj = obj; + keg->uk_offset = 0; keg->uk_maxpages = pages; - keg->uk_allocf = obj_alloc; +#ifdef UMA_MD_SMALL_ALLOC + keg->uk_allocf = (keg->uk_ppera > 1) ? noobj_alloc : uma_small_alloc; +#else + keg->uk_allocf = noobj_alloc; +#endif keg->uk_flags |= UMA_ZONE_NOFREE | UMA_ZFLAG_PRIVALLOC; ZONE_UNLOCK(zone); return (1); Modified: user/attilio/vmobj-rwlock/sys/vm/uma_int.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/uma_int.h Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/uma_int.h Tue Feb 26 23:52:23 2013 (r247363) @@ -221,8 +221,8 @@ struct uma_keg { uma_alloc uk_allocf; /* Allocation function */ uma_free uk_freef; /* Free routine */ - struct vm_object *uk_obj; /* Zone specific object */ - vm_offset_t uk_kva; /* Base kva for zones with objs */ + u_long uk_offset; /* Next free offset from base KVA */ + vm_offset_t uk_kva; /* Zone base KVA */ uma_zone_t uk_slabzone; /* Slab zone backing us, if OFFPAGE */ u_int16_t uk_pgoff; /* Offset to uma_slab struct */ Modified: user/attilio/vmobj-rwlock/sys/vm/vm_map.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_map.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/vm_map.c Tue Feb 26 23:52:23 2013 (r247363) @@ -126,7 +126,6 @@ static uma_zone_t mapentzone; static uma_zone_t kmapentzone; static uma_zone_t mapzone; static uma_zone_t vmspace_zone; -static struct vm_object kmapentobj; static int vmspace_zinit(void *mem, int size, int flags); static void vmspace_zfini(void *mem, int size); static int vm_map_zinit(void *mem, int ize, int flags); @@ -304,7 +303,7 @@ vmspace_alloc(min, max) void vm_init2(void) { - uma_zone_set_obj(kmapentzone, &kmapentobj, lmin(cnt.v_page_count, + uma_zone_reserve_kva(kmapentzone, lmin(cnt.v_page_count, (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / PAGE_SIZE) / 8 + maxproc * 2 + maxfiles); vmspace_zone = uma_zcreate("VMSPACE", sizeof(struct vmspace), NULL, Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 23:52:23 2013 (r247363) @@ -195,7 +195,7 @@ vm_object_zinit(void *mem, int size, int object = (vm_object_t)mem; bzero(&object->lock, sizeof(object->lock)); - VM_OBJECT_LOCK_INIT(object, "standard vm object"); + rw_init_flags(&object->lock, "vm object", RW_DUPOK); /* These are true for any object that has been freed */ object->paging_in_progress = 0; @@ -204,7 +204,7 @@ vm_object_zinit(void *mem, int size, int return (0); } -void +static void _vm_object_allocate(objtype_t type, vm_pindex_t size, vm_object_t object) { @@ -267,7 +267,7 @@ vm_object_init(void) TAILQ_INIT(&vm_object_list); mtx_init(&vm_object_list_mtx, "vm object_list", NULL, MTX_DEF); - VM_OBJECT_LOCK_INIT(kernel_object, "kernel vm object"); + rw_init(&object->lock, "kernel vm object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kernel_object); #if VM_NRESERVLEVEL > 0 @@ -275,7 +275,7 @@ vm_object_init(void) kernel_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); #endif - VM_OBJECT_LOCK_INIT(kmem_object, "kmem vm object"); + rw_init(&object->lock, "kmem vm object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kmem_object); #if VM_NRESERVLEVEL > 0 Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.h Tue Feb 26 23:46:19 2013 (r247362) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.h Tue Feb 26 23:52:23 2013 (r247363) @@ -210,8 +210,6 @@ extern struct vm_object kmem_object_stor rw_assert(&(object)->lock, RA_RLOCKED) #define VM_OBJECT_ASSERT_WLOCKED(object) \ rw_assert(&(object)->lock, RA_WLOCKED) -#define VM_OBJECT_LOCK_INIT(object, name) \ - rw_init_flags(&(object)->lock, (name), RW_DUPOK) #define VM_OBJECT_RLOCK(object) \ rw_rlock(&(object)->lock) #define VM_OBJECT_RUNLOCK(object) \ @@ -245,7 +243,6 @@ void vm_object_pip_wakeupn(vm_object_t o void vm_object_pip_wait(vm_object_t object, char *waitid); vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); -void _vm_object_allocate (objtype_t, vm_pindex_t, vm_object_t); boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t); void vm_object_collapse (vm_object_t); From owner-svn-src-user@FreeBSD.ORG Tue Feb 26 23:54:18 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 512DA222; Tue, 26 Feb 2013 23:54:18 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 43E9E9F6; Tue, 26 Feb 2013 23:54:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1QNsIpo015162; Tue, 26 Feb 2013 23:54:18 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1QNsIUd015161; Tue, 26 Feb 2013 23:54:18 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201302262354.r1QNsIUd015161@svn.freebsd.org> From: Attilio Rao Date: Tue, 26 Feb 2013 23:54:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247364 - user/attilio/vmobj-rwlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 23:54:18 -0000 Author: attilio Date: Tue Feb 26 23:54:17 2013 New Revision: 247364 URL: http://svnweb.freebsd.org/changeset/base/247364 Log: Fix compiling. Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 23:52:23 2013 (r247363) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Tue Feb 26 23:54:17 2013 (r247364) @@ -267,7 +267,7 @@ vm_object_init(void) TAILQ_INIT(&vm_object_list); mtx_init(&vm_object_list_mtx, "vm object_list", NULL, MTX_DEF); - rw_init(&object->lock, "kernel vm object"); + rw_init(&kernel_object->lock, "kernel vm object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kernel_object); #if VM_NRESERVLEVEL > 0 @@ -275,7 +275,7 @@ vm_object_init(void) kernel_object->pg_color = (u_short)atop(VM_MIN_KERNEL_ADDRESS); #endif - rw_init(&object->lock, "kmem vm object"); + rw_init(&kmem_object->lock, "kmem vm object"); _vm_object_allocate(OBJT_PHYS, OFF_TO_IDX(VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS), kmem_object); #if VM_NRESERVLEVEL > 0 From owner-svn-src-user@FreeBSD.ORG Wed Feb 27 04:19:13 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id EE7A4666; Wed, 27 Feb 2013 04:19:13 +0000 (UTC) (envelope-from alfred@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id CA1FF844; Wed, 27 Feb 2013 04:19:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R4JDmw097477; Wed, 27 Feb 2013 04:19:13 GMT (envelope-from alfred@svn.freebsd.org) Received: (from alfred@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R4JDeT097476; Wed, 27 Feb 2013 04:19:13 GMT (envelope-from alfred@svn.freebsd.org) Message-Id: <201302270419.r1R4JDeT097476@svn.freebsd.org> From: Alfred Perlstein Date: Wed, 27 Feb 2013 04:19:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247371 - user/alfred/ewatchdog/usr.sbin/watchdogd X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 04:19:14 -0000 Author: alfred Date: Wed Feb 27 04:19:12 2013 New Revision: 247371 URL: http://svnweb.freebsd.org/changeset/base/247371 Log: Document new options. The following args are now documented: -debug -softtimeout -softtimeout-action action -pretimeout timeout -pretimeout-action action Also update .Dd and copyright. Modified: user/alfred/ewatchdog/usr.sbin/watchdogd/watchdogd.8 Modified: user/alfred/ewatchdog/usr.sbin/watchdogd/watchdogd.8 ============================================================================== --- user/alfred/ewatchdog/usr.sbin/watchdogd/watchdogd.8 Wed Feb 27 03:43:16 2013 (r247370) +++ user/alfred/ewatchdog/usr.sbin/watchdogd/watchdogd.8 Wed Feb 27 04:19:12 2013 (r247371) @@ -1,3 +1,5 @@ +.\" Copyright (c) 2013 iXsystems.com, +.\" author: Alfred Perlstein .\" Copyright (c) 2004 Poul-Henning Kamp .\" Copyright (c) 2003 Sean M. Kelly .\" All rights reserved. @@ -25,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 2, 2006 +.Dd September 2, 2013 .Dt WATCHDOGD 8 .Os .Sh NAME @@ -34,6 +36,11 @@ .Sh SYNOPSIS .Nm .Op Fl dnw +.Op Fl -debug +.Op Fl -softtimeout +.Op Fl -softtimeout-action Ar action +.Op Fl -pretimeout Ar timeout +.Op Fl -pretimeout-action Ar action .Op Fl e Ar cmd .Op Fl I Ar file .Op Fl s Ar sleep @@ -108,12 +115,12 @@ will terminate. The .Nm utility recognizes the following runtime options: -.Bl -tag -width ".Fl I Ar file" +.Bl -tag -width ".Fl -softtimeout-action Ar action " .It Fl I Ar file Write the process ID of the .Nm utility in the specified file. -.It Fl d +.It Fl d Fl -debug Do not fork. When this option is specified, .Nm @@ -123,7 +130,70 @@ will not fork into the background at sta Complain when the watchdog script takes too long. This flag will cause watchdogd to complain when the amount of time to execute the watchdog script exceeds the threshold of 'sleep' option. +.Pp +.It Fl -pretimeout Ar timeout +Set a "pretimeout" watchdog. At "timeout" seconds before the watchdog +will fire attempt an action. The action is set by the --pretimeout-action +flag. The default is just to log a message (WD_SOFT_LOG) via +.Xr log 9 . +.Pp +.It Fl -pretimeout-action Ar action +Set the timeout action for the pretimeout. See the section +.Sx Timeout Actions . +.Pp +.It Fl -softtimeout +Instead of arming the various hardware watchdogs, only use a basic software +watchdog. The default action is just to +.Xr log 9 +a message (WD_SOFT_LOG). +.Pp +.It Fl -softtimeout-action Ar action +Set the timeout action for the softtimeout. See the section +.Sx Timeout Actions . +.Pp .El +.Sh Timeout Actions +The following timeout actions are available via the +.Fl -pretimeout-action +and +.Fl -softtimeout-action +flags: +.Bl -tag -width ".Ar printf " +.It Ar panic +Call +.Xr panic 9 +when the timeout is reached. +.Pp +.It Ar ddb +Enter the kernel debugger via +.Xr kdb_enter 9 +when the timeout is reached. +.Pp +.It Ar log +Log a message using +.Xr log 9 +when the timeout is reached. +.Pp +.It Ar printf +call the kernel +.Xr printf 9 +to display a message to the console and +.Xr dmesg 8 +buffer. +.Pp +.El +Actions can be combined in a comma separated list as so: +.Ar log,printf +which would both +.Xr printf 9 +and +.Xr log 9 +which will send messages both to +.Xr dmesg 8 +and the kernel +.Xr log 4 +device for +.Xr syslog 8 . .Sh FILES .Bl -tag -width ".Pa /var/run/watchdogd.pid" -compact .It Pa /var/run/watchdogd.pid @@ -148,3 +218,6 @@ and .Pp Some contributions made by .An Jeff Roberson Aq jeff@FreeBSD.org . +.Pp +The pretimeout and softtimeout action system was added by +.An Alfred Perlstein Aq alfred@freebsd.org . From owner-svn-src-user@FreeBSD.ORG Wed Feb 27 04:37:14 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0B7CDC48; Wed, 27 Feb 2013 04:37:14 +0000 (UTC) (envelope-from alfred@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E7A978D1; Wed, 27 Feb 2013 04:37:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R4bD1L003310; Wed, 27 Feb 2013 04:37:13 GMT (envelope-from alfred@svn.freebsd.org) Received: (from alfred@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R4bAwG003290; Wed, 27 Feb 2013 04:37:10 GMT (envelope-from alfred@svn.freebsd.org) Message-Id: <201302270437.r1R4bAwG003290@svn.freebsd.org> From: Alfred Perlstein Date: Wed, 27 Feb 2013 04:37:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247375 - in user/alfred/ewatchdog: . bin/ps bin/setfacl bin/sh bin/test cddl/contrib/opensolaris/cmd/dtrace cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contr... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 04:37:14 -0000 Author: alfred Date: Wed Feb 27 04:37:09 2013 New Revision: 247375 URL: http://svnweb.freebsd.org/changeset/base/247375 Log: MFC Added: user/alfred/ewatchdog/contrib/expat/FREEBSD-Xlist - copied unchanged from r247373, head/contrib/expat/FREEBSD-Xlist - copied from r247373, head/contrib/ldns/ user/alfred/ewatchdog/crypto/openssl/crypto/evp/evp_cnf.c - copied unchanged from r247373, head/crypto/openssl/crypto/evp/evp_cnf.c user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_verify_recover.pod - copied unchanged from r247373, head/crypto/openssl/doc/crypto/EVP_PKEY_verify_recover.pod user/alfred/ewatchdog/crypto/openssl/ssl/s3_cbc.c - copied unchanged from r247373, head/crypto/openssl/ssl/s3_cbc.c user/alfred/ewatchdog/lib/libc/string/strchrnul.c - copied unchanged from r247373, head/lib/libc/string/strchrnul.c user/alfred/ewatchdog/lib/libldns/ - copied from r247373, head/lib/libldns/ user/alfred/ewatchdog/lib/libstand/strtoul.c - copied unchanged from r247373, head/lib/libstand/strtoul.c user/alfred/ewatchdog/sbin/hastd/refcnt.h - copied unchanged from r247373, head/sbin/hastd/refcnt.h user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 - copied unchanged from r247373, head/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 user/alfred/ewatchdog/sys/arm/allwinner/a10_wdog.c - copied unchanged from r247373, head/sys/arm/allwinner/a10_wdog.c user/alfred/ewatchdog/sys/arm/allwinner/a10_wdog.h - copied unchanged from r247373, head/sys/arm/allwinner/a10_wdog.h user/alfred/ewatchdog/sys/boot/fdt/help.fdt - copied unchanged from r247373, head/sys/boot/fdt/help.fdt user/alfred/ewatchdog/sys/cddl/boot/zfs/lz4.c - copied unchanged from r247373, head/sys/cddl/boot/zfs/lz4.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4 - copied unchanged from r247373, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4 user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4.descrip - copied unchanged from r247373, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4.descrip user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c - copied unchanged from r247373, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslprepkg.c - copied unchanged from r247373, head/sys/contrib/dev/acpica/compiler/aslprepkg.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nsconvert.c - copied unchanged from r247373, head/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/alfred/ewatchdog/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu - copied unchanged from r247373, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu user/alfred/ewatchdog/sys/kern/subr_bus_dma.c - copied unchanged from r247373, head/sys/kern/subr_bus_dma.c user/alfred/ewatchdog/sys/sys/memdesc.h - copied unchanged from r247373, head/sys/sys/memdesc.h user/alfred/ewatchdog/sys/x86/include/elf.h - copied unchanged from r247373, head/sys/x86/include/elf.h user/alfred/ewatchdog/sys/x86/include/frame.h - copied unchanged from r247373, head/sys/x86/include/frame.h user/alfred/ewatchdog/sys/x86/include/sigframe.h - copied unchanged from r247373, head/sys/x86/include/sigframe.h user/alfred/ewatchdog/sys/x86/include/signal.h - copied unchanged from r247373, head/sys/x86/include/signal.h user/alfred/ewatchdog/sys/x86/include/ucontext.h - copied unchanged from r247373, head/sys/x86/include/ucontext.h user/alfred/ewatchdog/tools/build/options/WITHOUT_LDNS - copied unchanged from r247373, head/tools/build/options/WITHOUT_LDNS user/alfred/ewatchdog/tools/build/options/WITH_LDNS_UTILS - copied unchanged from r247373, head/tools/build/options/WITH_LDNS_UTILS user/alfred/ewatchdog/tools/regression/bin/sh/builtins/read6.0 - copied unchanged from r247373, head/tools/regression/bin/sh/builtins/read6.0 user/alfred/ewatchdog/tools/regression/bin/sh/builtins/wait4.0 - copied unchanged from r247373, head/tools/regression/bin/sh/builtins/wait4.0 user/alfred/ewatchdog/tools/regression/bin/sh/builtins/wait5.0 - copied unchanged from r247373, head/tools/regression/bin/sh/builtins/wait5.0 user/alfred/ewatchdog/tools/tools/ath/athalq/tdma.c - copied unchanged from r247373, head/tools/tools/ath/athalq/tdma.c user/alfred/ewatchdog/tools/tools/ath/athalq/tdma.h - copied unchanged from r247373, head/tools/tools/ath/athalq/tdma.h user/alfred/ewatchdog/tools/tools/netmap/nm_util.c - copied unchanged from r247373, head/tools/tools/netmap/nm_util.c user/alfred/ewatchdog/tools/tools/netmap/nm_util.h - copied unchanged from r247373, head/tools/tools/netmap/nm_util.h user/alfred/ewatchdog/usr.sbin/bsdconfig/include/media.hlp - copied unchanged from r247373, head/usr.sbin/bsdconfig/include/media.hlp user/alfred/ewatchdog/usr.sbin/bsdconfig/include/network_device.hlp - copied unchanged from r247373, head/usr.sbin/bsdconfig/include/network_device.hlp user/alfred/ewatchdog/usr.sbin/bsdconfig/include/options.hlp - copied unchanged from r247373, head/usr.sbin/bsdconfig/include/options.hlp user/alfred/ewatchdog/usr.sbin/bsdconfig/include/tcp.hlp - copied unchanged from r247373, head/usr.sbin/bsdconfig/include/tcp.hlp user/alfred/ewatchdog/usr.sbin/bsdconfig/share/device.subr - copied unchanged from r247373, head/usr.sbin/bsdconfig/share/device.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/share/media/ - copied from r247373, head/usr.sbin/bsdconfig/share/media/ user/alfred/ewatchdog/usr.sbin/bsdconfig/share/struct.subr - copied unchanged from r247373, head/usr.sbin/bsdconfig/share/struct.subr Directory Properties: user/alfred/ewatchdog/contrib/ldns/ (props changed) Deleted: user/alfred/ewatchdog/contrib/expat/FREEBSD-upgrade user/alfred/ewatchdog/contrib/expat/configure user/alfred/ewatchdog/contrib/expat/doc/valid-xhtml10.png user/alfred/ewatchdog/contrib/expat/lib/winconfig.h user/alfred/ewatchdog/contrib/expat/tests/benchmark/benchmark.dsp user/alfred/ewatchdog/contrib/expat/tests/benchmark/benchmark.dsw user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_verifyrecover.pod user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_verifyrecover.3 user/alfred/ewatchdog/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu user/alfred/ewatchdog/sys/dev/mxge/mxge_lro.c user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/include/tcp.hlp Modified: user/alfred/ewatchdog/Makefile.inc1 user/alfred/ewatchdog/ObsoleteFiles.inc user/alfred/ewatchdog/bin/ps/ps.1 user/alfred/ewatchdog/bin/setfacl/setfacl.1 user/alfred/ewatchdog/bin/sh/eval.c user/alfred/ewatchdog/bin/sh/jobs.c user/alfred/ewatchdog/bin/sh/main.c user/alfred/ewatchdog/bin/sh/mksyntax.c user/alfred/ewatchdog/bin/sh/parser.h user/alfred/ewatchdog/bin/sh/trap.c user/alfred/ewatchdog/bin/sh/trap.h user/alfred/ewatchdog/bin/test/test.1 user/alfred/ewatchdog/bin/test/test.c user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zdb/zdb.c user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zfs/zfs.8 user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zinject/translate.c user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 user/alfred/ewatchdog/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c user/alfred/ewatchdog/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/alfred/ewatchdog/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/alfred/ewatchdog/contrib/binutils/gas/config/tc-i386.c user/alfred/ewatchdog/contrib/binutils/opcodes/i386-dis.c user/alfred/ewatchdog/contrib/binutils/opcodes/i386-opc.h user/alfred/ewatchdog/contrib/binutils/opcodes/i386-tbl.h user/alfred/ewatchdog/contrib/expat/Changes (contents, props changed) user/alfred/ewatchdog/contrib/expat/MANIFEST (contents, props changed) user/alfred/ewatchdog/contrib/expat/Makefile.in (contents, props changed) user/alfred/ewatchdog/contrib/expat/README (contents, props changed) user/alfred/ewatchdog/contrib/expat/configure.in (contents, props changed) user/alfred/ewatchdog/contrib/expat/doc/reference.html (contents, props changed) user/alfred/ewatchdog/contrib/expat/doc/xmlwf.sgml (contents, props changed) user/alfred/ewatchdog/contrib/expat/expat_config.h.in (contents, props changed) user/alfred/ewatchdog/contrib/expat/lib/expat.h (contents, props changed) user/alfred/ewatchdog/contrib/expat/lib/xmlparse.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/lib/xmlrole.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/lib/xmltok.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/lib/xmltok_impl.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/tests/README.txt (contents, props changed) user/alfred/ewatchdog/contrib/expat/tests/minicheck.h user/alfred/ewatchdog/contrib/expat/tests/runtests.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/tests/xmltest.sh (contents, props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/readfilemap.c (contents, props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlwf.c (contents, props changed) user/alfred/ewatchdog/contrib/libc++/include/__config user/alfred/ewatchdog/contrib/libc++/include/algorithm user/alfred/ewatchdog/contrib/libc++/include/array user/alfred/ewatchdog/contrib/libc++/include/atomic user/alfred/ewatchdog/contrib/libc++/include/cmath user/alfred/ewatchdog/contrib/libc++/include/functional user/alfred/ewatchdog/contrib/libc++/include/future user/alfred/ewatchdog/contrib/libc++/include/istream user/alfred/ewatchdog/contrib/libc++/include/iterator user/alfred/ewatchdog/contrib/libc++/include/limits user/alfred/ewatchdog/contrib/libc++/include/locale user/alfred/ewatchdog/contrib/libc++/include/memory user/alfred/ewatchdog/contrib/libc++/include/ostream user/alfred/ewatchdog/contrib/libc++/include/random user/alfred/ewatchdog/contrib/libc++/include/regex user/alfred/ewatchdog/contrib/libc++/include/string user/alfred/ewatchdog/contrib/libc++/include/type_traits user/alfred/ewatchdog/contrib/libc++/include/vector user/alfred/ewatchdog/contrib/libc++/src/chrono.cpp user/alfred/ewatchdog/contrib/libc++/src/debug.cpp user/alfred/ewatchdog/contrib/libc++/src/exception.cpp user/alfred/ewatchdog/contrib/libc++/src/future.cpp user/alfred/ewatchdog/contrib/libc++/src/hash.cpp user/alfred/ewatchdog/contrib/libc++/src/locale.cpp user/alfred/ewatchdog/contrib/libc++/src/string.cpp user/alfred/ewatchdog/contrib/libc++/src/thread.cpp user/alfred/ewatchdog/contrib/libcxxrt/exception.cc user/alfred/ewatchdog/contrib/llvm/lib/MC/MCParser/AsmParser.cpp user/alfred/ewatchdog/contrib/llvm/lib/Target/X86/X86InstrCompiler.td user/alfred/ewatchdog/contrib/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp user/alfred/ewatchdog/contrib/llvm/tools/clang/lib/Driver/Tools.cpp user/alfred/ewatchdog/contrib/llvm/tools/clang/lib/Driver/Tools.h user/alfred/ewatchdog/contrib/nvi/ex/ex_txt.c user/alfred/ewatchdog/contrib/nvi/vi/v_txt.c user/alfred/ewatchdog/contrib/openbsm/bin/auditdistd/token.l user/alfred/ewatchdog/contrib/opie/opiekey.c user/alfred/ewatchdog/contrib/sendmail/src/milter.c user/alfred/ewatchdog/contrib/wpa/src/crypto/md5-internal.c user/alfred/ewatchdog/crypto/heimdal/kcm/cache.c user/alfred/ewatchdog/crypto/openssl/CHANGES user/alfred/ewatchdog/crypto/openssl/Configure user/alfred/ewatchdog/crypto/openssl/FAQ user/alfred/ewatchdog/crypto/openssl/Makefile user/alfred/ewatchdog/crypto/openssl/Makefile.org user/alfred/ewatchdog/crypto/openssl/NEWS user/alfred/ewatchdog/crypto/openssl/PROBLEMS user/alfred/ewatchdog/crypto/openssl/README user/alfred/ewatchdog/crypto/openssl/apps/apps.c user/alfred/ewatchdog/crypto/openssl/apps/ca.c user/alfred/ewatchdog/crypto/openssl/apps/cms.c user/alfred/ewatchdog/crypto/openssl/apps/dgst.c user/alfred/ewatchdog/crypto/openssl/apps/dhparam.c user/alfred/ewatchdog/crypto/openssl/apps/dsaparam.c user/alfred/ewatchdog/crypto/openssl/apps/genrsa.c user/alfred/ewatchdog/crypto/openssl/apps/ocsp.c user/alfred/ewatchdog/crypto/openssl/apps/s_cb.c user/alfred/ewatchdog/crypto/openssl/apps/s_client.c user/alfred/ewatchdog/crypto/openssl/apps/s_server.c user/alfred/ewatchdog/crypto/openssl/apps/speed.c user/alfred/ewatchdog/crypto/openssl/apps/srp.c user/alfred/ewatchdog/crypto/openssl/apps/verify.c user/alfred/ewatchdog/crypto/openssl/apps/x509.c user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/aes-mips.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/aes-s390x.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/aes-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/aesni-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/bsaes-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/aes/asm/vpaes-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/asn1/a_strex.c user/alfred/ewatchdog/crypto/openssl/crypto/asn1/a_verify.c user/alfred/ewatchdog/crypto/openssl/crypto/asn1/x_pubkey.c user/alfred/ewatchdog/crypto/openssl/crypto/bio/bss_dgram.c user/alfred/ewatchdog/crypto/openssl/crypto/bn/asm/mips.pl user/alfred/ewatchdog/crypto/openssl/crypto/bn/asm/modexp512-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/bn/asm/x86_64-gf2m.pl user/alfred/ewatchdog/crypto/openssl/crypto/bn/asm/x86_64-mont.pl user/alfred/ewatchdog/crypto/openssl/crypto/bn/asm/x86_64-mont5.pl user/alfred/ewatchdog/crypto/openssl/crypto/bn/bn_div.c user/alfred/ewatchdog/crypto/openssl/crypto/bn/bn_gcd.c user/alfred/ewatchdog/crypto/openssl/crypto/bn/bn_lcl.h user/alfred/ewatchdog/crypto/openssl/crypto/camellia/asm/cmll-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/cms/cms_cd.c user/alfred/ewatchdog/crypto/openssl/crypto/cms/cms_enc.c user/alfred/ewatchdog/crypto/openssl/crypto/cms/cms_lib.c user/alfred/ewatchdog/crypto/openssl/crypto/conf/conf_mall.c user/alfred/ewatchdog/crypto/openssl/crypto/cryptlib.c user/alfred/ewatchdog/crypto/openssl/crypto/cryptlib.h user/alfred/ewatchdog/crypto/openssl/crypto/crypto.h user/alfred/ewatchdog/crypto/openssl/crypto/des/set_key.c user/alfred/ewatchdog/crypto/openssl/crypto/des/str2key.c user/alfred/ewatchdog/crypto/openssl/crypto/ec/ec.h user/alfred/ewatchdog/crypto/openssl/crypto/ec/ec_key.c user/alfred/ewatchdog/crypto/openssl/crypto/ec/ec_pmeth.c user/alfred/ewatchdog/crypto/openssl/crypto/ec/ecp_mont.c user/alfred/ewatchdog/crypto/openssl/crypto/ec/ectest.c user/alfred/ewatchdog/crypto/openssl/crypto/ecdh/Makefile user/alfred/ewatchdog/crypto/openssl/crypto/ecdh/ech_key.c user/alfred/ewatchdog/crypto/openssl/crypto/ecdh/ech_lib.c user/alfred/ewatchdog/crypto/openssl/crypto/ecdsa/ecs_lib.c user/alfred/ewatchdog/crypto/openssl/crypto/err/err_all.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/Makefile user/alfred/ewatchdog/crypto/openssl/crypto/evp/digest.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/e_aes.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/evp.h user/alfred/ewatchdog/crypto/openssl/crypto/evp/evp_err.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/m_dss.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/m_dss1.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/m_sha1.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/p_sign.c user/alfred/ewatchdog/crypto/openssl/crypto/evp/p_verify.c user/alfred/ewatchdog/crypto/openssl/crypto/md4/md4_dgst.c user/alfred/ewatchdog/crypto/openssl/crypto/md4/md4_locl.h user/alfred/ewatchdog/crypto/openssl/crypto/md5/asm/md5-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/md5/md5_locl.h user/alfred/ewatchdog/crypto/openssl/crypto/mdc2/mdc2dgst.c user/alfred/ewatchdog/crypto/openssl/crypto/mem.c user/alfred/ewatchdog/crypto/openssl/crypto/modes/asm/ghash-x86.pl user/alfred/ewatchdog/crypto/openssl/crypto/modes/asm/ghash-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/modes/gcm128.c user/alfred/ewatchdog/crypto/openssl/crypto/objects/o_names.c user/alfred/ewatchdog/crypto/openssl/crypto/ocsp/ocsp_vfy.c user/alfred/ewatchdog/crypto/openssl/crypto/opensslv.h user/alfred/ewatchdog/crypto/openssl/crypto/pem/pem_all.c user/alfred/ewatchdog/crypto/openssl/crypto/pem/pem_lib.c user/alfred/ewatchdog/crypto/openssl/crypto/pem/pem_seal.c user/alfred/ewatchdog/crypto/openssl/crypto/perlasm/cbc.pl user/alfred/ewatchdog/crypto/openssl/crypto/perlasm/x86masm.pl user/alfred/ewatchdog/crypto/openssl/crypto/pkcs12/p12_key.c user/alfred/ewatchdog/crypto/openssl/crypto/pkcs7/bio_pk7.c user/alfred/ewatchdog/crypto/openssl/crypto/ppccap.c user/alfred/ewatchdog/crypto/openssl/crypto/rand/md_rand.c user/alfred/ewatchdog/crypto/openssl/crypto/rand/rand_lib.c user/alfred/ewatchdog/crypto/openssl/crypto/rand/randfile.c user/alfred/ewatchdog/crypto/openssl/crypto/rc4/asm/rc4-md5-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/rc4/asm/rc4-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/ripemd/rmd_dgst.c user/alfred/ewatchdog/crypto/openssl/crypto/ripemd/rmd_locl.h user/alfred/ewatchdog/crypto/openssl/crypto/rsa/rsa.h user/alfred/ewatchdog/crypto/openssl/crypto/rsa/rsa_eay.c user/alfred/ewatchdog/crypto/openssl/crypto/rsa/rsa_oaep.c user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha1-armv4-large.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha1-ia64.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha1-sparcv9a.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha1-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha512-586.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/asm/sha512-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/sha/sha1_one.c user/alfred/ewatchdog/crypto/openssl/crypto/sha/sha1dgst.c user/alfred/ewatchdog/crypto/openssl/crypto/sha/sha256.c user/alfred/ewatchdog/crypto/openssl/crypto/sha/sha_dgst.c user/alfred/ewatchdog/crypto/openssl/crypto/sha/sha_locl.h user/alfred/ewatchdog/crypto/openssl/crypto/sparccpuid.S user/alfred/ewatchdog/crypto/openssl/crypto/srp/srp_vfy.c user/alfred/ewatchdog/crypto/openssl/crypto/symhacks.h user/alfred/ewatchdog/crypto/openssl/crypto/ui/ui_openssl.c user/alfred/ewatchdog/crypto/openssl/crypto/whrlpool/asm/wp-mmx.pl user/alfred/ewatchdog/crypto/openssl/crypto/whrlpool/asm/wp-x86_64.pl user/alfred/ewatchdog/crypto/openssl/crypto/x509/x509_cmp.c user/alfred/ewatchdog/crypto/openssl/crypto/x509/x509_vfy.c user/alfred/ewatchdog/crypto/openssl/crypto/x509v3/v3_purp.c user/alfred/ewatchdog/crypto/openssl/crypto/x86_64cpuid.pl user/alfred/ewatchdog/crypto/openssl/crypto/x86cpuid.pl user/alfred/ewatchdog/crypto/openssl/doc/apps/CA.pl.pod user/alfred/ewatchdog/crypto/openssl/doc/apps/dgst.pod user/alfred/ewatchdog/crypto/openssl/doc/apps/verify.pod user/alfred/ewatchdog/crypto/openssl/doc/apps/x509.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_CTX_ctrl.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_decrypt.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_derive.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_encrypt.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_get_default_digest.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_keygen.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_sign.pod user/alfred/ewatchdog/crypto/openssl/doc/crypto/EVP_PKEY_verify.pod user/alfred/ewatchdog/crypto/openssl/engines/ccgost/gost89.c user/alfred/ewatchdog/crypto/openssl/engines/ccgost/gost_crypt.c user/alfred/ewatchdog/crypto/openssl/engines/ccgost/gost_eng.c user/alfred/ewatchdog/crypto/openssl/engines/ccgost/gost_lcl.h user/alfred/ewatchdog/crypto/openssl/engines/ccgost/gosthash.c user/alfred/ewatchdog/crypto/openssl/engines/e_capi.c user/alfred/ewatchdog/crypto/openssl/ssl/Makefile user/alfred/ewatchdog/crypto/openssl/ssl/d1_enc.c user/alfred/ewatchdog/crypto/openssl/ssl/d1_pkt.c user/alfred/ewatchdog/crypto/openssl/ssl/d1_srtp.c user/alfred/ewatchdog/crypto/openssl/ssl/dtls1.h user/alfred/ewatchdog/crypto/openssl/ssl/s2_clnt.c user/alfred/ewatchdog/crypto/openssl/ssl/s2_pkt.c user/alfred/ewatchdog/crypto/openssl/ssl/s2_srvr.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_both.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_clnt.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_enc.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_lib.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_pkt.c user/alfred/ewatchdog/crypto/openssl/ssl/s3_srvr.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl.h user/alfred/ewatchdog/crypto/openssl/ssl/ssl3.h user/alfred/ewatchdog/crypto/openssl/ssl/ssl_algs.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl_cert.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl_ciph.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl_err.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl_lib.c user/alfred/ewatchdog/crypto/openssl/ssl/ssl_locl.h user/alfred/ewatchdog/crypto/openssl/ssl/ssl_rsa.c user/alfred/ewatchdog/crypto/openssl/ssl/ssltest.c user/alfred/ewatchdog/crypto/openssl/ssl/t1_enc.c user/alfred/ewatchdog/crypto/openssl/ssl/t1_lib.c user/alfred/ewatchdog/crypto/openssl/ssl/tls_srp.c user/alfred/ewatchdog/crypto/openssl/util/libeay.num user/alfred/ewatchdog/crypto/openssl/util/pl/VC-32.pl user/alfred/ewatchdog/etc/mtree/BSD.include.dist user/alfred/ewatchdog/etc/rc.d/pfsync user/alfred/ewatchdog/etc/rc.d/rtadvd user/alfred/ewatchdog/etc/rc.resume user/alfred/ewatchdog/games/fortune/datfiles/fortunes-o.real user/alfred/ewatchdog/gnu/lib/libstdc++/config.h user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/kgdb.1 user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/kgdb.h user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/kthr.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/main.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_amd64.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_arm.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_i386.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_ia64.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_mips.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c user/alfred/ewatchdog/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c user/alfred/ewatchdog/include/Makefile user/alfred/ewatchdog/include/string.h user/alfred/ewatchdog/kerberos5/libexec/digest-service/Makefile user/alfred/ewatchdog/lib/Makefile user/alfred/ewatchdog/lib/clang/clang.build.mk user/alfred/ewatchdog/lib/libc/arm/aeabi/Makefile.inc user/alfred/ewatchdog/lib/libc/gen/Makefile.inc user/alfred/ewatchdog/lib/libc/gen/fts.c user/alfred/ewatchdog/lib/libc/gen/opendir.c user/alfred/ewatchdog/lib/libc/gen/sem_new.c user/alfred/ewatchdog/lib/libc/net/getaddrinfo.3 user/alfred/ewatchdog/lib/libc/net/getnameinfo.3 user/alfred/ewatchdog/lib/libc/net/sctp_sys_calls.c user/alfred/ewatchdog/lib/libc/stdio/fopen.3 user/alfred/ewatchdog/lib/libc/stdio/setbuf.3 user/alfred/ewatchdog/lib/libc/stdlib/bsearch.3 user/alfred/ewatchdog/lib/libc/stdlib/qsort.3 user/alfred/ewatchdog/lib/libc/string/Makefile.inc user/alfred/ewatchdog/lib/libc/string/Symbol.map user/alfred/ewatchdog/lib/libc/string/strchr.3 user/alfred/ewatchdog/lib/libc/sys/Makefile.inc user/alfred/ewatchdog/lib/libc/sys/chflags.2 user/alfred/ewatchdog/lib/libc/sys/fcntl.2 user/alfred/ewatchdog/lib/libc/sys/open.2 user/alfred/ewatchdog/lib/libc/sys/ptrace.2 user/alfred/ewatchdog/lib/libc/sys/sigqueue.2 user/alfred/ewatchdog/lib/libcompiler_rt/Makefile user/alfred/ewatchdog/lib/libelf/elf_data.c user/alfred/ewatchdog/lib/libelf/elf_getdata.3 user/alfred/ewatchdog/lib/libelf/elf_update.c user/alfred/ewatchdog/lib/libexpat/expat_config.h user/alfred/ewatchdog/lib/libexpat/libbsdxml.3 user/alfred/ewatchdog/lib/libkiconv/kiconv.3 user/alfred/ewatchdog/lib/libpmc/pmc.soft.3 user/alfred/ewatchdog/lib/libsm/Makefile user/alfred/ewatchdog/lib/libstand/Makefile user/alfred/ewatchdog/lib/libstand/stand.h user/alfred/ewatchdog/lib/libusb/Makefile user/alfred/ewatchdog/lib/libusb/libusb20.3 user/alfred/ewatchdog/lib/libusb/libusb20.c user/alfred/ewatchdog/lib/libusb/libusb20.h user/alfred/ewatchdog/lib/libusb/libusb20_int.h user/alfred/ewatchdog/lib/libusb/libusb20_ugen20.c user/alfred/ewatchdog/lib/libvmmapi/vmmapi.c user/alfred/ewatchdog/lib/libvmmapi/vmmapi.h user/alfred/ewatchdog/libexec/mail.local/Makefile user/alfred/ewatchdog/libexec/rtld-elf/powerpc64/reloc.c user/alfred/ewatchdog/libexec/smrsh/Makefile user/alfred/ewatchdog/release/picobsd/bridge/crunch.conf user/alfred/ewatchdog/release/picobsd/qemu/crunch.conf user/alfred/ewatchdog/sbin/devd/devd.8 user/alfred/ewatchdog/sbin/devd/devd.conf.5 user/alfred/ewatchdog/sbin/fsck_ffs/dir.c user/alfred/ewatchdog/sbin/fsck_ffs/ea.c user/alfred/ewatchdog/sbin/fsck_ffs/fsck.h user/alfred/ewatchdog/sbin/fsck_ffs/fsutil.c user/alfred/ewatchdog/sbin/fsck_ffs/inode.c user/alfred/ewatchdog/sbin/fsck_ffs/main.c user/alfred/ewatchdog/sbin/fsck_ffs/setup.c user/alfred/ewatchdog/sbin/fsdb/fsdbutil.c user/alfred/ewatchdog/sbin/geom/class/eli/geom_eli.c user/alfred/ewatchdog/sbin/geom/class/part/gpart.8 user/alfred/ewatchdog/sbin/hastctl/hastctl.c user/alfred/ewatchdog/sbin/hastd/control.c user/alfred/ewatchdog/sbin/hastd/hast.conf.5 user/alfred/ewatchdog/sbin/hastd/hast.h user/alfred/ewatchdog/sbin/hastd/hast_proto.c user/alfred/ewatchdog/sbin/hastd/hastd.c user/alfred/ewatchdog/sbin/hastd/parse.y user/alfred/ewatchdog/sbin/hastd/primary.c user/alfred/ewatchdog/sbin/hastd/secondary.c user/alfred/ewatchdog/sbin/ifconfig/ifieee80211.c user/alfred/ewatchdog/sbin/reboot/boot_i386.8 user/alfred/ewatchdog/secure/lib/libcrypto/Makefile user/alfred/ewatchdog/secure/lib/libcrypto/Makefile.inc user/alfred/ewatchdog/secure/lib/libcrypto/Makefile.man user/alfred/ewatchdog/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ASN1_STRING_length.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ASN1_STRING_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ASN1_generate_nconf.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_ctrl.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_base64.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_buffer.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_cipher.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_md.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_null.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_f_ssl.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_find_type.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_new_CMS.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_push.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_read.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_accept.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_bio.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_connect.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_fd.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_file.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_mem.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_null.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_s_socket.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_set_callback.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BIO_should_retry.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_BLINDING_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_CTX_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_CTX_start.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_add.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_add_word.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_bn2bin.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_cmp.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_copy.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_generate_prime.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_mod_inverse.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_num_bytes.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_rand.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_set_bit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_swap.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/BN_zero.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_add0_cert.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_compress.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_decrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_encrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_final.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_get0_type.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_sign_add1_signer.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_sign_receipt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_uncompress.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_verify.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CMS_verify_receipt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CONF_modules_free.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CONF_modules_load_file.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_generate_key.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_generate_parameters.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_set_method.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DH_size.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_SIG_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_do_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_dup_DH.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_generate_key.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_generate_parameters.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_set_method.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/DSA_size.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_GET_LIB.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_clear_error.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_error_string.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_get_error.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_load_strings.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_print_errors.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_put_error.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_remove_state.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ERR_set_mark.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_BytesToKey.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_DigestInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_DigestSignInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_EncryptInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_OpenInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_derive.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_PKEY_verify.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_SealInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_SignInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/EVP_VerifyInit.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OBJ_nid2obj.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OPENSSL_Applink.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OPENSSL_config.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS12_create.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS12_parse.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS7_decrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS7_encrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS7_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/PKCS7_verify.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_add.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_bytes.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_cleanup.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_egd.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_load_file.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RAND_set_rand_method.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_blinding_on.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_check_key.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_generate_key.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_print.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_private_encrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_public_encrypt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_set_method.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_sign.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/RSA_size.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/SMIME_read_CMS.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/SMIME_write_CMS.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_NAME_print_ex.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_new.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/X509_verify_cert.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/bio.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/blowfish.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/bn.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/bn_internal.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/buffer.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/crypto.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_DHparams.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509_CRL.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509_NAME.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509_REQ.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/d2i_X509_SIG.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/des.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/dh.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/dsa.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ecdsa.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/engine.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/err.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/evp.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/hmac.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/lh_stats.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/lhash.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/md5.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/mdc2.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/pem.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/rand.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/rc4.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ripemd.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/rsa.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/sha.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/threads.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ui.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/ui_compat.3 user/alfred/ewatchdog/secure/lib/libcrypto/man/x509.3 user/alfred/ewatchdog/secure/lib/libssl/Makefile user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CIPHER_get_name.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_add_session.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_ctrl.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_free.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_new.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_sess_number.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_sessions.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_mode.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_options.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_timeout.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_set_verify.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_use_certificate.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_SESSION_free.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_SESSION_get_time.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_accept.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_alert_type_string.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_clear.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_connect.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_do_handshake.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_free.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_SSL_CTX.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_ciphers.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_client_CA_list.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_current_cipher.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_default_timeout.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_error.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_ex_new_index.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_fd.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_peer_certificate.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_psk_identity.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_rbio.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_session.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_verify_result.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_get_version.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_library_init.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_load_client_CA_file.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_new.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_pending.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_read.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_rstate_string.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_session_reused.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_bio.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_connect_state.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_fd.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_session.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_shutdown.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_set_verify_result.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_shutdown.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_state_string.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_want.3 user/alfred/ewatchdog/secure/lib/libssl/man/SSL_write.3 user/alfred/ewatchdog/secure/lib/libssl/man/d2i_SSL_SESSION.3 user/alfred/ewatchdog/secure/lib/libssl/man/ssl.3 user/alfred/ewatchdog/secure/usr.bin/openssl/man/CA.pl.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/asn1parse.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ca.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ciphers.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/cms.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/crl.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/crl2pkcs7.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/dgst.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/dhparam.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/dsa.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/dsaparam.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ec.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ecparam.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/enc.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/errstr.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/gendsa.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/genpkey.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/genrsa.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/nseq.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ocsp.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/openssl.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/passwd.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkcs12.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkcs7.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkcs8.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkey.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkeyparam.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/pkeyutl.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/rand.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/req.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/rsa.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/rsautl.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/s_client.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/s_server.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/s_time.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/sess_id.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/smime.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/speed.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/spkac.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/ts.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/tsget.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/verify.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/version.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/x509.1 user/alfred/ewatchdog/secure/usr.bin/openssl/man/x509v3_config.1 user/alfred/ewatchdog/share/man/man4/carp.4 user/alfred/ewatchdog/share/man/man4/cxgbe.4 user/alfred/ewatchdog/share/man/man4/run.4 user/alfred/ewatchdog/share/man/man5/group.5 user/alfred/ewatchdog/share/man/man5/src.conf.5 user/alfred/ewatchdog/share/man/man9/VFS_SET.9 user/alfred/ewatchdog/share/man/man9/mbuf_tags.9 user/alfred/ewatchdog/share/man/man9/timeout.9 user/alfred/ewatchdog/share/man/man9/vfs_busy.9 user/alfred/ewatchdog/share/misc/committers-ports.dot user/alfred/ewatchdog/share/misc/committers-src.dot user/alfred/ewatchdog/share/mk/bsd.lib.mk user/alfred/ewatchdog/share/mk/bsd.libnames.mk user/alfred/ewatchdog/share/mk/bsd.own.mk user/alfred/ewatchdog/share/mk/bsd.sys.mk user/alfred/ewatchdog/sys/amd64/acpica/acpi_machdep.c user/alfred/ewatchdog/sys/amd64/amd64/minidump_machdep.c user/alfred/ewatchdog/sys/amd64/amd64/pmap.c user/alfred/ewatchdog/sys/amd64/include/elf.h user/alfred/ewatchdog/sys/amd64/include/frame.h user/alfred/ewatchdog/sys/amd64/include/pmap.h user/alfred/ewatchdog/sys/amd64/include/sigframe.h user/alfred/ewatchdog/sys/amd64/include/signal.h user/alfred/ewatchdog/sys/amd64/include/ucontext.h user/alfred/ewatchdog/sys/amd64/include/vmm.h (contents, props changed) user/alfred/ewatchdog/sys/amd64/include/vmm_dev.h (contents, props changed) user/alfred/ewatchdog/sys/amd64/vmm/io/ppt.c user/alfred/ewatchdog/sys/amd64/vmm/vmm.c user/alfred/ewatchdog/sys/amd64/vmm/vmm_dev.c user/alfred/ewatchdog/sys/amd64/vmm/x86.c user/alfred/ewatchdog/sys/arm/allwinner/a10_clk.c user/alfred/ewatchdog/sys/arm/allwinner/a10_clk.h user/alfred/ewatchdog/sys/arm/allwinner/a10_ehci.c user/alfred/ewatchdog/sys/arm/allwinner/a10_gpio.c user/alfred/ewatchdog/sys/arm/allwinner/a10_machdep.c user/alfred/ewatchdog/sys/arm/allwinner/files.a10 user/alfred/ewatchdog/sys/arm/arm/busdma_machdep-v6.c user/alfred/ewatchdog/sys/arm/arm/busdma_machdep.c user/alfred/ewatchdog/sys/arm/arm/machdep.c user/alfred/ewatchdog/sys/arm/arm/mp_machdep.c user/alfred/ewatchdog/sys/arm/arm/pmap-v6.c user/alfred/ewatchdog/sys/arm/arm/pmap.c user/alfred/ewatchdog/sys/arm/arm/vfp.c user/alfred/ewatchdog/sys/arm/arm/vm_machdep.c user/alfred/ewatchdog/sys/arm/at91/at91_machdep.c user/alfred/ewatchdog/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c user/alfred/ewatchdog/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h user/alfred/ewatchdog/sys/arm/conf/RPI-B user/alfred/ewatchdog/sys/arm/econa/econa_machdep.c user/alfred/ewatchdog/sys/arm/include/pmap.h user/alfred/ewatchdog/sys/arm/include/vfp.h user/alfred/ewatchdog/sys/arm/include/vmparam.h user/alfred/ewatchdog/sys/arm/s3c2xx0/s3c24x0_machdep.c user/alfred/ewatchdog/sys/arm/sa11x0/assabet_machdep.c user/alfred/ewatchdog/sys/arm/ti/ti_cpuid.c user/alfred/ewatchdog/sys/arm/ti/ti_gpio.c user/alfred/ewatchdog/sys/arm/xscale/i80321/ep80219_machdep.c user/alfred/ewatchdog/sys/arm/xscale/i80321/iq31244_machdep.c user/alfred/ewatchdog/sys/arm/xscale/i8134x/crb_machdep.c user/alfred/ewatchdog/sys/arm/xscale/ixp425/avila_machdep.c user/alfred/ewatchdog/sys/arm/xscale/pxa/pxa_machdep.c user/alfred/ewatchdog/sys/boot/arm/uboot/Makefile user/alfred/ewatchdog/sys/boot/common/load_elf.c user/alfred/ewatchdog/sys/boot/common/module.c user/alfred/ewatchdog/sys/boot/common/part.c user/alfred/ewatchdog/sys/boot/fdt/dts/bcm2835-rpi-b.dts user/alfred/ewatchdog/sys/boot/fdt/dts/cubieboard.dts user/alfred/ewatchdog/sys/boot/fdt/fdt_loader_cmd.c user/alfred/ewatchdog/sys/boot/powerpc/ps3/Makefile user/alfred/ewatchdog/sys/boot/powerpc/uboot/Makefile user/alfred/ewatchdog/sys/boot/uboot/lib/copy.c user/alfred/ewatchdog/sys/boot/uboot/lib/elf_freebsd.c user/alfred/ewatchdog/sys/boot/usb/Makefile user/alfred/ewatchdog/sys/boot/usb/Makefile.test user/alfred/ewatchdog/sys/boot/usb/bsd_global.h user/alfred/ewatchdog/sys/boot/usb/bsd_kernel.c user/alfred/ewatchdog/sys/boot/usb/bsd_kernel.h user/alfred/ewatchdog/sys/boot/userboot/userboot/elf32_freebsd.c user/alfred/ewatchdog/sys/bsm/audit_kevents.h user/alfred/ewatchdog/sys/cam/ata/ata_pmp.c user/alfred/ewatchdog/sys/cam/cam_ccb.h user/alfred/ewatchdog/sys/cam/cam_xpt.c user/alfred/ewatchdog/sys/cam/ctl/ctl_frontend_cam_sim.c user/alfred/ewatchdog/sys/cam/ctl/scsi_ctl.c user/alfred/ewatchdog/sys/cam/scsi/scsi_da.c user/alfred/ewatchdog/sys/cam/scsi/scsi_pass.c user/alfred/ewatchdog/sys/cam/scsi/scsi_target.c user/alfred/ewatchdog/sys/cddl/boot/zfs/README user/alfred/ewatchdog/sys/cddl/boot/zfs/zfsimpl.h user/alfred/ewatchdog/sys/cddl/boot/zfs/zfssubr.c user/alfred/ewatchdog/sys/cddl/compat/opensolaris/sys/byteorder.h user/alfred/ewatchdog/sys/cddl/compat/opensolaris/sys/time.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/Makefile.files user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c user/alfred/ewatchdog/sys/cddl/dev/dtrace/dtrace_ioctl.c user/alfred/ewatchdog/sys/conf/NOTES user/alfred/ewatchdog/sys/conf/files user/alfred/ewatchdog/sys/conf/options user/alfred/ewatchdog/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/common/adisasm.c user/alfred/ewatchdog/sys/contrib/dev/acpica/common/adwalk.c user/alfred/ewatchdog/sys/contrib/dev/acpica/common/dmextern.c user/alfred/ewatchdog/sys/contrib/dev/acpica/common/dmtable.c user/alfred/ewatchdog/sys/contrib/dev/acpica/common/dmtbdump.c user/alfred/ewatchdog/sys/contrib/dev/acpica/common/dmtbinfo.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslcompile.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslcompiler.h user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/asldefine.h user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslfiles.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslmain.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslmessages.h user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslpredef.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslstartup.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/aslsupport.l user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/dtcompiler.h user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/dttable.c user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/dttemplate.h user/alfred/ewatchdog/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/debugger/dbinput.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/evevent.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/evgpe.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/evsci.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/evxface.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/evxfevnt.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/executer/exprep.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/executer/exutils.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nspredef.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/nsutils.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/parser/psargs.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/resources/rscalc.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/resources/rsdump.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/resources/rslist.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/resources/rsxface.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/utilities/utaddress.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/utilities/utexcep.c user/alfred/ewatchdog/sys/contrib/dev/acpica/components/utilities/utglobal.c user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acdisasm.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acexcep.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acglobal.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/aclocal.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acnamesp.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acoutput.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acpixf.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/actbl2.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/actbl3.h user/alfred/ewatchdog/sys/contrib/dev/acpica/include/acutils.h user/alfred/ewatchdog/sys/crypto/aesni/aesni_wrap.c user/alfred/ewatchdog/sys/dev/aac/aac_cam.c user/alfred/ewatchdog/sys/dev/advansys/advansys.c user/alfred/ewatchdog/sys/dev/advansys/adwcam.c user/alfred/ewatchdog/sys/dev/aha/aha.c user/alfred/ewatchdog/sys/dev/ahb/ahb.c user/alfred/ewatchdog/sys/dev/ahci/ahci.c user/alfred/ewatchdog/sys/dev/aic/aic.c user/alfred/ewatchdog/sys/dev/aic7xxx/aic79xx_osm.c user/alfred/ewatchdog/sys/dev/aic7xxx/aic7xxx_osm.c user/alfred/ewatchdog/sys/dev/amr/amr_cam.c user/alfred/ewatchdog/sys/dev/arcmsr/arcmsr.c user/alfred/ewatchdog/sys/dev/ata/ata-all.c user/alfred/ewatchdog/sys/dev/ata/ata-all.h user/alfred/ewatchdog/sys/dev/ata/ata-dma.c user/alfred/ewatchdog/sys/dev/ata/atapi-cam.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ah.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ah.h user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5210/ar5210.h user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5211/ar5211.h user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5212/ar5212.h user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416.h user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/alfred/ewatchdog/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/alfred/ewatchdog/sys/dev/ath/ath_rate/sample/sample.c user/alfred/ewatchdog/sys/dev/ath/if_ath.c user/alfred/ewatchdog/sys/dev/ath/if_ath_ahb.c user/alfred/ewatchdog/sys/dev/ath/if_ath_alq.c user/alfred/ewatchdog/sys/dev/ath/if_ath_alq.h user/alfred/ewatchdog/sys/dev/ath/if_ath_misc.h user/alfred/ewatchdog/sys/dev/ath/if_ath_pci.c user/alfred/ewatchdog/sys/dev/ath/if_ath_rx.c user/alfred/ewatchdog/sys/dev/ath/if_ath_sysctl.c user/alfred/ewatchdog/sys/dev/ath/if_ath_tx.c user/alfred/ewatchdog/sys/dev/ath/if_ath_tx.h user/alfred/ewatchdog/sys/dev/ath/if_ath_tx_edma.c user/alfred/ewatchdog/sys/dev/ath/if_ath_tx_ht.c user/alfred/ewatchdog/sys/dev/ath/if_athvar.h user/alfred/ewatchdog/sys/dev/buslogic/bt.c user/alfred/ewatchdog/sys/dev/bxe/if_bxe.c user/alfred/ewatchdog/sys/dev/ciss/ciss.c user/alfred/ewatchdog/sys/dev/ciss/cissvar.h user/alfred/ewatchdog/sys/dev/coretemp/coretemp.c user/alfred/ewatchdog/sys/dev/cpufreq/ichss.c user/alfred/ewatchdog/sys/dev/cxgbe/adapter.h user/alfred/ewatchdog/sys/dev/cxgbe/common/common.h user/alfred/ewatchdog/sys/dev/cxgbe/common/t4_hw.c user/alfred/ewatchdog/sys/dev/cxgbe/common/t4_hw.h user/alfred/ewatchdog/sys/dev/cxgbe/common/t4_msg.h user/alfred/ewatchdog/sys/dev/cxgbe/firmware/t4fw_interface.h user/alfred/ewatchdog/sys/dev/cxgbe/t4_main.c user/alfred/ewatchdog/sys/dev/cxgbe/t4_sge.c user/alfred/ewatchdog/sys/dev/dcons/dcons_os.c user/alfred/ewatchdog/sys/dev/dpt/dpt_scsi.c user/alfred/ewatchdog/sys/dev/e1000/e1000_82571.c user/alfred/ewatchdog/sys/dev/e1000/e1000_82575.c user/alfred/ewatchdog/sys/dev/e1000/e1000_82575.h user/alfred/ewatchdog/sys/dev/e1000/e1000_api.c user/alfred/ewatchdog/sys/dev/e1000/e1000_api.h user/alfred/ewatchdog/sys/dev/e1000/e1000_defines.h user/alfred/ewatchdog/sys/dev/e1000/e1000_hw.h user/alfred/ewatchdog/sys/dev/e1000/e1000_i210.c user/alfred/ewatchdog/sys/dev/e1000/e1000_i210.h user/alfred/ewatchdog/sys/dev/e1000/e1000_ich8lan.c user/alfred/ewatchdog/sys/dev/e1000/e1000_ich8lan.h user/alfred/ewatchdog/sys/dev/e1000/e1000_mac.c user/alfred/ewatchdog/sys/dev/e1000/e1000_mac.h user/alfred/ewatchdog/sys/dev/e1000/e1000_manage.c user/alfred/ewatchdog/sys/dev/e1000/e1000_nvm.c user/alfred/ewatchdog/sys/dev/e1000/e1000_nvm.h user/alfred/ewatchdog/sys/dev/e1000/e1000_osdep.h user/alfred/ewatchdog/sys/dev/e1000/e1000_phy.c user/alfred/ewatchdog/sys/dev/e1000/e1000_phy.h user/alfred/ewatchdog/sys/dev/e1000/e1000_regs.h user/alfred/ewatchdog/sys/dev/e1000/if_em.c user/alfred/ewatchdog/sys/dev/e1000/if_igb.c user/alfred/ewatchdog/sys/dev/e1000/if_lem.c user/alfred/ewatchdog/sys/dev/fdt/fdt_common.h user/alfred/ewatchdog/sys/dev/firewire/sbp.c user/alfred/ewatchdog/sys/dev/hpt27xx/osm_bsd.c user/alfred/ewatchdog/sys/dev/hptiop/hptiop.c user/alfred/ewatchdog/sys/dev/hptmv/entry.c user/alfred/ewatchdog/sys/dev/hptrr/hptrr_osm_bsd.c user/alfred/ewatchdog/sys/dev/hwpmc/hwpmc_soft.c user/alfred/ewatchdog/sys/dev/iir/iir.c user/alfred/ewatchdog/sys/dev/isci/isci_io_request.c user/alfred/ewatchdog/sys/dev/isp/isp.c user/alfred/ewatchdog/sys/dev/isp/isp_freebsd.c user/alfred/ewatchdog/sys/dev/isp/isp_pci.c user/alfred/ewatchdog/sys/dev/isp/isp_sbus.c user/alfred/ewatchdog/sys/dev/ixgbe/ixgbe.c user/alfred/ewatchdog/sys/dev/ixgbe/ixv.c user/alfred/ewatchdog/sys/dev/led/led.c user/alfred/ewatchdog/sys/dev/mcd/mcd.c user/alfred/ewatchdog/sys/dev/mfi/mfi.c user/alfred/ewatchdog/sys/dev/mfi/mfi_cam.c user/alfred/ewatchdog/sys/dev/mfi/mfi_debug.c user/alfred/ewatchdog/sys/dev/mfi/mfi_tbolt.c user/alfred/ewatchdog/sys/dev/mfi/mfireg.h user/alfred/ewatchdog/sys/dev/mfi/mfivar.h user/alfred/ewatchdog/sys/dev/mly/mly.c user/alfred/ewatchdog/sys/dev/mly/mlyvar.h user/alfred/ewatchdog/sys/dev/mps/mps.c user/alfred/ewatchdog/sys/dev/mps/mps_sas.c user/alfred/ewatchdog/sys/dev/mps/mpsvar.h user/alfred/ewatchdog/sys/dev/mpt/mpt_cam.c user/alfred/ewatchdog/sys/dev/mvs/mvs.c user/alfred/ewatchdog/sys/dev/mxge/if_mxge.c user/alfred/ewatchdog/sys/dev/mxge/if_mxge_var.h user/alfred/ewatchdog/sys/dev/oce/oce_if.c user/alfred/ewatchdog/sys/dev/oce/oce_if.h user/alfred/ewatchdog/sys/dev/ppc/ppc.c user/alfred/ewatchdog/sys/dev/ppc/ppc_isa.c user/alfred/ewatchdog/sys/dev/random/randomdev_soft.c user/alfred/ewatchdog/sys/dev/sdhci/sdhci.c user/alfred/ewatchdog/sys/dev/sdhci/sdhci.h user/alfred/ewatchdog/sys/dev/sdhci/sdhci_if.m user/alfred/ewatchdog/sys/dev/si/si.c user/alfred/ewatchdog/sys/dev/siis/siis.c user/alfred/ewatchdog/sys/dev/sound/pci/hda/hdaa.c user/alfred/ewatchdog/sys/dev/sound/pcm/mixer.c user/alfred/ewatchdog/sys/dev/sound/pcm/mixer.h user/alfred/ewatchdog/sys/dev/sound/usb/uaudio.c user/alfred/ewatchdog/sys/dev/sym/sym_hipd.c user/alfred/ewatchdog/sys/dev/syscons/syscons.c user/alfred/ewatchdog/sys/dev/trm/trm.c user/alfred/ewatchdog/sys/dev/twa/tw_osl.h user/alfred/ewatchdog/sys/dev/twa/tw_osl_cam.c user/alfred/ewatchdog/sys/dev/twa/tw_osl_freebsd.c user/alfred/ewatchdog/sys/dev/tws/tws.h user/alfred/ewatchdog/sys/dev/tws/tws_cam.c user/alfred/ewatchdog/sys/dev/usb/controller/usb_controller.c user/alfred/ewatchdog/sys/dev/usb/controller/xhci.c user/alfred/ewatchdog/sys/dev/usb/controller/xhci.h user/alfred/ewatchdog/sys/dev/usb/net/if_smsc.c user/alfred/ewatchdog/sys/dev/usb/serial/uftdi.c user/alfred/ewatchdog/sys/dev/usb/template/usb_template.c user/alfred/ewatchdog/sys/dev/usb/usb_bus.h user/alfred/ewatchdog/sys/dev/usb/usb_controller.h user/alfred/ewatchdog/sys/dev/usb/usb_dev.c user/alfred/ewatchdog/sys/dev/usb/usb_dev.h user/alfred/ewatchdog/sys/dev/usb/usb_device.c user/alfred/ewatchdog/sys/dev/usb/usb_device.h user/alfred/ewatchdog/sys/dev/usb/usb_dynamic.c user/alfred/ewatchdog/sys/dev/usb/usb_freebsd.h user/alfred/ewatchdog/sys/dev/usb/usb_freebsd_loader.h user/alfred/ewatchdog/sys/dev/usb/usb_generic.c user/alfred/ewatchdog/sys/dev/usb/usb_handle_request.c user/alfred/ewatchdog/sys/dev/usb/usb_hub.c user/alfred/ewatchdog/sys/dev/usb/usb_ioctl.h user/alfred/ewatchdog/sys/dev/usb/usb_msctest.c user/alfred/ewatchdog/sys/dev/usb/usb_pf.c user/alfred/ewatchdog/sys/dev/usb/usb_process.c user/alfred/ewatchdog/sys/dev/usb/usb_request.c user/alfred/ewatchdog/sys/dev/usb/usb_transfer.c user/alfred/ewatchdog/sys/dev/usb/usb_util.c user/alfred/ewatchdog/sys/dev/usb/usbdevs user/alfred/ewatchdog/sys/dev/usb/wlan/if_rum.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_rumvar.h user/alfred/ewatchdog/sys/dev/usb/wlan/if_run.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_runvar.h user/alfred/ewatchdog/sys/dev/usb/wlan/if_uath.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_upgt.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_upgtvar.h user/alfred/ewatchdog/sys/dev/usb/wlan/if_ural.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_uralvar.h user/alfred/ewatchdog/sys/dev/usb/wlan/if_urtw.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_urtwvar.h user/alfred/ewatchdog/sys/dev/usb/wlan/if_zyd.c user/alfred/ewatchdog/sys/dev/usb/wlan/if_zydreg.h user/alfred/ewatchdog/sys/dev/virtio/scsi/virtio_scsi.c user/alfred/ewatchdog/sys/dev/wds/wd7000.c user/alfred/ewatchdog/sys/fs/devfs/devfs_vnops.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_alloc.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_balloc.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_bmap.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_inode.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_inode_cnv.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_lookup.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_mount.h user/alfred/ewatchdog/sys/fs/ext2fs/ext2_subr.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_vfsops.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2_vnops.c user/alfred/ewatchdog/sys/fs/ext2fs/ext2fs.h user/alfred/ewatchdog/sys/fs/ext2fs/inode.h user/alfred/ewatchdog/sys/fs/fuse/fuse_io.c user/alfred/ewatchdog/sys/fs/msdosfs/msdosfs_fat.c user/alfred/ewatchdog/sys/fs/msdosfs/msdosfs_vfsops.c user/alfred/ewatchdog/sys/fs/msdosfs/msdosfsmount.h user/alfred/ewatchdog/sys/fs/nfs/nfs_commonkrpc.c user/alfred/ewatchdog/sys/fs/nfsclient/nfs_clstate.c user/alfred/ewatchdog/sys/fs/nfsclient/nfs_clvfsops.c user/alfred/ewatchdog/sys/fs/tmpfs/tmpfs_vnops.c user/alfred/ewatchdog/sys/geom/geom_vfs.c user/alfred/ewatchdog/sys/i386/acpica/acpi_machdep.c user/alfred/ewatchdog/sys/i386/i386/pmap.c user/alfred/ewatchdog/sys/i386/include/elf.h user/alfred/ewatchdog/sys/i386/include/frame.h user/alfred/ewatchdog/sys/i386/include/sigframe.h user/alfred/ewatchdog/sys/i386/include/signal.h user/alfred/ewatchdog/sys/i386/include/ucontext.h user/alfred/ewatchdog/sys/i386/isa/pmtimer.c user/alfred/ewatchdog/sys/i386/xen/pmap.c user/alfred/ewatchdog/sys/ia64/conf/GENERIC user/alfred/ewatchdog/sys/ia64/ia64/busdma_machdep.c user/alfred/ewatchdog/sys/ia64/ia64/dump_machdep.c user/alfred/ewatchdog/sys/ia64/ia64/genassym.c user/alfred/ewatchdog/sys/ia64/ia64/machdep.c user/alfred/ewatchdog/sys/ia64/ia64/mem.c user/alfred/ewatchdog/sys/ia64/ia64/pmap.c user/alfred/ewatchdog/sys/ia64/ia64/support.S user/alfred/ewatchdog/sys/ia64/ia64/syscall.S user/alfred/ewatchdog/sys/ia64/include/proc.h user/alfred/ewatchdog/sys/ia64/include/vmparam.h user/alfred/ewatchdog/sys/kern/imgact_elf.c user/alfred/ewatchdog/sys/kern/kern_clock.c user/alfred/ewatchdog/sys/kern/kern_clocksource.c user/alfred/ewatchdog/sys/kern/kern_descrip.c user/alfred/ewatchdog/sys/kern/kern_exec.c user/alfred/ewatchdog/sys/kern/kern_exit.c user/alfred/ewatchdog/sys/kern/kern_fork.c user/alfred/ewatchdog/sys/kern/kern_intr.c user/alfred/ewatchdog/sys/kern/kern_ktr.c user/alfred/ewatchdog/sys/kern/kern_sig.c user/alfred/ewatchdog/sys/kern/kern_sysctl.c user/alfred/ewatchdog/sys/kern/kern_tc.c user/alfred/ewatchdog/sys/kern/kern_thread.c user/alfred/ewatchdog/sys/kern/subr_blist.c user/alfred/ewatchdog/sys/kern/subr_sleepqueue.c user/alfred/ewatchdog/sys/kern/subr_trap.c user/alfred/ewatchdog/sys/kern/subr_turnstile.c user/alfred/ewatchdog/sys/kern/subr_uio.c user/alfred/ewatchdog/sys/kern/sys_capability.c user/alfred/ewatchdog/sys/kern/sys_pipe.c user/alfred/ewatchdog/sys/kern/sys_process.c user/alfred/ewatchdog/sys/kern/uipc_syscalls.c user/alfred/ewatchdog/sys/kern/uipc_usrreq.c user/alfred/ewatchdog/sys/kern/vfs_acl.c user/alfred/ewatchdog/sys/kern/vfs_bio.c user/alfred/ewatchdog/sys/kern/vfs_cluster.c user/alfred/ewatchdog/sys/kern/vfs_export.c user/alfred/ewatchdog/sys/kern/vfs_init.c user/alfred/ewatchdog/sys/kern/vfs_lookup.c user/alfred/ewatchdog/sys/kern/vfs_syscalls.c user/alfred/ewatchdog/sys/kern/vfs_vnops.c user/alfred/ewatchdog/sys/mips/adm5120/adm5120_machdep.c user/alfred/ewatchdog/sys/mips/alchemy/alchemy_machdep.c user/alfred/ewatchdog/sys/mips/beri/beri_machdep.c user/alfred/ewatchdog/sys/mips/cavium/octeon_machdep.c user/alfred/ewatchdog/sys/mips/gxemul/gxemul_machdep.c user/alfred/ewatchdog/sys/mips/idt/idt_machdep.c user/alfred/ewatchdog/sys/mips/malta/malta_machdep.c user/alfred/ewatchdog/sys/mips/mips/busdma_machdep.c user/alfred/ewatchdog/sys/mips/rt305x/rt305x_machdep.c user/alfred/ewatchdog/sys/mips/sentry5/s5_machdep.c user/alfred/ewatchdog/sys/mips/sibyte/sb_machdep.c user/alfred/ewatchdog/sys/modules/acpi/acpi/Makefile user/alfred/ewatchdog/sys/modules/cxgbe/firmware/Makefile user/alfred/ewatchdog/sys/modules/mxge/mxge/Makefile user/alfred/ewatchdog/sys/modules/usb/smsc/Makefile user/alfred/ewatchdog/sys/net/if.c user/alfred/ewatchdog/sys/net/if_pfsync.h user/alfred/ewatchdog/sys/net/if_var.h user/alfred/ewatchdog/sys/net80211/ieee80211.h user/alfred/ewatchdog/sys/net80211/ieee80211_action.c user/alfred/ewatchdog/sys/net80211/ieee80211_adhoc.c user/alfred/ewatchdog/sys/net80211/ieee80211_ddb.c user/alfred/ewatchdog/sys/net80211/ieee80211_freebsd.c user/alfred/ewatchdog/sys/net80211/ieee80211_hwmp.c user/alfred/ewatchdog/sys/net80211/ieee80211_input.c user/alfred/ewatchdog/sys/net80211/ieee80211_ioctl.h user/alfred/ewatchdog/sys/net80211/ieee80211_mesh.c user/alfred/ewatchdog/sys/net80211/ieee80211_mesh.h user/alfred/ewatchdog/sys/net80211/ieee80211_node.h user/alfred/ewatchdog/sys/net80211/ieee80211_output.c user/alfred/ewatchdog/sys/netgraph/ng_parse.c user/alfred/ewatchdog/sys/netinet/ip_carp.c user/alfred/ewatchdog/sys/netinet/ip_carp.h user/alfred/ewatchdog/sys/netinet/ip_input.c user/alfred/ewatchdog/sys/netinet/sctp.h user/alfred/ewatchdog/sys/netinet/sctp_asconf.c user/alfred/ewatchdog/sys/netinet/sctp_indata.c user/alfred/ewatchdog/sys/netinet/sctp_input.c user/alfred/ewatchdog/sys/netinet/sctp_output.c user/alfred/ewatchdog/sys/netinet/sctp_output.h user/alfred/ewatchdog/sys/netinet/sctp_pcb.c user/alfred/ewatchdog/sys/netinet/sctp_pcb.h user/alfred/ewatchdog/sys/netinet/sctp_structs.h user/alfred/ewatchdog/sys/netinet/sctp_sysctl.c user/alfred/ewatchdog/sys/netinet/sctp_timer.c user/alfred/ewatchdog/sys/netinet/sctp_usrreq.c user/alfred/ewatchdog/sys/netinet/sctputil.c user/alfred/ewatchdog/sys/netinet/tcp_lro.c user/alfred/ewatchdog/sys/netpfil/pf/if_pfsync.c user/alfred/ewatchdog/sys/nfsclient/nfs_krpc.c user/alfred/ewatchdog/sys/nfsclient/nfs_vfsops.c user/alfred/ewatchdog/sys/ofed/drivers/net/mlx4/en_tx.c user/alfred/ewatchdog/sys/opencrypto/xform.c user/alfred/ewatchdog/sys/pci/ncr.c user/alfred/ewatchdog/sys/powerpc/aim/mmu_oea.c user/alfred/ewatchdog/sys/powerpc/aim/mmu_oea64.c user/alfred/ewatchdog/sys/powerpc/aim/moea64_native.c user/alfred/ewatchdog/sys/powerpc/booke/platform_bare.c user/alfred/ewatchdog/sys/powerpc/booke/pmap.c user/alfred/ewatchdog/sys/powerpc/include/platformvar.h user/alfred/ewatchdog/sys/powerpc/include/vmparam.h user/alfred/ewatchdog/sys/powerpc/powermac/platform_powermac.c user/alfred/ewatchdog/sys/powerpc/powerpc/busdma_machdep.c user/alfred/ewatchdog/sys/powerpc/ps3/mmu_ps3.c user/alfred/ewatchdog/sys/powerpc/ps3/platform_ps3.c user/alfred/ewatchdog/sys/powerpc/ps3/ps3cdrom.c user/alfred/ewatchdog/sys/powerpc/wii/platform_wii.c user/alfred/ewatchdog/sys/powerpc/wii/wii_gpio.c user/alfred/ewatchdog/sys/powerpc/wii/wii_ipc.c user/alfred/ewatchdog/sys/powerpc/wii/wii_pic.c user/alfred/ewatchdog/sys/security/audit/audit.h user/alfred/ewatchdog/sys/security/audit/audit_bsm.c user/alfred/ewatchdog/sys/security/audit/audit_private.h user/alfred/ewatchdog/sys/sparc64/include/bus_dma.h user/alfred/ewatchdog/sys/sparc64/include/vmparam.h user/alfred/ewatchdog/sys/sparc64/sparc64/bus_machdep.c user/alfred/ewatchdog/sys/sparc64/sparc64/iommu.c user/alfred/ewatchdog/sys/sparc64/sparc64/tsb.c user/alfred/ewatchdog/sys/sys/buf.h user/alfred/ewatchdog/sys/sys/buf_ring.h user/alfred/ewatchdog/sys/sys/bus_dma.h user/alfred/ewatchdog/sys/sys/diskmbr.h user/alfred/ewatchdog/sys/sys/filedesc.h user/alfred/ewatchdog/sys/sys/mount.h user/alfred/ewatchdog/sys/sys/namei.h user/alfred/ewatchdog/sys/sys/param.h user/alfred/ewatchdog/sys/sys/proc.h user/alfred/ewatchdog/sys/sys/protosw.h user/alfred/ewatchdog/sys/sys/queue.h user/alfred/ewatchdog/sys/sys/signalvar.h user/alfred/ewatchdog/sys/sys/systm.h user/alfred/ewatchdog/sys/sys/uio.h user/alfred/ewatchdog/sys/tools/vnode_if.awk user/alfred/ewatchdog/sys/ufs/ffs/ffs_alloc.c user/alfred/ewatchdog/sys/ufs/ufs/inode.h user/alfred/ewatchdog/sys/vm/swap_pager.c user/alfred/ewatchdog/sys/vm/uma.h user/alfred/ewatchdog/sys/vm/uma_core.c user/alfred/ewatchdog/sys/vm/uma_int.h user/alfred/ewatchdog/sys/vm/vm_kern.c user/alfred/ewatchdog/sys/vm/vm_map.c user/alfred/ewatchdog/sys/vm/vm_object.c user/alfred/ewatchdog/sys/vm/vm_object.h user/alfred/ewatchdog/sys/vm/vm_page.c user/alfred/ewatchdog/sys/vm/vm_phys.c user/alfred/ewatchdog/sys/vm/vnode_pager.c user/alfred/ewatchdog/sys/x86/acpica/srat.c user/alfred/ewatchdog/sys/x86/isa/atrtc.c user/alfred/ewatchdog/sys/x86/isa/clock.c user/alfred/ewatchdog/sys/x86/x86/busdma_machdep.c user/alfred/ewatchdog/tools/regression/bin/test/regress.sh user/alfred/ewatchdog/tools/regression/sockets/unix_cmsg/README user/alfred/ewatchdog/tools/regression/sockets/unix_cmsg/unix_cmsg.c user/alfred/ewatchdog/tools/regression/sockets/unix_cmsg/unix_cmsg.t user/alfred/ewatchdog/tools/tools/ath/athalq/Makefile user/alfred/ewatchdog/tools/tools/ath/athalq/ar5210_ds.c user/alfred/ewatchdog/tools/tools/ath/athalq/ar5211_ds.c user/alfred/ewatchdog/tools/tools/ath/athalq/ar5212_ds.c user/alfred/ewatchdog/tools/tools/ath/athalq/ar5416_ds.c user/alfred/ewatchdog/tools/tools/ath/athalq/main.c user/alfred/ewatchdog/tools/tools/netmap/Makefile user/alfred/ewatchdog/tools/tools/netmap/bridge.c user/alfred/ewatchdog/tools/tools/netmap/pcap.c user/alfred/ewatchdog/tools/tools/netmap/pkt-gen.c user/alfred/ewatchdog/usr.bin/Makefile user/alfred/ewatchdog/usr.bin/clang/bugpoint/Makefile user/alfred/ewatchdog/usr.bin/clang/clang-tblgen/Makefile user/alfred/ewatchdog/usr.bin/clang/llc/Makefile user/alfred/ewatchdog/usr.bin/clang/lli/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-ar/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-as/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-bcanalyzer/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-diff/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-dis/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-extract/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-link/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-mc/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-nm/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-objdump/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-prof/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-ranlib/Makefile user/alfred/ewatchdog/usr.bin/clang/llvm-rtdyld/Makefile user/alfred/ewatchdog/usr.bin/clang/macho-dump/Makefile user/alfred/ewatchdog/usr.bin/clang/opt/Makefile user/alfred/ewatchdog/usr.bin/clang/tblgen/Makefile user/alfred/ewatchdog/usr.bin/csup/csup.1 user/alfred/ewatchdog/usr.bin/dtc/input_buffer.cc user/alfred/ewatchdog/usr.bin/ee/Makefile user/alfred/ewatchdog/usr.bin/find/function.c user/alfred/ewatchdog/usr.bin/find/main.c user/alfred/ewatchdog/usr.bin/gprof/aout.c user/alfred/ewatchdog/usr.bin/gprof/arcs.c user/alfred/ewatchdog/usr.bin/gprof/dfn.c user/alfred/ewatchdog/usr.bin/gprof/gprof.c user/alfred/ewatchdog/usr.bin/gprof/gprof.h user/alfred/ewatchdog/usr.bin/gprof/hertz.c user/alfred/ewatchdog/usr.bin/gprof/kernel.c user/alfred/ewatchdog/usr.bin/gprof/lookup.c user/alfred/ewatchdog/usr.bin/gprof/printgprof.c user/alfred/ewatchdog/usr.bin/gprof/printlist.c user/alfred/ewatchdog/usr.bin/grep/regex/tre-fastmatch.c user/alfred/ewatchdog/usr.bin/kdump/kdump.c user/alfred/ewatchdog/usr.bin/kdump/mksubr user/alfred/ewatchdog/usr.bin/keylogin/keylogin.c user/alfred/ewatchdog/usr.bin/mail/util.c user/alfred/ewatchdog/usr.bin/netstat/inet.c user/alfred/ewatchdog/usr.bin/netstat/inet6.c user/alfred/ewatchdog/usr.bin/netstat/main.c user/alfred/ewatchdog/usr.bin/netstat/netisr.c user/alfred/ewatchdog/usr.bin/netstat/sctp.c user/alfred/ewatchdog/usr.bin/netstat/unix.c user/alfred/ewatchdog/usr.bin/newgrp/newgrp.1 user/alfred/ewatchdog/usr.bin/newgrp/newgrp.c user/alfred/ewatchdog/usr.bin/patch/util.c user/alfred/ewatchdog/usr.bin/procstat/procstat_files.c user/alfred/ewatchdog/usr.bin/systat/ifcmds.c user/alfred/ewatchdog/usr.bin/systat/ifstat.c user/alfred/ewatchdog/usr.bin/systat/main.c user/alfred/ewatchdog/usr.bin/systat/systat.1 user/alfred/ewatchdog/usr.bin/vacation/Makefile user/alfred/ewatchdog/usr.bin/xinstall/Makefile user/alfred/ewatchdog/usr.sbin/acpi/acpidb/Makefile user/alfred/ewatchdog/usr.sbin/acpi/iasl/Makefile user/alfred/ewatchdog/usr.sbin/bhyve/Makefile user/alfred/ewatchdog/usr.sbin/bhyve/bhyverun.c user/alfred/ewatchdog/usr.sbin/bhyve/mem.c user/alfred/ewatchdog/usr.sbin/bhyve/mem.h user/alfred/ewatchdog/usr.sbin/bhyve/pci_emul.c user/alfred/ewatchdog/usr.sbin/bhyve/pci_emul.h user/alfred/ewatchdog/usr.sbin/bhyve/pci_hostbridge.c user/alfred/ewatchdog/usr.sbin/bhyve/pci_virtio_block.c user/alfred/ewatchdog/usr.sbin/bhyvectl/bhyvectl.c user/alfred/ewatchdog/usr.sbin/bsdconfig/Makefile user/alfred/ewatchdog/usr.sbin/bsdconfig/include/Makefile user/alfred/ewatchdog/usr.sbin/bsdconfig/include/messages.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/devices user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/include/Makefile user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/common.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/device.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/hostname.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/ipaddr.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/netmask.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/resolv.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/networking/share/routing.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/share/Makefile user/alfred/ewatchdog/usr.sbin/bsdconfig/share/common.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/share/script.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/share/strings.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/share/variable.subr user/alfred/ewatchdog/usr.sbin/bsdconfig/startup/rcvar user/alfred/ewatchdog/usr.sbin/crunch/crunchgen/crunchgen.c user/alfred/ewatchdog/usr.sbin/extattr/rmextattr.c user/alfred/ewatchdog/usr.sbin/jail/command.c user/alfred/ewatchdog/usr.sbin/kgmon/kgmon.c user/alfred/ewatchdog/usr.sbin/makefs/makefs.8 user/alfred/ewatchdog/usr.sbin/makefs/makefs.c user/alfred/ewatchdog/usr.sbin/makefs/makefs.h user/alfred/ewatchdog/usr.sbin/makefs/mtree.c user/alfred/ewatchdog/usr.sbin/makefs/walk.c user/alfred/ewatchdog/usr.sbin/mountd/mountd.c user/alfred/ewatchdog/usr.sbin/named/Makefile user/alfred/ewatchdog/usr.sbin/nfsd/nfsd.c user/alfred/ewatchdog/usr.sbin/pciconf/Makefile user/alfred/ewatchdog/usr.sbin/pciconf/pciconf.c user/alfred/ewatchdog/usr.sbin/pkg/pkg.c user/alfred/ewatchdog/usr.sbin/rtadvd/rtadvd.8 user/alfred/ewatchdog/usr.sbin/rtadvd/rtadvd.c user/alfred/ewatchdog/usr.sbin/sendmail/Makefile user/alfred/ewatchdog/usr.sbin/sysrc/Makefile user/alfred/ewatchdog/usr.sbin/usbconfig/dump.c Directory Properties: user/alfred/ewatchdog/ (props changed) user/alfred/ewatchdog/cddl/contrib/opensolaris/ (props changed) user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zfs/ (props changed) user/alfred/ewatchdog/cddl/contrib/opensolaris/lib/libzfs/ (props changed) user/alfred/ewatchdog/contrib/binutils/ (props changed) user/alfred/ewatchdog/contrib/expat/ (props changed) user/alfred/ewatchdog/contrib/expat/COPYING (props changed) user/alfred/ewatchdog/contrib/expat/doc/style.css (props changed) user/alfred/ewatchdog/contrib/expat/doc/xmlwf.1 (props changed) user/alfred/ewatchdog/contrib/expat/examples/elements.c (props changed) user/alfred/ewatchdog/contrib/expat/examples/outline.c (props changed) user/alfred/ewatchdog/contrib/expat/lib/ascii.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/asciitab.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/iasciitab.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/internal.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/latin1tab.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/nametab.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/utf8tab.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/xmlrole.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/xmltok.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/xmltok_impl.h (props changed) user/alfred/ewatchdog/contrib/expat/lib/xmltok_ns.c (props changed) user/alfred/ewatchdog/contrib/expat/tests/chardata.c (props changed) user/alfred/ewatchdog/contrib/expat/tests/chardata.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/codepage.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/codepage.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/ct.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/filemap.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/unixfilemap.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/win32filemap.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlfile.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlfile.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlmime.c (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlmime.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmltchar.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlurl.h (props changed) user/alfred/ewatchdog/contrib/expat/xmlwf/xmlwin32url.cxx (props changed) user/alfred/ewatchdog/contrib/libc++/ (props changed) user/alfred/ewatchdog/contrib/libcxxrt/ (props changed) user/alfred/ewatchdog/contrib/llvm/ (props changed) user/alfred/ewatchdog/contrib/llvm/tools/clang/ (props changed) user/alfred/ewatchdog/contrib/openbsm/ (props changed) user/alfred/ewatchdog/contrib/sendmail/ (props changed) user/alfred/ewatchdog/contrib/wpa/ (props changed) user/alfred/ewatchdog/crypto/heimdal/ (props changed) user/alfred/ewatchdog/crypto/openssl/ (props changed) user/alfred/ewatchdog/gnu/lib/ (props changed) user/alfred/ewatchdog/gnu/usr.bin/gdb/ (props changed) user/alfred/ewatchdog/lib/libc/ (props changed) user/alfred/ewatchdog/lib/libvmmapi/ (props changed) user/alfred/ewatchdog/sbin/ (props changed) user/alfred/ewatchdog/share/man/man4/ (props changed) user/alfred/ewatchdog/sys/ (props changed) user/alfred/ewatchdog/sys/amd64/vmm/ (props changed) user/alfred/ewatchdog/sys/boot/ (props changed) user/alfred/ewatchdog/sys/cddl/contrib/opensolaris/ (props changed) user/alfred/ewatchdog/sys/conf/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/common/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/compiler/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/debugger/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/events/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/executer/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/hardware/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/namespace/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/parser/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/resources/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/components/utilities/ (props changed) user/alfred/ewatchdog/sys/contrib/dev/acpica/include/ (props changed) user/alfred/ewatchdog/usr.bin/csup/ (props changed) user/alfred/ewatchdog/usr.bin/procstat/ (props changed) user/alfred/ewatchdog/usr.sbin/bhyve/ (props changed) user/alfred/ewatchdog/usr.sbin/bhyvectl/ (props changed) user/alfred/ewatchdog/usr.sbin/jail/ (props changed) user/alfred/ewatchdog/usr.sbin/rtadvd/ (props changed) Modified: user/alfred/ewatchdog/Makefile.inc1 ============================================================================== --- user/alfred/ewatchdog/Makefile.inc1 Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/Makefile.inc1 Wed Feb 27 04:37:09 2013 (r247375) @@ -673,6 +673,10 @@ _install-info= install-info _zoneinfo= zic tzsetup .endif +.if exists(/usr/sbin/nmtree) +_nmtree_itools= nmtree +.endif + ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ date echo egrep find grep id install ${_install-info} \ ln lockf make mkdir mtree ${_nmtree_itools} mv pwd_mkdb \ @@ -1128,14 +1132,13 @@ _lex= usr.bin/lex .endif .if ${BOOTSTRAPPING} < 1000013 -_yacc= usr.bin/yacc +_yacc= lib/liby \ + usr.bin/yacc .endif .if ${BOOTSTRAPPING} < 1000026 _nmtree= lib/libnetbsd \ usr.sbin/nmtree -.else -_nmtree_itools= nmtree .endif .if ${BOOTSTRAPPING} < 1000027 @@ -1205,6 +1208,7 @@ bootstrap-tools: ${_sed} \ ${_yacc} \ ${_lex} \ + lib/libmd \ usr.bin/xinstall \ ${_gensnmptree} \ usr.sbin/config \ Modified: user/alfred/ewatchdog/ObsoleteFiles.inc ============================================================================== --- user/alfred/ewatchdog/ObsoleteFiles.inc Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/ObsoleteFiles.inc Wed Feb 27 04:37:09 2013 (r247375) @@ -45,6 +45,10 @@ OLD_DIRS+=usr/share/man/man1aout OLD_DIRS+=usr/share/man/cat1aout OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1aout OLD_DIRS+=usr/share/man/en.UTF-8/cat1aout +# 20130110: bsd.compat.mk removed +OLD_FILES+=usr/share/mk/bsd.compat.mk +# 20130103: gnats-supfile removed +OLD_FILES+=usr/share/examples/cvsup/gnats-supfile # 20121230: libdisk removed OLD_FILES+=usr/share/man/man3/libdisk.3.gz usr/include/libdisk.h OLD_FILES+=usr/lib/libdisk.a usr/lib32/libdisk.a Modified: user/alfred/ewatchdog/bin/ps/ps.1 ============================================================================== --- user/alfred/ewatchdog/bin/ps/ps.1 Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/ps/ps.1 Wed Feb 27 04:37:09 2013 (r247375) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd September 18, 2012 +.Dd February 7, 2013 .Dt PS 1 .Os .Sh NAME @@ -323,6 +323,7 @@ the include file .It Dv "P_INMEM" Ta No "0x10000000" Ta "Loaded into memory" .It Dv "P_SWAPPINGOUT" Ta No "0x20000000" Ta "Process is being swapped out" .It Dv "P_SWAPPINGIN" Ta No "0x40000000" Ta "Process is being swapped in" +.It Dv "P_PPTRACE" Ta No "0x80000000" Ta "Vforked child issued ptrace(PT_TRACEME)" .El .It Cm label The MAC label of the process. Modified: user/alfred/ewatchdog/bin/setfacl/setfacl.1 ============================================================================== --- user/alfred/ewatchdog/bin/setfacl/setfacl.1 Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/setfacl/setfacl.1 Wed Feb 27 04:37:09 2013 (r247375) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 2, 2012 +.Dd February 8, 2013 .Dt SETFACL 1 .Os .Sh NAME @@ -91,10 +91,16 @@ An error will be reported if any of the specified files cannot have a default entry (i.e.\& non-directories). This option is not applicable to NFSv4 ACLs. .It Fl m Ar entries -Modify the ACL entries on the specified files by adding new -entries and modifying existing ACL entries with the ACL entries -specified in -.Ar entries . +Modify the ACL on the specified file. +New entries will be added, and existing entries will be modified +according to the +.Ar entries +argument. +For NFSv4 ACLs, it is recommended to use the +.Fl a +and +.Fl x +options instead. .It Fl M Ar file Modify the ACL entries on the specified files by adding new ACL entries and modifying existing ACL entries with the ACL @@ -319,9 +325,9 @@ write_data execute .It p append_data -.It d -delete_child .It D +delete_child +.It d delete .It a read_attributes Modified: user/alfred/ewatchdog/bin/sh/eval.c ============================================================================== --- user/alfred/ewatchdog/bin/sh/eval.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/eval.c Wed Feb 27 04:37:09 2013 (r247375) @@ -174,6 +174,7 @@ evalstring(char *s, int flags) any = 1; } popstackmark(&smark); + setstackmark(&smark); } popfile(); popstackmark(&smark); @@ -296,10 +297,11 @@ evaltree(union node *n, int flags) } n = next; popstackmark(&smark); + setstackmark(&smark); } while (n != NULL); out: popstackmark(&smark); - if (pendingsigs) + if (pendingsig) dotrap(); if (eflag && exitstatus != 0 && do_etest) exitshell(exitstatus); Modified: user/alfred/ewatchdog/bin/sh/jobs.c ============================================================================== --- user/alfred/ewatchdog/bin/sh/jobs.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/jobs.c Wed Feb 27 04:37:09 2013 (r247375) @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv) } while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1); in_waitcmd--; - return 0; + return pendingsig + 128; } @@ -1030,7 +1030,7 @@ dowait(int mode, struct job *job) int wflags; int restore_sigchld; - TRACE(("dowait(%d) called\n", block)); + TRACE(("dowait(%d, %p) called\n", mode, job)); restore_sigchld = 0; if ((mode & DOWAIT_SIG) != 0) { sigfillset(&mask); Modified: user/alfred/ewatchdog/bin/sh/main.c ============================================================================== --- user/alfred/ewatchdog/bin/sh/main.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/main.c Wed Feb 27 04:37:09 2013 (r247375) @@ -196,7 +196,7 @@ cmdloop(int top) TRACE(("cmdloop(%d) called\n", top)); setstackmark(&smark); for (;;) { - if (pendingsigs) + if (pendingsig) dotrap(); inter = 0; if (iflag && top) { Modified: user/alfred/ewatchdog/bin/sh/mksyntax.c ============================================================================== --- user/alfred/ewatchdog/bin/sh/mksyntax.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/mksyntax.c Wed Feb 27 04:37:09 2013 (r247375) @@ -103,29 +103,19 @@ static char writer[] = "\ static FILE *cfile; static FILE *hfile; -static const char *syntax[513]; -static int base; -static int size; /* number of values which a char variable can have */ -static int nbits; /* number of bits in a character */ -static int digit_contig;/* true if digits are contiguous */ -static void filltable(const char *); -static void init(void); +static void add_default(void); +static void finish(void); +static void init(const char *); static void add(const char *, const char *); -static void print(const char *); static void output_type_macros(void); -static void digit_convert(void); int main(int argc __unused, char **argv __unused) { - char c; - char d; - int sign; int i; char buf[80]; int pos; - static char digit[] = "0123456789"; /* Create output files */ if ((cfile = fopen("syntax.c", "w")) == NULL) { @@ -139,32 +129,8 @@ main(int argc __unused, char **argv __un fputs(writer, hfile); fputs(writer, cfile); - /* Determine the characteristics of chars. */ - c = -1; - sign = (c > 0) ? 0 : 1; - for (nbits = 1 ; ; nbits++) { - d = (1 << nbits) - 1; - if (d == c) - break; - } -#if 0 - printf("%s %d bit chars\n", sign? "signed" : "unsigned", nbits); -#endif - if (nbits > 9) { - fputs("Characters can't have more than 9 bits\n", stderr); - exit(2); - } - size = (1 << nbits) + 1; - base = 1; - if (sign) - base += 1 << (nbits - 1); - digit_contig = 1; - for (i = 0 ; i < 10 ; i++) { - if (digit[i] != '0' + i) - digit_contig = 0; - } - fputs("#include \n", hfile); + fputs("#include \n\n", hfile); /* Generate the #define statements in the header file */ fputs("/* Syntax classes */\n", hfile); @@ -185,8 +151,8 @@ main(int argc __unused, char **argv __un fprintf(hfile, "/* %s */\n", is_entry[i].comment); } putc('\n', hfile); - fprintf(hfile, "#define SYNBASE %d\n", base); - fprintf(hfile, "#define PEOF %d\n\n", -base); + fputs("#define SYNBASE (1 - CHAR_MIN)\n", hfile); + fputs("#define PEOF -SYNBASE\n\n", hfile); putc('\n', hfile); fputs("#define BASESYNTAX (basesyntax + SYNBASE)\n", hfile); fputs("#define DQSYNTAX (dqsyntax + SYNBASE)\n", hfile); @@ -197,10 +163,13 @@ main(int argc __unused, char **argv __un putc('\n', hfile); /* Generate the syntax tables. */ + fputs("#include \"parser.h\"\n", cfile); fputs("#include \"shell.h\"\n", cfile); fputs("#include \"syntax.h\"\n\n", cfile); - init(); + fputs("/* syntax table used when not in quotes */\n", cfile); + init("basesyntax"); + add_default(); add("\n", "CNL"); add("\\", "CBACK"); add("'", "CSQUOTE"); @@ -209,9 +178,11 @@ main(int argc __unused, char **argv __un add("$", "CVAR"); add("}", "CENDVAR"); add("<>();&| \t", "CSPCL"); - print("basesyntax"); - init(); + finish(); + fputs("\n/* syntax table used when in double quotes */\n", cfile); + init("dqsyntax"); + add_default(); add("\n", "CNL"); add("\\", "CBACK"); add("\"", "CENDQUOTE"); @@ -220,17 +191,21 @@ main(int argc __unused, char **argv __un add("}", "CENDVAR"); /* ':/' for tilde expansion, '-^]' for [a\-x] pattern ranges */ add("!*?[]=~:/-^", "CCTL"); - print("dqsyntax"); - init(); + finish(); + fputs("\n/* syntax table used when in single quotes */\n", cfile); + init("sqsyntax"); + add_default(); add("\n", "CNL"); add("\\", "CSBACK"); add("'", "CENDQUOTE"); /* ':/' for tilde expansion, '-^]' for [a\-x] pattern ranges */ add("!*?[]=~:/-^", "CCTL"); - print("sqsyntax"); - init(); + finish(); + fputs("\n/* syntax table used when in arithmetic */\n", cfile); + init("arisyntax"); + add_default(); add("\n", "CNL"); add("\\", "CBACK"); add("`", "CBQUOTE"); @@ -239,114 +214,108 @@ main(int argc __unused, char **argv __un add("}", "CENDVAR"); add("(", "CLP"); add(")", "CRP"); - print("arisyntax"); - filltable("0"); + finish(); + fputs("\n/* character classification table */\n", cfile); + init("is_type"); add("0123456789", "ISDIGIT"); add("abcdefghijklmnopqrstuvwxyz", "ISLOWER"); add("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ISUPPER"); add("_", "ISUNDER"); add("#?$!-*@", "ISSPECL"); - print("is_type"); - if (! digit_contig) - digit_convert(); + finish(); + exit(0); } - /* - * Clear the syntax table. + * Output the header and declaration of a syntax table. */ static void -filltable(const char *dftval) +init(const char *name) { - int i; + fprintf(hfile, "extern const char %s[];\n", name); + fprintf(cfile, "const char %s[SYNBASE + CHAR_MAX + 1] = {\n", name); +} + - for (i = 0 ; i < size ; i++) - syntax[i] = dftval; +static void +add_one(const char *key, const char *type) +{ + fprintf(cfile, "\t[SYNBASE + %s] = %s,\n", key, type); } /* - * Initialize the syntax table with default values. + * Add default values to the syntax table. */ static void -init(void) +add_default(void) { - filltable("CWORD"); - syntax[0] = "CEOF"; - syntax[base + CTLESC] = "CCTL"; - syntax[base + CTLVAR] = "CCTL"; - syntax[base + CTLENDVAR] = "CCTL"; - syntax[base + CTLBACKQ] = "CCTL"; - syntax[base + CTLBACKQ + CTLQUOTE] = "CCTL"; - syntax[base + CTLARI] = "CCTL"; - syntax[base + CTLENDARI] = "CCTL"; - syntax[base + CTLQUOTEMARK] = "CCTL"; - syntax[base + CTLQUOTEEND] = "CCTL"; + add_one("PEOF", "CEOF"); + add_one("CTLESC", "CCTL"); + add_one("CTLVAR", "CCTL"); + add_one("CTLENDVAR", "CCTL"); + add_one("CTLBACKQ", "CCTL"); + add_one("CTLBACKQ + CTLQUOTE", "CCTL"); + add_one("CTLARI", "CCTL"); + add_one("CTLENDARI", "CCTL"); + add_one("CTLQUOTEMARK", "CCTL"); + add_one("CTLQUOTEEND", "CCTL"); } /* - * Add entries to the syntax table. + * Output the footer of a syntax table. */ static void -add(const char *p, const char *type) +finish(void) { - while (*p) - syntax[*p++ + base] = type; + fputs("};\n", cfile); } - /* - * Output the syntax table. + * Add entries to the syntax table. */ static void -print(const char *name) +add(const char *p, const char *type) { - int i; - int col; - - fprintf(hfile, "extern const char %s[];\n", name); - fprintf(cfile, "const char %s[%d] = {\n", name, size); - col = 0; - for (i = 0 ; i < size ; i++) { - if (i == 0) { - fputs(" ", cfile); - } else if ((i & 03) == 0) { - fputs(",\n ", cfile); - col = 0; - } else { - putc(',', cfile); - while (++col < 9 * (i & 03)) - putc(' ', cfile); + for (; *p; ++p) { + char c = *p; + switch (c) { + case '\t': c = 't'; break; + case '\n': c = 'n'; break; + case '\'': c = '\''; break; + case '\\': c = '\\'; break; + + default: + fprintf(cfile, "\t[SYNBASE + '%c'] = %s,\n", c, type); + continue; } - fputs(syntax[i], cfile); - col += strlen(syntax[i]); + fprintf(cfile, "\t[SYNBASE + '\\%c'] = %s,\n", c, type); } - fputs("\n};\n", cfile); } - /* * Output character classification macros (e.g. is_digit). If digits are * contiguous, we can test for them quickly. */ static const char *macro[] = { - "#define is_digit(c)\t((is_type+SYNBASE)[(int)c] & ISDIGIT)", + "#define is_digit(c)\t((unsigned int)((c) - '0') <= 9)", "#define is_eof(c)\t((c) == PEOF)", "#define is_alpha(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER))", "#define is_name(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER))", "#define is_in_name(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER|ISDIGIT))", "#define is_special(c)\t((is_type+SYNBASE)[(int)c] & (ISSPECL|ISDIGIT))", + "#define digit_val(c)\t((c) - '0')", NULL }; @@ -355,41 +324,6 @@ output_type_macros(void) { const char **pp; - if (digit_contig) - macro[0] = "#define is_digit(c)\t((unsigned int)((c) - '0') <= 9)"; for (pp = macro ; *pp ; pp++) fprintf(hfile, "%s\n", *pp); - if (digit_contig) - fputs("#define digit_val(c)\t((c) - '0')\n", hfile); - else - fputs("#define digit_val(c)\t(digit_value[c])\n", hfile); -} - - - -/* - * Output digit conversion table (if digits are not contiguous). - */ - -static void -digit_convert(void) -{ - int maxdigit; - static char digit[] = "0123456789"; - char *p; - int i; - - maxdigit = 0; - for (p = digit ; *p ; p++) - if (*p > maxdigit) - maxdigit = *p; - fputs("extern const char digit_value[];\n", hfile); - fputs("\n\nconst char digit_value[] = {\n", cfile); - for (i = 0 ; i <= maxdigit ; i++) { - for (p = digit ; *p && *p != i ; p++); - if (*p == '\0') - p = digit; - fprintf(cfile, " %d,\n", (int)(p - digit)); - } - fputs("};\n", cfile); } Modified: user/alfred/ewatchdog/bin/sh/parser.h ============================================================================== --- user/alfred/ewatchdog/bin/sh/parser.h Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/parser.h Wed Feb 27 04:37:09 2013 (r247375) @@ -39,7 +39,7 @@ #define CTLENDVAR '\371' #define CTLBACKQ '\372' #define CTLQUOTE 01 /* ored with CTLBACKQ code if in quotes */ -/* CTLBACKQ | CTLQUOTE == '\205' */ +/* CTLBACKQ | CTLQUOTE == '\373' */ #define CTLARI '\374' #define CTLENDARI '\375' #define CTLQUOTEMARK '\376' Modified: user/alfred/ewatchdog/bin/sh/trap.c ============================================================================== --- user/alfred/ewatchdog/bin/sh/trap.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/trap.c Wed Feb 27 04:37:09 2013 (r247375) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); MKINIT char sigmode[NSIG]; /* current value of signal */ -int pendingsigs; /* indicates some signal received */ +volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -388,22 +388,25 @@ onsig(int signo) return; } - if (signo != SIGCHLD || !ignore_sigchld) - gotsig[signo] = 1; - pendingsigs++; - /* If we are currently in a wait builtin, prepare to break it */ - if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) - breakwaitcmd = 1; - /* - * If a trap is set, not ignored and not the null command, we need - * to make sure traps are executed even when a child blocks signals. - */ - if (Tflag && - trap[signo] != NULL && - ! (trap[signo][0] == '\0') && - ! (trap[signo][0] == ':' && trap[signo][1] == '\0')) + if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) { breakwaitcmd = 1; + pendingsig = signo; + } + + if (trap[signo] != NULL && trap[signo][0] != '\0' && + (signo != SIGCHLD || !ignore_sigchld)) { + gotsig[signo] = 1; + pendingsig = signo; + + /* + * If a trap is set, not ignored and not the null command, we + * need to make sure traps are executed even when a child + * blocks signals. + */ + if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0')) + breakwaitcmd = 1; + } #ifndef NO_HISTORY if (signo == SIGWINCH) @@ -424,7 +427,7 @@ dotrap(void) in_dotrap++; for (;;) { - pendingsigs = 0; + pendingsig = 0; for (i = 1; i < NSIG; i++) { if (gotsig[i]) { gotsig[i] = 0; Modified: user/alfred/ewatchdog/bin/sh/trap.h ============================================================================== --- user/alfred/ewatchdog/bin/sh/trap.h Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/sh/trap.h Wed Feb 27 04:37:09 2013 (r247375) @@ -33,7 +33,7 @@ * $FreeBSD$ */ -extern int pendingsigs; +extern volatile sig_atomic_t pendingsig; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; Modified: user/alfred/ewatchdog/bin/test/test.1 ============================================================================== --- user/alfred/ewatchdog/bin/test/test.1 Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/test/test.1 Wed Feb 27 04:37:09 2013 (r247375) @@ -169,15 +169,65 @@ True if .Ar file exists and is a socket. .It Ar file1 Fl nt Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and +.Ar file1 +is newer than +.Ar file2 . +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2 +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is newer than +has a more recent last access time +.Pq Ar X Ns = Ns Cm a , +inode creation time +.Pq Ar X Ns = Ns Cm b , +change time +.Pq Ar X Ns = Ns Cm c , +or modification time +.Pq Ar X Ns = Ns Cm m +than the last access time +.Pq Ar Y Ns = Ns Cm a , +inode creation time +.Pq Ar Y Ns = Ns Cm b , +change time +.Pq Ar Y Ns = Ns Cm c , +or modification time +.Pq Ar Y Ns = Ns Cm m +of .Ar file2 . +Note that +.Ic -ntmm +is equivalent to +.Ic -nt . .It Ar file1 Fl ot Ar file2 -True if +True if both +.Ar file1 +and +.Ar file2 +exist and .Ar file1 -exists and is older than +is older than .Ar file2 . +Note that +.Ar file1 +.Ic -ot +.Ar file2 +is equivalent to +.Ar file2 +.Ic -nt +.Ar file1 +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2 +Equivalent to +.Ar file2 +.Ic -nt Ns Ar Y Ns Ar X +.Ar file1 . .It Ar file1 Fl ef Ar file2 True if .Ar file1 Modified: user/alfred/ewatchdog/bin/test/test.c ============================================================================== --- user/alfred/ewatchdog/bin/test/test.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/bin/test/test.c Wed Feb 27 04:37:09 2013 (r247375) @@ -63,7 +63,7 @@ error(const char *msg, ...) "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| - "-nt"|"-ot"|"-ef"; + "-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef"; operand ::= */ @@ -85,8 +85,38 @@ enum token { FILSUID, FILSGID, FILSTCK, - FILNT, - FILOT, + FILNTAA, + FILNTAB, + FILNTAC, + FILNTAM, + FILNTBA, + FILNTBB, + FILNTBC, + FILNTBM, + FILNTCA, + FILNTCB, + FILNTCC, + FILNTCM, + FILNTMA, + FILNTMB, + FILNTMC, + FILNTMM, + FILOTAA, + FILOTAB, + FILOTAC, + FILOTAM, + FILOTBA, + FILOTBB, + FILOTBC, + FILOTBM, + FILOTCA, + FILOTCB, + FILOTCC, + FILOTCM, + FILOTMA, + FILOTMB, + FILOTMC, + FILOTMM, FILEQ, FILUID, FILGID, @@ -118,9 +148,16 @@ enum token_types { PAREN }; +enum time_types { + ATIME, + BTIME, + CTIME, + MTIME +}; + static struct t_op { - char op_text[4]; - short op_num, op_type; + char op_text[6]; + char op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, {"-w", FILWR, UNOP}, @@ -154,8 +191,40 @@ static struct t_op { {"-gt", INTGT, BINOP}, {"-le", INTLE, BINOP}, {"-lt", INTLT, BINOP}, - {"-nt", FILNT, BINOP}, - {"-ot", FILOT, BINOP}, + {"-nt", FILNTMM, BINOP}, + {"-ntaa", FILNTAA, BINOP}, + {"-ntab", FILNTAB, BINOP}, + {"-ntac", FILNTAC, BINOP}, + {"-ntam", FILNTAM, BINOP}, + {"-ntba", FILNTBA, BINOP}, + {"-ntbb", FILNTBB, BINOP}, + {"-ntbc", FILNTBC, BINOP}, + {"-ntbm", FILNTBM, BINOP}, + {"-ntca", FILNTCA, BINOP}, + {"-ntcb", FILNTCB, BINOP}, + {"-ntcc", FILNTCC, BINOP}, + {"-ntcm", FILNTCM, BINOP}, + {"-ntma", FILNTMA, BINOP}, + {"-ntmb", FILNTMB, BINOP}, + {"-ntmc", FILNTMC, BINOP}, + {"-ntmm", FILNTMM, BINOP}, + {"-ot", FILOTMM, BINOP}, + {"-otaa", FILOTAA, BINOP}, + {"-otab", FILOTBB, BINOP}, + {"-otac", FILOTAC, BINOP}, + {"-otam", FILOTAM, BINOP}, + {"-otba", FILOTBA, BINOP}, + {"-otbb", FILOTBB, BINOP}, + {"-otbc", FILOTBC, BINOP}, + {"-otbm", FILOTBM, BINOP}, + {"-otca", FILOTCA, BINOP}, + {"-otcb", FILOTCB, BINOP}, + {"-otcc", FILOTCC, BINOP}, + {"-otcm", FILOTCM, BINOP}, + {"-otma", FILOTMA, BINOP}, + {"-otmb", FILOTMB, BINOP}, + {"-otmc", FILOTMC, BINOP}, + {"-otmm", FILOTMM, BINOP}, {"-ef", FILEQ, BINOP}, {"!", UNOT, BUNOP}, {"-a", BAND, BBINOP}, @@ -180,10 +249,10 @@ static int intcmp(const char *, const ch static int isunopoperand(void); static int islparenoperand(void); static int isrparenoperand(void); -static int newerf(const char *, const char *); +static int newerf(const char *, const char *, enum time_types, + enum time_types); static int nexpr(enum token); static int oexpr(enum token); -static int olderf(const char *, const char *); static int primary(enum token); static void syntax(const char *, const char *); static enum token t_lex(char *); @@ -353,10 +422,70 @@ binop(void) return intcmp(opnd1, opnd2) <= 0; case INTLT: return intcmp(opnd1, opnd2) < 0; - case FILNT: - return newerf (opnd1, opnd2); - case FILOT: - return olderf (opnd1, opnd2); + case FILNTAA: + return newerf(opnd1, opnd2, ATIME, ATIME); + case FILNTAB: + return newerf(opnd1, opnd2, ATIME, BTIME); + case FILNTAC: + return newerf(opnd1, opnd2, ATIME, CTIME); + case FILNTAM: + return newerf(opnd1, opnd2, ATIME, MTIME); + case FILNTBA: + return newerf(opnd1, opnd2, BTIME, ATIME); + case FILNTBB: + return newerf(opnd1, opnd2, BTIME, BTIME); + case FILNTBC: + return newerf(opnd1, opnd2, BTIME, CTIME); + case FILNTBM: + return newerf(opnd1, opnd2, BTIME, MTIME); + case FILNTCA: + return newerf(opnd1, opnd2, CTIME, ATIME); + case FILNTCB: + return newerf(opnd1, opnd2, CTIME, BTIME); + case FILNTCC: + return newerf(opnd1, opnd2, CTIME, CTIME); + case FILNTCM: + return newerf(opnd1, opnd2, CTIME, MTIME); + case FILNTMA: + return newerf(opnd1, opnd2, MTIME, ATIME); + case FILNTMB: + return newerf(opnd1, opnd2, MTIME, BTIME); + case FILNTMC: + return newerf(opnd1, opnd2, MTIME, CTIME); + case FILNTMM: + return newerf(opnd1, opnd2, MTIME, MTIME); + case FILOTAA: + return newerf(opnd2, opnd1, ATIME, ATIME); + case FILOTAB: + return newerf(opnd2, opnd1, BTIME, ATIME); + case FILOTAC: + return newerf(opnd2, opnd1, CTIME, ATIME); + case FILOTAM: + return newerf(opnd2, opnd1, MTIME, ATIME); + case FILOTBA: + return newerf(opnd2, opnd1, ATIME, BTIME); + case FILOTBB: + return newerf(opnd2, opnd1, BTIME, BTIME); + case FILOTBC: + return newerf(opnd2, opnd1, CTIME, BTIME); + case FILOTBM: + return newerf(opnd2, opnd1, MTIME, BTIME); + case FILOTCA: + return newerf(opnd2, opnd1, ATIME, CTIME); + case FILOTCB: + return newerf(opnd2, opnd1, BTIME, CTIME); + case FILOTCC: + return newerf(opnd2, opnd1, CTIME, CTIME); + case FILOTCM: + return newerf(opnd2, opnd1, MTIME, CTIME); + case FILOTMA: + return newerf(opnd2, opnd1, ATIME, MTIME); + case FILOTMB: + return newerf(opnd2, opnd1, BTIME, MTIME); + case FILOTMC: + return newerf(opnd2, opnd1, CTIME, MTIME); + case FILOTMM: + return newerf(opnd2, opnd1, MTIME, MTIME); case FILEQ: return equalf (opnd1, opnd2); default: @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2) } static int -newerf (const char *f1, const char *f2) +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2) { struct stat b1, b2; + struct timespec *ts1, *ts2; if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0; - if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) + switch (t1) { + case ATIME: ts1 = &b1.st_atim; break; + case BTIME: ts1 = &b1.st_birthtim; break; + case CTIME: ts1 = &b1.st_ctim; break; + default: ts1 = &b1.st_mtim; break; + } + + switch (t2) { + case ATIME: ts2 = &b2.st_atim; break; + case BTIME: ts2 = &b2.st_birthtim; break; + case CTIME: ts2 = &b2.st_ctim; break; + default: ts2 = &b2.st_mtim; break; + } + + if (ts1->tv_sec > ts2->tv_sec) return 1; - if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) + if (ts1->tv_sec < ts2->tv_sec) return 0; - return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec); -} - -static int -olderf (const char *f1, const char *f2) -{ - return (newerf(f2, f1)); + return (ts1->tv_nsec > ts2->tv_nsec); } static int Modified: user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c ============================================================================== --- user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Wed Feb 27 04:37:09 2013 (r247375) @@ -195,6 +195,13 @@ fatal(const char *fmt, ...) verror(fmt, ap); va_end(ap); + /* + * Close the DTrace handle to ensure that any controlled processes are + * correctly restored and continued. + */ + if (g_dtp) + dtrace_close(g_dtp); + exit(E_ERROR); } Modified: user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zdb/zdb.c Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zdb/zdb.c Wed Feb 27 04:37:09 2013 (r247375) @@ -983,7 +983,7 @@ visit_indirect(spa_t *spa, const dnode_p arc_buf_t *buf; uint64_t fill = 0; - err = arc_read_nolock(NULL, spa, bp, arc_getbuf_func, &buf, + err = arc_read(NULL, spa, bp, arc_getbuf_func, &buf, ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &flags, zb); if (err) return (err); @@ -2001,9 +2001,8 @@ zdb_count_block(zdb_cb_t *zcb, zilog_t * bp, NULL, NULL, ZIO_FLAG_CANFAIL)), ==, 0); } -/* ARGSUSED */ static int -zdb_blkptr_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, arc_buf_t *pbuf, +zdb_blkptr_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, const zbookmark_t *zb, const dnode_phys_t *dnp, void *arg) { zdb_cb_t *zcb = arg; @@ -2410,7 +2409,7 @@ typedef struct zdb_ddt_entry { /* ARGSUSED */ static int zdb_ddt_add_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, - arc_buf_t *pbuf, const zbookmark_t *zb, const dnode_phys_t *dnp, void *arg) + const zbookmark_t *zb, const dnode_phys_t *dnp, void *arg) { avl_tree_t *t = arg; avl_index_t where; Modified: user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Wed Feb 27 04:35:12 2013 (r247374) +++ user/alfred/ewatchdog/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Wed Feb 27 04:37:09 2013 (r247375) @@ -1,5 +1,5 @@ '\" te -.\" Copyright (c) 2012, Martin Matuska . +.\" Copyright (c) 2013, Martin Matuska . .\" All Rights Reserved. .\" .\" The contents of this file are subject to the terms of the @@ -19,15 +19,16 @@ .\" .\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved. .\" Copyright (c) 2012 by Delphix. All rights reserved. -.\" Copyright (c) 2012 Nexenta Systems, Inc. All Rights Reserved. .\" Copyright (c) 2012, Joyent, Inc. All rights reserved. .\" Copyright (c) 2011, Pawel Jakub Dawidek .\" Copyright (c) 2012, Glen Barber .\" Copyright (c) 2012, Bryan Drewery +.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved. +.\" Copyright (c) 2013 Nexenta Systems, Inc. All Rights Reserved. .\" .\" $FreeBSD$ .\" -.Dd November 26, 2012 +.Dd February 10, 2013 .Dt ZFS 8 .Os .Sh NAME @@ -39,14 +40,12 @@ .Nm .Cm create .Op Fl pu -.Op Fl o Ar property Ns = Ns Ar value -.Ar ... filesystem +.Oo Fl o Ar property Ns = Ns Ar value Oc Ns ... Ar filesystem .Nm .Cm create .Op Fl ps .Op Fl b Ar blocksize -.Op Fl o Ar property Ns = Ns Ar value -.Ar ... +.Oo Fl o Ar property Ns = Ns Ar value Oc Ns ... .Fl V .Ar size volume .Nm @@ -59,13 +58,13 @@ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed Feb 27 06:11:40 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id CFA161E2; Wed, 27 Feb 2013 06:11:40 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id AB0B1B6C; Wed, 27 Feb 2013 06:11:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R6Be8H032978; Wed, 27 Feb 2013 06:11:40 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R6BdXZ032972; Wed, 27 Feb 2013 06:11:39 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302270611.r1R6BdXZ032972@svn.freebsd.org> From: Dmitry Chagin Date: Wed, 27 Feb 2013 06:11:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247384 - in user/dchagin/lemul/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 06:11:40 -0000 Author: dchagin Date: Wed Feb 27 06:11:39 2013 New Revision: 247384 URL: http://svnweb.freebsd.org/changeset/base/247384 Log: Implement prlimit64() system call. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c user/dchagin/lemul/sys/amd64/linux32/syscalls.master user/dchagin/lemul/sys/compat/linux/linux_misc.c user/dchagin/lemul/sys/i386/linux/linux_dummy.c user/dchagin/lemul/sys/i386/linux/syscalls.master Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Wed Feb 27 05:06:59 2013 (r247383) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c Wed Feb 27 06:11:39 2013 (r247384) @@ -139,8 +139,6 @@ DUMMY(perf_event_open); DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); -/* linux 2.6.36: */ -DUMMY(prlimit64); /* later: */ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); Modified: user/dchagin/lemul/sys/amd64/linux32/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/syscalls.master Wed Feb 27 05:06:59 2013 (r247383) +++ user/dchagin/lemul/sys/amd64/linux32/syscalls.master Wed Feb 27 06:11:39 2013 (r247384) @@ -551,7 +551,10 @@ 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: -340 AUE_NULL STD { int linux_prlimit64(void); } +340 AUE_NULL STD { int linux_prlimit64(l_pid_t pid, \ + l_uint resource, \ + struct rlimit *new, \ + struct rlimit *old); } ; later: 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.c Wed Feb 27 05:06:59 2013 (r247383) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c Wed Feb 27 06:11:39 2013 (r247384) @@ -2015,3 +2015,58 @@ linux_to_bsd_waitopts(int options, int * *bsdopts |= WLINUXCLONE; } +int +linux_prlimit64(struct thread *td, struct linux_prlimit64_args *args) +{ + struct rlimit rlim; + struct proc *p; + u_int which; + int error; + +#ifdef DEBUG + if (ldebug(prlimit64)) + printf(ARGS(prlimit64, "%d, %d, %p, %p"), args->pid, + args->resource, (void *)args->new, (void *)args->old); +#endif + + if (args->resource >= LINUX_RLIM_NLIMITS) + return (EINVAL); + + which = linux_to_bsd_resource[args->resource]; + if (which == -1) + return (EINVAL); + + if (args->pid == 0) { + p = td->td_proc; + PROC_LOCK(p); + } else { + p = pfind(args->pid); + if (p == NULL) + return (ESRCH); + } + error = p_cansee(td, p); + if (error) { + PROC_UNLOCK(p); + return (EPERM); + } + + _PHOLD(p); + + if (args->old) { + lim_rlimit(p, which, &rlim); + PROC_UNLOCK(p); + error = copyout(&rlim, args->old, sizeof(rlim)); + if (error) + goto out; + } else + PROC_UNLOCK(p); + + if (args->new) { + error = copyin(args->new, &rlim, sizeof(rlim)); + if (error == 0) + error = kern_proc_setrlimit(td, p, which, &rlim); + } +out: + PRELE(p); + return (error); +} Modified: user/dchagin/lemul/sys/i386/linux/linux_dummy.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_dummy.c Wed Feb 27 05:06:59 2013 (r247383) +++ user/dchagin/lemul/sys/i386/linux/linux_dummy.c Wed Feb 27 06:11:39 2013 (r247384) @@ -130,8 +130,6 @@ DUMMY(perf_event_open); DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); -/* linux 2.6.36: */ -DUMMY(prlimit64); /* later: */ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); Modified: user/dchagin/lemul/sys/i386/linux/syscalls.master ============================================================================== --- user/dchagin/lemul/sys/i386/linux/syscalls.master Wed Feb 27 05:06:59 2013 (r247383) +++ user/dchagin/lemul/sys/i386/linux/syscalls.master Wed Feb 27 06:11:39 2013 (r247384) @@ -561,7 +561,10 @@ 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: -340 AUE_NULL STD { int linux_prlimit64(void); } +340 AUE_NULL STD { int linux_prlimit64(l_pid_t pid, \ + l_uint resource, \ + struct rlimit *new, \ + struct rlimit *old); } ; later: 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } From owner-svn-src-user@FreeBSD.ORG Wed Feb 27 06:12:53 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 3DE3B300; Wed, 27 Feb 2013 06:12:53 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 171BAB75; Wed, 27 Feb 2013 06:12:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R6CqW2033216; Wed, 27 Feb 2013 06:12:52 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R6CpSl033204; Wed, 27 Feb 2013 06:12:51 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201302270612.r1R6CpSl033204@svn.freebsd.org> From: Dmitry Chagin Date: Wed, 27 Feb 2013 06:12:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247385 - in user/dchagin/lemul/sys: amd64/linux32 i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 06:12:53 -0000 Author: dchagin Date: Wed Feb 27 06:12:50 2013 New Revision: 247385 URL: http://svnweb.freebsd.org/changeset/base/247385 Log: Regen for r247384. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c user/dchagin/lemul/sys/i386/linux/linux_proto.h user/dchagin/lemul/sys/i386/linux/linux_syscall.h user/dchagin/lemul/sys/i386/linux/linux_syscalls.c user/dchagin/lemul/sys/i386/linux/linux_sysent.c user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1090,7 +1090,10 @@ struct linux_fanotify_mark_args { register_t dummy; }; struct linux_prlimit64_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char new_l_[PADL_(struct rlimit *)]; struct rlimit * new; char new_r_[PADR_(struct rlimit *)]; + char old_l_[PADL_(struct rlimit *)]; struct rlimit * old; char old_r_[PADR_(struct rlimit *)]; }; struct linux_name_to_handle_at_args { register_t dummy; Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #include "opt_compat.h" @@ -359,7 +359,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ - { 0, (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ + { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c Wed Feb 27 06:12:50 2013 (r247385) @@ -2231,7 +2231,12 @@ systrace_args(int sysnum, void *params, } /* linux_prlimit64 */ case 340: { - *n_args = 0; + struct linux_prlimit64_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->resource; /* l_uint */ + uarg[2] = (intptr_t) p->new; /* struct rlimit * */ + uarg[3] = (intptr_t) p->old; /* struct rlimit * */ + *n_args = 4; break; } /* linux_name_to_handle_at */ @@ -5455,6 +5460,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_prlimit64 */ case 340: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_uint"; + break; + case 2: + p = "struct rlimit *"; + break; + case 3: + p = "struct rlimit *"; + break; + default: + break; + }; break; /* linux_name_to_handle_at */ case 341: @@ -6711,6 +6732,9 @@ systrace_return_setargdesc(int sysnum, i case 339: /* linux_prlimit64 */ case 340: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_name_to_handle_at */ case 341: /* linux_open_by_handle_at */ Modified: user/dchagin/lemul/sys/i386/linux/linux_proto.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_proto.h Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/i386/linux/linux_proto.h Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1113,7 +1113,10 @@ struct linux_fanotify_mark_args { register_t dummy; }; struct linux_prlimit64_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char new_l_[PADL_(struct rlimit *)]; struct rlimit * new; char new_r_[PADR_(struct rlimit *)]; + char old_l_[PADL_(struct rlimit *)]; struct rlimit * old; char old_r_[PADR_(struct rlimit *)]; }; struct linux_name_to_handle_at_args { register_t dummy; Modified: user/dchagin/lemul/sys/i386/linux/linux_syscall.h ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscall.h Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/i386/linux/linux_syscall.h Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: user/dchagin/lemul/sys/i386/linux/linux_syscalls.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/i386/linux/linux_syscalls.c Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ const char *linux_syscallnames[] = { Modified: user/dchagin/lemul/sys/i386/linux/linux_sysent.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_sysent.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/i386/linux/linux_sysent.c Wed Feb 27 06:12:50 2013 (r247385) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247326 2013-02-26 18:07:29Z dchagin + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin */ #include @@ -358,7 +358,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ - { 0, (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ + { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ Modified: user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Wed Feb 27 06:11:39 2013 (r247384) +++ user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c Wed Feb 27 06:12:50 2013 (r247385) @@ -2322,7 +2322,12 @@ systrace_args(int sysnum, void *params, } /* linux_prlimit64 */ case 340: { - *n_args = 0; + struct linux_prlimit64_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->resource; /* l_uint */ + uarg[2] = (intptr_t) p->new; /* struct rlimit * */ + uarg[3] = (intptr_t) p->old; /* struct rlimit * */ + *n_args = 4; break; } /* linux_name_to_handle_at */ @@ -5751,6 +5756,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_prlimit64 */ case 340: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_uint"; + break; + case 2: + p = "struct rlimit *"; + break; + case 3: + p = "struct rlimit *"; + break; + default: + break; + }; break; /* linux_name_to_handle_at */ case 341: @@ -7069,6 +7090,9 @@ systrace_return_setargdesc(int sysnum, i case 339: /* linux_prlimit64 */ case 340: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_name_to_handle_at */ case 341: /* linux_open_by_handle_at */ From owner-svn-src-user@FreeBSD.ORG Wed Feb 27 08:36:46 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 88542634; Wed, 27 Feb 2013 08:36:46 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6A4D8147; Wed, 27 Feb 2013 08:36:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R8akOv075674; Wed, 27 Feb 2013 08:36:46 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R8aimD075656; Wed, 27 Feb 2013 08:36:44 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201302270836.r1R8aimD075656@svn.freebsd.org> From: Adrian Chadd Date: Wed, 27 Feb 2013 08:36:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247392 - in user/adrian/net80211_tx: contrib/binutils/gas/config contrib/expat contrib/expat/doc contrib/expat/examples contrib/expat/lib contrib/expat/tests contrib/expat/tests/benchm... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 08:36:46 -0000 Author: adrian Date: Wed Feb 27 08:36:43 2013 New Revision: 247392 URL: http://svnweb.freebsd.org/changeset/base/247392 Log: Merge from HEAD. Added: user/adrian/net80211_tx/contrib/expat/FREEBSD-Xlist - copied unchanged from r247391, head/contrib/expat/FREEBSD-Xlist user/adrian/net80211_tx/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu - copied unchanged from r247391, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu Deleted: user/adrian/net80211_tx/contrib/expat/FREEBSD-upgrade user/adrian/net80211_tx/contrib/expat/configure user/adrian/net80211_tx/contrib/expat/doc/valid-xhtml10.png user/adrian/net80211_tx/contrib/expat/lib/winconfig.h user/adrian/net80211_tx/contrib/expat/tests/benchmark/benchmark.dsp user/adrian/net80211_tx/contrib/expat/tests/benchmark/benchmark.dsw user/adrian/net80211_tx/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu Modified: user/adrian/net80211_tx/contrib/binutils/gas/config/tc-arm.c user/adrian/net80211_tx/contrib/expat/Changes (contents, props changed) user/adrian/net80211_tx/contrib/expat/MANIFEST (contents, props changed) user/adrian/net80211_tx/contrib/expat/Makefile.in (contents, props changed) user/adrian/net80211_tx/contrib/expat/README (contents, props changed) user/adrian/net80211_tx/contrib/expat/configure.in (contents, props changed) user/adrian/net80211_tx/contrib/expat/doc/reference.html (contents, props changed) user/adrian/net80211_tx/contrib/expat/doc/xmlwf.sgml (contents, props changed) user/adrian/net80211_tx/contrib/expat/expat_config.h.in (contents, props changed) user/adrian/net80211_tx/contrib/expat/lib/expat.h (contents, props changed) user/adrian/net80211_tx/contrib/expat/lib/xmlparse.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/lib/xmlrole.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/lib/xmltok.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/lib/xmltok_impl.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/tests/README.txt (contents, props changed) user/adrian/net80211_tx/contrib/expat/tests/minicheck.h user/adrian/net80211_tx/contrib/expat/tests/runtests.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/tests/xmltest.sh (contents, props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/readfilemap.c (contents, props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlwf.c (contents, props changed) user/adrian/net80211_tx/lib/libexpat/expat_config.h user/adrian/net80211_tx/lib/libexpat/libbsdxml.3 user/adrian/net80211_tx/lib/libkiconv/kiconv.3 user/adrian/net80211_tx/lib/libpmc/pmc.soft.3 user/adrian/net80211_tx/sbin/geom/class/part/gpart.8 user/adrian/net80211_tx/sbin/hastctl/hastctl.c user/adrian/net80211_tx/sbin/reboot/boot_i386.8 user/adrian/net80211_tx/share/man/man4/cxgbe.4 user/adrian/net80211_tx/sys/arm/arm/mp_machdep.c user/adrian/net80211_tx/sys/arm/arm/pmap-v6.c user/adrian/net80211_tx/sys/arm/arm/pmap.c user/adrian/net80211_tx/sys/arm/arm/vfp.c user/adrian/net80211_tx/sys/arm/at91/at91_machdep.c user/adrian/net80211_tx/sys/arm/conf/RPI-B user/adrian/net80211_tx/sys/arm/include/vfp.h user/adrian/net80211_tx/sys/arm/include/vmparam.h user/adrian/net80211_tx/sys/arm/sa11x0/assabet_machdep.c user/adrian/net80211_tx/sys/arm/ti/ti_gpio.c user/adrian/net80211_tx/sys/boot/common/load_elf.c user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/adrian/net80211_tx/sys/conf/files user/adrian/net80211_tx/sys/dev/ath/ath_hal/ah.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ah.h user/adrian/net80211_tx/sys/dev/ath/ath_rate/sample/sample.c user/adrian/net80211_tx/sys/dev/ath/if_ath.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tx_ht.c user/adrian/net80211_tx/sys/dev/ath/if_athvar.h user/adrian/net80211_tx/sys/dev/cpufreq/ichss.c user/adrian/net80211_tx/sys/dev/cxgbe/adapter.h user/adrian/net80211_tx/sys/dev/cxgbe/common/common.h user/adrian/net80211_tx/sys/dev/cxgbe/common/t4_hw.c user/adrian/net80211_tx/sys/dev/cxgbe/common/t4_msg.h user/adrian/net80211_tx/sys/dev/cxgbe/firmware/t4fw_interface.h user/adrian/net80211_tx/sys/dev/cxgbe/t4_main.c user/adrian/net80211_tx/sys/dev/cxgbe/t4_sge.c user/adrian/net80211_tx/sys/dev/hwpmc/hwpmc_soft.c user/adrian/net80211_tx/sys/dev/isp/isp_freebsd.c user/adrian/net80211_tx/sys/dev/mfi/mfi.c user/adrian/net80211_tx/sys/dev/mfi/mfi_cam.c user/adrian/net80211_tx/sys/dev/mfi/mfi_debug.c user/adrian/net80211_tx/sys/dev/mfi/mfi_tbolt.c user/adrian/net80211_tx/sys/dev/mfi/mfireg.h user/adrian/net80211_tx/sys/dev/mfi/mfivar.h user/adrian/net80211_tx/sys/dev/msk/if_msk.c user/adrian/net80211_tx/sys/dev/random/randomdev_soft.c user/adrian/net80211_tx/sys/fs/fuse/fuse_io.c user/adrian/net80211_tx/sys/kern/kern_clock.c user/adrian/net80211_tx/sys/kern/kern_clocksource.c user/adrian/net80211_tx/sys/kern/sys_process.c user/adrian/net80211_tx/sys/kern/vfs_bio.c user/adrian/net80211_tx/sys/mips/adm5120/adm5120_machdep.c user/adrian/net80211_tx/sys/mips/alchemy/alchemy_machdep.c user/adrian/net80211_tx/sys/mips/beri/beri_machdep.c user/adrian/net80211_tx/sys/mips/cavium/octeon_machdep.c user/adrian/net80211_tx/sys/mips/gxemul/gxemul_machdep.c user/adrian/net80211_tx/sys/mips/idt/idt_machdep.c user/adrian/net80211_tx/sys/mips/malta/malta_machdep.c user/adrian/net80211_tx/sys/mips/rt305x/rt305x_machdep.c user/adrian/net80211_tx/sys/mips/sentry5/s5_machdep.c user/adrian/net80211_tx/sys/mips/sibyte/sb_machdep.c user/adrian/net80211_tx/sys/modules/cxgbe/firmware/Makefile user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea.c user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea64.c user/adrian/net80211_tx/sys/powerpc/aim/moea64_native.c user/adrian/net80211_tx/sys/powerpc/booke/pmap.c user/adrian/net80211_tx/sys/powerpc/ps3/mmu_ps3.c user/adrian/net80211_tx/sys/sparc64/sparc64/tsb.c user/adrian/net80211_tx/sys/sys/vnode.h user/adrian/net80211_tx/sys/ufs/ffs/ffs_alloc.c user/adrian/net80211_tx/sys/ufs/ffs/ffs_softdep.c user/adrian/net80211_tx/sys/ufs/ffs/ffs_vfsops.c user/adrian/net80211_tx/sys/ufs/ufs/ufs_quota.c user/adrian/net80211_tx/sys/vm/swap_pager.c user/adrian/net80211_tx/sys/vm/uma.h user/adrian/net80211_tx/sys/vm/uma_core.c user/adrian/net80211_tx/sys/vm/uma_int.h user/adrian/net80211_tx/sys/vm/vm_map.c user/adrian/net80211_tx/sys/vm/vm_object.c user/adrian/net80211_tx/sys/vm/vm_object.h user/adrian/net80211_tx/sys/vm/vm_page.c user/adrian/net80211_tx/sys/vm/vnode_pager.c user/adrian/net80211_tx/usr.sbin/bhyve/pci_virtio_block.c Directory Properties: user/adrian/net80211_tx/ (props changed) user/adrian/net80211_tx/contrib/binutils/ (props changed) user/adrian/net80211_tx/contrib/expat/ (props changed) user/adrian/net80211_tx/contrib/expat/COPYING (props changed) user/adrian/net80211_tx/contrib/expat/doc/style.css (props changed) user/adrian/net80211_tx/contrib/expat/doc/xmlwf.1 (props changed) user/adrian/net80211_tx/contrib/expat/examples/elements.c (props changed) user/adrian/net80211_tx/contrib/expat/examples/outline.c (props changed) user/adrian/net80211_tx/contrib/expat/lib/ascii.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/asciitab.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/iasciitab.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/internal.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/latin1tab.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/nametab.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/utf8tab.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/xmlrole.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/xmltok.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/xmltok_impl.h (props changed) user/adrian/net80211_tx/contrib/expat/lib/xmltok_ns.c (props changed) user/adrian/net80211_tx/contrib/expat/tests/chardata.c (props changed) user/adrian/net80211_tx/contrib/expat/tests/chardata.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/codepage.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/codepage.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/ct.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/filemap.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/unixfilemap.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/win32filemap.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlfile.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlfile.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlmime.c (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlmime.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmltchar.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlurl.h (props changed) user/adrian/net80211_tx/contrib/expat/xmlwf/xmlwin32url.cxx (props changed) user/adrian/net80211_tx/sbin/ (props changed) user/adrian/net80211_tx/share/man/man4/ (props changed) user/adrian/net80211_tx/sys/ (props changed) user/adrian/net80211_tx/sys/boot/ (props changed) user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/ (props changed) user/adrian/net80211_tx/sys/conf/ (props changed) user/adrian/net80211_tx/usr.sbin/bhyve/ (props changed) Modified: user/adrian/net80211_tx/contrib/binutils/gas/config/tc-arm.c ============================================================================== --- user/adrian/net80211_tx/contrib/binutils/gas/config/tc-arm.c Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/binutils/gas/config/tc-arm.c Wed Feb 27 08:36:43 2013 (r247392) @@ -3079,6 +3079,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUT record_alignment (now_seg, 2); ptr = frag_more (8); + memset(ptr, 0, 8); where = frag_now_fix () - 8; /* Self relative offset of the function start. */ @@ -17350,6 +17351,7 @@ create_unwind_entry (int have_data) /* Allocate the table entry. */ ptr = frag_more ((size << 2) + 4); + memset(ptr, 0, (size << 2) + 4); where = frag_now_fix () - ((size << 2) + 4); switch (unwind.personality_index) Modified: user/adrian/net80211_tx/contrib/expat/Changes ============================================================================== --- user/adrian/net80211_tx/contrib/expat/Changes Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/Changes Wed Feb 27 08:36:43 2013 (r247392) @@ -1,5 +1,41 @@ +Release 2.1.0 Sat March 24 2012 + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Unitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + #3496608: CVE-2012-0876 - Hash DOS attack. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an intial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + Release 2.0.1 Tue June 5 2007 - - Fixed bugs #1515266, 1515600: The character data handler's calling + - Fixed bugs #1515266, #1515600: The character data handler's calling of XML_StopParser() was not handled properly; if the parser was stopped and the handler set to NULL, the parser would segfault. - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed @@ -8,7 +44,7 @@ Release 2.0.1 Tue June 5 2007 - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. - Fixes and improvements for Windows platform: - bugs #1409451, #1476160, 1548182, 1602769, 1717322. + bugs #1409451, #1476160, #1548182, #1602769, #1717322. - Build fixes for various platforms: HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. All Unix: #1554618 (refreshed config.sub/config.guess). @@ -30,8 +66,8 @@ Release 2.0.0 Wed Jan 11 2006 byte indexes and line/column numbers. - Updated to use libtool 1.5.22 (the most recent). - Added support for AmigaOS. - - Some mostly minor bug fixes. SF issues include: 1006708, - 1021776, 1023646, 1114960, 1156398, 1221160, 1271642. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. Release 1.95.8 Fri Jul 23 2004 - Major new feature: suspend/resume. Handlers can now request @@ -40,8 +76,8 @@ Release 1.95.8 Fri Jul 23 2004 documentation for more details. - Some mostly minor bug fixes, but compilation should no longer generate warnings on most platforms. SF issues - include: 827319, 840173, 846309, 888329, 896188, 923913, - 928113, 961698, 985192. + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. Release 1.95.7 Mon Oct 20 2003 - Fixed enum XML_Status issue (reported on SourceForge many @@ -54,19 +90,19 @@ Release 1.95.7 Mon Oct 20 2003 - Improved ability to build without the configure-generated expat_config.h header. This is useful for applications which embed Expat rather than linking in the library. - - Fixed a variety of bugs: see SF issues 458907, 609603, - 676844, 679754, 692878, 692964, 695401, 699323, 699487, - 820946. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. - Improved hash table lookups. - Added more regression tests and improved documentation. Release 1.95.6 Tue Jan 28 2003 - Added XML_FreeContentModel(). - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). - - Fixed a variety of bugs: see SF issues 615606, 616863, - 618199, 653180, 673791. + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. - Enhanced the regression test suite. - - Man page improvements: includes SF issue 632146. + - Man page improvements: includes SF issue #632146. Release 1.95.5 Fri Sep 6 2002 - Added XML_UseForeignDTD() for improved SAX2 support. @@ -84,9 +120,9 @@ Release 1.95.5 Fri Sep 6 2002 - Reduced line-length for all source code and headers to be no longer than 80 characters, to help with AS/400 support. - Reduced memory copying during parsing (SF patch #600964). - - Fixed a variety of bugs: see SF issues 580793, 434664, - 483514, 580503, 581069, 584041, 584183, 584832, 585537, - 596555, 596678, 598352, 598944, 599715, 600479, 600971. + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. Release 1.95.4 Fri Jul 12 2002 - Added support for VMS, contributed by Craig Berry. See @@ -95,14 +131,14 @@ Release 1.95.4 Fri Jul 12 2002 contributed by Thomas Wegner and Daryle Walker. - Added Borland C++ Builder 5 / BCC 5.5 support, contributed by Patrick McConnell (SF patch #538032). - - Fixed a variety of bugs: see SF issues 441449, 563184, - 564342, 566334, 566901, 569461, 570263, 575168, 579196. + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. - Made skippedEntityHandler conform to SAX2 (see source comment) - Re-implemented WFC: Entity Declared from XML 1.0 spec and added a new error "entity declared in parameter entity": - see SF bug report 569461 and SF patch 578161 + see SF bug report #569461 and SF patch #578161 - Re-implemented section 5.1 from XML 1.0 spec: - see SF bug report 570263 and SF patch 578161 + see SF bug report #570263 and SF patch #578161 Release 1.95.3 Mon Jun 3 2002 - Added a project to the MSVC workspace to create a wchar_t @@ -114,9 +150,9 @@ Release 1.95.3 Mon Jun 3 2002 - Made the XML_UNICODE builds usable (thanks, Karl!). - Allow xmlwf to read from standard input. - Install a man page for xmlwf on Unix systems. - - Fixed many bugs; see SF bug reports 231864, 461380, 464837, - 466885, 469226, 477667, 484419, 487840, 494749, 496505, - 547350. Other bugs which we can't test as easily may also + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also have been fixed, especially in the area of build support. Release 1.95.2 Fri Jul 27 2001 Copied: user/adrian/net80211_tx/contrib/expat/FREEBSD-Xlist (from r247391, head/contrib/expat/FREEBSD-Xlist) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/adrian/net80211_tx/contrib/expat/FREEBSD-Xlist Wed Feb 27 08:36:43 2013 (r247392, copy of r247391, head/contrib/expat/FREEBSD-Xlist) @@ -0,0 +1,19 @@ +# $FreeBSD$ +*.MPW +*.cmake +*.def +*.dsp +*.dsw +*.m4 +*.pc.in +*config.h +CMake* +Configure* +amiga +bcb5 +configure +conftools +doc/valid-xhtml10.png +m4 +vms +win32 Modified: user/adrian/net80211_tx/contrib/expat/MANIFEST ============================================================================== --- user/adrian/net80211_tx/contrib/expat/MANIFEST Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/MANIFEST Wed Feb 27 08:36:43 2013 (r247392) @@ -1,5 +1,8 @@ -amiga/stdlib.c amiga/launch.c +amiga/expat_68k.c +amiga/expat_68k.h +amiga/expat_68k_handler_stubs.c +amiga/expat_base.h amiga/expat_vectors.c amiga/expat_lib.c amiga/expat.xml @@ -42,25 +45,35 @@ doc/style.css doc/valid-xhtml10.png doc/xmlwf.1 doc/xmlwf.sgml +CMakeLists.txt +CMake.README COPYING Changes +ConfigureChecks.cmake MANIFEST Makefile.in README configure configure.in expat_config.h.in +expat_config.h.cmake +expat.pc.in expat.dsw +aclocal.m4 conftools/PrintPath conftools/ac_c_bigendian_cross.m4 -conftools/config.guess -conftools/config.sub conftools/expat.m4 conftools/get-version.sh +conftools/mkinstalldirs +conftools/config.guess +conftools/config.sub conftools/install-sh -conftools/libtool.m4 conftools/ltmain.sh -conftools/mkinstalldirs +m4/libtool.m4 +m4/ltversion.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/lt~obsolete.m4 examples/elements.c examples/elements.dsp examples/outline.c Modified: user/adrian/net80211_tx/contrib/expat/Makefile.in ============================================================================== --- user/adrian/net80211_tx/contrib/expat/Makefile.in Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/Makefile.in Wed Feb 27 08:36:43 2013 (r247392) @@ -31,6 +31,7 @@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ man1dir = @mandir@/man1 +pkgconfigdir = $(libdir)/pkgconfig top_builddir = . @@ -46,18 +47,18 @@ LIBRARY = libexpat.la DESTDIR = $(INSTALL_ROOT) -default: buildlib xmlwf/xmlwf +default: buildlib xmlwf/xmlwf@EXEEXT@ -buildlib: $(LIBRARY) +buildlib: $(LIBRARY) expat.pc -all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline clean: - cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs - cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs - cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs - cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o - cd tests && rm -f chardata.o minicheck.o + cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ + cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ rm -rf .libs libexpat.la rm -f examples/core tests/core xmlwf/core @@ -65,34 +66,37 @@ clobber: clean distclean: clean rm -f expat_config.h config.status config.log config.cache libtool - rm -f Makefile + rm -f Makefile expat.pc extraclean: distclean rm -f expat_config.h.in configure - rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4 + rm -f aclocal.m4 m4/* + rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub check: tests/runtests tests/runtestspp tests/runtests tests/runtestspp -install: xmlwf/xmlwf installlib +install: xmlwf/xmlwf@EXEEXT@ installlib $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) -installlib: $(LIBRARY) $(APIHEADER) - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) +installlib: $(LIBRARY) $(APIHEADER) expat.pc + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done + $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc uninstall: uninstalllib - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ rm -f $(DESTDIR)$(man1dir)/xmlwf.1 uninstalllib: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) rm -f $(DESTDIR)$(includedir)/expat.h rm -f $(DESTDIR)$(includedir)/expat_external.h + rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc # for VPATH builds (invoked by configure) mkdir-init: @@ -125,6 +129,9 @@ LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo $(LIBRARY): $(LIB_OBJS) $(LINK_LIB) $(LIB_OBJS) +expat.pc: $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ + lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h @@ -137,46 +144,53 @@ lib/xmltok.lo: lib/xmltok.c lib/xmltok_i $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h -XMLWF_OBJS = xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/@FILEMAP@.o -xmlwf/xmlwf.o: xmlwf/xmlwf.c -xmlwf/xmlfile.o: xmlwf/xmlfile.c -xmlwf/codepage.o: xmlwf/codepage.c -xmlwf/@FILEMAP@.o: xmlwf/@FILEMAP@.c -xmlwf/xmlwf: $(XMLWF_OBJS) $(LIBRARY) +XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ +xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c +xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c +xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c +xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c +xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) -examples/elements.o: examples/elements.c -examples/elements: examples/elements.o $(LIBRARY) +examples/elements.@OBJEXT@: examples/elements.c +examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -examples/outline.o: examples/outline.c -examples/outline: examples/outline.o $(LIBRARY) +examples/outline.@OBJEXT@: examples/outline.c +examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) $(LINK_EXE) $< $(LIBRARY) -tests/chardata.o: tests/chardata.c tests/chardata.h -tests/minicheck.o: tests/minicheck.c tests/minicheck.h -tests/runtests.o: tests/runtests.c tests/chardata.h -tests/runtests: tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_EXE) tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY) -tests/runtestspp.o: tests/runtestspp.cpp tests/runtests.c tests/chardata.h -tests/runtestspp: tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) - $(LINK_CXX_EXE) tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY) +tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h +tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h +tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h +tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) +tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h +tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + +tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c +tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + +run-benchmark: tests/benchmark/benchmark + tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 tests/xmlts.zip: wget --output-document=tests/xmlts.zip \ - http://www.w3.org/XML/Test/xmlts20020606.zip + http://www.w3.org/XML/Test/xmlts20080827.zip tests/XML-Test-Suite: tests/xmlts.zip cd tests && unzip -q xmlts.zip -run-xmltest: xmlwf/xmlwf tests/XML-Test-Suite +run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite tests/xmltest.sh -.SUFFIXES: .c .cpp .lo .o +.SUFFIXES: .c .cpp .lo .@OBJEXT@ -.cpp.o: +.cpp.@OBJEXT@: $(CXXCOMPILE) -o $@ -c $< -.c.o: +.c.@OBJEXT@: $(COMPILE) -o $@ -c $< .c.lo: $(LTCOMPILE) -o $@ -c $< Modified: user/adrian/net80211_tx/contrib/expat/README ============================================================================== --- user/adrian/net80211_tx/contrib/expat/README Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/README Wed Feb 27 08:36:43 2013 (r247392) @@ -1,5 +1,5 @@ - Expat, Release 2.0.1 + Expat, Release 2.1.0 This is Expat, a C library for parsing XML, written by James Clark. Expat is a stream-oriented XML parser. This means that you register @@ -25,8 +25,7 @@ intended to be production grade software If you are building Expat from a check-out from the CVS repository, you need to run a script that generates the configure script using the GNU autoconf and libtool tools. To do this, you need to have -autoconf 2.52 or newer and libtool 1.4 or newer (1.5 or newer preferred). -Run the script like this: +autoconf 2.58 or newer. Run the script like this: ./buildconf.sh @@ -65,8 +64,8 @@ location. Have a look at the "Makefile" the directories into which things will be installed. If you are interested in building Expat to provide document -information in UTF-16 rather than the default UTF-8, follow these -instructions (after having run "make distclean"): +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): 1. For UTF-16 output as unsigned short (and version/error strings as char), run: @@ -106,7 +105,10 @@ use DESTDIR=$(INSTALL_ROOT), even if DES environment, because variable-setting priority is 1) commandline 2) in-makefile -3) environment +3) environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. Note for Solaris users: The "ar" command is usually located in "/usr/ccs/bin", which is not in the default PATH. You will need to Modified: user/adrian/net80211_tx/contrib/expat/configure.in ============================================================================== --- user/adrian/net80211_tx/contrib/expat/configure.in Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/configure.in Wed Feb 27 08:36:43 2013 (r247392) @@ -10,8 +10,8 @@ dnl under the terms of the License (ba dnl in the file COPYING that comes with this distribution. dnl -dnl Ensure that Expat is configured with autoconf 2.52 or newer -AC_PREREQ(2.52) +dnl Ensure that Expat is configured with autoconf 2.58 or newer +AC_PREREQ(2.58) dnl Get the version number of Expat, using m4's esyscmd() command to run dnl the command at m4-generation time. This allows us to create an m4 @@ -25,12 +25,13 @@ dnl test. I believe this test will work, dnl GNU M4 to test it right now. define([expat_version], ifdef([__gnu__], [esyscmd(conftools/get-version.sh lib/expat.h)], - [2.0.x])) + [2.1.x])) AC_INIT(expat, expat_version, expat-bugs@libexpat.org) undefine([expat_version]) AC_CONFIG_SRCDIR(Makefile.in) AC_CONFIG_AUX_DIR(conftools) +AC_CONFIG_MACRO_DIR([m4]) dnl @@ -44,13 +45,12 @@ dnl dnl If the API changes incompatibly set LIBAGE back to 0 dnl -LIBCURRENT=6 -LIBREVISION=2 -LIBAGE=5 +LIBCURRENT=7 +LIBREVISION=0 +LIBAGE=6 AC_CONFIG_HEADER(expat_config.h) -sinclude(conftools/libtool.m4) sinclude(conftools/ac_c_bigendian_cross.m4) AC_LIBTOOL_WIN32_DLL @@ -62,6 +62,7 @@ AC_SUBST(LIBAGE) dnl Checks for programs. AC_PROG_CC +AC_PROG_CXX AC_PROG_INSTALL if test "$GCC" = yes ; then @@ -144,7 +145,7 @@ AC_DEFINE([XML_DTD], 1, AC_DEFINE([XML_CONTEXT_BYTES], 1024, [Define to specify how much context to retain around the current parse point.]) -AC_CONFIG_FILES(Makefile) +AC_CONFIG_FILES([Makefile expat.pc]) AC_OUTPUT abs_srcdir="`cd $srcdir && pwd`" Modified: user/adrian/net80211_tx/contrib/expat/doc/reference.html ============================================================================== --- user/adrian/net80211_tx/contrib/expat/doc/reference.html Wed Feb 27 08:34:32 2013 (r247391) +++ user/adrian/net80211_tx/contrib/expat/doc/reference.html Wed Feb 27 08:36:43 2013 (r247392) @@ -129,8 +129,10 @@ interface.

  • XML_GetBase
  • XML_GetSpecifiedAttributeCount
  • XML_GetIdAttributeIndex
  • +
  • XML_GetAttributeInfo
  • XML_SetEncoding
  • XML_SetParamEntityParsing
  • +
  • XML_SetHashSalt
  • XML_UseForeignDTD
  • XML_SetReturnNSTriplet
  • XML_DefaultCurrent
  • @@ -369,6 +371,11 @@ footprint and can be faster. statically with the code that calls it; this is required to get all the right MSVC magic annotations correct. This is ignored on other platforms. + +
    XML_ATTR_INFO
    +
    If defined, makes the the additional function XML_GetAttributeInfo available +for reporting attribute byte offsets.

    @@ -917,12 +924,15 @@ XML_ParserCreateNS(const XML_Char *encod Constructs a new parser that has namespace processing in effect. Namespace expanded element names and attribute names are returned as a concatenation of the namespace URI, sep, and the local part of the name. This -means that you should pick a character for sep that can't be -part of a legal URI. There is a special case when sep is the null -character '\0': the namespace URI and the local part will be -concatenated without any separator - this is intended to support RDF processors. -It is a programming error to use the null separator with -namespace triplets. +means that you should pick a character for sep that can't be part +of an URI. Since Expat does not check namespace URIs for conformance, the +only safe choice for a namespace separator is a character that is illegal +in XML. For instance, '\xFF' is not legal in UTF-8, and +'\xFFFF' is not legal in UTF-16. There is a special case when +sep is the null character '\0': the namespace URI and +the local part will be concatenated without any separator - this is intended +to support RDF processors. It is a programming error to use the null separator +with namespace triplets.
     XML_Parser XMLCALL
    @@ -2074,6 +2084,27 @@ attribute. If called inside a start hand
     current call.
     
     
    +
    +const XML_AttrInfo * XMLCALL
    +XML_GetAttributeInfo(XML_Parser parser);
    +
    +
    +typedef struct {
    +  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
    +  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
    +  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
    +  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
    +} XML_AttrInfo;
    +
    +
    +Returns an array of XML_AttrInfo structures for the +attribute/value pairs passed in the last call to the +XML_StartElementHandler that were specified +in the start-tag rather than defaulted. Each attribute/value pair counts +as 1; thus the number of entries in the array is +XML_GetSpecifiedAttributeCount(parser) / 2. +
    +
     enum XML_Status XMLCALL
     XML_SetEncoding(XML_Parser p,
    @@ -2104,6 +2135,24 @@ The choices for code are:
     
  • XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
  • XML_PARAM_ENTITY_PARSING_ALWAYS
  • +Note: If XML_SetParamEntityParsing is called after +XML_Parse or XML_ParseBuffer, then it has +no effect and will always return 0. + + +
    +int XMLCALL
    +XML_SetHashSalt(XML_Parser p,
    +                unsigned long hash_salt);
    +
    +
    +Sets the hash salt to use for internal hash calculations. +Helps in preventing DoS attacks based on predicting hash +function behavior. In order to have an effect this must be called +before parsing has started. Returns 1 if successful, 0 when called +after XML_Parse or XML_ParseBuffer. +

    Note: This call is optional, as the parser will auto-generate a new +random salt value if no value has been set at the start of parsing.

    
    Modified: user/adrian/net80211_tx/contrib/expat/doc/xmlwf.sgml
    ==============================================================================
    --- user/adrian/net80211_tx/contrib/expat/doc/xmlwf.sgml	Wed Feb 27 08:34:32 2013	(r247391)
    +++ user/adrian/net80211_tx/contrib/expat/doc/xmlwf.sgml	Wed Feb 27 08:36:43 2013	(r247392)
    @@ -389,11 +389,6 @@ supports both.
       
         BUGS
     	
    -	According to the W3C standard, an XML file without a
    -	declaration at the beginning is not considered well-formed.
    -	However, &dhpackage; allows this to pass.
    -	
    -	
     	&dhpackage; returns a 0 - noerr result,
     	even if the file is not well-formed.  There is no good way for
     	a program to use &dhpackage; to quickly
    
    Modified: user/adrian/net80211_tx/contrib/expat/expat_config.h.in
    ==============================================================================
    --- user/adrian/net80211_tx/contrib/expat/expat_config.h.in	Wed Feb 27 08:34:32 2013	(r247391)
    +++ user/adrian/net80211_tx/contrib/expat/expat_config.h.in	Wed Feb 27 08:36:43 2013	(r247392)
    @@ -39,6 +39,9 @@
     /* Define to 1 if you have the  header file. */
     #undef HAVE_STRING_H
     
    +/* Define to 1 if you have the  header file. */
    +#undef HAVE_SYS_PARAM_H
    +
     /* Define to 1 if you have the  header file. */
     #undef HAVE_SYS_STAT_H
     
    @@ -48,6 +51,10 @@
     /* Define to 1 if you have the  header file. */
     #undef HAVE_UNISTD_H
     
    +/* Define to the sub-directory in which libtool stores uninstalled libraries.
    +   */
    +#undef LT_OBJDIR
    +
     /* Define to the address where bug reports for this package should be sent. */
     #undef PACKAGE_BUGREPORT
     
    @@ -60,6 +67,9 @@
     /* Define to the one symbol short name of this package. */
     #undef PACKAGE_TARNAME
     
    +/* Define to the home page for this package. */
    +#undef PACKAGE_URL
    +
     /* Define to the version of this package. */
     #undef PACKAGE_VERSION
     
    @@ -85,8 +95,8 @@
     /* Define to empty if `const' does not conform to ANSI C. */
     #undef const
     
    -/* Define to `long' if  does not define. */
    +/* Define to `long int' if  does not define. */
     #undef off_t
     
    -/* Define to `unsigned' if  does not define. */
    +/* Define to `unsigned int' if  does not define. */
     #undef size_t
    
    Modified: user/adrian/net80211_tx/contrib/expat/lib/expat.h
    ==============================================================================
    --- user/adrian/net80211_tx/contrib/expat/lib/expat.h	Wed Feb 27 08:34:32 2013	(r247391)
    +++ user/adrian/net80211_tx/contrib/expat/lib/expat.h	Wed Feb 27 08:36:43 2013	(r247392)
    @@ -742,6 +742,29 @@ XML_GetSpecifiedAttributeCount(XML_Parse
     XMLPARSEAPI(int)
     XML_GetIdAttributeIndex(XML_Parser parser);
     
    +#ifdef XML_ATTR_INFO
    +/* Source file byte offsets for the start and end of attribute names and values.
    +   The value indices are exclusive of surrounding quotes; thus in a UTF-8 source
    +   file an attribute value of "blah" will yield:
    +   info->valueEnd - info->valueStart = 4 bytes.
    +*/
    +typedef struct {
    +  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
    +  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
    +  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
    +  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
    +} XML_AttrInfo;
    +
    +/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
    +   passed in last call to the XML_StartElementHandler that were specified
    +   in the start-tag rather than defaulted. Each attribute/value pair counts
    +   as 1; thus the number of entries in the array is
    +   XML_GetSpecifiedAttributeCount(parser) / 2.
    +*/
    +XMLPARSEAPI(const XML_AttrInfo *)
    +XML_GetAttributeInfo(XML_Parser parser);
    +#endif
    +
     /* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
        detected.  The last call to XML_Parse must have isFinal true; len
        may be zero for this call (or any other).
    @@ -883,6 +906,15 @@ XMLPARSEAPI(int)
     XML_SetParamEntityParsing(XML_Parser parser,
                               enum XML_ParamEntityParsing parsing);
     
    +/* Sets the hash salt to use for internal hash calculations.
    +   Helps in preventing DoS attacks based on predicting hash
    +   function behavior. This must be called before parsing is started.
    +   Returns 1 if successful, 0 when called after parsing has started.
    +*/
    +XMLPARSEAPI(int)
    +XML_SetHashSalt(XML_Parser parser,
    +                unsigned long hash_salt);
    +
     /* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
        XML_GetErrorCode returns information about the error.
     */
    @@ -984,7 +1016,8 @@ enum XML_FeatureEnum {
       XML_FEATURE_SIZEOF_XML_CHAR,
       XML_FEATURE_SIZEOF_XML_LCHAR,
       XML_FEATURE_NS,
    -  XML_FEATURE_LARGE_SIZE
    +  XML_FEATURE_LARGE_SIZE,
    +  XML_FEATURE_ATTR_INFO
       /* Additional features must be added to the end of this enum. */
     };
     
    @@ -1004,8 +1037,8 @@ XML_GetFeatureList(void);
        change to major or minor version.
     */
     #define XML_MAJOR_VERSION 2
    -#define XML_MINOR_VERSION 0
    -#define XML_MICRO_VERSION 1
    +#define XML_MINOR_VERSION 1
    +#define XML_MICRO_VERSION 0
     
     #ifdef __cplusplus
     }
    
    Modified: user/adrian/net80211_tx/contrib/expat/lib/xmlparse.c
    ==============================================================================
    --- user/adrian/net80211_tx/contrib/expat/lib/xmlparse.c	Wed Feb 27 08:34:32 2013	(r247391)
    +++ user/adrian/net80211_tx/contrib/expat/lib/xmlparse.c	Wed Feb 27 08:36:43 2013	(r247392)
    @@ -5,6 +5,8 @@
     #include 
     #include                      /* memset(), memcpy() */
     #include 
    +#include                      /* UINT_MAX */
    +#include                        /* time() */
     
     #define XML_BUILDING_EXPAT 1
     
    @@ -12,7 +14,7 @@
     #include "winconfig.h"
     #elif defined(MACOS_CLASSIC)
     #include "macconfig.h"
    -#elif defined(__amigaos4__)
    +#elif defined(__amigaos__)
     #include "amigaconfig.h"
     #elif defined(__WATCOMC__)
     #include "watcomconfig.h"
    @@ -327,15 +329,15 @@ processXmlDecl(XML_Parser parser, int is
     static enum XML_Error
     initializeEncoding(XML_Parser parser);
     static enum XML_Error
    -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, 
    -         const char *end, int tok, const char *next, const char **nextPtr, 
    +doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
    +         const char *end, int tok, const char *next, const char **nextPtr,
              XML_Bool haveMore);
     static enum XML_Error
    -processInternalEntity(XML_Parser parser, ENTITY *entity, 
    +processInternalEntity(XML_Parser parser, ENTITY *entity,
                           XML_Bool betweenDecl);
     static enum XML_Error
     doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
    -          const char *start, const char *end, const char **endPtr, 
    +          const char *start, const char *end, const char **endPtr,
               XML_Bool haveMore);
     static enum XML_Error
     doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
    @@ -353,7 +355,7 @@ static enum XML_Error
     addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
                const XML_Char *uri, BINDING **bindingsPtr);
     static int
    -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, 
    +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata,
                     XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
     static enum XML_Error
     storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
    @@ -391,12 +393,13 @@ static void dtdReset(DTD *p, const XML_M
     static void
     dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
     static int
    -dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
    +dtdCopy(XML_Parser oldParser,
    +        DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
     static int
    -copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
    -
    +copyEntityTable(XML_Parser oldParser,
    +                HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
     static NAMED *
    -lookup(HASH_TABLE *table, KEY name, size_t createSize);
    +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize);
     static void FASTCALL
     hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
     static void FASTCALL hashTableClear(HASH_TABLE *);
    @@ -429,11 +432,15 @@ static ELEMENT_TYPE *
     getElementType(XML_Parser parser, const ENCODING *enc,
                    const char *ptr, const char *end);
     
    +static unsigned long generate_hash_secret_salt(void);
    +static XML_Bool startParsing(XML_Parser parser);
    +
     static XML_Parser
     parserCreate(const XML_Char *encodingName,
                  const XML_Memory_Handling_Suite *memsuite,
                  const XML_Char *nameSep,
                  DTD *dtd);
    +
     static void
     parserInit(XML_Parser parser, const XML_Char *encodingName);
     
    @@ -533,6 +540,9 @@ struct XML_ParserStruct {
       NS_ATT *m_nsAtts;
       unsigned long m_nsAttsVersion;
       unsigned char m_nsAttsPower;
    +#ifdef XML_ATTR_INFO
    +  XML_AttrInfo *m_attInfo;
    +#endif
       POSITION m_position;
       STRING_POOL m_tempPool;
       STRING_POOL m_temp2Pool;
    @@ -546,6 +556,7 @@ struct XML_ParserStruct {
       XML_Bool m_useForeignDTD;
       enum XML_ParamEntityParsing m_paramEntityParsing;
     #endif
    +  unsigned long m_hash_secret_salt;
     };
     
     #define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
    @@ -640,6 +651,7 @@ struct XML_ParserStruct {
     #define nsAtts (parser->m_nsAtts)
     #define nsAttsVersion (parser->m_nsAttsVersion)
     #define nsAttsPower (parser->m_nsAttsPower)
    +#define attInfo (parser->m_attInfo)
     #define tempPool (parser->m_tempPool)
     #define temp2Pool (parser->m_temp2Pool)
     #define groupConnector (parser->m_groupConnector)
    @@ -653,6 +665,7 @@ struct XML_ParserStruct {
     #define useForeignDTD (parser->m_useForeignDTD)
     #define paramEntityParsing (parser->m_paramEntityParsing)
     #endif /* XML_DTD */
    +#define hash_secret_salt (parser->m_hash_secret_salt)
     
     XML_Parser XMLCALL
     XML_ParserCreate(const XML_Char *encodingName)
    @@ -670,29 +683,42 @@ XML_ParserCreateNS(const XML_Char *encod
     
     static const XML_Char implicitContext[] = {
       ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p,
    -  ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, 
    +  ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w,
       ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g,
       ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9,
       ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e,
       ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'
     };
     
    +static unsigned long
    +generate_hash_secret_salt(void)
    +{
    +  unsigned int seed = time(NULL) % UINT_MAX;
    +  srand(seed);
    +  return rand();
    +}
    +
    +static XML_Bool  /* only valid for root parser */
    +startParsing(XML_Parser parser)
    +{
    +    /* hash functions must be initialized before setContext() is called */
    +    if (hash_secret_salt == 0)
    +      hash_secret_salt = generate_hash_secret_salt();
    +    if (ns) {
    +      /* implicit context only set for root parser, since child
    +         parsers (i.e. external entity parsers) will inherit it
    +      */
    +      return setContext(parser, implicitContext);
    +    }
    +    return XML_TRUE;
    +}
    +
     XML_Parser XMLCALL
     XML_ParserCreate_MM(const XML_Char *encodingName,
                         const XML_Memory_Handling_Suite *memsuite,
                         const XML_Char *nameSep)
     {
    -  XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
    -  if (parser != NULL && ns) {
    -    /* implicit context only set for root parser, since child
    -       parsers (i.e. external entity parsers) will inherit it
    -    */
    -    if (!setContext(parser, implicitContext)) {
    -      XML_ParserFree(parser);
    -      return NULL;
    -    }
    -  }
    -  return parser;
    +  return parserCreate(encodingName, memsuite, nameSep, NULL);
     }
     
     static XML_Parser
    @@ -737,9 +763,20 @@ parserCreate(const XML_Char *encodingNam
         FREE(parser);
         return NULL;
       }
    +#ifdef XML_ATTR_INFO
    +  attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo));
    +  if (attInfo == NULL) {
    +    FREE(atts);
    +    FREE(parser);
    +    return NULL;
    +  }
    +#endif
       dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
       if (dataBuf == NULL) {
         FREE(atts);
    +#ifdef XML_ATTR_INFO
    +    FREE(attInfo);
    +#endif
         FREE(parser);
         return NULL;
       }
    @@ -752,6 +789,9 @@ parserCreate(const XML_Char *encodingNam
         if (_dtd == NULL) {
           FREE(dataBuf);
           FREE(atts);
    +#ifdef XML_ATTR_INFO
    +      FREE(attInfo);
    +#endif
           FREE(parser);
           return NULL;
         }
    @@ -866,6 +906,7 @@ parserInit(XML_Parser parser, const XML_
       useForeignDTD = XML_FALSE;
       paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
     #endif
    +  hash_secret_salt = 0;
     }
     
     /* moves list of bindings to freeBindingList */
    @@ -913,7 +954,7 @@ XML_ParserReset(XML_Parser parser, const
       poolClear(&temp2Pool);
       parserInit(parser, encodingName);
       dtdReset(_dtd, &parser->m_mem);
    -  return setContext(parser, implicitContext);
    +  return XML_TRUE;
     }
     
     enum XML_Status XMLCALL
    @@ -982,6 +1023,12 @@ XML_ExternalEntityParserCreate(XML_Parse
       int oldInEntityValue = prologState.inEntityValue;
     #endif
       XML_Bool oldns_triplets = ns_triplets;
    +  /* Note that the new parser shares the same hash secret as the old
    +     parser, so that dtdCopy and copyEntityTable can lookup values
    +     from hash tables associated with either parser without us having
    +     to worry which hash secrets each table has.
    +  */
    +  unsigned long oldhash_secret_salt = hash_secret_salt;
     
     #ifdef XML_DTD
       if (!context)
    @@ -1035,13 +1082,14 @@ XML_ExternalEntityParserCreate(XML_Parse
         externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
       defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
       ns_triplets = oldns_triplets;
    +  hash_secret_salt = oldhash_secret_salt;
       parentParser = oldParser;
     #ifdef XML_DTD
       paramEntityParsing = oldParamEntityParsing;
       prologState.inEntityValue = oldInEntityValue;
       if (context) {
     #endif /* XML_DTD */
    -    if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)
    +    if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem)
           || !setContext(parser, context)) {
           XML_ParserFree(parser);
           return NULL;
    @@ -1130,6 +1178,9 @@ XML_ParserFree(XML_Parser parser)
     #endif /* XML_DTD */
         dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
       FREE((void *)atts);
    +#ifdef XML_ATTR_INFO
    +  FREE((void *)attInfo);
    +#endif
       FREE(groupConnector);
       FREE(buffer);
       FREE(dataBuf);
    @@ -1210,6 +1261,14 @@ XML_GetIdAttributeIndex(XML_Parser parse
       return idAttIndex;
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Wed Feb 27 08:44:07 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id 869118FE;
     Wed, 27 Feb 2013 08:44:07 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 6F155191;
     Wed, 27 Feb 2013 08:44:07 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1R8i7YJ078426;
     Wed, 27 Feb 2013 08:44:07 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1R8i3GB078400;
     Wed, 27 Feb 2013 08:44:03 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201302270844.r1R8i3GB078400@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Wed, 27 Feb 2013 08:44:03 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247393 - in user/dchagin/lemul: . bin/sh bin/test
     cddl/contrib/opensolaris/cmd/zinject
     cddl/contrib/opensolaris/lib/libzpool/common
     cddl/contrib/opensolaris/lib/libzpool/common/sys con...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 27 Feb 2013 08:44:07 -0000
    
    Author: dchagin
    Date: Wed Feb 27 08:44:03 2013
    New Revision: 247393
    URL: http://svnweb.freebsd.org/changeset/base/247393
    
    Log:
      MFH
    
    Added:
      user/dchagin/lemul/contrib/expat/FREEBSD-Xlist
         - copied unchanged from r247392, head/contrib/expat/FREEBSD-Xlist
      user/dchagin/lemul/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu
         - copied unchanged from r247392, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu
      user/dchagin/lemul/tools/regression/bin/sh/builtins/read6.0
         - copied unchanged from r247392, head/tools/regression/bin/sh/builtins/read6.0
      user/dchagin/lemul/tools/regression/bin/sh/builtins/wait4.0
         - copied unchanged from r247392, head/tools/regression/bin/sh/builtins/wait4.0
      user/dchagin/lemul/tools/regression/bin/sh/builtins/wait5.0
         - copied unchanged from r247392, head/tools/regression/bin/sh/builtins/wait5.0
      user/dchagin/lemul/usr.sbin/bsdconfig/include/media.hlp
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/include/media.hlp
      user/dchagin/lemul/usr.sbin/bsdconfig/include/network_device.hlp
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/include/network_device.hlp
      user/dchagin/lemul/usr.sbin/bsdconfig/include/options.hlp
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/include/options.hlp
      user/dchagin/lemul/usr.sbin/bsdconfig/include/tcp.hlp
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/include/tcp.hlp
      user/dchagin/lemul/usr.sbin/bsdconfig/share/device.subr
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/share/device.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/share/media/
         - copied from r247392, head/usr.sbin/bsdconfig/share/media/
      user/dchagin/lemul/usr.sbin/bsdconfig/share/struct.subr
         - copied unchanged from r247392, head/usr.sbin/bsdconfig/share/struct.subr
    Deleted:
      user/dchagin/lemul/contrib/expat/FREEBSD-upgrade
      user/dchagin/lemul/contrib/expat/configure
      user/dchagin/lemul/contrib/expat/doc/valid-xhtml10.png
      user/dchagin/lemul/contrib/expat/lib/winconfig.h
      user/dchagin/lemul/contrib/expat/tests/benchmark/benchmark.dsp
      user/dchagin/lemul/contrib/expat/tests/benchmark/benchmark.dsw
      user/dchagin/lemul/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/include/tcp.hlp
    Modified:
      user/dchagin/lemul/Makefile.inc1
      user/dchagin/lemul/bin/sh/eval.c
      user/dchagin/lemul/bin/sh/jobs.c
      user/dchagin/lemul/bin/sh/main.c
      user/dchagin/lemul/bin/sh/trap.c
      user/dchagin/lemul/bin/sh/trap.h
      user/dchagin/lemul/bin/test/test.1
      user/dchagin/lemul/bin/test/test.c
      user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/translate.c
      user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/zinject.c
      user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
      user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
      user/dchagin/lemul/contrib/binutils/gas/config/tc-arm.c
      user/dchagin/lemul/contrib/expat/Changes   (contents, props changed)
      user/dchagin/lemul/contrib/expat/MANIFEST   (contents, props changed)
      user/dchagin/lemul/contrib/expat/Makefile.in   (contents, props changed)
      user/dchagin/lemul/contrib/expat/README   (contents, props changed)
      user/dchagin/lemul/contrib/expat/configure.in   (contents, props changed)
      user/dchagin/lemul/contrib/expat/doc/reference.html   (contents, props changed)
      user/dchagin/lemul/contrib/expat/doc/xmlwf.sgml   (contents, props changed)
      user/dchagin/lemul/contrib/expat/expat_config.h.in   (contents, props changed)
      user/dchagin/lemul/contrib/expat/lib/expat.h   (contents, props changed)
      user/dchagin/lemul/contrib/expat/lib/xmlparse.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/lib/xmlrole.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/lib/xmltok.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/lib/xmltok_impl.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/tests/README.txt   (contents, props changed)
      user/dchagin/lemul/contrib/expat/tests/minicheck.h
      user/dchagin/lemul/contrib/expat/tests/runtests.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/tests/xmltest.sh   (contents, props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/readfilemap.c   (contents, props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlwf.c   (contents, props changed)
      user/dchagin/lemul/contrib/llvm/lib/Target/X86/X86InstrCompiler.td
      user/dchagin/lemul/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
      user/dchagin/lemul/contrib/llvm/tools/clang/lib/Driver/Tools.h
      user/dchagin/lemul/etc/Makefile
      user/dchagin/lemul/etc/rc.d/rtadvd
      user/dchagin/lemul/lib/libc/gen/opendir.c
      user/dchagin/lemul/lib/libc/stdlib/bsearch.3
      user/dchagin/lemul/lib/libelf/elf_update.c
      user/dchagin/lemul/lib/libexpat/expat_config.h
      user/dchagin/lemul/lib/libexpat/libbsdxml.3
      user/dchagin/lemul/lib/libkiconv/kiconv.3
      user/dchagin/lemul/lib/libpmc/pmc.soft.3
      user/dchagin/lemul/sbin/fsck_ffs/dir.c
      user/dchagin/lemul/sbin/fsck_ffs/ea.c
      user/dchagin/lemul/sbin/fsck_ffs/fsck.h
      user/dchagin/lemul/sbin/fsck_ffs/fsutil.c
      user/dchagin/lemul/sbin/fsck_ffs/inode.c
      user/dchagin/lemul/sbin/fsck_ffs/main.c
      user/dchagin/lemul/sbin/fsck_ffs/setup.c
      user/dchagin/lemul/sbin/fsdb/fsdbutil.c
      user/dchagin/lemul/sbin/geom/class/part/gpart.8
      user/dchagin/lemul/sbin/hastctl/hastctl.c
      user/dchagin/lemul/sbin/hastd/control.c
      user/dchagin/lemul/sbin/hastd/hast.h
      user/dchagin/lemul/sbin/hastd/primary.c
      user/dchagin/lemul/sbin/hastd/secondary.c
      user/dchagin/lemul/sbin/reboot/boot_i386.8
      user/dchagin/lemul/share/man/man4/cxgbe.4
      user/dchagin/lemul/sys/arm/arm/machdep.c
      user/dchagin/lemul/sys/arm/arm/mp_machdep.c
      user/dchagin/lemul/sys/arm/arm/pmap-v6.c
      user/dchagin/lemul/sys/arm/arm/pmap.c
      user/dchagin/lemul/sys/arm/arm/vfp.c
      user/dchagin/lemul/sys/arm/at91/at91_machdep.c
      user/dchagin/lemul/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h
      user/dchagin/lemul/sys/arm/conf/RPI-B
      user/dchagin/lemul/sys/arm/include/vfp.h
      user/dchagin/lemul/sys/arm/include/vmparam.h
      user/dchagin/lemul/sys/arm/sa11x0/assabet_machdep.c
      user/dchagin/lemul/sys/arm/ti/ti_gpio.c
      user/dchagin/lemul/sys/boot/common/bootstrap.h
      user/dchagin/lemul/sys/boot/common/load_elf.c
      user/dchagin/lemul/sys/boot/common/module.c
      user/dchagin/lemul/sys/boot/fdt/dts/bcm2835-rpi-b.dts
      user/dchagin/lemul/sys/boot/fdt/fdt_loader_cmd.c
      user/dchagin/lemul/sys/boot/uboot/lib/elf_freebsd.c
      user/dchagin/lemul/sys/cam/ata/ata_pmp.c
      user/dchagin/lemul/sys/cddl/compat/opensolaris/sys/time.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
      user/dchagin/lemul/sys/conf/files
      user/dchagin/lemul/sys/dev/ata/ata-all.c
      user/dchagin/lemul/sys/dev/ata/ata-all.h
      user/dchagin/lemul/sys/dev/ata/ata-dma.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ah.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ah.h
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5210/ar5210.h
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5211/ar5211.h
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5212/ar5212.h
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5416/ar5416.h
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
      user/dchagin/lemul/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
      user/dchagin/lemul/sys/dev/ath/ath_rate/sample/sample.c
      user/dchagin/lemul/sys/dev/ath/if_ath.c
      user/dchagin/lemul/sys/dev/ath/if_ath_tx_ht.c
      user/dchagin/lemul/sys/dev/ath/if_athvar.h
      user/dchagin/lemul/sys/dev/ciss/ciss.c
      user/dchagin/lemul/sys/dev/cpufreq/ichss.c
      user/dchagin/lemul/sys/dev/cxgbe/adapter.h
      user/dchagin/lemul/sys/dev/cxgbe/common/common.h
      user/dchagin/lemul/sys/dev/cxgbe/common/t4_hw.c
      user/dchagin/lemul/sys/dev/cxgbe/common/t4_msg.h
      user/dchagin/lemul/sys/dev/cxgbe/firmware/t4fw_interface.h
      user/dchagin/lemul/sys/dev/cxgbe/t4_main.c
      user/dchagin/lemul/sys/dev/cxgbe/t4_sge.c
      user/dchagin/lemul/sys/dev/fdt/fdt_common.h
      user/dchagin/lemul/sys/dev/hwpmc/hwpmc_soft.c
      user/dchagin/lemul/sys/dev/isp/isp.c
      user/dchagin/lemul/sys/dev/isp/isp_freebsd.c
      user/dchagin/lemul/sys/dev/mfi/mfi.c
      user/dchagin/lemul/sys/dev/mfi/mfi_cam.c
      user/dchagin/lemul/sys/dev/mfi/mfi_debug.c
      user/dchagin/lemul/sys/dev/mfi/mfi_tbolt.c
      user/dchagin/lemul/sys/dev/mfi/mfireg.h
      user/dchagin/lemul/sys/dev/mfi/mfivar.h
      user/dchagin/lemul/sys/dev/msk/if_msk.c
      user/dchagin/lemul/sys/dev/mxge/if_mxge.c
      user/dchagin/lemul/sys/dev/mxge/if_mxge_var.h
      user/dchagin/lemul/sys/dev/random/randomdev_soft.c
      user/dchagin/lemul/sys/dev/sym/sym_hipd.c
      user/dchagin/lemul/sys/dev/usb/usb_pf.c
      user/dchagin/lemul/sys/dev/usb/usbdevs
      user/dchagin/lemul/sys/fs/fuse/fuse_io.c
      user/dchagin/lemul/sys/ia64/conf/GENERIC
      user/dchagin/lemul/sys/ia64/ia64/pmap.c
      user/dchagin/lemul/sys/ia64/include/vmparam.h
      user/dchagin/lemul/sys/kern/kern_clock.c
      user/dchagin/lemul/sys/kern/kern_clocksource.c
      user/dchagin/lemul/sys/kern/kern_descrip.c
      user/dchagin/lemul/sys/kern/sys_process.c
      user/dchagin/lemul/sys/kern/vfs_bio.c
      user/dchagin/lemul/sys/mips/adm5120/adm5120_machdep.c
      user/dchagin/lemul/sys/mips/alchemy/alchemy_machdep.c
      user/dchagin/lemul/sys/mips/beri/beri_machdep.c
      user/dchagin/lemul/sys/mips/cavium/octeon_machdep.c
      user/dchagin/lemul/sys/mips/gxemul/gxemul_machdep.c
      user/dchagin/lemul/sys/mips/idt/idt_machdep.c
      user/dchagin/lemul/sys/mips/malta/malta_machdep.c
      user/dchagin/lemul/sys/mips/rt305x/rt305x_machdep.c
      user/dchagin/lemul/sys/mips/sentry5/s5_machdep.c
      user/dchagin/lemul/sys/mips/sibyte/sb_machdep.c
      user/dchagin/lemul/sys/modules/cxgbe/firmware/Makefile
      user/dchagin/lemul/sys/powerpc/aim/mmu_oea.c
      user/dchagin/lemul/sys/powerpc/aim/mmu_oea64.c
      user/dchagin/lemul/sys/powerpc/aim/moea64_native.c
      user/dchagin/lemul/sys/powerpc/booke/pmap.c
      user/dchagin/lemul/sys/powerpc/ps3/mmu_ps3.c
      user/dchagin/lemul/sys/sparc64/sparc64/tsb.c
      user/dchagin/lemul/sys/sys/vnode.h
      user/dchagin/lemul/sys/ufs/ffs/ffs_alloc.c
      user/dchagin/lemul/sys/ufs/ffs/ffs_softdep.c
      user/dchagin/lemul/sys/ufs/ffs/ffs_vfsops.c
      user/dchagin/lemul/sys/ufs/ufs/ufs_quota.c
      user/dchagin/lemul/sys/vm/swap_pager.c
      user/dchagin/lemul/sys/vm/uma.h
      user/dchagin/lemul/sys/vm/uma_core.c
      user/dchagin/lemul/sys/vm/uma_int.h
      user/dchagin/lemul/sys/vm/vm_map.c
      user/dchagin/lemul/sys/vm/vm_object.c
      user/dchagin/lemul/sys/vm/vm_object.h
      user/dchagin/lemul/sys/vm/vm_page.c
      user/dchagin/lemul/sys/vm/vnode_pager.c
      user/dchagin/lemul/tools/regression/bin/test/regress.sh
      user/dchagin/lemul/usr.bin/systat/systat.1
      user/dchagin/lemul/usr.sbin/bhyve/pci_emul.h
      user/dchagin/lemul/usr.sbin/bhyve/pci_virtio_block.c
      user/dchagin/lemul/usr.sbin/bsdconfig/include/Makefile
      user/dchagin/lemul/usr.sbin/bsdconfig/include/messages.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/devices
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/include/Makefile
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/common.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/device.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/hostname.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/ipaddr.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/netmask.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/resolv.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/networking/share/routing.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/share/Makefile
      user/dchagin/lemul/usr.sbin/bsdconfig/share/common.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/share/script.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/share/strings.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/share/variable.subr
      user/dchagin/lemul/usr.sbin/bsdconfig/startup/rcvar
      user/dchagin/lemul/usr.sbin/extattr/rmextattr.c
      user/dchagin/lemul/usr.sbin/rtadvd/rtadvd.8
      user/dchagin/lemul/usr.sbin/rtadvd/rtadvd.c
    Directory Properties:
      user/dchagin/lemul/   (props changed)
      user/dchagin/lemul/cddl/contrib/opensolaris/   (props changed)
      user/dchagin/lemul/contrib/binutils/   (props changed)
      user/dchagin/lemul/contrib/expat/   (props changed)
      user/dchagin/lemul/contrib/expat/COPYING   (props changed)
      user/dchagin/lemul/contrib/expat/doc/style.css   (props changed)
      user/dchagin/lemul/contrib/expat/doc/xmlwf.1   (props changed)
      user/dchagin/lemul/contrib/expat/examples/elements.c   (props changed)
      user/dchagin/lemul/contrib/expat/examples/outline.c   (props changed)
      user/dchagin/lemul/contrib/expat/lib/ascii.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/asciitab.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/iasciitab.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/internal.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/latin1tab.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/nametab.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/utf8tab.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/xmlrole.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/xmltok.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/xmltok_impl.h   (props changed)
      user/dchagin/lemul/contrib/expat/lib/xmltok_ns.c   (props changed)
      user/dchagin/lemul/contrib/expat/tests/chardata.c   (props changed)
      user/dchagin/lemul/contrib/expat/tests/chardata.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/codepage.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/codepage.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/ct.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/filemap.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/unixfilemap.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/win32filemap.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlfile.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlfile.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlmime.c   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlmime.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmltchar.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlurl.h   (props changed)
      user/dchagin/lemul/contrib/expat/xmlwf/xmlwin32url.cxx   (props changed)
      user/dchagin/lemul/contrib/llvm/   (props changed)
      user/dchagin/lemul/contrib/llvm/tools/clang/   (props changed)
      user/dchagin/lemul/lib/libc/   (props changed)
      user/dchagin/lemul/sbin/   (props changed)
      user/dchagin/lemul/share/man/man4/   (props changed)
      user/dchagin/lemul/sys/   (props changed)
      user/dchagin/lemul/sys/boot/   (props changed)
      user/dchagin/lemul/sys/cddl/contrib/opensolaris/   (props changed)
      user/dchagin/lemul/sys/conf/   (props changed)
      user/dchagin/lemul/usr.sbin/bhyve/   (props changed)
      user/dchagin/lemul/usr.sbin/rtadvd/   (props changed)
    
    Modified: user/dchagin/lemul/Makefile.inc1
    ==============================================================================
    --- user/dchagin/lemul/Makefile.inc1	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/Makefile.inc1	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -1132,7 +1132,8 @@ _lex=		usr.bin/lex
     .endif
     
     .if ${BOOTSTRAPPING} < 1000013
    -_yacc=		usr.bin/yacc
    +_yacc=		lib/liby \
    +		usr.bin/yacc
     .endif
     
     .if ${BOOTSTRAPPING} < 1000026
    
    Modified: user/dchagin/lemul/bin/sh/eval.c
    ==============================================================================
    --- user/dchagin/lemul/bin/sh/eval.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/sh/eval.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -301,7 +301,7 @@ evaltree(union node *n, int flags)
     	} while (n != NULL);
     out:
     	popstackmark(&smark);
    -	if (pendingsigs)
    +	if (pendingsig)
     		dotrap();
     	if (eflag && exitstatus != 0 && do_etest)
     		exitshell(exitstatus);
    
    Modified: user/dchagin/lemul/bin/sh/jobs.c
    ==============================================================================
    --- user/dchagin/lemul/bin/sh/jobs.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/sh/jobs.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -521,7 +521,7 @@ waitcmd(int argc, char **argv)
     	} while (dowait(DOWAIT_BLOCK | DOWAIT_SIG, (struct job *)NULL) != -1);
     	in_waitcmd--;
     
    -	return 0;
    +	return pendingsig + 128;
     }
     
     
    
    Modified: user/dchagin/lemul/bin/sh/main.c
    ==============================================================================
    --- user/dchagin/lemul/bin/sh/main.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/sh/main.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -196,7 +196,7 @@ cmdloop(int top)
     	TRACE(("cmdloop(%d) called\n", top));
     	setstackmark(&smark);
     	for (;;) {
    -		if (pendingsigs)
    +		if (pendingsig)
     			dotrap();
     		inter = 0;
     		if (iflag && top) {
    
    Modified: user/dchagin/lemul/bin/sh/trap.c
    ==============================================================================
    --- user/dchagin/lemul/bin/sh/trap.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/sh/trap.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$");
     
     
     MKINIT char sigmode[NSIG];	/* current value of signal */
    -int pendingsigs;		/* indicates some signal received */
    +volatile sig_atomic_t pendingsig;	/* indicates some signal received */
     int in_dotrap;			/* do we execute in a trap handler? */
     static char *volatile trap[NSIG];	/* trap handler commands */
     static volatile sig_atomic_t gotsig[NSIG];
    @@ -388,22 +388,25 @@ onsig(int signo)
     		return;
     	}
     
    -	if (signo != SIGCHLD || !ignore_sigchld)
    -		gotsig[signo] = 1;
    -	pendingsigs++;
    -
     	/* If we are currently in a wait builtin, prepare to break it */
    -	if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0)
    -		breakwaitcmd = 1;
    -	/*
    -	 * If a trap is set, not ignored and not the null command, we need
    -	 * to make sure traps are executed even when a child blocks signals.
    -	 */
    -	if (Tflag &&
    -	    trap[signo] != NULL &&
    -	    ! (trap[signo][0] == '\0') &&
    -	    ! (trap[signo][0] == ':' && trap[signo][1] == '\0'))
    +	if ((signo == SIGINT || signo == SIGQUIT) && in_waitcmd != 0) {
     		breakwaitcmd = 1;
    +		pendingsig = signo;
    +	}
    +
    +	if (trap[signo] != NULL && trap[signo][0] != '\0' &&
    +	    (signo != SIGCHLD || !ignore_sigchld)) {
    +		gotsig[signo] = 1;
    +		pendingsig = signo;
    +
    +		/*
    +		 * If a trap is set, not ignored and not the null command, we
    +		 * need to make sure traps are executed even when a child
    +		 * blocks signals.
    +		 */
    +		if (Tflag && !(trap[signo][0] == ':' && trap[signo][1] == '\0'))
    +			breakwaitcmd = 1;
    +	}
     
     #ifndef NO_HISTORY
     	if (signo == SIGWINCH)
    @@ -424,7 +427,7 @@ dotrap(void)
     
     	in_dotrap++;
     	for (;;) {
    -		pendingsigs = 0;
    +		pendingsig = 0;
     		for (i = 1; i < NSIG; i++) {
     			if (gotsig[i]) {
     				gotsig[i] = 0;
    
    Modified: user/dchagin/lemul/bin/sh/trap.h
    ==============================================================================
    --- user/dchagin/lemul/bin/sh/trap.h	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/sh/trap.h	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -33,7 +33,7 @@
      * $FreeBSD$
      */
     
    -extern int pendingsigs;
    +extern volatile sig_atomic_t pendingsig;
     extern int in_dotrap;
     extern volatile sig_atomic_t gotwinch;
     
    
    Modified: user/dchagin/lemul/bin/test/test.1
    ==============================================================================
    --- user/dchagin/lemul/bin/test/test.1	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/test/test.1	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -169,15 +169,65 @@ True if
     .Ar file
     exists and is a socket.
     .It Ar file1 Fl nt Ar file2
    -True if
    +True if both
    +.Ar file1
    +and
    +.Ar file2
    +exist and
    +.Ar file1
    +is newer than
    +.Ar file2 .
    +.It Ar file1 Fl nt Ns Ar X Ns Ar Y Ar file2
    +True if both
    +.Ar file1
    +and
    +.Ar file2
    +exist and
     .Ar file1
    -exists and is newer than
    +has a more recent last access time
    +.Pq Ar X Ns = Ns Cm a ,
    +inode creation time
    +.Pq Ar X Ns = Ns Cm b ,
    +change time
    +.Pq Ar X Ns = Ns Cm c ,
    +or modification time
    +.Pq Ar X Ns = Ns Cm m
    +than the last access time
    +.Pq Ar Y Ns = Ns Cm a ,
    +inode creation time
    +.Pq Ar Y Ns = Ns Cm b ,
    +change time
    +.Pq Ar Y Ns = Ns Cm c ,
    +or modification time
    +.Pq Ar Y Ns = Ns Cm m
    +of
     .Ar file2 .
    +Note that
    +.Ic -ntmm
    +is equivalent to
    +.Ic -nt .
     .It Ar file1 Fl ot Ar file2
    -True if
    +True if both
    +.Ar file1
    +and
    +.Ar file2
    +exist and
     .Ar file1
    -exists and is older than
    +is older than
     .Ar file2 .
    +Note that
    +.Ar file1
    +.Ic -ot
    +.Ar file2
    +is equivalent to
    +.Ar file2
    +.Ic -nt
    +.Ar file1
    +.It Ar file1 Fl ot Ns Ar X Ns Ar Y Ar file2
    +Equivalent to
    +.Ar file2
    +.Ic -nt Ns Ar Y Ns Ar X
    +.Ar file1 .
     .It Ar file1 Fl ef Ar file2
     True if
     .Ar file1
    
    Modified: user/dchagin/lemul/bin/test/test.c
    ==============================================================================
    --- user/dchagin/lemul/bin/test/test.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/bin/test/test.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -63,7 +63,7 @@ error(const char *msg, ...)
     		"-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S";
     
     	binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"|
    -			"-nt"|"-ot"|"-ef";
    +			"-nt"|"-nt[abcm][abcm]"|"-ot"|"-ot[abcm][abcm])"|"-ef";
     	operand ::= 
     */
     
    @@ -85,8 +85,38 @@ enum token {
     	FILSUID,
     	FILSGID,
     	FILSTCK,
    -	FILNT,
    -	FILOT,
    +	FILNTAA,
    +	FILNTAB,
    +	FILNTAC,
    +	FILNTAM,
    +	FILNTBA,
    +	FILNTBB,
    +	FILNTBC,
    +	FILNTBM,
    +	FILNTCA,
    +	FILNTCB,
    +	FILNTCC,
    +	FILNTCM,
    +	FILNTMA,
    +	FILNTMB,
    +	FILNTMC,
    +	FILNTMM,
    +	FILOTAA,
    +	FILOTAB,
    +	FILOTAC,
    +	FILOTAM,
    +	FILOTBA,
    +	FILOTBB,
    +	FILOTBC,
    +	FILOTBM,
    +	FILOTCA,
    +	FILOTCB,
    +	FILOTCC,
    +	FILOTCM,
    +	FILOTMA,
    +	FILOTMB,
    +	FILOTMC,
    +	FILOTMM,
     	FILEQ,
     	FILUID,
     	FILGID,
    @@ -118,9 +148,16 @@ enum token_types {
     	PAREN
     };
     
    +enum time_types {
    +	ATIME,
    +	BTIME,
    +	CTIME,
    +	MTIME
    +};
    +
     static struct t_op {
    -	char op_text[4];
    -	short op_num, op_type;
    +	char op_text[6];
    +	char op_num, op_type;
     } const ops [] = {
     	{"-r",	FILRD,	UNOP},
     	{"-w",	FILWR,	UNOP},
    @@ -154,8 +191,40 @@ static struct t_op {
     	{"-gt",	INTGT,	BINOP},
     	{"-le",	INTLE,	BINOP},
     	{"-lt",	INTLT,	BINOP},
    -	{"-nt",	FILNT,	BINOP},
    -	{"-ot",	FILOT,	BINOP},
    +	{"-nt",	FILNTMM,	BINOP},
    +	{"-ntaa",	FILNTAA,	BINOP},
    +	{"-ntab",	FILNTAB,	BINOP},
    +	{"-ntac",	FILNTAC,	BINOP},
    +	{"-ntam",	FILNTAM,	BINOP},
    +	{"-ntba",	FILNTBA,	BINOP},
    +	{"-ntbb",	FILNTBB,	BINOP},
    +	{"-ntbc",	FILNTBC,	BINOP},
    +	{"-ntbm",	FILNTBM,	BINOP},
    +	{"-ntca",	FILNTCA,	BINOP},
    +	{"-ntcb",	FILNTCB,	BINOP},
    +	{"-ntcc",	FILNTCC,	BINOP},
    +	{"-ntcm",	FILNTCM,	BINOP},
    +	{"-ntma",	FILNTMA,	BINOP},
    +	{"-ntmb",	FILNTMB,	BINOP},
    +	{"-ntmc",	FILNTMC,	BINOP},
    +	{"-ntmm",	FILNTMM,	BINOP},
    +	{"-ot",	FILOTMM,	BINOP},
    +	{"-otaa",	FILOTAA,	BINOP},
    +	{"-otab",	FILOTBB,	BINOP},
    +	{"-otac",	FILOTAC,	BINOP},
    +	{"-otam",	FILOTAM,	BINOP},
    +	{"-otba",	FILOTBA,	BINOP},
    +	{"-otbb",	FILOTBB,	BINOP},
    +	{"-otbc",	FILOTBC,	BINOP},
    +	{"-otbm",	FILOTBM,	BINOP},
    +	{"-otca",	FILOTCA,	BINOP},
    +	{"-otcb",	FILOTCB,	BINOP},
    +	{"-otcc",	FILOTCC,	BINOP},
    +	{"-otcm",	FILOTCM,	BINOP},
    +	{"-otma",	FILOTMA,	BINOP},
    +	{"-otmb",	FILOTMB,	BINOP},
    +	{"-otmc",	FILOTMC,	BINOP},
    +	{"-otmm",	FILOTMM,	BINOP},
     	{"-ef",	FILEQ,	BINOP},
     	{"!",	UNOT,	BUNOP},
     	{"-a",	BAND,	BBINOP},
    @@ -180,10 +249,10 @@ static int	intcmp(const char *, const ch
     static int	isunopoperand(void);
     static int	islparenoperand(void);
     static int	isrparenoperand(void);
    -static int	newerf(const char *, const char *);
    +static int	newerf(const char *, const char *, enum time_types,
    +		       enum time_types);
     static int	nexpr(enum token);
     static int	oexpr(enum token);
    -static int	olderf(const char *, const char *);
     static int	primary(enum token);
     static void	syntax(const char *, const char *);
     static enum	token t_lex(char *);
    @@ -353,10 +422,70 @@ binop(void)
     		return intcmp(opnd1, opnd2) <= 0;
     	case INTLT:
     		return intcmp(opnd1, opnd2) < 0;
    -	case FILNT:
    -		return newerf (opnd1, opnd2);
    -	case FILOT:
    -		return olderf (opnd1, opnd2);
    +	case FILNTAA:
    +		return newerf(opnd1, opnd2, ATIME, ATIME);
    +	case FILNTAB:
    +		return newerf(opnd1, opnd2, ATIME, BTIME);
    +	case FILNTAC:
    +		return newerf(opnd1, opnd2, ATIME, CTIME);
    +	case FILNTAM:
    +		return newerf(opnd1, opnd2, ATIME, MTIME);
    +	case FILNTBA:
    +		return newerf(opnd1, opnd2, BTIME, ATIME);
    +	case FILNTBB:
    +		return newerf(opnd1, opnd2, BTIME, BTIME);
    +	case FILNTBC:
    +		return newerf(opnd1, opnd2, BTIME, CTIME);
    +	case FILNTBM:
    +		return newerf(opnd1, opnd2, BTIME, MTIME);
    +	case FILNTCA:
    +		return newerf(opnd1, opnd2, CTIME, ATIME);
    +	case FILNTCB:
    +		return newerf(opnd1, opnd2, CTIME, BTIME);
    +	case FILNTCC:
    +		return newerf(opnd1, opnd2, CTIME, CTIME);
    +	case FILNTCM:
    +		return newerf(opnd1, opnd2, CTIME, MTIME);
    +	case FILNTMA:
    +		return newerf(opnd1, opnd2, MTIME, ATIME);
    +	case FILNTMB:
    +		return newerf(opnd1, opnd2, MTIME, BTIME);
    +	case FILNTMC:
    +		return newerf(opnd1, opnd2, MTIME, CTIME);
    +	case FILNTMM:
    +		return newerf(opnd1, opnd2, MTIME, MTIME);
    +	case FILOTAA:
    +		return newerf(opnd2, opnd1, ATIME, ATIME);
    +	case FILOTAB:
    +		return newerf(opnd2, opnd1, BTIME, ATIME);
    +	case FILOTAC:
    +		return newerf(opnd2, opnd1, CTIME, ATIME);
    +	case FILOTAM:
    +		return newerf(opnd2, opnd1, MTIME, ATIME);
    +	case FILOTBA:
    +		return newerf(opnd2, opnd1, ATIME, BTIME);
    +	case FILOTBB:
    +		return newerf(opnd2, opnd1, BTIME, BTIME);
    +	case FILOTBC:
    +		return newerf(opnd2, opnd1, CTIME, BTIME);
    +	case FILOTBM:
    +		return newerf(opnd2, opnd1, MTIME, BTIME);
    +	case FILOTCA:
    +		return newerf(opnd2, opnd1, ATIME, CTIME);
    +	case FILOTCB:
    +		return newerf(opnd2, opnd1, BTIME, CTIME);
    +	case FILOTCC:
    +		return newerf(opnd2, opnd1, CTIME, CTIME);
    +	case FILOTCM:
    +		return newerf(opnd2, opnd1, MTIME, CTIME);
    +	case FILOTMA:
    +		return newerf(opnd2, opnd1, ATIME, MTIME);
    +	case FILOTMB:
    +		return newerf(opnd2, opnd1, BTIME, MTIME);
    +	case FILOTMC:
    +		return newerf(opnd2, opnd1, CTIME, MTIME);
    +	case FILOTMM:
    +		return newerf(opnd2, opnd1, MTIME, MTIME);
     	case FILEQ:
     		return equalf (opnd1, opnd2);
     	default:
    @@ -570,25 +699,34 @@ intcmp (const char *s1, const char *s2)
     }
     
     static int
    -newerf (const char *f1, const char *f2)
    +newerf (const char *f1, const char *f2, enum time_types t1, enum time_types t2)
     {
     	struct stat b1, b2;
    +	struct timespec *ts1, *ts2;
     
     	if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0)
     		return 0;
     
    -	if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec)
    +	switch (t1) {
    +	case ATIME:	ts1 = &b1.st_atim;	break;
    +	case BTIME:	ts1 = &b1.st_birthtim;	break;
    +	case CTIME:	ts1 = &b1.st_ctim;	break;
    +	default:	ts1 = &b1.st_mtim;	break;
    +	}
    +
    +	switch (t2) {
    +	case ATIME:	ts2 = &b2.st_atim;	break;
    +	case BTIME:	ts2 = &b2.st_birthtim;	break;
    +	case CTIME:	ts2 = &b2.st_ctim;	break;
    +	default:	ts2 = &b2.st_mtim;	break;
    +	}
    +
    +	if (ts1->tv_sec > ts2->tv_sec)
     		return 1;
    -	if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec)
    +	if (ts1->tv_sec < ts2->tv_sec)
     		return 0;
     
    -       return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec);
    -}
    -
    -static int
    -olderf (const char *f1, const char *f2)
    -{
    -	return (newerf(f2, f1));
    +       return (ts1->tv_nsec > ts2->tv_nsec);
     }
     
     static int
    
    Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/translate.c
    ==============================================================================
    --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/translate.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/translate.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -20,6 +20,7 @@
      */
     /*
      * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2012 by Delphix. All rights reserved.
      */
     
     #include 
    @@ -455,6 +456,20 @@ translate_device(const char *pool, const
     		    &record->zi_guid) == 0);
     	}
     
    +	/*
    +	 * Device faults can take on three different forms:
    +	 * 1). delayed or hanging I/O
    +	 * 2). zfs label faults
    +	 * 3). generic disk faults
    +	 */
    +	if (record->zi_timer != 0) {
    +		record->zi_cmd = ZINJECT_DELAY_IO;
    +	} else if (label_type != TYPE_INVAL) {
    +		record->zi_cmd = ZINJECT_LABEL_FAULT;
    +	} else {
    +		record->zi_cmd = ZINJECT_DEVICE_FAULT;
    +	}
    +
     	switch (label_type) {
     	case TYPE_LABEL_UBERBLOCK:
     		record->zi_start = offsetof(vdev_label_t, vl_uberblock[0]);
    
    Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/zinject.c
    ==============================================================================
    --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/zinject.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/zinject/zinject.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -20,6 +20,7 @@
      */
     /*
      * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2012 by Delphix. All rights reserved.
      */
     
     /*
    @@ -603,7 +604,7 @@ main(int argc, char **argv)
     	}
     
     	while ((c = getopt(argc, argv,
    -	    ":aA:b:d:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) {
    +	    ":aA:b:d:D:f:Fg:qhIc:t:T:l:mr:s:e:uL:p:")) != -1) {
     		switch (c) {
     		case 'a':
     			flags |= ZINJECT_FLUSH_ARC;
    @@ -629,6 +630,15 @@ main(int argc, char **argv)
     		case 'd':
     			device = optarg;
     			break;
    +		case 'D':
    +			record.zi_timer = strtoull(optarg, &end, 10);
    +			if (errno != 0 || *end != '\0') {
    +				(void) fprintf(stderr, "invalid i/o delay "
    +				    "value: '%s'\n", optarg);
    +				usage();
    +				return (1);
    +			}
    +			break;
     		case 'e':
     			if (strcasecmp(optarg, "io") == 0) {
     				error = EIO;
    @@ -693,6 +703,7 @@ main(int argc, char **argv)
     		case 'p':
     			(void) strlcpy(record.zi_func, optarg,
     			    sizeof (record.zi_func));
    +			record.zi_cmd = ZINJECT_PANIC;
     			break;
     		case 'q':
     			quiet = 1;
    @@ -766,13 +777,15 @@ main(int argc, char **argv)
     	argc -= optind;
     	argv += optind;
     
    +	if (record.zi_duration != 0)
    +		record.zi_cmd = ZINJECT_IGNORED_WRITES;
    +
     	if (cancel != NULL) {
     		/*
     		 * '-c' is invalid with any other options.
     		 */
     		if (raw != NULL || range != NULL || type != TYPE_INVAL ||
    -		    level != 0 || record.zi_func[0] != '\0' ||
    -		    record.zi_duration != 0) {
    +		    level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) {
     			(void) fprintf(stderr, "cancel (-c) incompatible with "
     			    "any other options\n");
     			usage();
    @@ -804,8 +817,7 @@ main(int argc, char **argv)
     		 * for doing injection, so handle it separately here.
     		 */
     		if (raw != NULL || range != NULL || type != TYPE_INVAL ||
    -		    level != 0 || record.zi_func[0] != '\0' ||
    -		    record.zi_duration != 0) {
    +		    level != 0 || record.zi_cmd != ZINJECT_UNINITIALIZED) {
     			(void) fprintf(stderr, "device (-d) incompatible with "
     			    "data error injection\n");
     			usage();
    @@ -839,7 +851,7 @@ main(int argc, char **argv)
     
     	} else if (raw != NULL) {
     		if (range != NULL || type != TYPE_INVAL || level != 0 ||
    -		    record.zi_func[0] != '\0' || record.zi_duration != 0) {
    +		    record.zi_cmd != ZINJECT_UNINITIALIZED) {
     			(void) fprintf(stderr, "raw (-b) format with "
     			    "any other options\n");
     			usage();
    @@ -862,13 +874,14 @@ main(int argc, char **argv)
     			return (1);
     		}
     
    +		record.zi_cmd = ZINJECT_DATA_FAULT;
     		if (translate_raw(raw, &record) != 0)
     			return (1);
     		if (!error)
     			error = EIO;
    -	} else if (record.zi_func[0] != '\0') {
    +	} else if (record.zi_cmd == ZINJECT_PANIC) {
     		if (raw != NULL || range != NULL || type != TYPE_INVAL ||
    -		    level != 0 || device != NULL || record.zi_duration != 0) {
    +		    level != 0 || device != NULL) {
     			(void) fprintf(stderr, "panic (-p) incompatible with "
     			    "other options\n");
     			usage();
    @@ -886,7 +899,7 @@ main(int argc, char **argv)
     		if (argv[1] != NULL)
     			record.zi_type = atoi(argv[1]);
     		dataset[0] = '\0';
    -	} else if (record.zi_duration != 0) {
    +	} else if (record.zi_cmd == ZINJECT_IGNORED_WRITES) {
     		if (nowrites == 0) {
     			(void) fprintf(stderr, "-s or -g meaningless "
     			    "without -I (ignore writes)\n");
    @@ -940,6 +953,7 @@ main(int argc, char **argv)
     			return (1);
     		}
     
    +		record.zi_cmd = ZINJECT_DATA_FAULT;
     		if (translate_record(type, argv[0], range, level, &record, pool,
     		    dataset) != 0)
     			return (1);
    
    Modified: user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
    ==============================================================================
    --- user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -45,6 +45,9 @@ int aok;
     uint64_t physmem;
     vnode_t *rootdir = (vnode_t *)0xabcd1234;
     char hw_serial[HW_HOSTID_LEN];
    +#ifdef illumos
    +kmutex_t cpu_lock;
    +#endif
     
     struct utsname utsname = {
     	"userland", "libzpool", "1", "1", "na"
    @@ -842,6 +845,28 @@ ddi_strtoull(const char *str, char **npt
     	return (0);
     }
     
    +#ifdef illumos
    +/* ARGSUSED */
    +cyclic_id_t
    +cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when)
    +{
    +	return (1);
    +}
    +
    +/* ARGSUSED */
    +void
    +cyclic_remove(cyclic_id_t id)
    +{
    +}
    +
    +/* ARGSUSED */
    +int
    +cyclic_reprogram(cyclic_id_t id, hrtime_t expiration)
    +{
    +	return (1);
    +}
    +#endif
    +
     /*
      * =========================================================================
      * kernel emulation setup & teardown
    @@ -875,6 +900,10 @@ kernel_init(int mode)
     
     	system_taskq_init();
     
    +#ifdef illumos
    +	mutex_init(&cpu_lock, NULL, MUTEX_DEFAULT, NULL);
    +#endif
    +
     	spa_init(mode);
     }
     
    
    Modified: user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
    ==============================================================================
    --- user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -457,6 +457,9 @@ extern vnode_t *rootdir;
     
     extern void delay(clock_t ticks);
     
    +#define	SEC_TO_TICK(sec)	((sec) * hz)
    +#define	NSEC_TO_TICK(usec)	((usec) / (NANOSEC / hz))
    +
     #define	gethrestime_sec() time(NULL)
     #define	gethrestime(t) \
     	do {\
    @@ -624,6 +627,36 @@ typedef	uint32_t	idmap_rid_t;
     #define	ERESTART	(-1)
     #endif
     
    +#ifdef illumos
    +/*
    + * Cyclic information
    + */
    +extern kmutex_t cpu_lock;
    +
    +typedef uintptr_t cyclic_id_t;
    +typedef uint16_t cyc_level_t;
    +typedef void (*cyc_func_t)(void *);
    +
    +#define	CY_LOW_LEVEL	0
    +#define	CY_INFINITY	INT64_MAX
    +#define	CYCLIC_NONE	((cyclic_id_t)0)
    +
    +typedef struct cyc_time {
    +	hrtime_t cyt_when;
    +	hrtime_t cyt_interval;
    +} cyc_time_t;
    +
    +typedef struct cyc_handler {
    +	cyc_func_t cyh_func;
    +	void *cyh_arg;
    +	cyc_level_t cyh_level;
    +} cyc_handler_t;
    +
    +extern cyclic_id_t cyclic_add(cyc_handler_t *, cyc_time_t *);
    +extern void cyclic_remove(cyclic_id_t);
    +extern int cyclic_reprogram(cyclic_id_t, hrtime_t);
    +#endif	/* illumos */
    +
     #ifdef	__cplusplus
     }
     #endif
    
    Modified: user/dchagin/lemul/contrib/binutils/gas/config/tc-arm.c
    ==============================================================================
    --- user/dchagin/lemul/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -3079,6 +3079,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUT
       record_alignment (now_seg, 2);
     
       ptr = frag_more (8);
    +  memset(ptr, 0, 8);
       where = frag_now_fix () - 8;
     
       /* Self relative offset of the function start.  */
    @@ -17350,6 +17351,7 @@ create_unwind_entry (int have_data)
     
       /* Allocate the table entry.	*/
       ptr = frag_more ((size << 2) + 4);
    +  memset(ptr, 0, (size << 2) + 4);
       where = frag_now_fix () - ((size << 2) + 4);
     
       switch (unwind.personality_index)
    
    Modified: user/dchagin/lemul/contrib/expat/Changes
    ==============================================================================
    --- user/dchagin/lemul/contrib/expat/Changes	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/contrib/expat/Changes	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -1,5 +1,41 @@
    +Release 2.1.0 Sat March 24 2012
    +        - Bug Fixes:
    +          #1742315: Harmful XML_ParserCreateNS suggestion.
    +          #2895533: CVE-2012-1147 - Resource leak in readfilemap.c.
    +          #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3.
    +          #1983953, 2517952, 2517962, 2649838: 
    +                Build modifications using autoreconf instead of buildconf.sh.
    +          #2815947, #2884086: OBJEXT and EXEEXT support while building.
    +          #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences.
    +          #2517938: xmlwf should return non-zero exit status if not well-formed.
    +          #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml.
    +          #2855609: Dangling positionPtr after error.
    +          #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8().
    +          #2958794: CVE-2012-1148 - Memory leak in poolGrow.
    +          #2990652: CMake support.
    +          #3010819: UNEXPECTED_STATE with a trailing "%" in entity value.
    +          #3206497: Unitialized memory returned from XML_Parse.
    +          #3287849: make check fails on mingw-w64.
    +          #3496608: CVE-2012-0876 - Hash DOS attack.
    +        - Patches:
    +          #1749198: pkg-config support.
    +          #3010222: Fix for bug #3010819.
    +          #3312568: CMake support.
    +          #3446384: Report byte offsets for attr names and values.
    +        - New Features / API changes:
    +          Added new API member XML_SetHashSalt() that allows setting an intial
    +                value (salt) for hash calculations. This is part of the fix for
    +                bug #3496608 to randomize hash parameters.
    +          When compiled with XML_ATTR_INFO defined, adds new API member
    +                XML_GetAttributeInfo() that allows retrieving the byte
    +                offsets for attribute names and values (patch #3446384).
    +          Added CMake build system.
    +                See bug #2990652 and patch #3312568.
    +          Added run-benchmark target to Makefile.in - relies on testdata module
    +                present in the same relative location as in the repository.
    +          
     Release 2.0.1 Tue June 5 2007
    -        - Fixed bugs #1515266, 1515600: The character data handler's calling
    +        - Fixed bugs #1515266, #1515600: The character data handler's calling
               of XML_StopParser() was not handled properly; if the parser was
               stopped and the handler set to NULL, the parser would segfault.
             - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed
    @@ -8,7 +44,7 @@ Release 2.0.1 Tue June 5 2007
             - Fixed xmlwf bug #1513566: "out of memory" error on file size zero.
             - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call.
             - Fixes and improvements for Windows platform:
    -          bugs #1409451, #1476160, 1548182, 1602769, 1717322.
    +          bugs #1409451, #1476160, #1548182, #1602769, #1717322.
             - Build fixes for various platforms:
               HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180.
               All Unix: #1554618 (refreshed config.sub/config.guess).
    @@ -30,8 +66,8 @@ Release 2.0.0 Wed Jan 11 2006
               byte indexes and line/column numbers.
             - Updated to use libtool 1.5.22 (the most recent).
             - Added support for AmigaOS.
    -        - Some mostly minor bug fixes. SF issues include: 1006708,
    -          1021776, 1023646, 1114960, 1156398, 1221160, 1271642.
    +        - Some mostly minor bug fixes. SF issues include: #1006708,
    +          #1021776, #1023646, #1114960, #1156398, #1221160, #1271642.
     
     Release 1.95.8 Fri Jul 23 2004
             - Major new feature: suspend/resume.  Handlers can now request
    @@ -40,8 +76,8 @@ Release 1.95.8 Fri Jul 23 2004
               documentation for more details.
             - Some mostly minor bug fixes, but compilation should no
               longer generate warnings on most platforms.  SF issues
    -          include: 827319, 840173, 846309, 888329, 896188, 923913,
    -          928113, 961698, 985192.
    +          include: #827319, #840173, #846309, #888329, #896188, #923913,
    +          #928113, #961698, #985192.
     
     Release 1.95.7 Mon Oct 20 2003
             - Fixed enum XML_Status issue (reported on SourceForge many
    @@ -54,19 +90,19 @@ Release 1.95.7 Mon Oct 20 2003
             - Improved ability to build without the configure-generated
               expat_config.h header.  This is useful for applications
               which embed Expat rather than linking in the library.
    -        - Fixed a variety of bugs: see SF issues 458907, 609603,
    -          676844, 679754, 692878, 692964, 695401, 699323, 699487,
    -          820946.
    +        - Fixed a variety of bugs: see SF issues #458907, #609603,
    +          #676844, #679754, #692878, #692964, #695401, #699323, #699487,
    +          #820946.
             - Improved hash table lookups.
             - Added more regression tests and improved documentation.
     
     Release 1.95.6 Tue Jan 28 2003
             - Added XML_FreeContentModel().
             - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree().
    -        - Fixed a variety of bugs: see SF issues 615606, 616863,
    -          618199, 653180, 673791.
    +        - Fixed a variety of bugs: see SF issues #615606, #616863,
    +          #618199, #653180, #673791.
             - Enhanced the regression test suite.
    -        - Man page improvements: includes SF issue 632146.
    +        - Man page improvements: includes SF issue #632146.
     
     Release 1.95.5 Fri Sep 6 2002
             - Added XML_UseForeignDTD() for improved SAX2 support.
    @@ -84,9 +120,9 @@ Release 1.95.5 Fri Sep 6 2002
             - Reduced line-length for all source code and headers to be
               no longer than 80 characters, to help with AS/400 support.
             - Reduced memory copying during parsing (SF patch #600964).
    -        - Fixed a variety of bugs: see SF issues 580793, 434664,
    -          483514, 580503, 581069, 584041, 584183, 584832, 585537,
    -          596555, 596678, 598352, 598944, 599715, 600479, 600971.
    +        - Fixed a variety of bugs: see SF issues #580793, #434664,
    +          #483514, #580503, #581069, #584041, #584183, #584832, #585537,
    +          #596555, #596678, #598352, #598944, #599715, #600479, #600971.
     
     Release 1.95.4 Fri Jul 12 2002
             - Added support for VMS, contributed by Craig Berry.  See
    @@ -95,14 +131,14 @@ Release 1.95.4 Fri Jul 12 2002
               contributed by Thomas Wegner and Daryle Walker.
             - Added Borland C++ Builder 5 / BCC 5.5 support, contributed
               by Patrick McConnell (SF patch #538032).
    -        - Fixed a variety of bugs: see SF issues 441449, 563184,
    -          564342, 566334, 566901, 569461, 570263, 575168, 579196.
    +        - Fixed a variety of bugs: see SF issues #441449, #563184,
    +          #564342, #566334, #566901, #569461, #570263, #575168, #579196.
             - Made skippedEntityHandler conform to SAX2 (see source comment)
             - Re-implemented WFC: Entity Declared from XML 1.0 spec and
               added a new error "entity declared in parameter entity":
    -          see SF bug report 569461 and SF patch 578161
    +          see SF bug report #569461 and SF patch #578161
             - Re-implemented section 5.1 from XML 1.0 spec:
    -          see SF bug report 570263 and SF patch 578161
    +          see SF bug report #570263 and SF patch #578161
     
     Release 1.95.3 Mon Jun 3 2002
             - Added a project to the MSVC workspace to create a wchar_t
    @@ -114,9 +150,9 @@ Release 1.95.3 Mon Jun 3 2002
             - Made the XML_UNICODE builds usable (thanks, Karl!).
             - Allow xmlwf to read from standard input.
             - Install a man page for xmlwf on Unix systems.
    -        - Fixed many bugs; see SF bug reports 231864, 461380, 464837,
    -          466885, 469226, 477667, 484419, 487840, 494749, 496505,
    -          547350.  Other bugs which we can't test as easily may also
    +        - Fixed many bugs; see SF bug reports #231864, #461380, #464837,
    +          #466885, #469226, #477667, #484419, #487840, #494749, #496505,
    +          #547350.  Other bugs which we can't test as easily may also
               have been fixed, especially in the area of build support.
     
     Release 1.95.2 Fri Jul 27 2001
    
    Copied: user/dchagin/lemul/contrib/expat/FREEBSD-Xlist (from r247392, head/contrib/expat/FREEBSD-Xlist)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/dchagin/lemul/contrib/expat/FREEBSD-Xlist	Wed Feb 27 08:44:03 2013	(r247393, copy of r247392, head/contrib/expat/FREEBSD-Xlist)
    @@ -0,0 +1,19 @@
    +# $FreeBSD$
    +*.MPW
    +*.cmake
    +*.def
    +*.dsp
    +*.dsw
    +*.m4
    +*.pc.in
    +*config.h
    +CMake*
    +Configure*
    +amiga
    +bcb5
    +configure
    +conftools
    +doc/valid-xhtml10.png
    +m4
    +vms
    +win32
    
    Modified: user/dchagin/lemul/contrib/expat/MANIFEST
    ==============================================================================
    --- user/dchagin/lemul/contrib/expat/MANIFEST	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/contrib/expat/MANIFEST	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -1,5 +1,8 @@
    -amiga/stdlib.c
     amiga/launch.c
    +amiga/expat_68k.c
    +amiga/expat_68k.h
    +amiga/expat_68k_handler_stubs.c
    +amiga/expat_base.h
     amiga/expat_vectors.c
     amiga/expat_lib.c
     amiga/expat.xml
    @@ -42,25 +45,35 @@ doc/style.css
     doc/valid-xhtml10.png
     doc/xmlwf.1
     doc/xmlwf.sgml
    +CMakeLists.txt
    +CMake.README
     COPYING
     Changes
    +ConfigureChecks.cmake
     MANIFEST
     Makefile.in
     README
     configure
     configure.in
     expat_config.h.in
    +expat_config.h.cmake
    +expat.pc.in
     expat.dsw
    +aclocal.m4
     conftools/PrintPath
     conftools/ac_c_bigendian_cross.m4
    -conftools/config.guess
    -conftools/config.sub
     conftools/expat.m4
     conftools/get-version.sh
    +conftools/mkinstalldirs
    +conftools/config.guess
    +conftools/config.sub
     conftools/install-sh
    -conftools/libtool.m4
     conftools/ltmain.sh
    -conftools/mkinstalldirs
    +m4/libtool.m4
    +m4/ltversion.m4
    +m4/ltoptions.m4
    +m4/ltsugar.m4
    +m4/lt~obsolete.m4
     examples/elements.c
     examples/elements.dsp
     examples/outline.c
    
    Modified: user/dchagin/lemul/contrib/expat/Makefile.in
    ==============================================================================
    --- user/dchagin/lemul/contrib/expat/Makefile.in	Wed Feb 27 08:36:43 2013	(r247392)
    +++ user/dchagin/lemul/contrib/expat/Makefile.in	Wed Feb 27 08:44:03 2013	(r247393)
    @@ -31,6 +31,7 @@ bindir = @bindir@
     libdir = @libdir@
     includedir = @includedir@
     man1dir = @mandir@/man1
    +pkgconfigdir = $(libdir)/pkgconfig
     
     top_builddir = .
     
    @@ -46,18 +47,18 @@ LIBRARY = libexpat.la
     
     DESTDIR = $(INSTALL_ROOT)
     
    -default:  buildlib xmlwf/xmlwf
    +default:  buildlib xmlwf/xmlwf@EXEEXT@
     
    -buildlib: $(LIBRARY)
    +buildlib: $(LIBRARY) expat.pc
     
    -all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline
    +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline
     
     clean:
    -	cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs
    -	cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs
    -	cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs
    -	cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o
    -	cd tests && rm -f chardata.o minicheck.o
    +	cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs
    +	cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs
    +	cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs
    +	cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@
    +	cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@
     	rm -rf .libs libexpat.la
     	rm -f examples/core tests/core xmlwf/core
     
    @@ -65,34 +66,37 @@ clobber: clean
     
     distclean: clean
     	rm -f expat_config.h config.status config.log config.cache libtool
    -	rm -f Makefile
    +	rm -f Makefile expat.pc
     
     extraclean: distclean
     	rm -f expat_config.h.in configure
    -	rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4
    +	rm -f aclocal.m4 m4/*
    +	rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub
     
     check: tests/runtests tests/runtestspp
     	tests/runtests
     	tests/runtestspp
     
    -install: xmlwf/xmlwf installlib
    +install: xmlwf/xmlwf@EXEEXT@ installlib
     	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
    -	$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf
    +	$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf
     	$(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir)
     
    -installlib: $(LIBRARY) $(APIHEADER)
    -	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
    +installlib: $(LIBRARY) $(APIHEADER) expat.pc
    +	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir)
     	$(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY)
     	for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done
    +	$(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc
     
     uninstall: uninstalllib
    -	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf
    +	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@
     	rm -f $(DESTDIR)$(man1dir)/xmlwf.1
     
     uninstalllib:
     	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY)
     	rm -f $(DESTDIR)$(includedir)/expat.h
     	rm -f $(DESTDIR)$(includedir)/expat_external.h
    +	rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc
     
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Wed Feb 27 18:17:38 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 328BE26E;
     Wed, 27 Feb 2013 18:17:38 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 1D0823DF;
     Wed, 27 Feb 2013 18:17:38 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1RIHbWt051964;
     Wed, 27 Feb 2013 18:17:37 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1RIHZWQ051940;
     Wed, 27 Feb 2013 18:17:35 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302271817.r1RIHZWQ051940@svn.freebsd.org>
    From: Attilio Rao 
    Date: Wed, 27 Feb 2013 18:17:35 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247401 - in user/attilio/vmobj-rwlock:
     cddl/contrib/opensolaris/cmd/zdb contrib/binutils/gas/config libexec/rtld-elf
     sbin/geom/class/part sbin/tunefs sys/arm/ti sys/cddl/contrib/openso...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 27 Feb 2013 18:17:38 -0000
    
    Author: attilio
    Date: Wed Feb 27 18:17:34 2013
    New Revision: 247401
    URL: http://svnweb.freebsd.org/changeset/base/247401
    
    Log:
      MFC
    
    Modified:
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zdb/zdb.c
      user/attilio/vmobj-rwlock/contrib/binutils/gas/config/tc-arm.c
      user/attilio/vmobj-rwlock/libexec/rtld-elf/map_object.c
      user/attilio/vmobj-rwlock/sbin/geom/class/part/gpart.8
      user/attilio/vmobj-rwlock/sbin/tunefs/tunefs.c
      user/attilio/vmobj-rwlock/sys/arm/ti/ti_gpio.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.c
      user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.h
      user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c
      user/attilio/vmobj-rwlock/sys/dev/ath/if_ath.c
      user/attilio/vmobj-rwlock/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmobj-rwlock/sys/dev/ath/if_athvar.h
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi_cam.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi_debug.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi_tbolt.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfireg.h
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfivar.h
      user/attilio/vmobj-rwlock/sys/dev/msk/if_msk.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_bio.c
      user/attilio/vmobj-rwlock/sys/sys/vnode.h
      user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_alloc.c
      user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_softdep.c
      user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_vfsops.c
      user/attilio/vmobj-rwlock/sys/ufs/ufs/ufs_quota.c
    Directory Properties:
      user/attilio/vmobj-rwlock/   (props changed)
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmobj-rwlock/contrib/binutils/   (props changed)
      user/attilio/vmobj-rwlock/sbin/   (props changed)
      user/attilio/vmobj-rwlock/sys/   (props changed)
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/   (props changed)
    
    Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zdb/zdb.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -545,7 +545,7 @@ static void
     dump_metaslab_stats(metaslab_t *msp)
     {
     	char maxbuf[32];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	avl_tree_t *t = sm->sm_pp_root;
     	int free_pct = sm->sm_space * 100 / sm->sm_size;
     
    @@ -561,7 +561,7 @@ dump_metaslab(metaslab_t *msp)
     {
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	char freebuf[32];
     
    @@ -2160,11 +2160,11 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    -				VERIFY(space_map_load(&msp->ms_map,
    +				space_map_unload(msp->ms_map);
    +				VERIFY(space_map_load(msp->ms_map,
     				    &zdb_space_map_ops, SM_ALLOC, &msp->ms_smo,
     				    spa->spa_meta_objset) == 0);
    -				msp->ms_map.sm_ppd = vd;
    +				msp->ms_map->sm_ppd = vd;
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    @@ -2187,7 +2187,7 @@ zdb_leak_fini(spa_t *spa)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    +				space_map_unload(msp->ms_map);
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    
    Modified: user/attilio/vmobj-rwlock/contrib/binutils/gas/config/tc-arm.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -3079,6 +3079,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUT
       record_alignment (now_seg, 2);
     
       ptr = frag_more (8);
    +  memset(ptr, 0, 8);
       where = frag_now_fix () - 8;
     
       /* Self relative offset of the function start.  */
    @@ -17350,6 +17351,7 @@ create_unwind_entry (int have_data)
     
       /* Allocate the table entry.	*/
       ptr = frag_more ((size << 2) + 4);
    +  memset(ptr, 0, (size << 2) + 4);
       where = frag_now_fix () - ((size << 2) + 4);
     
       switch (unwind.personality_index)
    
    Modified: user/attilio/vmobj-rwlock/libexec/rtld-elf/map_object.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/libexec/rtld-elf/map_object.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/libexec/rtld-elf/map_object.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -175,7 +175,7 @@ map_object(int fd, const char *path, con
         base_vaddr = trunc_page(segs[0]->p_vaddr);
         base_vlimit = round_page(segs[nsegs]->p_vaddr + segs[nsegs]->p_memsz);
         mapsize = base_vlimit - base_vaddr;
    -    base_addr = hdr->e_type == ET_EXEC ? (caddr_t) base_vaddr : NULL;
    +    base_addr = (caddr_t) base_vaddr;
     
         mapbase = mmap(base_addr, mapsize, PROT_NONE, MAP_ANON | MAP_PRIVATE |
           MAP_NOCORE, -1, 0);
    
    Modified: user/attilio/vmobj-rwlock/sbin/geom/class/part/gpart.8
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sbin/geom/class/part/gpart.8	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sbin/geom/class/part/gpart.8	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -583,7 +583,7 @@ The system partition for computers that 
     Interface (EFI).
     In such cases, the GPT partitioning scheme is used and the
     actual partition type for the system partition can also be specified as
    -.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93ab" .
    +.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93b" .
     .It Cm freebsd
     A
     .Fx
    
    Modified: user/attilio/vmobj-rwlock/sbin/tunefs/tunefs.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sbin/tunefs/tunefs.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sbin/tunefs/tunefs.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -671,7 +671,7 @@ journal_findfile(void)
     				return (ino);
     		}
     	} else {
    -		if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) {
    +		if ((off_t)dp2->di_size >= lblktosize(&sblock, NDADDR)) {
     			warnx("ROOTINO extends beyond direct blocks.");
     			return (-1);
     		}
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/ti/ti_gpio.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -653,6 +653,9 @@ ti_gpio_attach(device_t dev)
     	struct ti_gpio_softc *sc = device_get_softc(dev);
     	unsigned int i;
     	int err = 0;
    +	int pin;
    +	uint32_t flags;
    +	uint32_t reg_oe;
     
     	sc->sc_dev = dev;
     
    @@ -720,6 +723,17 @@ ti_gpio_attach(device_t dev)
     			/* Disable interrupts for all pins */
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE1, 0xffffffff);
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE2, 0xffffffff);
    +
    +			/* Init OE register based on pads configuration */
    +			reg_oe = 0xffffffff;
    +			for (pin = 0; pin < 32; pin++) {
    +				ti_scm_padconf_get_gpioflags(
    +				    PINS_PER_BANK*i + pin, &flags);
    +				if (flags & GPIO_PIN_OUTPUT)
    +					reg_oe &= ~(1U << pin);
    +			}
    +
    +			ti_gpio_write_4(sc, i, TI_GPIO_OE, reg_oe);
     		}
     	}
     
    
    Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -48,6 +48,14 @@ uint64_t metaslab_aliquot = 512ULL << 10
     uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1;	/* force gang blocks */
     
     /*
    + * The in-core space map representation is more compact than its on-disk form.
    + * The zfs_condense_pct determines how much more compact the in-core
    + * space_map representation must be before we compact it on-disk.
    + * Values should be greater than or equal to 100.
    + */
    +int zfs_condense_pct = 200;
    +
    +/*
      * This value defines the number of allowed allocation failures per vdev.
      * If a device reaches this threshold in a given txg then we consider skipping
      * allocations on that device.
    @@ -215,9 +223,9 @@ metaslab_compare(const void *x1, const v
     	/*
     	 * If the weights are identical, use the offset to force uniqueness.
     	 */
    -	if (m1->ms_map.sm_start < m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start < m2->ms_map->sm_start)
     		return (-1);
    -	if (m1->ms_map.sm_start > m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start > m2->ms_map->sm_start)
     		return (1);
     
     	ASSERT3P(m1, ==, m2);
    @@ -732,14 +740,15 @@ metaslab_init(metaslab_group_t *mg, spac
     	 * addition of new space; and for debugging, it ensures that we'd
     	 * data fault on any attempt to use this metaslab before it's ready.
     	 */
    -	space_map_create(&msp->ms_map, start, size,
    +	msp->ms_map = kmem_zalloc(sizeof (space_map_t), KM_SLEEP);
    +	space_map_create(msp->ms_map, start, size,
     	    vd->vdev_ashift, &msp->ms_lock);
     
     	metaslab_group_add(mg, msp);
     
     	if (metaslab_debug && smo->smo_object != 0) {
     		mutex_enter(&msp->ms_lock);
    -		VERIFY(space_map_load(&msp->ms_map, mg->mg_class->mc_ops,
    +		VERIFY(space_map_load(msp->ms_map, mg->mg_class->mc_ops,
     		    SM_FREE, smo, spa_meta_objset(vd->vdev_spa)) == 0);
     		mutex_exit(&msp->ms_lock);
     	}
    @@ -767,22 +776,27 @@ metaslab_fini(metaslab_t *msp)
     	metaslab_group_t *mg = msp->ms_group;
     
     	vdev_space_update(mg->mg_vd,
    -	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map.sm_size);
    +	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map->sm_size);
     
     	metaslab_group_remove(mg, msp);
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_unload(&msp->ms_map);
    -	space_map_destroy(&msp->ms_map);
    +	space_map_unload(msp->ms_map);
    +	space_map_destroy(msp->ms_map);
    +	kmem_free(msp->ms_map, sizeof (*msp->ms_map));
     
     	for (int t = 0; t < TXG_SIZE; t++) {
    -		space_map_destroy(&msp->ms_allocmap[t]);
    -		space_map_destroy(&msp->ms_freemap[t]);
    +		space_map_destroy(msp->ms_allocmap[t]);
    +		space_map_destroy(msp->ms_freemap[t]);
    +		kmem_free(msp->ms_allocmap[t], sizeof (*msp->ms_allocmap[t]));
    +		kmem_free(msp->ms_freemap[t], sizeof (*msp->ms_freemap[t]));
     	}
     
    -	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -		space_map_destroy(&msp->ms_defermap[t]);
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +		space_map_destroy(msp->ms_defermap[t]);
    +		kmem_free(msp->ms_defermap[t], sizeof (*msp->ms_defermap[t]));
    +	}
     
     	ASSERT0(msp->ms_deferspace);
     
    @@ -801,7 +815,7 @@ static uint64_t
     metaslab_weight(metaslab_t *msp)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	vdev_t *vd = mg->mg_vd;
     	uint64_t weight, space;
    @@ -809,6 +823,16 @@ metaslab_weight(metaslab_t *msp)
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
     
     	/*
    +	 * This vdev is in the process of being removed so there is nothing
    +	 * for us to do here.
    +	 */
    +	if (vd->vdev_removing) {
    +		ASSERT0(smo->smo_alloc);
    +		ASSERT0(vd->vdev_ms_shift);
    +		return (0);
    +	}
    +
    +	/*
     	 * The baseline weight is the metaslab's free space.
     	 */
     	space = sm->sm_size - smo->smo_alloc;
    @@ -861,7 +885,7 @@ metaslab_prefetch(metaslab_group_t *mg)
     	 * Prefetch the next potential metaslabs
     	 */
     	for (msp = avl_first(t), m = 0; msp; msp = AVL_NEXT(t, msp), m++) {
    -		space_map_t *sm = &msp->ms_map;
    +		space_map_t *sm = msp->ms_map;
     		space_map_obj_t *smo = &msp->ms_smo;
     
     		/* If we have reached our prefetch limit then we're done */
    @@ -882,7 +906,7 @@ static int
     metaslab_activate(metaslab_t *msp, uint64_t activation_weight)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_ops_t *sm_ops = msp->ms_group->mg_class->mc_ops;
     
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
    @@ -899,7 +923,7 @@ metaslab_activate(metaslab_t *msp, uint6
     				return (error);
     			}
     			for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -				space_map_walk(&msp->ms_defermap[t],
    +				space_map_walk(msp->ms_defermap[t],
     				    space_map_claim, sm);
     
     		}
    @@ -930,12 +954,158 @@ metaslab_passivate(metaslab_t *msp, uint
     	 * this metaslab again.  In that case, it had better be empty,
     	 * or we would be leaving space on the table.
     	 */
    -	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map.sm_space == 0);
    +	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map->sm_space == 0);
     	metaslab_group_sort(msp->ms_group, msp, MIN(msp->ms_weight, size));
     	ASSERT((msp->ms_weight & METASLAB_ACTIVE_MASK) == 0);
     }
     
     /*
    + * Determine if the in-core space map representation can be condensed on-disk.
    + * We would like to use the following criteria to make our decision:
    + *
    + * 1. The size of the space map object should not dramatically increase as a
    + * result of writing out our in-core free map.
    + *
    + * 2. The minimal on-disk space map representation is zfs_condense_pct/100
    + * times the size than the in-core representation (i.e. zfs_condense_pct = 110
    + * and in-core = 1MB, minimal = 1.1.MB).
    + *
    + * Checking the first condition is tricky since we don't want to walk
    + * the entire AVL tree calculating the estimated on-disk size. Instead we
    + * use the size-ordered AVL tree in the space map and calculate the
    + * size required for the largest segment in our in-core free map. If the
    + * size required to represent that segment on disk is larger than the space
    + * map object then we avoid condensing this map.
    + *
    + * To determine the second criterion we use a best-case estimate and assume
    + * each segment can be represented on-disk as a single 64-bit entry. We refer
    + * to this best-case estimate as the space map's minimal form.
    + */
    +static boolean_t
    +metaslab_should_condense(metaslab_t *msp)
    +{
    +	space_map_t *sm = msp->ms_map;
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +	space_seg_t *ss;
    +	uint64_t size, entries, segsz;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT(sm->sm_loaded);
    +
    +	/*
    +	 * Use the sm_pp_root AVL tree, which is ordered by size, to obtain
    +	 * the largest segment in the in-core free map. If the tree is
    +	 * empty then we should condense the map.
    +	 */
    +	ss = avl_last(sm->sm_pp_root);
    +	if (ss == NULL)
    +		return (B_TRUE);
    +
    +	/*
    +	 * Calculate the number of 64-bit entries this segment would
    +	 * require when written to disk. If this single segment would be
    +	 * larger on-disk than the entire current on-disk structure, then
    +	 * clearly condensing will increase the on-disk structure size.
    +	 */
    +	size = (ss->ss_end - ss->ss_start) >> sm->sm_shift;
    +	entries = size / (MIN(size, SM_RUN_MAX));
    +	segsz = entries * sizeof (uint64_t);
    +
    +	return (segsz <= smo->smo_objsize &&
    +	    smo->smo_objsize >= (zfs_condense_pct *
    +	    sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) / 100);
    +}
    +
    +/*
    + * Condense the on-disk space map representation to its minimized form.
    + * The minimized form consists of a small number of allocations followed by
    + * the in-core free map.
    + */
    +static void
    +metaslab_condense(metaslab_t *msp, uint64_t txg, dmu_tx_t *tx)
    +{
    +	spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
    +	space_map_t *freemap = msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t condense_map;
    +	space_map_t *sm = msp->ms_map;
    +	objset_t *mos = spa_meta_objset(spa);
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT3U(spa_sync_pass(spa), ==, 1);
    +	ASSERT(sm->sm_loaded);
    +
    +	spa_dbgmsg(spa, "condensing: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu, segments %lu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize, avl_numnodes(&sm->sm_root));
    +
    +	/*
    +	 * Create an map that is a 100% allocated map. We remove segments
    +	 * that have been freed in this txg, any deferred frees that exist,
    +	 * and any allocation in the future. Removing segments should be
    +	 * a relatively inexpensive operation since we expect these maps to
    +	 * a small number of nodes.
    +	 */
    +	space_map_create(&condense_map, sm->sm_start, sm->sm_size,
    +	    sm->sm_shift, sm->sm_lock);
    +	space_map_add(&condense_map, condense_map.sm_start,
    +	    condense_map.sm_size);
    +
    +	/*
    +	 * Remove what's been freed in this txg from the condense_map.
    +	 * Since we're in sync_pass 1, we know that all the frees from
    +	 * this txg are in the freemap.
    +	 */
    +	space_map_walk(freemap, space_map_remove, &condense_map);
    +
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    +		space_map_walk(msp->ms_defermap[t],
    +		    space_map_remove, &condense_map);
    +
    +	for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    +		space_map_walk(msp->ms_allocmap[(txg + t) & TXG_MASK],
    +		    space_map_remove, &condense_map);
    +
    +	/*
    +	 * We're about to drop the metaslab's lock thus allowing
    +	 * other consumers to change it's content. Set the
    +	 * space_map's sm_condensing flag to ensure that
    +	 * allocations on this metaslab do not occur while we're
    +	 * in the middle of committing it to disk. This is only critical
    +	 * for the ms_map as all other space_maps use per txg
    +	 * views of their content.
    +	 */
    +	sm->sm_condensing = B_TRUE;
    +
    +	mutex_exit(&msp->ms_lock);
    +	space_map_truncate(smo, mos, tx);
    +	mutex_enter(&msp->ms_lock);
    +
    +	/*
    +	 * While we would ideally like to create a space_map representation
    +	 * that consists only of allocation records, doing so can be
    +	 * prohibitively expensive because the in-core free map can be
    +	 * large, and therefore computationally expensive to subtract
    +	 * from the condense_map. Instead we sync out two maps, a cheap
    +	 * allocation only map followed by the in-core free map. While not
    +	 * optimal, this is typically close to optimal, and much cheaper to
    +	 * compute.
    +	 */
    +	space_map_sync(&condense_map, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&condense_map, NULL, NULL);
    +	space_map_destroy(&condense_map);
    +
    +	space_map_sync(sm, SM_FREE, smo, mos, tx);
    +	sm->sm_condensing = B_FALSE;
    +
    +	spa_dbgmsg(spa, "condensed: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize);
    +}
    +
    +/*
      * Write a metaslab to disk in the context of the specified transaction group.
      */
     void
    @@ -944,17 +1114,29 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
     	objset_t *mos = spa_meta_objset(spa);
    -	space_map_t *allocmap = &msp->ms_allocmap[txg & TXG_MASK];
    -	space_map_t *freemap = &msp->ms_freemap[txg & TXG_MASK];
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *allocmap = msp->ms_allocmap[txg & TXG_MASK];
    +	space_map_t **freemap = &msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo_syncing;
     	dmu_buf_t *db;
     	dmu_tx_t *tx;
     
     	ASSERT(!vd->vdev_ishole);
     
    -	if (allocmap->sm_space == 0 && freemap->sm_space == 0)
    +	/*
    +	 * This metaslab has just been added so there's no work to do now.
    +	 */
    +	if (*freemap == NULL) {
    +		ASSERT3P(allocmap, ==, NULL);
    +		return;
    +	}
    +
    +	ASSERT3P(allocmap, !=, NULL);
    +	ASSERT3P(*freemap, !=, NULL);
    +	ASSERT3P(*freed_map, !=, NULL);
    +
    +	if (allocmap->sm_space == 0 && (*freemap)->sm_space == 0)
     		return;
     
     	/*
    @@ -982,49 +1164,36 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_walk(freemap, space_map_add, freed_map);
    -
    -	if (sm->sm_loaded && spa_sync_pass(spa) == 1 && smo->smo_objsize >=
    -	    2 * sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) {
    -		/*
    -		 * The in-core space map representation is twice as compact
    -		 * as the on-disk one, so it's time to condense the latter
    -		 * by generating a pure allocmap from first principles.
    -		 *
    -		 * This metaslab is 100% allocated,
    -		 * minus the content of the in-core map (sm),
    -		 * minus what's been freed this txg (freed_map),
    -		 * minus deferred frees (ms_defermap[]),
    -		 * minus allocations from txgs in the future
    -		 * (because they haven't been committed yet).
    -		 */
    -		space_map_vacate(allocmap, NULL, NULL);
    -		space_map_vacate(freemap, NULL, NULL);
    -
    -		space_map_add(allocmap, allocmap->sm_start, allocmap->sm_size);
    -
    -		space_map_walk(sm, space_map_remove, allocmap);
    -		space_map_walk(freed_map, space_map_remove, allocmap);
    -
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_walk(&msp->ms_defermap[t],
    -			    space_map_remove, allocmap);
    +	if (sm->sm_loaded && spa_sync_pass(spa) == 1 &&
    +	    metaslab_should_condense(msp)) {
    +		metaslab_condense(msp, txg, tx);
    +	} else {
    +		space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    +		space_map_sync(*freemap, SM_FREE, smo, mos, tx);
    +	}
     
    -		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			space_map_walk(&msp->ms_allocmap[(txg + t) & TXG_MASK],
    -			    space_map_remove, allocmap);
    +	space_map_vacate(allocmap, NULL, NULL);
     
    -		mutex_exit(&msp->ms_lock);
    -		space_map_truncate(smo, mos, tx);
    -		mutex_enter(&msp->ms_lock);
    +	/*
    +	 * For sync pass 1, we avoid walking the entire space map and
    +	 * instead will just swap the pointers for freemap and
    +	 * freed_map. We can safely do this since the freed_map is
    +	 * guaranteed to be empty on the initial pass.
    +	 */
    +	if (spa_sync_pass(spa) == 1) {
    +		ASSERT0((*freed_map)->sm_space);
    +		ASSERT0(avl_numnodes(&(*freed_map)->sm_root));
    +		space_map_swap(freemap, freed_map);
    +	} else {
    +		space_map_vacate(*freemap, space_map_add, *freed_map);
     	}
     
    -	space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    -	space_map_sync(freemap, SM_FREE, smo, mos, tx);
    +	ASSERT0(msp->ms_allocmap[txg & TXG_MASK]->sm_space);
    +	ASSERT0(msp->ms_freemap[txg & TXG_MASK]->sm_space);
     
     	mutex_exit(&msp->ms_lock);
     
    -	VERIFY(0 == dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
    +	VERIFY0(dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
     	dmu_buf_will_dirty(db, tx);
     	ASSERT3U(db->db_size, >=, sizeof (*smo));
     	bcopy(smo, db->db_data, sizeof (*smo));
    @@ -1042,9 +1211,9 @@ metaslab_sync_done(metaslab_t *msp, uint
     {
     	space_map_obj_t *smo = &msp->ms_smo;
     	space_map_obj_t *smosync = &msp->ms_smo_syncing;
    -	space_map_t *sm = &msp->ms_map;
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
    +	space_map_t *sm = msp->ms_map;
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t **defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     	metaslab_group_t *mg = msp->ms_group;
     	vdev_t *vd = mg->mg_vd;
     	int64_t alloc_delta, defer_delta;
    @@ -1055,40 +1224,57 @@ metaslab_sync_done(metaslab_t *msp, uint
     
     	/*
     	 * If this metaslab is just becoming available, initialize its
    -	 * allocmaps and freemaps and add its capacity to the vdev.
    +	 * allocmaps, freemaps, and defermap and add its capacity to the vdev.
     	 */
    -	if (freed_map->sm_size == 0) {
    +	if (*freed_map == NULL) {
    +		ASSERT(*defer_map == NULL);
     		for (int t = 0; t < TXG_SIZE; t++) {
    -			space_map_create(&msp->ms_allocmap[t], sm->sm_start,
    +			msp->ms_allocmap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_allocmap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    -			space_map_create(&msp->ms_freemap[t], sm->sm_start,
    +			msp->ms_freemap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_freemap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
     		}
     
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_create(&msp->ms_defermap[t], sm->sm_start,
    +		for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +			msp->ms_defermap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_defermap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    +		}
    +
    +		freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +		defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     
     		vdev_space_update(vd, 0, 0, sm->sm_size);
     	}
     
     	alloc_delta = smosync->smo_alloc - smo->smo_alloc;
    -	defer_delta = freed_map->sm_space - defer_map->sm_space;
    +	defer_delta = (*freed_map)->sm_space - (*defer_map)->sm_space;
     
     	vdev_space_update(vd, alloc_delta + defer_delta, defer_delta, 0);
     
    -	ASSERT(msp->ms_allocmap[txg & TXG_MASK].sm_space == 0);
    -	ASSERT(msp->ms_freemap[txg & TXG_MASK].sm_space == 0);
    +	ASSERT(msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0);
    +	ASSERT(msp->ms_freemap[txg & TXG_MASK]->sm_space == 0);
     
     	/*
     	 * If there's a space_map_load() in progress, wait for it to complete
     	 * so that we have a consistent view of the in-core space map.
    -	 * Then, add defer_map (oldest deferred frees) to this map and
    -	 * transfer freed_map (this txg's frees) to defer_map.
     	 */
     	space_map_load_wait(sm);
    -	space_map_vacate(defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    -	space_map_vacate(freed_map, space_map_add, defer_map);
    +
    +	/*
    +	 * Move the frees from the defer_map to this map (if it's loaded).
    +	 * Swap the freed_map and the defer_map -- this is safe to do
    +	 * because we've just emptied out the defer_map.
    +	 */
    +	space_map_vacate(*defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    +	ASSERT0((*defer_map)->sm_space);
    +	ASSERT0(avl_numnodes(&(*defer_map)->sm_root));
    +	space_map_swap(freed_map, defer_map);
     
     	*smo = *smosync;
     
    @@ -1112,7 +1298,7 @@ metaslab_sync_done(metaslab_t *msp, uint
     		int evictable = 1;
     
     		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			if (msp->ms_allocmap[(txg + t) & TXG_MASK].sm_space)
    +			if (msp->ms_allocmap[(txg + t) & TXG_MASK]->sm_space)
     				evictable = 0;
     
     		if (evictable && !metaslab_debug)
    @@ -1137,7 +1323,7 @@ metaslab_sync_reassess(metaslab_group_t 
     	for (int m = 0; m < vd->vdev_ms_count; m++) {
     		metaslab_t *msp = vd->vdev_ms[m];
     
    -		if (msp->ms_map.sm_start > mg->mg_bonus_area)
    +		if (msp->ms_map->sm_start > mg->mg_bonus_area)
     			break;
     
     		mutex_enter(&msp->ms_lock);
    @@ -1158,7 +1344,7 @@ metaslab_distance(metaslab_t *msp, dva_t
     {
     	uint64_t ms_shift = msp->ms_group->mg_vd->vdev_ms_shift;
     	uint64_t offset = DVA_GET_OFFSET(dva) >> ms_shift;
    -	uint64_t start = msp->ms_map.sm_start >> ms_shift;
    +	uint64_t start = msp->ms_map->sm_start >> ms_shift;
     
     	if (msp->ms_group->mg_vd->vdev_id != DVA_GET_VDEV(dva))
     		return (1ULL << 63);
    @@ -1206,6 +1392,13 @@ metaslab_group_alloc(metaslab_group_t *m
     				mutex_exit(&mg->mg_lock);
     				return (-1ULL);
     			}
    +
    +			/*
    +			 * If the selected metaslab is condensing, skip it.
    +			 */
    +			if (msp->ms_map->sm_condensing)
    +				continue;
    +
     			was_active = msp->ms_weight & METASLAB_ACTIVE_MASK;
     			if (activation_weight == METASLAB_WEIGHT_PRIMARY)
     				break;
    @@ -1271,20 +1464,30 @@ metaslab_group_alloc(metaslab_group_t *m
     			continue;
     		}
     
    -		if ((offset = space_map_alloc(&msp->ms_map, asize)) != -1ULL)
    +		/*
    +		 * If this metaslab is currently condensing then pick again as
    +		 * we can't manipulate this metaslab until it's committed
    +		 * to disk.
    +		 */
    +		if (msp->ms_map->sm_condensing) {
    +			mutex_exit(&msp->ms_lock);
    +			continue;
    +		}
    +
    +		if ((offset = space_map_alloc(msp->ms_map, asize)) != -1ULL)
     			break;
     
     		atomic_inc_64(&mg->mg_alloc_failures);
     
    -		metaslab_passivate(msp, space_map_maxsize(&msp->ms_map));
    +		metaslab_passivate(msp, space_map_maxsize(msp->ms_map));
     
     		mutex_exit(&msp->ms_lock);
     	}
     
    -	if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +	if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     		vdev_dirty(mg->mg_vd, VDD_METASLAB, msp, txg);
     
    -	space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, asize);
    +	space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, asize);
     
     	mutex_exit(&msp->ms_lock);
     
    @@ -1516,13 +1719,13 @@ metaslab_free_dva(spa_t *spa, const dva_
     	mutex_enter(&msp->ms_lock);
     
     	if (now) {
    -		space_map_remove(&msp->ms_allocmap[txg & TXG_MASK],
    +		space_map_remove(msp->ms_allocmap[txg & TXG_MASK],
     		    offset, size);
    -		space_map_free(&msp->ms_map, offset, size);
    +		space_map_free(msp->ms_map, offset, size);
     	} else {
    -		if (msp->ms_freemap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_freemap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_freemap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_freemap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    @@ -1557,10 +1760,10 @@ metaslab_claim_dva(spa_t *spa, const dva
     
     	mutex_enter(&msp->ms_lock);
     
    -	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map.sm_loaded)
    +	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map->sm_loaded)
     		error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY);
     
    -	if (error == 0 && !space_map_contains(&msp->ms_map, offset, size))
    +	if (error == 0 && !space_map_contains(msp->ms_map, offset, size))
     		error = ENOENT;
     
     	if (error || txg == 0) {	/* txg == 0 indicates dry run */
    @@ -1568,12 +1771,12 @@ metaslab_claim_dva(spa_t *spa, const dva
     		return (error);
     	}
     
    -	space_map_claim(&msp->ms_map, offset, size);
    +	space_map_claim(msp->ms_map, offset, size);
     
     	if (spa_writeable(spa)) {	/* don't dirty if we're zdb(1M) */
    -		if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    
    Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -114,6 +114,7 @@ space_map_add(space_map_t *sm, uint64_t 
     	int merge_before, merge_after;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY3U(start, >=, sm->sm_start);
     	VERIFY3U(end, <=, sm->sm_start + sm->sm_size);
    @@ -198,6 +199,7 @@ space_map_remove(space_map_t *sm, uint64
     	int left_over, right_over;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY(P2PHASE(start, 1ULL << sm->sm_shift) == 0);
     	VERIFY(P2PHASE(size, 1ULL << sm->sm_shift) == 0);
    @@ -267,6 +269,20 @@ space_map_contains(space_map_t *sm, uint
     }
     
     void
    +space_map_swap(space_map_t **msrc, space_map_t **mdst)
    +{
    +	space_map_t *sm;
    +
    +	ASSERT(MUTEX_HELD((*msrc)->sm_lock));
    +	ASSERT0((*mdst)->sm_space);
    +	ASSERT0(avl_numnodes(&(*mdst)->sm_root));
    +
    +	sm = *msrc;
    +	*msrc = *mdst;
    +	*mdst = sm;
    +}
    +
    +void
     space_map_vacate(space_map_t *sm, space_map_func_t *func, space_map_t *mdest)
     {
     	space_seg_t *ss;
    @@ -447,9 +463,9 @@ space_map_sync(space_map_t *sm, uint8_t 
     	space_map_obj_t *smo, objset_t *os, dmu_tx_t *tx)
     {
     	spa_t *spa = dmu_objset_spa(os);
    -	void *cookie = NULL;
    +	avl_tree_t *t = &sm->sm_root;
     	space_seg_t *ss;
    -	uint64_t bufsize, start, size, run_len, delta, sm_space;
    +	uint64_t bufsize, start, size, run_len, total, sm_space, nodes;
     	uint64_t *entry, *entry_map, *entry_map_end;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    @@ -478,13 +494,14 @@ space_map_sync(space_map_t *sm, uint8_t 
     	    SM_DEBUG_SYNCPASS_ENCODE(spa_sync_pass(spa)) |
     	    SM_DEBUG_TXG_ENCODE(dmu_tx_get_txg(tx));
     
    -	delta = 0;
    +	total = 0;
    +	nodes = avl_numnodes(&sm->sm_root);
     	sm_space = sm->sm_space;
    -	while ((ss = avl_destroy_nodes(&sm->sm_root, &cookie)) != NULL) {
    +	for (ss = avl_first(t); ss != NULL; ss = AVL_NEXT(t, ss)) {
     		size = ss->ss_end - ss->ss_start;
     		start = (ss->ss_start - sm->sm_start) >> sm->sm_shift;
     
    -		delta += size;
    +		total += size;
     		size >>= sm->sm_shift;
     
     		while (size) {
    @@ -506,7 +523,6 @@ space_map_sync(space_map_t *sm, uint8_t 
     			start += run_len;
     			size -= run_len;
     		}
    -		kmem_cache_free(space_seg_cache, ss);
     	}
     
     	if (entry != entry_map) {
    @@ -522,12 +538,11 @@ space_map_sync(space_map_t *sm, uint8_t 
     	 * Ensure that the space_map's accounting wasn't changed
     	 * while we were in the middle of writing it out.
     	 */
    +	VERIFY3U(nodes, ==, avl_numnodes(&sm->sm_root));
     	VERIFY3U(sm->sm_space, ==, sm_space);
    +	VERIFY3U(sm->sm_space, ==, total);
     
     	zio_buf_free(entry_map, bufsize);
    -
    -	sm->sm_space -= delta;
    -	VERIFY0(sm->sm_space);
     }
     
     void
    
    Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -66,20 +66,38 @@ struct metaslab_group {
     };
     
     /*
    - * Each metaslab's free space is tracked in space map object in the MOS,
    - * which is only updated in syncing context.  Each time we sync a txg,
    + * Each metaslab maintains an in-core free map (ms_map) that contains the
    + * current list of free segments. As blocks are allocated, the allocated
    + * segment is removed from the ms_map and added to a per txg allocation map.
    + * As blocks are freed, they are added to the per txg free map. These per
    + * txg maps allow us to process all allocations and frees in syncing context
    + * where it is safe to update the on-disk space maps.
    + *
    + * Each metaslab's free space is tracked in a space map object in the MOS,
    + * which is only updated in syncing context. Each time we sync a txg,
      * we append the allocs and frees from that txg to the space map object.
      * When the txg is done syncing, metaslab_sync_done() updates ms_smo
    - * to ms_smo_syncing.  Everything in ms_smo is always safe to allocate.
    + * to ms_smo_syncing. Everything in ms_smo is always safe to allocate.
    + *
    + * To load the in-core free map we read the space map object from disk.
    + * This object contains a series of alloc and free records that are
    + * combined to make up the list of all free segments in this metaslab. These
    + * segments are represented in-core by the ms_map and are stored in an
    + * AVL tree.
    + *
    + * As the space map objects grows (as a result of the appends) it will
    + * eventually become space-inefficient. When the space map object is
    + * zfs_condense_pct/100 times the size of the minimal on-disk representation,
    + * we rewrite it in its minimized form.
      */
     struct metaslab {
     	kmutex_t	ms_lock;	/* metaslab lock		*/
     	space_map_obj_t	ms_smo;		/* synced space map object	*/
     	space_map_obj_t	ms_smo_syncing;	/* syncing space map object	*/
    -	space_map_t	ms_allocmap[TXG_SIZE];  /* allocated this txg	*/
    -	space_map_t	ms_freemap[TXG_SIZE];	/* freed this txg	*/
    -	space_map_t	ms_defermap[TXG_DEFER_SIZE]; /* deferred frees	*/
    -	space_map_t	ms_map;		/* in-core free space map	*/
    +	space_map_t	*ms_allocmap[TXG_SIZE];	/* allocated this txg	*/
    +	space_map_t	*ms_freemap[TXG_SIZE];	/* freed this txg	*/
    +	space_map_t	*ms_defermap[TXG_DEFER_SIZE];	/* deferred frees */
    +	space_map_t	*ms_map;	/* in-core free space map	*/
     	int64_t		ms_deferspace;	/* sum of ms_defermap[] space	*/
     	uint64_t	ms_weight;	/* weight vs. others in group	*/
     	metaslab_group_t *ms_group;	/* metaslab group		*/
    
    Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -40,17 +40,17 @@ extern "C" {
     typedef struct space_map_ops space_map_ops_t;
     
     typedef struct space_map {
    -	avl_tree_t	sm_root;	/* AVL tree of map segments */
    +	avl_tree_t	sm_root;	/* offset-ordered segment AVL tree */
     	uint64_t	sm_space;	/* sum of all segments in the map */
     	uint64_t	sm_start;	/* start of map */
     	uint64_t	sm_size;	/* size of map */
     	uint8_t		sm_shift;	/* unit shift */
    -	uint8_t		sm_pad[3];	/* unused */
     	uint8_t		sm_loaded;	/* map loaded? */
     	uint8_t		sm_loading;	/* map loading? */
    +	uint8_t		sm_condensing;	/* map condensing? */
     	kcondvar_t	sm_load_cv;	/* map load completion */
     	space_map_ops_t	*sm_ops;	/* space map block picker ops vector */
    -	avl_tree_t	*sm_pp_root;	/* picker-private AVL tree */
    +	avl_tree_t	*sm_pp_root;	/* size-ordered, picker-private tree */
     	void		*sm_ppd;	/* picker-private data */
     	kmutex_t	*sm_lock;	/* pointer to lock that protects map */
     } space_map_t;
    @@ -149,6 +149,7 @@ extern void space_map_add(space_map_t *s
     extern void space_map_remove(space_map_t *sm, uint64_t start, uint64_t size);
     extern boolean_t space_map_contains(space_map_t *sm,
         uint64_t start, uint64_t size);
    +extern void space_map_swap(space_map_t **msrc, space_map_t **mdest);
     extern void space_map_vacate(space_map_t *sm,
         space_map_func_t *func, space_map_t *mdest);
     extern void space_map_walk(space_map_t *sm,
    
    Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -1847,6 +1847,7 @@ vdev_dtl_sync(vdev_t *vd, uint64_t txg)
     
     	space_map_truncate(smo, mos, tx);
     	space_map_sync(&smsync, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&smsync, NULL, NULL);
     
     	space_map_destroy(&smsync);
     
    
    Modified: user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -692,6 +692,10 @@ ath_hal_getcapability(struct ath_hal *ah
     		return pCap->hal4AddrAggrSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_EXT_CHAN_DFS:
     		return pCap->halExtChanDfsSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_RX_STBC:
    +		return pCap->halRxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_TX_STBC:
    +		return pCap->halTxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_COMBINED_RADAR_RSSI:
     		return pCap->halUseCombinedRadarRssi ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_AUTO_SLEEP:
    
    Modified: user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -137,6 +137,9 @@ typedef enum {
     	HAL_CAP_RIFS_RX_ENABLED	= 53,
     	HAL_CAP_BB_DFS_HANG	= 54,
     
    +	HAL_CAP_RX_STBC		= 58,
    +	HAL_CAP_TX_STBC		= 59,
    +
     	HAL_CAP_BT_COEX		= 60,	/* hardware is capable of bluetooth coexistence */
     	HAL_CAP_DYNAMIC_SMPS	= 61,	/* Dynamic MIMO Power Save hardware support */
     
    
    Modified: user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:12:13 2013	(r247400)
    +++ user/attilio/vmobj-rwlock/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:17:34 2013	(r247401)
    @@ -708,71 +708,6 @@ ath_rate_setupxtxdesc(struct ath_softc *
     	    s3code, sched->t3);		/* series 3 */
     }
     
    -/*
    - * Update the EWMA percentage.
    - *
    - * This is a simple hack to track an EWMA based on the current
    - * rate scenario. For the rate codes which failed, this will
    - * record a 0% against it. For the rate code which succeeded,
    - * EWMA will record the nbad*100/nframes percentage against it.
    - */
    -static void
    -update_ewma_stats(struct ath_softc *sc, struct ath_node *an,
    -    int frame_size,
    -    int rix0, int tries0,
    -    int rix1, int tries1,
    -    int rix2, int tries2,
    -    int rix3, int tries3,
    -    int short_tries, int tries, int status,
    -    int nframes, int nbad)
    -{
    -	struct sample_node *sn = ATH_NODE_SAMPLE(an);
    -	struct sample_softc *ssc = ATH_SOFTC_SAMPLE(sc);
    -	const int size_bin = size_to_bin(frame_size);
    -	int tries_so_far;
    -	int pct;
    -	int rix = rix0;
    -
    -	/* Calculate percentage based on current rate */
    -	if (nframes == 0)
    -		nframes = nbad = 1;
    -	pct = ((nframes - nbad) * 1000) / nframes;
    -
    -	/* Figure out which rate index succeeded */
    -	tries_so_far = tries0;
    -
    -	if (tries1 && tries_so_far < tries) {
    -		tries_so_far += tries1;
    -		rix = rix1;
    -		/* XXX bump ewma pct */
    -	}
    -
    -	if (tries2 && tries_so_far < tries) {
    -		tries_so_far += tries2;
    -		rix = rix2;
    -		/* XXX bump ewma pct */
    -	}
    -
    -	if (tries3 && tries_so_far < tries) {
    -		rix = rix3;
    -		/* XXX bump ewma pct */
    -	}
    -
    -	/* rix is the successful rate, update EWMA for final rix */
    -	if (sn->stats[size_bin][rix].total_packets <
    -	    ssc->smoothing_minpackets) {
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Wed Feb 27 18:23:16 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 0BE9A5D8;
     Wed, 27 Feb 2013 18:23:16 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id F0171644;
     Wed, 27 Feb 2013 18:23:15 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1RINFWG054476;
     Wed, 27 Feb 2013 18:23:15 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1RINDmE054458;
     Wed, 27 Feb 2013 18:23:13 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302271823.r1RINDmE054458@svn.freebsd.org>
    From: Attilio Rao 
    Date: Wed, 27 Feb 2013 18:23:12 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247402 - in user/attilio/vmcontention:
     cddl/contrib/opensolaris/cmd/zdb contrib/binutils/gas/config libexec/rtld-elf
     sbin/geom/class/part sbin/tunefs sys/amd64/amd64 sys/arm/ti sys/cdd...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 27 Feb 2013 18:23:16 -0000
    
    Author: attilio
    Date: Wed Feb 27 18:23:12 2013
    New Revision: 247402
    URL: http://svnweb.freebsd.org/changeset/base/247402
    
    Log:
      MFC
    
    Modified:
      user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zdb/zdb.c
      user/attilio/vmcontention/contrib/binutils/gas/config/tc-arm.c
      user/attilio/vmcontention/libexec/rtld-elf/map_object.c
      user/attilio/vmcontention/sbin/geom/class/part/gpart.8
      user/attilio/vmcontention/sbin/tunefs/tunefs.c
      user/attilio/vmcontention/sys/amd64/amd64/pmap.c
      user/attilio/vmcontention/sys/arm/ti/ti_gpio.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c
      user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h
      user/attilio/vmcontention/sys/dev/ath/ath_rate/sample/sample.c
      user/attilio/vmcontention/sys/dev/ath/if_ath.c
      user/attilio/vmcontention/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmcontention/sys/dev/ath/if_athvar.h
      user/attilio/vmcontention/sys/dev/mfi/mfi.c
      user/attilio/vmcontention/sys/dev/mfi/mfi_cam.c
      user/attilio/vmcontention/sys/dev/mfi/mfi_debug.c
      user/attilio/vmcontention/sys/dev/mfi/mfi_tbolt.c
      user/attilio/vmcontention/sys/dev/mfi/mfireg.h
      user/attilio/vmcontention/sys/dev/mfi/mfivar.h
      user/attilio/vmcontention/sys/dev/msk/if_msk.c
      user/attilio/vmcontention/sys/i386/i386/pmap.c
      user/attilio/vmcontention/sys/i386/xen/pmap.c
      user/attilio/vmcontention/sys/kern/vfs_bio.c
      user/attilio/vmcontention/sys/powerpc/aim/mmu_oea.c
      user/attilio/vmcontention/sys/powerpc/aim/mmu_oea64.c
      user/attilio/vmcontention/sys/powerpc/booke/pmap.c
      user/attilio/vmcontention/sys/sparc64/sparc64/pmap.c
      user/attilio/vmcontention/sys/sys/vnode.h
      user/attilio/vmcontention/sys/ufs/ffs/ffs_alloc.c
      user/attilio/vmcontention/sys/ufs/ffs/ffs_softdep.c
      user/attilio/vmcontention/sys/ufs/ffs/ffs_vfsops.c
      user/attilio/vmcontention/sys/ufs/ufs/ufs_quota.c
      user/attilio/vmcontention/sys/vm/vm_object.h
    Directory Properties:
      user/attilio/vmcontention/   (props changed)
      user/attilio/vmcontention/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmcontention/contrib/binutils/   (props changed)
      user/attilio/vmcontention/sbin/   (props changed)
      user/attilio/vmcontention/sys/   (props changed)
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/   (props changed)
    
    Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zdb/zdb.c
    ==============================================================================
    --- user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -545,7 +545,7 @@ static void
     dump_metaslab_stats(metaslab_t *msp)
     {
     	char maxbuf[32];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	avl_tree_t *t = sm->sm_pp_root;
     	int free_pct = sm->sm_space * 100 / sm->sm_size;
     
    @@ -561,7 +561,7 @@ dump_metaslab(metaslab_t *msp)
     {
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	char freebuf[32];
     
    @@ -2160,11 +2160,11 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    -				VERIFY(space_map_load(&msp->ms_map,
    +				space_map_unload(msp->ms_map);
    +				VERIFY(space_map_load(msp->ms_map,
     				    &zdb_space_map_ops, SM_ALLOC, &msp->ms_smo,
     				    spa->spa_meta_objset) == 0);
    -				msp->ms_map.sm_ppd = vd;
    +				msp->ms_map->sm_ppd = vd;
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    @@ -2187,7 +2187,7 @@ zdb_leak_fini(spa_t *spa)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    +				space_map_unload(msp->ms_map);
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    
    Modified: user/attilio/vmcontention/contrib/binutils/gas/config/tc-arm.c
    ==============================================================================
    --- user/attilio/vmcontention/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -3079,6 +3079,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUT
       record_alignment (now_seg, 2);
     
       ptr = frag_more (8);
    +  memset(ptr, 0, 8);
       where = frag_now_fix () - 8;
     
       /* Self relative offset of the function start.  */
    @@ -17350,6 +17351,7 @@ create_unwind_entry (int have_data)
     
       /* Allocate the table entry.	*/
       ptr = frag_more ((size << 2) + 4);
    +  memset(ptr, 0, (size << 2) + 4);
       where = frag_now_fix () - ((size << 2) + 4);
     
       switch (unwind.personality_index)
    
    Modified: user/attilio/vmcontention/libexec/rtld-elf/map_object.c
    ==============================================================================
    --- user/attilio/vmcontention/libexec/rtld-elf/map_object.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/libexec/rtld-elf/map_object.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -175,7 +175,7 @@ map_object(int fd, const char *path, con
         base_vaddr = trunc_page(segs[0]->p_vaddr);
         base_vlimit = round_page(segs[nsegs]->p_vaddr + segs[nsegs]->p_memsz);
         mapsize = base_vlimit - base_vaddr;
    -    base_addr = hdr->e_type == ET_EXEC ? (caddr_t) base_vaddr : NULL;
    +    base_addr = (caddr_t) base_vaddr;
     
         mapbase = mmap(base_addr, mapsize, PROT_NONE, MAP_ANON | MAP_PRIVATE |
           MAP_NOCORE, -1, 0);
    
    Modified: user/attilio/vmcontention/sbin/geom/class/part/gpart.8
    ==============================================================================
    --- user/attilio/vmcontention/sbin/geom/class/part/gpart.8	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sbin/geom/class/part/gpart.8	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -583,7 +583,7 @@ The system partition for computers that 
     Interface (EFI).
     In such cases, the GPT partitioning scheme is used and the
     actual partition type for the system partition can also be specified as
    -.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93ab" .
    +.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93b" .
     .It Cm freebsd
     A
     .Fx
    
    Modified: user/attilio/vmcontention/sbin/tunefs/tunefs.c
    ==============================================================================
    --- user/attilio/vmcontention/sbin/tunefs/tunefs.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sbin/tunefs/tunefs.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -671,7 +671,7 @@ journal_findfile(void)
     				return (ino);
     		}
     	} else {
    -		if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) {
    +		if ((off_t)dp2->di_size >= lblktosize(&sblock, NDADDR)) {
     			warnx("ROOTINO extends beyond direct blocks.");
     			return (-1);
     		}
    
    Modified: user/attilio/vmcontention/sys/amd64/amd64/pmap.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/amd64/amd64/pmap.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/amd64/amd64/pmap.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -3555,9 +3555,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, 
     	KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva ||
     	    va >= kmi.clean_eva,
     	    ("pmap_enter: managed mapping within the clean submap"));
    -	KASSERT((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) != 0 ||
    -	    VM_OBJECT_LOCKED(m->object),
    -	    ("pmap_enter: page %p is not busy", m));
    +	if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0)
    +		VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
     	pa = VM_PAGE_TO_PHYS(m);
     	newpte = (pt_entry_t)(pa | PG_A | PG_V);
     	if ((access & VM_PROT_WRITE) != 0)
    
    Modified: user/attilio/vmcontention/sys/arm/ti/ti_gpio.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -653,6 +653,9 @@ ti_gpio_attach(device_t dev)
     	struct ti_gpio_softc *sc = device_get_softc(dev);
     	unsigned int i;
     	int err = 0;
    +	int pin;
    +	uint32_t flags;
    +	uint32_t reg_oe;
     
     	sc->sc_dev = dev;
     
    @@ -720,6 +723,17 @@ ti_gpio_attach(device_t dev)
     			/* Disable interrupts for all pins */
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE1, 0xffffffff);
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE2, 0xffffffff);
    +
    +			/* Init OE register based on pads configuration */
    +			reg_oe = 0xffffffff;
    +			for (pin = 0; pin < 32; pin++) {
    +				ti_scm_padconf_get_gpioflags(
    +				    PINS_PER_BANK*i + pin, &flags);
    +				if (flags & GPIO_PIN_OUTPUT)
    +					reg_oe &= ~(1U << pin);
    +			}
    +
    +			ti_gpio_write_4(sc, i, TI_GPIO_OE, reg_oe);
     		}
     	}
     
    
    Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -48,6 +48,14 @@ uint64_t metaslab_aliquot = 512ULL << 10
     uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1;	/* force gang blocks */
     
     /*
    + * The in-core space map representation is more compact than its on-disk form.
    + * The zfs_condense_pct determines how much more compact the in-core
    + * space_map representation must be before we compact it on-disk.
    + * Values should be greater than or equal to 100.
    + */
    +int zfs_condense_pct = 200;
    +
    +/*
      * This value defines the number of allowed allocation failures per vdev.
      * If a device reaches this threshold in a given txg then we consider skipping
      * allocations on that device.
    @@ -215,9 +223,9 @@ metaslab_compare(const void *x1, const v
     	/*
     	 * If the weights are identical, use the offset to force uniqueness.
     	 */
    -	if (m1->ms_map.sm_start < m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start < m2->ms_map->sm_start)
     		return (-1);
    -	if (m1->ms_map.sm_start > m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start > m2->ms_map->sm_start)
     		return (1);
     
     	ASSERT3P(m1, ==, m2);
    @@ -732,14 +740,15 @@ metaslab_init(metaslab_group_t *mg, spac
     	 * addition of new space; and for debugging, it ensures that we'd
     	 * data fault on any attempt to use this metaslab before it's ready.
     	 */
    -	space_map_create(&msp->ms_map, start, size,
    +	msp->ms_map = kmem_zalloc(sizeof (space_map_t), KM_SLEEP);
    +	space_map_create(msp->ms_map, start, size,
     	    vd->vdev_ashift, &msp->ms_lock);
     
     	metaslab_group_add(mg, msp);
     
     	if (metaslab_debug && smo->smo_object != 0) {
     		mutex_enter(&msp->ms_lock);
    -		VERIFY(space_map_load(&msp->ms_map, mg->mg_class->mc_ops,
    +		VERIFY(space_map_load(msp->ms_map, mg->mg_class->mc_ops,
     		    SM_FREE, smo, spa_meta_objset(vd->vdev_spa)) == 0);
     		mutex_exit(&msp->ms_lock);
     	}
    @@ -767,22 +776,27 @@ metaslab_fini(metaslab_t *msp)
     	metaslab_group_t *mg = msp->ms_group;
     
     	vdev_space_update(mg->mg_vd,
    -	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map.sm_size);
    +	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map->sm_size);
     
     	metaslab_group_remove(mg, msp);
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_unload(&msp->ms_map);
    -	space_map_destroy(&msp->ms_map);
    +	space_map_unload(msp->ms_map);
    +	space_map_destroy(msp->ms_map);
    +	kmem_free(msp->ms_map, sizeof (*msp->ms_map));
     
     	for (int t = 0; t < TXG_SIZE; t++) {
    -		space_map_destroy(&msp->ms_allocmap[t]);
    -		space_map_destroy(&msp->ms_freemap[t]);
    +		space_map_destroy(msp->ms_allocmap[t]);
    +		space_map_destroy(msp->ms_freemap[t]);
    +		kmem_free(msp->ms_allocmap[t], sizeof (*msp->ms_allocmap[t]));
    +		kmem_free(msp->ms_freemap[t], sizeof (*msp->ms_freemap[t]));
     	}
     
    -	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -		space_map_destroy(&msp->ms_defermap[t]);
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +		space_map_destroy(msp->ms_defermap[t]);
    +		kmem_free(msp->ms_defermap[t], sizeof (*msp->ms_defermap[t]));
    +	}
     
     	ASSERT0(msp->ms_deferspace);
     
    @@ -801,7 +815,7 @@ static uint64_t
     metaslab_weight(metaslab_t *msp)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	vdev_t *vd = mg->mg_vd;
     	uint64_t weight, space;
    @@ -809,6 +823,16 @@ metaslab_weight(metaslab_t *msp)
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
     
     	/*
    +	 * This vdev is in the process of being removed so there is nothing
    +	 * for us to do here.
    +	 */
    +	if (vd->vdev_removing) {
    +		ASSERT0(smo->smo_alloc);
    +		ASSERT0(vd->vdev_ms_shift);
    +		return (0);
    +	}
    +
    +	/*
     	 * The baseline weight is the metaslab's free space.
     	 */
     	space = sm->sm_size - smo->smo_alloc;
    @@ -861,7 +885,7 @@ metaslab_prefetch(metaslab_group_t *mg)
     	 * Prefetch the next potential metaslabs
     	 */
     	for (msp = avl_first(t), m = 0; msp; msp = AVL_NEXT(t, msp), m++) {
    -		space_map_t *sm = &msp->ms_map;
    +		space_map_t *sm = msp->ms_map;
     		space_map_obj_t *smo = &msp->ms_smo;
     
     		/* If we have reached our prefetch limit then we're done */
    @@ -882,7 +906,7 @@ static int
     metaslab_activate(metaslab_t *msp, uint64_t activation_weight)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_ops_t *sm_ops = msp->ms_group->mg_class->mc_ops;
     
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
    @@ -899,7 +923,7 @@ metaslab_activate(metaslab_t *msp, uint6
     				return (error);
     			}
     			for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -				space_map_walk(&msp->ms_defermap[t],
    +				space_map_walk(msp->ms_defermap[t],
     				    space_map_claim, sm);
     
     		}
    @@ -930,12 +954,158 @@ metaslab_passivate(metaslab_t *msp, uint
     	 * this metaslab again.  In that case, it had better be empty,
     	 * or we would be leaving space on the table.
     	 */
    -	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map.sm_space == 0);
    +	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map->sm_space == 0);
     	metaslab_group_sort(msp->ms_group, msp, MIN(msp->ms_weight, size));
     	ASSERT((msp->ms_weight & METASLAB_ACTIVE_MASK) == 0);
     }
     
     /*
    + * Determine if the in-core space map representation can be condensed on-disk.
    + * We would like to use the following criteria to make our decision:
    + *
    + * 1. The size of the space map object should not dramatically increase as a
    + * result of writing out our in-core free map.
    + *
    + * 2. The minimal on-disk space map representation is zfs_condense_pct/100
    + * times the size than the in-core representation (i.e. zfs_condense_pct = 110
    + * and in-core = 1MB, minimal = 1.1.MB).
    + *
    + * Checking the first condition is tricky since we don't want to walk
    + * the entire AVL tree calculating the estimated on-disk size. Instead we
    + * use the size-ordered AVL tree in the space map and calculate the
    + * size required for the largest segment in our in-core free map. If the
    + * size required to represent that segment on disk is larger than the space
    + * map object then we avoid condensing this map.
    + *
    + * To determine the second criterion we use a best-case estimate and assume
    + * each segment can be represented on-disk as a single 64-bit entry. We refer
    + * to this best-case estimate as the space map's minimal form.
    + */
    +static boolean_t
    +metaslab_should_condense(metaslab_t *msp)
    +{
    +	space_map_t *sm = msp->ms_map;
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +	space_seg_t *ss;
    +	uint64_t size, entries, segsz;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT(sm->sm_loaded);
    +
    +	/*
    +	 * Use the sm_pp_root AVL tree, which is ordered by size, to obtain
    +	 * the largest segment in the in-core free map. If the tree is
    +	 * empty then we should condense the map.
    +	 */
    +	ss = avl_last(sm->sm_pp_root);
    +	if (ss == NULL)
    +		return (B_TRUE);
    +
    +	/*
    +	 * Calculate the number of 64-bit entries this segment would
    +	 * require when written to disk. If this single segment would be
    +	 * larger on-disk than the entire current on-disk structure, then
    +	 * clearly condensing will increase the on-disk structure size.
    +	 */
    +	size = (ss->ss_end - ss->ss_start) >> sm->sm_shift;
    +	entries = size / (MIN(size, SM_RUN_MAX));
    +	segsz = entries * sizeof (uint64_t);
    +
    +	return (segsz <= smo->smo_objsize &&
    +	    smo->smo_objsize >= (zfs_condense_pct *
    +	    sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) / 100);
    +}
    +
    +/*
    + * Condense the on-disk space map representation to its minimized form.
    + * The minimized form consists of a small number of allocations followed by
    + * the in-core free map.
    + */
    +static void
    +metaslab_condense(metaslab_t *msp, uint64_t txg, dmu_tx_t *tx)
    +{
    +	spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
    +	space_map_t *freemap = msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t condense_map;
    +	space_map_t *sm = msp->ms_map;
    +	objset_t *mos = spa_meta_objset(spa);
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT3U(spa_sync_pass(spa), ==, 1);
    +	ASSERT(sm->sm_loaded);
    +
    +	spa_dbgmsg(spa, "condensing: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu, segments %lu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize, avl_numnodes(&sm->sm_root));
    +
    +	/*
    +	 * Create an map that is a 100% allocated map. We remove segments
    +	 * that have been freed in this txg, any deferred frees that exist,
    +	 * and any allocation in the future. Removing segments should be
    +	 * a relatively inexpensive operation since we expect these maps to
    +	 * a small number of nodes.
    +	 */
    +	space_map_create(&condense_map, sm->sm_start, sm->sm_size,
    +	    sm->sm_shift, sm->sm_lock);
    +	space_map_add(&condense_map, condense_map.sm_start,
    +	    condense_map.sm_size);
    +
    +	/*
    +	 * Remove what's been freed in this txg from the condense_map.
    +	 * Since we're in sync_pass 1, we know that all the frees from
    +	 * this txg are in the freemap.
    +	 */
    +	space_map_walk(freemap, space_map_remove, &condense_map);
    +
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    +		space_map_walk(msp->ms_defermap[t],
    +		    space_map_remove, &condense_map);
    +
    +	for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    +		space_map_walk(msp->ms_allocmap[(txg + t) & TXG_MASK],
    +		    space_map_remove, &condense_map);
    +
    +	/*
    +	 * We're about to drop the metaslab's lock thus allowing
    +	 * other consumers to change it's content. Set the
    +	 * space_map's sm_condensing flag to ensure that
    +	 * allocations on this metaslab do not occur while we're
    +	 * in the middle of committing it to disk. This is only critical
    +	 * for the ms_map as all other space_maps use per txg
    +	 * views of their content.
    +	 */
    +	sm->sm_condensing = B_TRUE;
    +
    +	mutex_exit(&msp->ms_lock);
    +	space_map_truncate(smo, mos, tx);
    +	mutex_enter(&msp->ms_lock);
    +
    +	/*
    +	 * While we would ideally like to create a space_map representation
    +	 * that consists only of allocation records, doing so can be
    +	 * prohibitively expensive because the in-core free map can be
    +	 * large, and therefore computationally expensive to subtract
    +	 * from the condense_map. Instead we sync out two maps, a cheap
    +	 * allocation only map followed by the in-core free map. While not
    +	 * optimal, this is typically close to optimal, and much cheaper to
    +	 * compute.
    +	 */
    +	space_map_sync(&condense_map, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&condense_map, NULL, NULL);
    +	space_map_destroy(&condense_map);
    +
    +	space_map_sync(sm, SM_FREE, smo, mos, tx);
    +	sm->sm_condensing = B_FALSE;
    +
    +	spa_dbgmsg(spa, "condensed: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize);
    +}
    +
    +/*
      * Write a metaslab to disk in the context of the specified transaction group.
      */
     void
    @@ -944,17 +1114,29 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
     	objset_t *mos = spa_meta_objset(spa);
    -	space_map_t *allocmap = &msp->ms_allocmap[txg & TXG_MASK];
    -	space_map_t *freemap = &msp->ms_freemap[txg & TXG_MASK];
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *allocmap = msp->ms_allocmap[txg & TXG_MASK];
    +	space_map_t **freemap = &msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo_syncing;
     	dmu_buf_t *db;
     	dmu_tx_t *tx;
     
     	ASSERT(!vd->vdev_ishole);
     
    -	if (allocmap->sm_space == 0 && freemap->sm_space == 0)
    +	/*
    +	 * This metaslab has just been added so there's no work to do now.
    +	 */
    +	if (*freemap == NULL) {
    +		ASSERT3P(allocmap, ==, NULL);
    +		return;
    +	}
    +
    +	ASSERT3P(allocmap, !=, NULL);
    +	ASSERT3P(*freemap, !=, NULL);
    +	ASSERT3P(*freed_map, !=, NULL);
    +
    +	if (allocmap->sm_space == 0 && (*freemap)->sm_space == 0)
     		return;
     
     	/*
    @@ -982,49 +1164,36 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_walk(freemap, space_map_add, freed_map);
    -
    -	if (sm->sm_loaded && spa_sync_pass(spa) == 1 && smo->smo_objsize >=
    -	    2 * sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) {
    -		/*
    -		 * The in-core space map representation is twice as compact
    -		 * as the on-disk one, so it's time to condense the latter
    -		 * by generating a pure allocmap from first principles.
    -		 *
    -		 * This metaslab is 100% allocated,
    -		 * minus the content of the in-core map (sm),
    -		 * minus what's been freed this txg (freed_map),
    -		 * minus deferred frees (ms_defermap[]),
    -		 * minus allocations from txgs in the future
    -		 * (because they haven't been committed yet).
    -		 */
    -		space_map_vacate(allocmap, NULL, NULL);
    -		space_map_vacate(freemap, NULL, NULL);
    -
    -		space_map_add(allocmap, allocmap->sm_start, allocmap->sm_size);
    -
    -		space_map_walk(sm, space_map_remove, allocmap);
    -		space_map_walk(freed_map, space_map_remove, allocmap);
    -
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_walk(&msp->ms_defermap[t],
    -			    space_map_remove, allocmap);
    +	if (sm->sm_loaded && spa_sync_pass(spa) == 1 &&
    +	    metaslab_should_condense(msp)) {
    +		metaslab_condense(msp, txg, tx);
    +	} else {
    +		space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    +		space_map_sync(*freemap, SM_FREE, smo, mos, tx);
    +	}
     
    -		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			space_map_walk(&msp->ms_allocmap[(txg + t) & TXG_MASK],
    -			    space_map_remove, allocmap);
    +	space_map_vacate(allocmap, NULL, NULL);
     
    -		mutex_exit(&msp->ms_lock);
    -		space_map_truncate(smo, mos, tx);
    -		mutex_enter(&msp->ms_lock);
    +	/*
    +	 * For sync pass 1, we avoid walking the entire space map and
    +	 * instead will just swap the pointers for freemap and
    +	 * freed_map. We can safely do this since the freed_map is
    +	 * guaranteed to be empty on the initial pass.
    +	 */
    +	if (spa_sync_pass(spa) == 1) {
    +		ASSERT0((*freed_map)->sm_space);
    +		ASSERT0(avl_numnodes(&(*freed_map)->sm_root));
    +		space_map_swap(freemap, freed_map);
    +	} else {
    +		space_map_vacate(*freemap, space_map_add, *freed_map);
     	}
     
    -	space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    -	space_map_sync(freemap, SM_FREE, smo, mos, tx);
    +	ASSERT0(msp->ms_allocmap[txg & TXG_MASK]->sm_space);
    +	ASSERT0(msp->ms_freemap[txg & TXG_MASK]->sm_space);
     
     	mutex_exit(&msp->ms_lock);
     
    -	VERIFY(0 == dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
    +	VERIFY0(dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
     	dmu_buf_will_dirty(db, tx);
     	ASSERT3U(db->db_size, >=, sizeof (*smo));
     	bcopy(smo, db->db_data, sizeof (*smo));
    @@ -1042,9 +1211,9 @@ metaslab_sync_done(metaslab_t *msp, uint
     {
     	space_map_obj_t *smo = &msp->ms_smo;
     	space_map_obj_t *smosync = &msp->ms_smo_syncing;
    -	space_map_t *sm = &msp->ms_map;
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
    +	space_map_t *sm = msp->ms_map;
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t **defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     	metaslab_group_t *mg = msp->ms_group;
     	vdev_t *vd = mg->mg_vd;
     	int64_t alloc_delta, defer_delta;
    @@ -1055,40 +1224,57 @@ metaslab_sync_done(metaslab_t *msp, uint
     
     	/*
     	 * If this metaslab is just becoming available, initialize its
    -	 * allocmaps and freemaps and add its capacity to the vdev.
    +	 * allocmaps, freemaps, and defermap and add its capacity to the vdev.
     	 */
    -	if (freed_map->sm_size == 0) {
    +	if (*freed_map == NULL) {
    +		ASSERT(*defer_map == NULL);
     		for (int t = 0; t < TXG_SIZE; t++) {
    -			space_map_create(&msp->ms_allocmap[t], sm->sm_start,
    +			msp->ms_allocmap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_allocmap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    -			space_map_create(&msp->ms_freemap[t], sm->sm_start,
    +			msp->ms_freemap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_freemap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
     		}
     
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_create(&msp->ms_defermap[t], sm->sm_start,
    +		for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +			msp->ms_defermap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_defermap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    +		}
    +
    +		freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +		defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     
     		vdev_space_update(vd, 0, 0, sm->sm_size);
     	}
     
     	alloc_delta = smosync->smo_alloc - smo->smo_alloc;
    -	defer_delta = freed_map->sm_space - defer_map->sm_space;
    +	defer_delta = (*freed_map)->sm_space - (*defer_map)->sm_space;
     
     	vdev_space_update(vd, alloc_delta + defer_delta, defer_delta, 0);
     
    -	ASSERT(msp->ms_allocmap[txg & TXG_MASK].sm_space == 0);
    -	ASSERT(msp->ms_freemap[txg & TXG_MASK].sm_space == 0);
    +	ASSERT(msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0);
    +	ASSERT(msp->ms_freemap[txg & TXG_MASK]->sm_space == 0);
     
     	/*
     	 * If there's a space_map_load() in progress, wait for it to complete
     	 * so that we have a consistent view of the in-core space map.
    -	 * Then, add defer_map (oldest deferred frees) to this map and
    -	 * transfer freed_map (this txg's frees) to defer_map.
     	 */
     	space_map_load_wait(sm);
    -	space_map_vacate(defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    -	space_map_vacate(freed_map, space_map_add, defer_map);
    +
    +	/*
    +	 * Move the frees from the defer_map to this map (if it's loaded).
    +	 * Swap the freed_map and the defer_map -- this is safe to do
    +	 * because we've just emptied out the defer_map.
    +	 */
    +	space_map_vacate(*defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    +	ASSERT0((*defer_map)->sm_space);
    +	ASSERT0(avl_numnodes(&(*defer_map)->sm_root));
    +	space_map_swap(freed_map, defer_map);
     
     	*smo = *smosync;
     
    @@ -1112,7 +1298,7 @@ metaslab_sync_done(metaslab_t *msp, uint
     		int evictable = 1;
     
     		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			if (msp->ms_allocmap[(txg + t) & TXG_MASK].sm_space)
    +			if (msp->ms_allocmap[(txg + t) & TXG_MASK]->sm_space)
     				evictable = 0;
     
     		if (evictable && !metaslab_debug)
    @@ -1137,7 +1323,7 @@ metaslab_sync_reassess(metaslab_group_t 
     	for (int m = 0; m < vd->vdev_ms_count; m++) {
     		metaslab_t *msp = vd->vdev_ms[m];
     
    -		if (msp->ms_map.sm_start > mg->mg_bonus_area)
    +		if (msp->ms_map->sm_start > mg->mg_bonus_area)
     			break;
     
     		mutex_enter(&msp->ms_lock);
    @@ -1158,7 +1344,7 @@ metaslab_distance(metaslab_t *msp, dva_t
     {
     	uint64_t ms_shift = msp->ms_group->mg_vd->vdev_ms_shift;
     	uint64_t offset = DVA_GET_OFFSET(dva) >> ms_shift;
    -	uint64_t start = msp->ms_map.sm_start >> ms_shift;
    +	uint64_t start = msp->ms_map->sm_start >> ms_shift;
     
     	if (msp->ms_group->mg_vd->vdev_id != DVA_GET_VDEV(dva))
     		return (1ULL << 63);
    @@ -1206,6 +1392,13 @@ metaslab_group_alloc(metaslab_group_t *m
     				mutex_exit(&mg->mg_lock);
     				return (-1ULL);
     			}
    +
    +			/*
    +			 * If the selected metaslab is condensing, skip it.
    +			 */
    +			if (msp->ms_map->sm_condensing)
    +				continue;
    +
     			was_active = msp->ms_weight & METASLAB_ACTIVE_MASK;
     			if (activation_weight == METASLAB_WEIGHT_PRIMARY)
     				break;
    @@ -1271,20 +1464,30 @@ metaslab_group_alloc(metaslab_group_t *m
     			continue;
     		}
     
    -		if ((offset = space_map_alloc(&msp->ms_map, asize)) != -1ULL)
    +		/*
    +		 * If this metaslab is currently condensing then pick again as
    +		 * we can't manipulate this metaslab until it's committed
    +		 * to disk.
    +		 */
    +		if (msp->ms_map->sm_condensing) {
    +			mutex_exit(&msp->ms_lock);
    +			continue;
    +		}
    +
    +		if ((offset = space_map_alloc(msp->ms_map, asize)) != -1ULL)
     			break;
     
     		atomic_inc_64(&mg->mg_alloc_failures);
     
    -		metaslab_passivate(msp, space_map_maxsize(&msp->ms_map));
    +		metaslab_passivate(msp, space_map_maxsize(msp->ms_map));
     
     		mutex_exit(&msp->ms_lock);
     	}
     
    -	if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +	if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     		vdev_dirty(mg->mg_vd, VDD_METASLAB, msp, txg);
     
    -	space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, asize);
    +	space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, asize);
     
     	mutex_exit(&msp->ms_lock);
     
    @@ -1516,13 +1719,13 @@ metaslab_free_dva(spa_t *spa, const dva_
     	mutex_enter(&msp->ms_lock);
     
     	if (now) {
    -		space_map_remove(&msp->ms_allocmap[txg & TXG_MASK],
    +		space_map_remove(msp->ms_allocmap[txg & TXG_MASK],
     		    offset, size);
    -		space_map_free(&msp->ms_map, offset, size);
    +		space_map_free(msp->ms_map, offset, size);
     	} else {
    -		if (msp->ms_freemap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_freemap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_freemap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_freemap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    @@ -1557,10 +1760,10 @@ metaslab_claim_dva(spa_t *spa, const dva
     
     	mutex_enter(&msp->ms_lock);
     
    -	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map.sm_loaded)
    +	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map->sm_loaded)
     		error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY);
     
    -	if (error == 0 && !space_map_contains(&msp->ms_map, offset, size))
    +	if (error == 0 && !space_map_contains(msp->ms_map, offset, size))
     		error = ENOENT;
     
     	if (error || txg == 0) {	/* txg == 0 indicates dry run */
    @@ -1568,12 +1771,12 @@ metaslab_claim_dva(spa_t *spa, const dva
     		return (error);
     	}
     
    -	space_map_claim(&msp->ms_map, offset, size);
    +	space_map_claim(msp->ms_map, offset, size);
     
     	if (spa_writeable(spa)) {	/* don't dirty if we're zdb(1M) */
    -		if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    
    Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -114,6 +114,7 @@ space_map_add(space_map_t *sm, uint64_t 
     	int merge_before, merge_after;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY3U(start, >=, sm->sm_start);
     	VERIFY3U(end, <=, sm->sm_start + sm->sm_size);
    @@ -198,6 +199,7 @@ space_map_remove(space_map_t *sm, uint64
     	int left_over, right_over;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY(P2PHASE(start, 1ULL << sm->sm_shift) == 0);
     	VERIFY(P2PHASE(size, 1ULL << sm->sm_shift) == 0);
    @@ -267,6 +269,20 @@ space_map_contains(space_map_t *sm, uint
     }
     
     void
    +space_map_swap(space_map_t **msrc, space_map_t **mdst)
    +{
    +	space_map_t *sm;
    +
    +	ASSERT(MUTEX_HELD((*msrc)->sm_lock));
    +	ASSERT0((*mdst)->sm_space);
    +	ASSERT0(avl_numnodes(&(*mdst)->sm_root));
    +
    +	sm = *msrc;
    +	*msrc = *mdst;
    +	*mdst = sm;
    +}
    +
    +void
     space_map_vacate(space_map_t *sm, space_map_func_t *func, space_map_t *mdest)
     {
     	space_seg_t *ss;
    @@ -447,9 +463,9 @@ space_map_sync(space_map_t *sm, uint8_t 
     	space_map_obj_t *smo, objset_t *os, dmu_tx_t *tx)
     {
     	spa_t *spa = dmu_objset_spa(os);
    -	void *cookie = NULL;
    +	avl_tree_t *t = &sm->sm_root;
     	space_seg_t *ss;
    -	uint64_t bufsize, start, size, run_len, delta, sm_space;
    +	uint64_t bufsize, start, size, run_len, total, sm_space, nodes;
     	uint64_t *entry, *entry_map, *entry_map_end;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    @@ -478,13 +494,14 @@ space_map_sync(space_map_t *sm, uint8_t 
     	    SM_DEBUG_SYNCPASS_ENCODE(spa_sync_pass(spa)) |
     	    SM_DEBUG_TXG_ENCODE(dmu_tx_get_txg(tx));
     
    -	delta = 0;
    +	total = 0;
    +	nodes = avl_numnodes(&sm->sm_root);
     	sm_space = sm->sm_space;
    -	while ((ss = avl_destroy_nodes(&sm->sm_root, &cookie)) != NULL) {
    +	for (ss = avl_first(t); ss != NULL; ss = AVL_NEXT(t, ss)) {
     		size = ss->ss_end - ss->ss_start;
     		start = (ss->ss_start - sm->sm_start) >> sm->sm_shift;
     
    -		delta += size;
    +		total += size;
     		size >>= sm->sm_shift;
     
     		while (size) {
    @@ -506,7 +523,6 @@ space_map_sync(space_map_t *sm, uint8_t 
     			start += run_len;
     			size -= run_len;
     		}
    -		kmem_cache_free(space_seg_cache, ss);
     	}
     
     	if (entry != entry_map) {
    @@ -522,12 +538,11 @@ space_map_sync(space_map_t *sm, uint8_t 
     	 * Ensure that the space_map's accounting wasn't changed
     	 * while we were in the middle of writing it out.
     	 */
    +	VERIFY3U(nodes, ==, avl_numnodes(&sm->sm_root));
     	VERIFY3U(sm->sm_space, ==, sm_space);
    +	VERIFY3U(sm->sm_space, ==, total);
     
     	zio_buf_free(entry_map, bufsize);
    -
    -	sm->sm_space -= delta;
    -	VERIFY0(sm->sm_space);
     }
     
     void
    
    Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
    ==============================================================================
    --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -66,20 +66,38 @@ struct metaslab_group {
     };
     
     /*
    - * Each metaslab's free space is tracked in space map object in the MOS,
    - * which is only updated in syncing context.  Each time we sync a txg,
    + * Each metaslab maintains an in-core free map (ms_map) that contains the
    + * current list of free segments. As blocks are allocated, the allocated
    + * segment is removed from the ms_map and added to a per txg allocation map.
    + * As blocks are freed, they are added to the per txg free map. These per
    + * txg maps allow us to process all allocations and frees in syncing context
    + * where it is safe to update the on-disk space maps.
    + *
    + * Each metaslab's free space is tracked in a space map object in the MOS,
    + * which is only updated in syncing context. Each time we sync a txg,
      * we append the allocs and frees from that txg to the space map object.
      * When the txg is done syncing, metaslab_sync_done() updates ms_smo
    - * to ms_smo_syncing.  Everything in ms_smo is always safe to allocate.
    + * to ms_smo_syncing. Everything in ms_smo is always safe to allocate.
    + *
    + * To load the in-core free map we read the space map object from disk.
    + * This object contains a series of alloc and free records that are
    + * combined to make up the list of all free segments in this metaslab. These
    + * segments are represented in-core by the ms_map and are stored in an
    + * AVL tree.
    + *
    + * As the space map objects grows (as a result of the appends) it will
    + * eventually become space-inefficient. When the space map object is
    + * zfs_condense_pct/100 times the size of the minimal on-disk representation,
    + * we rewrite it in its minimized form.
      */
     struct metaslab {
     	kmutex_t	ms_lock;	/* metaslab lock		*/
     	space_map_obj_t	ms_smo;		/* synced space map object	*/
     	space_map_obj_t	ms_smo_syncing;	/* syncing space map object	*/
    -	space_map_t	ms_allocmap[TXG_SIZE];  /* allocated this txg	*/
    -	space_map_t	ms_freemap[TXG_SIZE];	/* freed this txg	*/
    -	space_map_t	ms_defermap[TXG_DEFER_SIZE]; /* deferred frees	*/
    -	space_map_t	ms_map;		/* in-core free space map	*/
    +	space_map_t	*ms_allocmap[TXG_SIZE];	/* allocated this txg	*/
    +	space_map_t	*ms_freemap[TXG_SIZE];	/* freed this txg	*/
    +	space_map_t	*ms_defermap[TXG_DEFER_SIZE];	/* deferred frees */
    +	space_map_t	*ms_map;	/* in-core free space map	*/
     	int64_t		ms_deferspace;	/* sum of ms_defermap[] space	*/
     	uint64_t	ms_weight;	/* weight vs. others in group	*/
     	metaslab_group_t *ms_group;	/* metaslab group		*/
    
    Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
    ==============================================================================
    --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -40,17 +40,17 @@ extern "C" {
     typedef struct space_map_ops space_map_ops_t;
     
     typedef struct space_map {
    -	avl_tree_t	sm_root;	/* AVL tree of map segments */
    +	avl_tree_t	sm_root;	/* offset-ordered segment AVL tree */
     	uint64_t	sm_space;	/* sum of all segments in the map */
     	uint64_t	sm_start;	/* start of map */
     	uint64_t	sm_size;	/* size of map */
     	uint8_t		sm_shift;	/* unit shift */
    -	uint8_t		sm_pad[3];	/* unused */
     	uint8_t		sm_loaded;	/* map loaded? */
     	uint8_t		sm_loading;	/* map loading? */
    +	uint8_t		sm_condensing;	/* map condensing? */
     	kcondvar_t	sm_load_cv;	/* map load completion */
     	space_map_ops_t	*sm_ops;	/* space map block picker ops vector */
    -	avl_tree_t	*sm_pp_root;	/* picker-private AVL tree */
    +	avl_tree_t	*sm_pp_root;	/* size-ordered, picker-private tree */
     	void		*sm_ppd;	/* picker-private data */
     	kmutex_t	*sm_lock;	/* pointer to lock that protects map */
     } space_map_t;
    @@ -149,6 +149,7 @@ extern void space_map_add(space_map_t *s
     extern void space_map_remove(space_map_t *sm, uint64_t start, uint64_t size);
     extern boolean_t space_map_contains(space_map_t *sm,
         uint64_t start, uint64_t size);
    +extern void space_map_swap(space_map_t **msrc, space_map_t **mdest);
     extern void space_map_vacate(space_map_t *sm,
         space_map_func_t *func, space_map_t *mdest);
     extern void space_map_walk(space_map_t *sm,
    
    Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -1847,6 +1847,7 @@ vdev_dtl_sync(vdev_t *vd, uint64_t txg)
     
     	space_map_truncate(smo, mos, tx);
     	space_map_sync(&smsync, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&smsync, NULL, NULL);
     
     	space_map_destroy(&smsync);
     
    
    Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -692,6 +692,10 @@ ath_hal_getcapability(struct ath_hal *ah
     		return pCap->hal4AddrAggrSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_EXT_CHAN_DFS:
     		return pCap->halExtChanDfsSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_RX_STBC:
    +		return pCap->halRxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_TX_STBC:
    +		return pCap->halTxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_COMBINED_RADAR_RSSI:
     		return pCap->halUseCombinedRadarRssi ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_AUTO_SLEEP:
    
    Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h
    ==============================================================================
    --- user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -137,6 +137,9 @@ typedef enum {
     	HAL_CAP_RIFS_RX_ENABLED	= 53,
     	HAL_CAP_BB_DFS_HANG	= 54,
     
    +	HAL_CAP_RX_STBC		= 58,
    +	HAL_CAP_TX_STBC		= 59,
    +
     	HAL_CAP_BT_COEX		= 60,	/* hardware is capable of bluetooth coexistence */
     	HAL_CAP_DYNAMIC_SMPS	= 61,	/* Dynamic MIMO Power Save hardware support */
     
    
    Modified: user/attilio/vmcontention/sys/dev/ath/ath_rate/sample/sample.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:17:34 2013	(r247401)
    +++ user/attilio/vmcontention/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:23:12 2013	(r247402)
    @@ -708,71 +708,6 @@ ath_rate_setupxtxdesc(struct ath_softc *
     	    s3code, sched->t3);		/* series 3 */
     }
     
    -/*
    - * Update the EWMA percentage.
    - *
    - * This is a simple hack to track an EWMA based on the current
    - * rate scenario. For the rate codes which failed, this will
    - * record a 0% against it. For the rate code which succeeded,
    - * EWMA will record the nbad*100/nframes percentage against it.
    - */
    -static void
    -update_ewma_stats(struct ath_softc *sc, struct ath_node *an,
    -    int frame_size,
    -    int rix0, int tries0,
    -    int rix1, int tries1,
    -    int rix2, int tries2,
    -    int rix3, int tries3,
    -    int short_tries, int tries, int status,
    -    int nframes, int nbad)
    -{
    -	struct sample_node *sn = ATH_NODE_SAMPLE(an);
    -	struct sample_softc *ssc = ATH_SOFTC_SAMPLE(sc);
    -	const int size_bin = size_to_bin(frame_size);
    -	int tries_so_far;
    -	int pct;
    -	int rix = rix0;
    -
    -	/* Calculate percentage based on current rate */
    -	if (nframes == 0)
    -		nframes = nbad = 1;
    -	pct = ((nframes - nbad) * 1000) / nframes;
    -
    -	/* Figure out which rate index succeeded */
    -	tries_so_far = tries0;
    -
    -	if (tries1 && tries_so_far < tries) {
    -		tries_so_far += tries1;
    -		rix = rix1;
    -		/* XXX bump ewma pct */
    -	}
    -
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Wed Feb 27 18:26:00 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id B1CE08A7;
     Wed, 27 Feb 2013 18:26:00 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 9B509680;
     Wed, 27 Feb 2013 18:26:00 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1RIQ0B2054902;
     Wed, 27 Feb 2013 18:26:00 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1RIPvGD054874;
     Wed, 27 Feb 2013 18:25:57 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302271825.r1RIPvGD054874@svn.freebsd.org>
    From: Attilio Rao 
    Date: Wed, 27 Feb 2013 18:25:57 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247403 - in user/attilio/vmc-playground:
     cddl/contrib/opensolaris/cmd/zdb contrib/binutils/gas/config libexec/rtld-elf
     sbin/geom/class/part sbin/tunefs sys/amd64/amd64 sys/arm/ti sys/c...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 27 Feb 2013 18:26:00 -0000
    
    Author: attilio
    Date: Wed Feb 27 18:25:57 2013
    New Revision: 247403
    URL: http://svnweb.freebsd.org/changeset/base/247403
    
    Log:
      Merge from vmcontention
    
    Modified:
      user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c
      user/attilio/vmc-playground/contrib/binutils/gas/config/tc-arm.c
      user/attilio/vmc-playground/libexec/rtld-elf/map_object.c
      user/attilio/vmc-playground/sbin/geom/class/part/gpart.8
      user/attilio/vmc-playground/sbin/tunefs/tunefs.c
      user/attilio/vmc-playground/sys/amd64/amd64/pmap.c
      user/attilio/vmc-playground/sys/arm/ti/ti_gpio.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.c
      user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h
      user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c
      user/attilio/vmc-playground/sys/dev/ath/if_ath.c
      user/attilio/vmc-playground/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmc-playground/sys/dev/ath/if_athvar.h
      user/attilio/vmc-playground/sys/dev/mfi/mfi.c
      user/attilio/vmc-playground/sys/dev/mfi/mfi_cam.c
      user/attilio/vmc-playground/sys/dev/mfi/mfi_debug.c
      user/attilio/vmc-playground/sys/dev/mfi/mfi_tbolt.c
      user/attilio/vmc-playground/sys/dev/mfi/mfireg.h
      user/attilio/vmc-playground/sys/dev/mfi/mfivar.h
      user/attilio/vmc-playground/sys/dev/msk/if_msk.c
      user/attilio/vmc-playground/sys/i386/i386/pmap.c
      user/attilio/vmc-playground/sys/i386/xen/pmap.c
      user/attilio/vmc-playground/sys/kern/vfs_bio.c
      user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea.c
      user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea64.c
      user/attilio/vmc-playground/sys/powerpc/booke/pmap.c
      user/attilio/vmc-playground/sys/sparc64/sparc64/pmap.c
      user/attilio/vmc-playground/sys/sys/vnode.h
      user/attilio/vmc-playground/sys/ufs/ffs/ffs_alloc.c
      user/attilio/vmc-playground/sys/ufs/ffs/ffs_softdep.c
      user/attilio/vmc-playground/sys/ufs/ffs/ffs_vfsops.c
      user/attilio/vmc-playground/sys/ufs/ufs/ufs_quota.c
      user/attilio/vmc-playground/sys/vm/vm_object.h
    Directory Properties:
      user/attilio/vmc-playground/   (props changed)
      user/attilio/vmc-playground/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmc-playground/contrib/binutils/   (props changed)
      user/attilio/vmc-playground/sbin/   (props changed)
      user/attilio/vmc-playground/sys/   (props changed)
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/   (props changed)
    
    Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c
    ==============================================================================
    --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -545,7 +545,7 @@ static void
     dump_metaslab_stats(metaslab_t *msp)
     {
     	char maxbuf[32];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	avl_tree_t *t = sm->sm_pp_root;
     	int free_pct = sm->sm_space * 100 / sm->sm_size;
     
    @@ -561,7 +561,7 @@ dump_metaslab(metaslab_t *msp)
     {
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	char freebuf[32];
     
    @@ -2160,11 +2160,11 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    -				VERIFY(space_map_load(&msp->ms_map,
    +				space_map_unload(msp->ms_map);
    +				VERIFY(space_map_load(msp->ms_map,
     				    &zdb_space_map_ops, SM_ALLOC, &msp->ms_smo,
     				    spa->spa_meta_objset) == 0);
    -				msp->ms_map.sm_ppd = vd;
    +				msp->ms_map->sm_ppd = vd;
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    @@ -2187,7 +2187,7 @@ zdb_leak_fini(spa_t *spa)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    +				space_map_unload(msp->ms_map);
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    
    Modified: user/attilio/vmc-playground/contrib/binutils/gas/config/tc-arm.c
    ==============================================================================
    --- user/attilio/vmc-playground/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/contrib/binutils/gas/config/tc-arm.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -3079,6 +3079,7 @@ s_arm_unwind_fnend (int ignored ATTRIBUT
       record_alignment (now_seg, 2);
     
       ptr = frag_more (8);
    +  memset(ptr, 0, 8);
       where = frag_now_fix () - 8;
     
       /* Self relative offset of the function start.  */
    @@ -17350,6 +17351,7 @@ create_unwind_entry (int have_data)
     
       /* Allocate the table entry.	*/
       ptr = frag_more ((size << 2) + 4);
    +  memset(ptr, 0, (size << 2) + 4);
       where = frag_now_fix () - ((size << 2) + 4);
     
       switch (unwind.personality_index)
    
    Modified: user/attilio/vmc-playground/libexec/rtld-elf/map_object.c
    ==============================================================================
    --- user/attilio/vmc-playground/libexec/rtld-elf/map_object.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/libexec/rtld-elf/map_object.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -175,7 +175,7 @@ map_object(int fd, const char *path, con
         base_vaddr = trunc_page(segs[0]->p_vaddr);
         base_vlimit = round_page(segs[nsegs]->p_vaddr + segs[nsegs]->p_memsz);
         mapsize = base_vlimit - base_vaddr;
    -    base_addr = hdr->e_type == ET_EXEC ? (caddr_t) base_vaddr : NULL;
    +    base_addr = (caddr_t) base_vaddr;
     
         mapbase = mmap(base_addr, mapsize, PROT_NONE, MAP_ANON | MAP_PRIVATE |
           MAP_NOCORE, -1, 0);
    
    Modified: user/attilio/vmc-playground/sbin/geom/class/part/gpart.8
    ==============================================================================
    --- user/attilio/vmc-playground/sbin/geom/class/part/gpart.8	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sbin/geom/class/part/gpart.8	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -583,7 +583,7 @@ The system partition for computers that 
     Interface (EFI).
     In such cases, the GPT partitioning scheme is used and the
     actual partition type for the system partition can also be specified as
    -.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93ab" .
    +.Qq Li "!c12a7328-f81f-11d2-ba4b-00a0c93ec93b" .
     .It Cm freebsd
     A
     .Fx
    
    Modified: user/attilio/vmc-playground/sbin/tunefs/tunefs.c
    ==============================================================================
    --- user/attilio/vmc-playground/sbin/tunefs/tunefs.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sbin/tunefs/tunefs.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -671,7 +671,7 @@ journal_findfile(void)
     				return (ino);
     		}
     	} else {
    -		if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) {
    +		if ((off_t)dp2->di_size >= lblktosize(&sblock, NDADDR)) {
     			warnx("ROOTINO extends beyond direct blocks.");
     			return (-1);
     		}
    
    Modified: user/attilio/vmc-playground/sys/amd64/amd64/pmap.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/amd64/amd64/pmap.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/amd64/amd64/pmap.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -3555,9 +3555,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, 
     	KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva ||
     	    va >= kmi.clean_eva,
     	    ("pmap_enter: managed mapping within the clean submap"));
    -	KASSERT((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) != 0 ||
    -	    VM_OBJECT_LOCKED(m->object),
    -	    ("pmap_enter: page %p is not busy", m));
    +	if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0)
    +		VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
     	pa = VM_PAGE_TO_PHYS(m);
     	newpte = (pt_entry_t)(pa | PG_A | PG_V);
     	if ((access & VM_PROT_WRITE) != 0)
    
    Modified: user/attilio/vmc-playground/sys/arm/ti/ti_gpio.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/arm/ti/ti_gpio.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -653,6 +653,9 @@ ti_gpio_attach(device_t dev)
     	struct ti_gpio_softc *sc = device_get_softc(dev);
     	unsigned int i;
     	int err = 0;
    +	int pin;
    +	uint32_t flags;
    +	uint32_t reg_oe;
     
     	sc->sc_dev = dev;
     
    @@ -720,6 +723,17 @@ ti_gpio_attach(device_t dev)
     			/* Disable interrupts for all pins */
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE1, 0xffffffff);
     			ti_gpio_write_4(sc, i, TI_GPIO_CLEARIRQENABLE2, 0xffffffff);
    +
    +			/* Init OE register based on pads configuration */
    +			reg_oe = 0xffffffff;
    +			for (pin = 0; pin < 32; pin++) {
    +				ti_scm_padconf_get_gpioflags(
    +				    PINS_PER_BANK*i + pin, &flags);
    +				if (flags & GPIO_PIN_OUTPUT)
    +					reg_oe &= ~(1U << pin);
    +			}
    +
    +			ti_gpio_write_4(sc, i, TI_GPIO_OE, reg_oe);
     		}
     	}
     
    
    Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -48,6 +48,14 @@ uint64_t metaslab_aliquot = 512ULL << 10
     uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1;	/* force gang blocks */
     
     /*
    + * The in-core space map representation is more compact than its on-disk form.
    + * The zfs_condense_pct determines how much more compact the in-core
    + * space_map representation must be before we compact it on-disk.
    + * Values should be greater than or equal to 100.
    + */
    +int zfs_condense_pct = 200;
    +
    +/*
      * This value defines the number of allowed allocation failures per vdev.
      * If a device reaches this threshold in a given txg then we consider skipping
      * allocations on that device.
    @@ -215,9 +223,9 @@ metaslab_compare(const void *x1, const v
     	/*
     	 * If the weights are identical, use the offset to force uniqueness.
     	 */
    -	if (m1->ms_map.sm_start < m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start < m2->ms_map->sm_start)
     		return (-1);
    -	if (m1->ms_map.sm_start > m2->ms_map.sm_start)
    +	if (m1->ms_map->sm_start > m2->ms_map->sm_start)
     		return (1);
     
     	ASSERT3P(m1, ==, m2);
    @@ -732,14 +740,15 @@ metaslab_init(metaslab_group_t *mg, spac
     	 * addition of new space; and for debugging, it ensures that we'd
     	 * data fault on any attempt to use this metaslab before it's ready.
     	 */
    -	space_map_create(&msp->ms_map, start, size,
    +	msp->ms_map = kmem_zalloc(sizeof (space_map_t), KM_SLEEP);
    +	space_map_create(msp->ms_map, start, size,
     	    vd->vdev_ashift, &msp->ms_lock);
     
     	metaslab_group_add(mg, msp);
     
     	if (metaslab_debug && smo->smo_object != 0) {
     		mutex_enter(&msp->ms_lock);
    -		VERIFY(space_map_load(&msp->ms_map, mg->mg_class->mc_ops,
    +		VERIFY(space_map_load(msp->ms_map, mg->mg_class->mc_ops,
     		    SM_FREE, smo, spa_meta_objset(vd->vdev_spa)) == 0);
     		mutex_exit(&msp->ms_lock);
     	}
    @@ -767,22 +776,27 @@ metaslab_fini(metaslab_t *msp)
     	metaslab_group_t *mg = msp->ms_group;
     
     	vdev_space_update(mg->mg_vd,
    -	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map.sm_size);
    +	    -msp->ms_smo.smo_alloc, 0, -msp->ms_map->sm_size);
     
     	metaslab_group_remove(mg, msp);
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_unload(&msp->ms_map);
    -	space_map_destroy(&msp->ms_map);
    +	space_map_unload(msp->ms_map);
    +	space_map_destroy(msp->ms_map);
    +	kmem_free(msp->ms_map, sizeof (*msp->ms_map));
     
     	for (int t = 0; t < TXG_SIZE; t++) {
    -		space_map_destroy(&msp->ms_allocmap[t]);
    -		space_map_destroy(&msp->ms_freemap[t]);
    +		space_map_destroy(msp->ms_allocmap[t]);
    +		space_map_destroy(msp->ms_freemap[t]);
    +		kmem_free(msp->ms_allocmap[t], sizeof (*msp->ms_allocmap[t]));
    +		kmem_free(msp->ms_freemap[t], sizeof (*msp->ms_freemap[t]));
     	}
     
    -	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -		space_map_destroy(&msp->ms_defermap[t]);
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +		space_map_destroy(msp->ms_defermap[t]);
    +		kmem_free(msp->ms_defermap[t], sizeof (*msp->ms_defermap[t]));
    +	}
     
     	ASSERT0(msp->ms_deferspace);
     
    @@ -801,7 +815,7 @@ static uint64_t
     metaslab_weight(metaslab_t *msp)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	vdev_t *vd = mg->mg_vd;
     	uint64_t weight, space;
    @@ -809,6 +823,16 @@ metaslab_weight(metaslab_t *msp)
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
     
     	/*
    +	 * This vdev is in the process of being removed so there is nothing
    +	 * for us to do here.
    +	 */
    +	if (vd->vdev_removing) {
    +		ASSERT0(smo->smo_alloc);
    +		ASSERT0(vd->vdev_ms_shift);
    +		return (0);
    +	}
    +
    +	/*
     	 * The baseline weight is the metaslab's free space.
     	 */
     	space = sm->sm_size - smo->smo_alloc;
    @@ -861,7 +885,7 @@ metaslab_prefetch(metaslab_group_t *mg)
     	 * Prefetch the next potential metaslabs
     	 */
     	for (msp = avl_first(t), m = 0; msp; msp = AVL_NEXT(t, msp), m++) {
    -		space_map_t *sm = &msp->ms_map;
    +		space_map_t *sm = msp->ms_map;
     		space_map_obj_t *smo = &msp->ms_smo;
     
     		/* If we have reached our prefetch limit then we're done */
    @@ -882,7 +906,7 @@ static int
     metaslab_activate(metaslab_t *msp, uint64_t activation_weight)
     {
     	metaslab_group_t *mg = msp->ms_group;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_ops_t *sm_ops = msp->ms_group->mg_class->mc_ops;
     
     	ASSERT(MUTEX_HELD(&msp->ms_lock));
    @@ -899,7 +923,7 @@ metaslab_activate(metaslab_t *msp, uint6
     				return (error);
     			}
     			for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -				space_map_walk(&msp->ms_defermap[t],
    +				space_map_walk(msp->ms_defermap[t],
     				    space_map_claim, sm);
     
     		}
    @@ -930,12 +954,158 @@ metaslab_passivate(metaslab_t *msp, uint
     	 * this metaslab again.  In that case, it had better be empty,
     	 * or we would be leaving space on the table.
     	 */
    -	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map.sm_space == 0);
    +	ASSERT(size >= SPA_MINBLOCKSIZE || msp->ms_map->sm_space == 0);
     	metaslab_group_sort(msp->ms_group, msp, MIN(msp->ms_weight, size));
     	ASSERT((msp->ms_weight & METASLAB_ACTIVE_MASK) == 0);
     }
     
     /*
    + * Determine if the in-core space map representation can be condensed on-disk.
    + * We would like to use the following criteria to make our decision:
    + *
    + * 1. The size of the space map object should not dramatically increase as a
    + * result of writing out our in-core free map.
    + *
    + * 2. The minimal on-disk space map representation is zfs_condense_pct/100
    + * times the size than the in-core representation (i.e. zfs_condense_pct = 110
    + * and in-core = 1MB, minimal = 1.1.MB).
    + *
    + * Checking the first condition is tricky since we don't want to walk
    + * the entire AVL tree calculating the estimated on-disk size. Instead we
    + * use the size-ordered AVL tree in the space map and calculate the
    + * size required for the largest segment in our in-core free map. If the
    + * size required to represent that segment on disk is larger than the space
    + * map object then we avoid condensing this map.
    + *
    + * To determine the second criterion we use a best-case estimate and assume
    + * each segment can be represented on-disk as a single 64-bit entry. We refer
    + * to this best-case estimate as the space map's minimal form.
    + */
    +static boolean_t
    +metaslab_should_condense(metaslab_t *msp)
    +{
    +	space_map_t *sm = msp->ms_map;
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +	space_seg_t *ss;
    +	uint64_t size, entries, segsz;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT(sm->sm_loaded);
    +
    +	/*
    +	 * Use the sm_pp_root AVL tree, which is ordered by size, to obtain
    +	 * the largest segment in the in-core free map. If the tree is
    +	 * empty then we should condense the map.
    +	 */
    +	ss = avl_last(sm->sm_pp_root);
    +	if (ss == NULL)
    +		return (B_TRUE);
    +
    +	/*
    +	 * Calculate the number of 64-bit entries this segment would
    +	 * require when written to disk. If this single segment would be
    +	 * larger on-disk than the entire current on-disk structure, then
    +	 * clearly condensing will increase the on-disk structure size.
    +	 */
    +	size = (ss->ss_end - ss->ss_start) >> sm->sm_shift;
    +	entries = size / (MIN(size, SM_RUN_MAX));
    +	segsz = entries * sizeof (uint64_t);
    +
    +	return (segsz <= smo->smo_objsize &&
    +	    smo->smo_objsize >= (zfs_condense_pct *
    +	    sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) / 100);
    +}
    +
    +/*
    + * Condense the on-disk space map representation to its minimized form.
    + * The minimized form consists of a small number of allocations followed by
    + * the in-core free map.
    + */
    +static void
    +metaslab_condense(metaslab_t *msp, uint64_t txg, dmu_tx_t *tx)
    +{
    +	spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
    +	space_map_t *freemap = msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t condense_map;
    +	space_map_t *sm = msp->ms_map;
    +	objset_t *mos = spa_meta_objset(spa);
    +	space_map_obj_t *smo = &msp->ms_smo_syncing;
    +
    +	ASSERT(MUTEX_HELD(&msp->ms_lock));
    +	ASSERT3U(spa_sync_pass(spa), ==, 1);
    +	ASSERT(sm->sm_loaded);
    +
    +	spa_dbgmsg(spa, "condensing: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu, segments %lu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize, avl_numnodes(&sm->sm_root));
    +
    +	/*
    +	 * Create an map that is a 100% allocated map. We remove segments
    +	 * that have been freed in this txg, any deferred frees that exist,
    +	 * and any allocation in the future. Removing segments should be
    +	 * a relatively inexpensive operation since we expect these maps to
    +	 * a small number of nodes.
    +	 */
    +	space_map_create(&condense_map, sm->sm_start, sm->sm_size,
    +	    sm->sm_shift, sm->sm_lock);
    +	space_map_add(&condense_map, condense_map.sm_start,
    +	    condense_map.sm_size);
    +
    +	/*
    +	 * Remove what's been freed in this txg from the condense_map.
    +	 * Since we're in sync_pass 1, we know that all the frees from
    +	 * this txg are in the freemap.
    +	 */
    +	space_map_walk(freemap, space_map_remove, &condense_map);
    +
    +	for (int t = 0; t < TXG_DEFER_SIZE; t++)
    +		space_map_walk(msp->ms_defermap[t],
    +		    space_map_remove, &condense_map);
    +
    +	for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    +		space_map_walk(msp->ms_allocmap[(txg + t) & TXG_MASK],
    +		    space_map_remove, &condense_map);
    +
    +	/*
    +	 * We're about to drop the metaslab's lock thus allowing
    +	 * other consumers to change it's content. Set the
    +	 * space_map's sm_condensing flag to ensure that
    +	 * allocations on this metaslab do not occur while we're
    +	 * in the middle of committing it to disk. This is only critical
    +	 * for the ms_map as all other space_maps use per txg
    +	 * views of their content.
    +	 */
    +	sm->sm_condensing = B_TRUE;
    +
    +	mutex_exit(&msp->ms_lock);
    +	space_map_truncate(smo, mos, tx);
    +	mutex_enter(&msp->ms_lock);
    +
    +	/*
    +	 * While we would ideally like to create a space_map representation
    +	 * that consists only of allocation records, doing so can be
    +	 * prohibitively expensive because the in-core free map can be
    +	 * large, and therefore computationally expensive to subtract
    +	 * from the condense_map. Instead we sync out two maps, a cheap
    +	 * allocation only map followed by the in-core free map. While not
    +	 * optimal, this is typically close to optimal, and much cheaper to
    +	 * compute.
    +	 */
    +	space_map_sync(&condense_map, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&condense_map, NULL, NULL);
    +	space_map_destroy(&condense_map);
    +
    +	space_map_sync(sm, SM_FREE, smo, mos, tx);
    +	sm->sm_condensing = B_FALSE;
    +
    +	spa_dbgmsg(spa, "condensed: txg %llu, msp[%llu] %p, "
    +	    "smo size %llu", txg,
    +	    (msp->ms_map->sm_start / msp->ms_map->sm_size), msp,
    +	    smo->smo_objsize);
    +}
    +
    +/*
      * Write a metaslab to disk in the context of the specified transaction group.
      */
     void
    @@ -944,17 +1114,29 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
     	objset_t *mos = spa_meta_objset(spa);
    -	space_map_t *allocmap = &msp->ms_allocmap[txg & TXG_MASK];
    -	space_map_t *freemap = &msp->ms_freemap[txg & TXG_MASK];
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *allocmap = msp->ms_allocmap[txg & TXG_MASK];
    +	space_map_t **freemap = &msp->ms_freemap[txg & TXG_MASK];
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo_syncing;
     	dmu_buf_t *db;
     	dmu_tx_t *tx;
     
     	ASSERT(!vd->vdev_ishole);
     
    -	if (allocmap->sm_space == 0 && freemap->sm_space == 0)
    +	/*
    +	 * This metaslab has just been added so there's no work to do now.
    +	 */
    +	if (*freemap == NULL) {
    +		ASSERT3P(allocmap, ==, NULL);
    +		return;
    +	}
    +
    +	ASSERT3P(allocmap, !=, NULL);
    +	ASSERT3P(*freemap, !=, NULL);
    +	ASSERT3P(*freed_map, !=, NULL);
    +
    +	if (allocmap->sm_space == 0 && (*freemap)->sm_space == 0)
     		return;
     
     	/*
    @@ -982,49 +1164,36 @@ metaslab_sync(metaslab_t *msp, uint64_t 
     
     	mutex_enter(&msp->ms_lock);
     
    -	space_map_walk(freemap, space_map_add, freed_map);
    -
    -	if (sm->sm_loaded && spa_sync_pass(spa) == 1 && smo->smo_objsize >=
    -	    2 * sizeof (uint64_t) * avl_numnodes(&sm->sm_root)) {
    -		/*
    -		 * The in-core space map representation is twice as compact
    -		 * as the on-disk one, so it's time to condense the latter
    -		 * by generating a pure allocmap from first principles.
    -		 *
    -		 * This metaslab is 100% allocated,
    -		 * minus the content of the in-core map (sm),
    -		 * minus what's been freed this txg (freed_map),
    -		 * minus deferred frees (ms_defermap[]),
    -		 * minus allocations from txgs in the future
    -		 * (because they haven't been committed yet).
    -		 */
    -		space_map_vacate(allocmap, NULL, NULL);
    -		space_map_vacate(freemap, NULL, NULL);
    -
    -		space_map_add(allocmap, allocmap->sm_start, allocmap->sm_size);
    -
    -		space_map_walk(sm, space_map_remove, allocmap);
    -		space_map_walk(freed_map, space_map_remove, allocmap);
    -
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_walk(&msp->ms_defermap[t],
    -			    space_map_remove, allocmap);
    +	if (sm->sm_loaded && spa_sync_pass(spa) == 1 &&
    +	    metaslab_should_condense(msp)) {
    +		metaslab_condense(msp, txg, tx);
    +	} else {
    +		space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    +		space_map_sync(*freemap, SM_FREE, smo, mos, tx);
    +	}
     
    -		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			space_map_walk(&msp->ms_allocmap[(txg + t) & TXG_MASK],
    -			    space_map_remove, allocmap);
    +	space_map_vacate(allocmap, NULL, NULL);
     
    -		mutex_exit(&msp->ms_lock);
    -		space_map_truncate(smo, mos, tx);
    -		mutex_enter(&msp->ms_lock);
    +	/*
    +	 * For sync pass 1, we avoid walking the entire space map and
    +	 * instead will just swap the pointers for freemap and
    +	 * freed_map. We can safely do this since the freed_map is
    +	 * guaranteed to be empty on the initial pass.
    +	 */
    +	if (spa_sync_pass(spa) == 1) {
    +		ASSERT0((*freed_map)->sm_space);
    +		ASSERT0(avl_numnodes(&(*freed_map)->sm_root));
    +		space_map_swap(freemap, freed_map);
    +	} else {
    +		space_map_vacate(*freemap, space_map_add, *freed_map);
     	}
     
    -	space_map_sync(allocmap, SM_ALLOC, smo, mos, tx);
    -	space_map_sync(freemap, SM_FREE, smo, mos, tx);
    +	ASSERT0(msp->ms_allocmap[txg & TXG_MASK]->sm_space);
    +	ASSERT0(msp->ms_freemap[txg & TXG_MASK]->sm_space);
     
     	mutex_exit(&msp->ms_lock);
     
    -	VERIFY(0 == dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
    +	VERIFY0(dmu_bonus_hold(mos, smo->smo_object, FTAG, &db));
     	dmu_buf_will_dirty(db, tx);
     	ASSERT3U(db->db_size, >=, sizeof (*smo));
     	bcopy(smo, db->db_data, sizeof (*smo));
    @@ -1042,9 +1211,9 @@ metaslab_sync_done(metaslab_t *msp, uint
     {
     	space_map_obj_t *smo = &msp->ms_smo;
     	space_map_obj_t *smosync = &msp->ms_smo_syncing;
    -	space_map_t *sm = &msp->ms_map;
    -	space_map_t *freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    -	space_map_t *defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
    +	space_map_t *sm = msp->ms_map;
    +	space_map_t **freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +	space_map_t **defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     	metaslab_group_t *mg = msp->ms_group;
     	vdev_t *vd = mg->mg_vd;
     	int64_t alloc_delta, defer_delta;
    @@ -1055,40 +1224,57 @@ metaslab_sync_done(metaslab_t *msp, uint
     
     	/*
     	 * If this metaslab is just becoming available, initialize its
    -	 * allocmaps and freemaps and add its capacity to the vdev.
    +	 * allocmaps, freemaps, and defermap and add its capacity to the vdev.
     	 */
    -	if (freed_map->sm_size == 0) {
    +	if (*freed_map == NULL) {
    +		ASSERT(*defer_map == NULL);
     		for (int t = 0; t < TXG_SIZE; t++) {
    -			space_map_create(&msp->ms_allocmap[t], sm->sm_start,
    +			msp->ms_allocmap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_allocmap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    -			space_map_create(&msp->ms_freemap[t], sm->sm_start,
    +			msp->ms_freemap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_freemap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
     		}
     
    -		for (int t = 0; t < TXG_DEFER_SIZE; t++)
    -			space_map_create(&msp->ms_defermap[t], sm->sm_start,
    +		for (int t = 0; t < TXG_DEFER_SIZE; t++) {
    +			msp->ms_defermap[t] = kmem_zalloc(sizeof (space_map_t),
    +			    KM_SLEEP);
    +			space_map_create(msp->ms_defermap[t], sm->sm_start,
     			    sm->sm_size, sm->sm_shift, sm->sm_lock);
    +		}
    +
    +		freed_map = &msp->ms_freemap[TXG_CLEAN(txg) & TXG_MASK];
    +		defer_map = &msp->ms_defermap[txg % TXG_DEFER_SIZE];
     
     		vdev_space_update(vd, 0, 0, sm->sm_size);
     	}
     
     	alloc_delta = smosync->smo_alloc - smo->smo_alloc;
    -	defer_delta = freed_map->sm_space - defer_map->sm_space;
    +	defer_delta = (*freed_map)->sm_space - (*defer_map)->sm_space;
     
     	vdev_space_update(vd, alloc_delta + defer_delta, defer_delta, 0);
     
    -	ASSERT(msp->ms_allocmap[txg & TXG_MASK].sm_space == 0);
    -	ASSERT(msp->ms_freemap[txg & TXG_MASK].sm_space == 0);
    +	ASSERT(msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0);
    +	ASSERT(msp->ms_freemap[txg & TXG_MASK]->sm_space == 0);
     
     	/*
     	 * If there's a space_map_load() in progress, wait for it to complete
     	 * so that we have a consistent view of the in-core space map.
    -	 * Then, add defer_map (oldest deferred frees) to this map and
    -	 * transfer freed_map (this txg's frees) to defer_map.
     	 */
     	space_map_load_wait(sm);
    -	space_map_vacate(defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    -	space_map_vacate(freed_map, space_map_add, defer_map);
    +
    +	/*
    +	 * Move the frees from the defer_map to this map (if it's loaded).
    +	 * Swap the freed_map and the defer_map -- this is safe to do
    +	 * because we've just emptied out the defer_map.
    +	 */
    +	space_map_vacate(*defer_map, sm->sm_loaded ? space_map_free : NULL, sm);
    +	ASSERT0((*defer_map)->sm_space);
    +	ASSERT0(avl_numnodes(&(*defer_map)->sm_root));
    +	space_map_swap(freed_map, defer_map);
     
     	*smo = *smosync;
     
    @@ -1112,7 +1298,7 @@ metaslab_sync_done(metaslab_t *msp, uint
     		int evictable = 1;
     
     		for (int t = 1; t < TXG_CONCURRENT_STATES; t++)
    -			if (msp->ms_allocmap[(txg + t) & TXG_MASK].sm_space)
    +			if (msp->ms_allocmap[(txg + t) & TXG_MASK]->sm_space)
     				evictable = 0;
     
     		if (evictable && !metaslab_debug)
    @@ -1137,7 +1323,7 @@ metaslab_sync_reassess(metaslab_group_t 
     	for (int m = 0; m < vd->vdev_ms_count; m++) {
     		metaslab_t *msp = vd->vdev_ms[m];
     
    -		if (msp->ms_map.sm_start > mg->mg_bonus_area)
    +		if (msp->ms_map->sm_start > mg->mg_bonus_area)
     			break;
     
     		mutex_enter(&msp->ms_lock);
    @@ -1158,7 +1344,7 @@ metaslab_distance(metaslab_t *msp, dva_t
     {
     	uint64_t ms_shift = msp->ms_group->mg_vd->vdev_ms_shift;
     	uint64_t offset = DVA_GET_OFFSET(dva) >> ms_shift;
    -	uint64_t start = msp->ms_map.sm_start >> ms_shift;
    +	uint64_t start = msp->ms_map->sm_start >> ms_shift;
     
     	if (msp->ms_group->mg_vd->vdev_id != DVA_GET_VDEV(dva))
     		return (1ULL << 63);
    @@ -1206,6 +1392,13 @@ metaslab_group_alloc(metaslab_group_t *m
     				mutex_exit(&mg->mg_lock);
     				return (-1ULL);
     			}
    +
    +			/*
    +			 * If the selected metaslab is condensing, skip it.
    +			 */
    +			if (msp->ms_map->sm_condensing)
    +				continue;
    +
     			was_active = msp->ms_weight & METASLAB_ACTIVE_MASK;
     			if (activation_weight == METASLAB_WEIGHT_PRIMARY)
     				break;
    @@ -1271,20 +1464,30 @@ metaslab_group_alloc(metaslab_group_t *m
     			continue;
     		}
     
    -		if ((offset = space_map_alloc(&msp->ms_map, asize)) != -1ULL)
    +		/*
    +		 * If this metaslab is currently condensing then pick again as
    +		 * we can't manipulate this metaslab until it's committed
    +		 * to disk.
    +		 */
    +		if (msp->ms_map->sm_condensing) {
    +			mutex_exit(&msp->ms_lock);
    +			continue;
    +		}
    +
    +		if ((offset = space_map_alloc(msp->ms_map, asize)) != -1ULL)
     			break;
     
     		atomic_inc_64(&mg->mg_alloc_failures);
     
    -		metaslab_passivate(msp, space_map_maxsize(&msp->ms_map));
    +		metaslab_passivate(msp, space_map_maxsize(msp->ms_map));
     
     		mutex_exit(&msp->ms_lock);
     	}
     
    -	if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +	if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     		vdev_dirty(mg->mg_vd, VDD_METASLAB, msp, txg);
     
    -	space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, asize);
    +	space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, asize);
     
     	mutex_exit(&msp->ms_lock);
     
    @@ -1516,13 +1719,13 @@ metaslab_free_dva(spa_t *spa, const dva_
     	mutex_enter(&msp->ms_lock);
     
     	if (now) {
    -		space_map_remove(&msp->ms_allocmap[txg & TXG_MASK],
    +		space_map_remove(msp->ms_allocmap[txg & TXG_MASK],
     		    offset, size);
    -		space_map_free(&msp->ms_map, offset, size);
    +		space_map_free(msp->ms_map, offset, size);
     	} else {
    -		if (msp->ms_freemap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_freemap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_freemap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_freemap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    @@ -1557,10 +1760,10 @@ metaslab_claim_dva(spa_t *spa, const dva
     
     	mutex_enter(&msp->ms_lock);
     
    -	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map.sm_loaded)
    +	if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map->sm_loaded)
     		error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY);
     
    -	if (error == 0 && !space_map_contains(&msp->ms_map, offset, size))
    +	if (error == 0 && !space_map_contains(msp->ms_map, offset, size))
     		error = ENOENT;
     
     	if (error || txg == 0) {	/* txg == 0 indicates dry run */
    @@ -1568,12 +1771,12 @@ metaslab_claim_dva(spa_t *spa, const dva
     		return (error);
     	}
     
    -	space_map_claim(&msp->ms_map, offset, size);
    +	space_map_claim(msp->ms_map, offset, size);
     
     	if (spa_writeable(spa)) {	/* don't dirty if we're zdb(1M) */
    -		if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0)
    +		if (msp->ms_allocmap[txg & TXG_MASK]->sm_space == 0)
     			vdev_dirty(vd, VDD_METASLAB, msp, txg);
    -		space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, size);
    +		space_map_add(msp->ms_allocmap[txg & TXG_MASK], offset, size);
     	}
     
     	mutex_exit(&msp->ms_lock);
    
    Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -114,6 +114,7 @@ space_map_add(space_map_t *sm, uint64_t 
     	int merge_before, merge_after;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY3U(start, >=, sm->sm_start);
     	VERIFY3U(end, <=, sm->sm_start + sm->sm_size);
    @@ -198,6 +199,7 @@ space_map_remove(space_map_t *sm, uint64
     	int left_over, right_over;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    +	VERIFY(!sm->sm_condensing);
     	VERIFY(size != 0);
     	VERIFY(P2PHASE(start, 1ULL << sm->sm_shift) == 0);
     	VERIFY(P2PHASE(size, 1ULL << sm->sm_shift) == 0);
    @@ -267,6 +269,20 @@ space_map_contains(space_map_t *sm, uint
     }
     
     void
    +space_map_swap(space_map_t **msrc, space_map_t **mdst)
    +{
    +	space_map_t *sm;
    +
    +	ASSERT(MUTEX_HELD((*msrc)->sm_lock));
    +	ASSERT0((*mdst)->sm_space);
    +	ASSERT0(avl_numnodes(&(*mdst)->sm_root));
    +
    +	sm = *msrc;
    +	*msrc = *mdst;
    +	*mdst = sm;
    +}
    +
    +void
     space_map_vacate(space_map_t *sm, space_map_func_t *func, space_map_t *mdest)
     {
     	space_seg_t *ss;
    @@ -447,9 +463,9 @@ space_map_sync(space_map_t *sm, uint8_t 
     	space_map_obj_t *smo, objset_t *os, dmu_tx_t *tx)
     {
     	spa_t *spa = dmu_objset_spa(os);
    -	void *cookie = NULL;
    +	avl_tree_t *t = &sm->sm_root;
     	space_seg_t *ss;
    -	uint64_t bufsize, start, size, run_len, delta, sm_space;
    +	uint64_t bufsize, start, size, run_len, total, sm_space, nodes;
     	uint64_t *entry, *entry_map, *entry_map_end;
     
     	ASSERT(MUTEX_HELD(sm->sm_lock));
    @@ -478,13 +494,14 @@ space_map_sync(space_map_t *sm, uint8_t 
     	    SM_DEBUG_SYNCPASS_ENCODE(spa_sync_pass(spa)) |
     	    SM_DEBUG_TXG_ENCODE(dmu_tx_get_txg(tx));
     
    -	delta = 0;
    +	total = 0;
    +	nodes = avl_numnodes(&sm->sm_root);
     	sm_space = sm->sm_space;
    -	while ((ss = avl_destroy_nodes(&sm->sm_root, &cookie)) != NULL) {
    +	for (ss = avl_first(t); ss != NULL; ss = AVL_NEXT(t, ss)) {
     		size = ss->ss_end - ss->ss_start;
     		start = (ss->ss_start - sm->sm_start) >> sm->sm_shift;
     
    -		delta += size;
    +		total += size;
     		size >>= sm->sm_shift;
     
     		while (size) {
    @@ -506,7 +523,6 @@ space_map_sync(space_map_t *sm, uint8_t 
     			start += run_len;
     			size -= run_len;
     		}
    -		kmem_cache_free(space_seg_cache, ss);
     	}
     
     	if (entry != entry_map) {
    @@ -522,12 +538,11 @@ space_map_sync(space_map_t *sm, uint8_t 
     	 * Ensure that the space_map's accounting wasn't changed
     	 * while we were in the middle of writing it out.
     	 */
    +	VERIFY3U(nodes, ==, avl_numnodes(&sm->sm_root));
     	VERIFY3U(sm->sm_space, ==, sm_space);
    +	VERIFY3U(sm->sm_space, ==, total);
     
     	zio_buf_free(entry_map, bufsize);
    -
    -	sm->sm_space -= delta;
    -	VERIFY0(sm->sm_space);
     }
     
     void
    
    Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
    ==============================================================================
    --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -66,20 +66,38 @@ struct metaslab_group {
     };
     
     /*
    - * Each metaslab's free space is tracked in space map object in the MOS,
    - * which is only updated in syncing context.  Each time we sync a txg,
    + * Each metaslab maintains an in-core free map (ms_map) that contains the
    + * current list of free segments. As blocks are allocated, the allocated
    + * segment is removed from the ms_map and added to a per txg allocation map.
    + * As blocks are freed, they are added to the per txg free map. These per
    + * txg maps allow us to process all allocations and frees in syncing context
    + * where it is safe to update the on-disk space maps.
    + *
    + * Each metaslab's free space is tracked in a space map object in the MOS,
    + * which is only updated in syncing context. Each time we sync a txg,
      * we append the allocs and frees from that txg to the space map object.
      * When the txg is done syncing, metaslab_sync_done() updates ms_smo
    - * to ms_smo_syncing.  Everything in ms_smo is always safe to allocate.
    + * to ms_smo_syncing. Everything in ms_smo is always safe to allocate.
    + *
    + * To load the in-core free map we read the space map object from disk.
    + * This object contains a series of alloc and free records that are
    + * combined to make up the list of all free segments in this metaslab. These
    + * segments are represented in-core by the ms_map and are stored in an
    + * AVL tree.
    + *
    + * As the space map objects grows (as a result of the appends) it will
    + * eventually become space-inefficient. When the space map object is
    + * zfs_condense_pct/100 times the size of the minimal on-disk representation,
    + * we rewrite it in its minimized form.
      */
     struct metaslab {
     	kmutex_t	ms_lock;	/* metaslab lock		*/
     	space_map_obj_t	ms_smo;		/* synced space map object	*/
     	space_map_obj_t	ms_smo_syncing;	/* syncing space map object	*/
    -	space_map_t	ms_allocmap[TXG_SIZE];  /* allocated this txg	*/
    -	space_map_t	ms_freemap[TXG_SIZE];	/* freed this txg	*/
    -	space_map_t	ms_defermap[TXG_DEFER_SIZE]; /* deferred frees	*/
    -	space_map_t	ms_map;		/* in-core free space map	*/
    +	space_map_t	*ms_allocmap[TXG_SIZE];	/* allocated this txg	*/
    +	space_map_t	*ms_freemap[TXG_SIZE];	/* freed this txg	*/
    +	space_map_t	*ms_defermap[TXG_DEFER_SIZE];	/* deferred frees */
    +	space_map_t	*ms_map;	/* in-core free space map	*/
     	int64_t		ms_deferspace;	/* sum of ms_defermap[] space	*/
     	uint64_t	ms_weight;	/* weight vs. others in group	*/
     	metaslab_group_t *ms_group;	/* metaslab group		*/
    
    Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
    ==============================================================================
    --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -40,17 +40,17 @@ extern "C" {
     typedef struct space_map_ops space_map_ops_t;
     
     typedef struct space_map {
    -	avl_tree_t	sm_root;	/* AVL tree of map segments */
    +	avl_tree_t	sm_root;	/* offset-ordered segment AVL tree */
     	uint64_t	sm_space;	/* sum of all segments in the map */
     	uint64_t	sm_start;	/* start of map */
     	uint64_t	sm_size;	/* size of map */
     	uint8_t		sm_shift;	/* unit shift */
    -	uint8_t		sm_pad[3];	/* unused */
     	uint8_t		sm_loaded;	/* map loaded? */
     	uint8_t		sm_loading;	/* map loading? */
    +	uint8_t		sm_condensing;	/* map condensing? */
     	kcondvar_t	sm_load_cv;	/* map load completion */
     	space_map_ops_t	*sm_ops;	/* space map block picker ops vector */
    -	avl_tree_t	*sm_pp_root;	/* picker-private AVL tree */
    +	avl_tree_t	*sm_pp_root;	/* size-ordered, picker-private tree */
     	void		*sm_ppd;	/* picker-private data */
     	kmutex_t	*sm_lock;	/* pointer to lock that protects map */
     } space_map_t;
    @@ -149,6 +149,7 @@ extern void space_map_add(space_map_t *s
     extern void space_map_remove(space_map_t *sm, uint64_t start, uint64_t size);
     extern boolean_t space_map_contains(space_map_t *sm,
         uint64_t start, uint64_t size);
    +extern void space_map_swap(space_map_t **msrc, space_map_t **mdest);
     extern void space_map_vacate(space_map_t *sm,
         space_map_func_t *func, space_map_t *mdest);
     extern void space_map_walk(space_map_t *sm,
    
    Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -1847,6 +1847,7 @@ vdev_dtl_sync(vdev_t *vd, uint64_t txg)
     
     	space_map_truncate(smo, mos, tx);
     	space_map_sync(&smsync, SM_ALLOC, smo, mos, tx);
    +	space_map_vacate(&smsync, NULL, NULL);
     
     	space_map_destroy(&smsync);
     
    
    Modified: user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -692,6 +692,10 @@ ath_hal_getcapability(struct ath_hal *ah
     		return pCap->hal4AddrAggrSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_EXT_CHAN_DFS:
     		return pCap->halExtChanDfsSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_RX_STBC:
    +		return pCap->halRxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
    +	case HAL_CAP_TX_STBC:
    +		return pCap->halTxStbcSupport ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_COMBINED_RADAR_RSSI:
     		return pCap->halUseCombinedRadarRssi ? HAL_OK : HAL_ENOTSUPP;
     	case HAL_CAP_AUTO_SLEEP:
    
    Modified: user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h
    ==============================================================================
    --- user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -137,6 +137,9 @@ typedef enum {
     	HAL_CAP_RIFS_RX_ENABLED	= 53,
     	HAL_CAP_BB_DFS_HANG	= 54,
     
    +	HAL_CAP_RX_STBC		= 58,
    +	HAL_CAP_TX_STBC		= 59,
    +
     	HAL_CAP_BT_COEX		= 60,	/* hardware is capable of bluetooth coexistence */
     	HAL_CAP_DYNAMIC_SMPS	= 61,	/* Dynamic MIMO Power Save hardware support */
     
    
    Modified: user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:23:12 2013	(r247402)
    +++ user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c	Wed Feb 27 18:25:57 2013	(r247403)
    @@ -708,71 +708,6 @@ ath_rate_setupxtxdesc(struct ath_softc *
     	    s3code, sched->t3);		/* series 3 */
     }
     
    -/*
    - * Update the EWMA percentage.
    - *
    - * This is a simple hack to track an EWMA based on the current
    - * rate scenario. For the rate codes which failed, this will
    - * record a 0% against it. For the rate code which succeeded,
    - * EWMA will record the nbad*100/nframes percentage against it.
    - */
    -static void
    -update_ewma_stats(struct ath_softc *sc, struct ath_node *an,
    -    int frame_size,
    -    int rix0, int tries0,
    -    int rix1, int tries1,
    -    int rix2, int tries2,
    -    int rix3, int tries3,
    -    int short_tries, int tries, int status,
    -    int nframes, int nbad)
    -{
    -	struct sample_node *sn = ATH_NODE_SAMPLE(an);
    -	struct sample_softc *ssc = ATH_SOFTC_SAMPLE(sc);
    -	const int size_bin = size_to_bin(frame_size);
    -	int tries_so_far;
    -	int pct;
    -	int rix = rix0;
    -
    -	/* Calculate percentage based on current rate */
    -	if (nframes == 0)
    -		nframes = nbad = 1;
    -	pct = ((nframes - nbad) * 1000) / nframes;
    -
    -	/* Figure out which rate index succeeded */
    -	tries_so_far = tries0;
    -
    -	if (tries1 && tries_so_far < tries) {
    -		tries_so_far += tries1;
    -		rix = rix1;
    -		/* XXX bump ewma pct */
    -	}
    -
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Wed Feb 27 18:47:02 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id 27164113;
     Wed, 27 Feb 2013 18:47:02 +0000 (UTC) (envelope-from pho@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 08F91799;
     Wed, 27 Feb 2013 18:47:02 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1RIl1XZ060867;
     Wed, 27 Feb 2013 18:47:01 GMT (envelope-from pho@svn.freebsd.org)
    Received: (from pho@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1RIl1q8060866;
     Wed, 27 Feb 2013 18:47:01 GMT (envelope-from pho@svn.freebsd.org)
    Message-Id: <201302271847.r1RIl1q8060866@svn.freebsd.org>
    From: Peter Holm 
    Date: Wed, 27 Feb 2013 18:47:01 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247404 - user/pho/stress2/misc
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 27 Feb 2013 18:47:02 -0000
    
    Author: pho
    Date: Wed Feb 27 18:47:01 2013
    New Revision: 247404
    URL: http://svnweb.freebsd.org/changeset/base/247404
    
    Log:
      Regression test for r247399 added.
    
    Added:
      user/pho/stress2/misc/suj32.sh   (contents, props changed)
    
    Added: user/pho/stress2/misc/suj32.sh
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/pho/stress2/misc/suj32.sh	Wed Feb 27 18:47:01 2013	(r247404)
    @@ -0,0 +1,95 @@
    +#!/bin/sh
    +
    +#
    +# Copyright (c) 2013 Peter Holm 
    +# 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.
    +#
    +# $FreeBSD$
    +#
    +
    +# tunefs -j enable is not aware of the indirect blocks.
    +# Problem fixed in r247399.
    +
    +
    +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
    +
    +. ../default.cfg
    +
    +here=`pwd`
    +cd /tmp
    +sed '1,/^EOF/d' < $here/$0 > suj32.c
    +cc -o suj32 -Wall -Wextra -O2 suj32.c || exit 1
    +rm -f suj32.c
    +cd $here
    +
    +mount | grep "${mntpoint}" | grep -q md${mdstart} && umount ${mntpoint}
    +mdconfig -l | grep -q md${mdstart} &&  mdconfig -d -u ${mdstart}
    +
    +mdconfig -a -t swap -s 5g -u ${mdstart}
    +bsdlabel -w md${mdstart} auto
    +newfs -U md${mdstart}${part} > /dev/null
    +mount /dev/md${mdstart}$part $mntpoint
    +
    +# fill the root directory to become larger than NIDIR * blksize
    +(cd $mntpoint; /tmp/suj32)
    +while mount | grep -q ${mntpoint}; do
    +	umount ${mntpoint} || sleep 1
    +done
    +
    +tunefs -j enable /dev/md${mdstart}$part
    +
    +if ! mount /dev/md${mdstart}$part $mntpoint; then
    +	echo FAIL
    +	fsck_ffs -y /dev/md${mdstart}$part
    +else
    +	umount $mntpoint
    +fi
    +
    +mdconfig -d -u ${mdstart}
    +rm -f /tmp/suj32
    +exit 0
    +EOF
    +#include 
    +#include 
    +#include 
    +
    +int
    +main(void)
    +{
    +	int i;
    +	char name[800];
    +	char *filler =
    +		"fillerfillerfillerfillerfillerfillerfillerfillerfiller"
    +		"fillerfillerfillerfillerfillerfillerfillerfillerfiller"
    +		"fillerfillerfillerfillerfillerfillerfillerfillerfiller"
    +		"fillerfillerfillerfillerfillerfillerfillerfillerfiller";
    +
    +	for (i = 0; i < 2000; i++) {
    +		snprintf(name, sizeof(name), "%s.%d", filler, i);
    +		if (mkdir(name, 00700) == -1)
    +			err(1, "mkdir(%s)", name);
    +	}
    +		
    +	return (0);
    +}
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 00:15:01 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id B5C441A5;
     Thu, 28 Feb 2013 00:15:01 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id A2944B90;
     Thu, 28 Feb 2013 00:15:01 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1S0F1cW061823;
     Thu, 28 Feb 2013 00:15:01 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1S0F0g3061799;
     Thu, 28 Feb 2013 00:15:00 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302280015.r1S0F0g3061799@svn.freebsd.org>
    From: Attilio Rao 
    Date: Thu, 28 Feb 2013 00:15:00 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247428 - in user/attilio/vmobj-rwlock/sys/arm: econa
     s3c2xx0 xscale/i80321 xscale/i8134x xscale/ixp425 xscale/pxa
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 00:15:01 -0000
    
    Author: attilio
    Date: Thu Feb 28 00:14:59 2013
    New Revision: 247428
    URL: http://svnweb.freebsd.org/changeset/base/247428
    
    Log:
      Revert some introduction of rwlock.h and remove unused
      vm/vm_pager.h vm/vnode_pager.h.
      
      Sponsored by:	EMC / Isilon storage division
    
    Modified:
      user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -68,9 +67,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -78,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -78,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -78,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -78,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -78,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:14:03 2013	(r247427)
    +++ user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:14:59 2013	(r247428)
    @@ -65,7 +65,6 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -80,9 +79,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 00:24:16 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 49C6EA6A;
     Thu, 28 Feb 2013 00:24:16 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 3A0D3CE0;
     Thu, 28 Feb 2013 00:24:16 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1S0OGP0064902;
     Thu, 28 Feb 2013 00:24:16 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1S0OET2064886;
     Thu, 28 Feb 2013 00:24:14 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302280024.r1S0OET2064886@svn.freebsd.org>
    From: Attilio Rao 
    Date: Thu, 28 Feb 2013 00:24:14 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247431 - in user/attilio/vmobj-rwlock: . include
     lib/libc/stdio sys/boot/common sys/dev/mfi sys/dev/watchdog sys/netinet
     sys/sys tools/regression/lib/libc/stdio tools/test/iconv/tableg...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 00:24:16 -0000
    
    Author: attilio
    Date: Thu Feb 28 00:24:13 2013
    New Revision: 247431
    URL: http://svnweb.freebsd.org/changeset/base/247431
    
    Log:
      MFC
    
    Added:
      user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.3
         - copied unchanged from r247429, head/lib/libc/stdio/open_memstream.3
      user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.c
         - copied unchanged from r247429, head/lib/libc/stdio/open_memstream.c
      user/attilio/vmobj-rwlock/lib/libc/stdio/open_wmemstream.c
         - copied unchanged from r247429, head/lib/libc/stdio/open_wmemstream.c
      user/attilio/vmobj-rwlock/tools/regression/lib/libc/stdio/test-open_memstream.c
         - copied unchanged from r247429, head/tools/regression/lib/libc/stdio/test-open_memstream.c
      user/attilio/vmobj-rwlock/tools/regression/lib/libc/stdio/test-open_memstream.t
         - copied unchanged from r247429, head/tools/regression/lib/libc/stdio/test-open_memstream.t
      user/attilio/vmobj-rwlock/tools/regression/lib/libc/stdio/test-open_wmemstream.c
         - copied unchanged from r247429, head/tools/regression/lib/libc/stdio/test-open_wmemstream.c
      user/attilio/vmobj-rwlock/tools/regression/lib/libc/stdio/test-open_wmemstream.t
         - copied unchanged from r247429, head/tools/regression/lib/libc/stdio/test-open_wmemstream.t
    Modified:
      user/attilio/vmobj-rwlock/UPDATING
      user/attilio/vmobj-rwlock/include/stdio.h
      user/attilio/vmobj-rwlock/include/wchar.h
      user/attilio/vmobj-rwlock/lib/libc/stdio/Makefile.inc
      user/attilio/vmobj-rwlock/lib/libc/stdio/Symbol.map
      user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c
      user/attilio/vmobj-rwlock/sys/dev/watchdog/watchdog.c
      user/attilio/vmobj-rwlock/sys/netinet/sctputil.c
      user/attilio/vmobj-rwlock/sys/sys/watchdog.h
      user/attilio/vmobj-rwlock/tools/regression/lib/libc/stdio/Makefile
      user/attilio/vmobj-rwlock/tools/test/iconv/tablegen/cmp.sh
      user/attilio/vmobj-rwlock/usr.sbin/watchdogd/watchdogd.8
      user/attilio/vmobj-rwlock/usr.sbin/watchdogd/watchdogd.c
    Directory Properties:
      user/attilio/vmobj-rwlock/   (props changed)
      user/attilio/vmobj-rwlock/lib/libc/   (props changed)
      user/attilio/vmobj-rwlock/sys/   (props changed)
      user/attilio/vmobj-rwlock/sys/boot/   (props changed)
    
    Modified: user/attilio/vmobj-rwlock/UPDATING
    ==============================================================================
    --- user/attilio/vmobj-rwlock/UPDATING	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/UPDATING	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130208:
    +	A new compression method (lz4) has been merged to -HEAD.  Please
    +	refer to zpool-features(7) for more information.
    +
    +	Please refer to the "ZFS notes" section of this file for information
    +	on upgrading boot ZFS pools.
    +
     20130129:
     	A BSD-licensed patch(1) variant has been added and is installed
     	as bsdpatch, being the GNU version the default patch.
    
    Modified: user/attilio/vmobj-rwlock/include/stdio.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/include/stdio.h	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/include/stdio.h	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -346,6 +346,7 @@ char	*tempnam(const char *, const char *
     FILE	*fmemopen(void * __restrict, size_t, const char * __restrict);
     ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
     	    FILE * __restrict);
    +FILE	*open_memstream(char **, size_t *);
     int	 renameat(int, const char *, int, const char *);
     int	 vdprintf(int, const char * __restrict, __va_list);
     
    
    Modified: user/attilio/vmobj-rwlock/include/wchar.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/include/wchar.h	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/include/wchar.h	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -207,6 +207,7 @@ int	wcwidth(wchar_t);
     #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
     size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     	    size_t, mbstate_t * __restrict);
    +FILE	*open_wmemstream(wchar_t **, size_t *);
     wchar_t	*wcpcpy(wchar_t * __restrict, const wchar_t * __restrict);
     wchar_t	*wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     wchar_t	*wcsdup(const wchar_t *) __malloc_like;
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/stdio/Makefile.inc
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -14,6 +14,7 @@ SRCS+=	_flock_stub.c asprintf.c clrerr.c
     	ftell.c funopen.c fvwrite.c fwalk.c fwide.c fwprintf.c fwscanf.c \
     	fwrite.c getc.c getchar.c getdelim.c getline.c \
     	gets.c getw.c getwc.c getwchar.c makebuf.c mktemp.c \
    +	open_memstream.c open_wmemstream.c \
     	perror.c printf.c printf-pos.c putc.c putchar.c \
     	puts.c putw.c putwc.c putwchar.c \
     	refill.c remove.c rewind.c rget.c scanf.c setbuf.c setbuffer.c \
    @@ -36,7 +37,7 @@ MAN+=	fclose.3 ferror.3 fflush.3 fgetln.
     	flockfile.3 \
     	fopen.3 fputs.3 \
     	fputws.3 fread.3 fseek.3 funopen.3 fwide.3 getc.3 \
    -	getline.3 getwc.3 mktemp.3 \
    +	getline.3 getwc.3 mktemp.3 open_memstream.3 \
     	printf.3 printf_l.3 putc.3 putwc.3 remove.3 scanf.3 scanf_l.3 setbuf.3 \
     	stdio.3 tmpnam.3 \
     	ungetc.3 ungetwc.3 wprintf.3 wscanf.3
    @@ -60,6 +61,7 @@ MLINKS+=getc.3 fgetc.3 getc.3 getc_unloc
     MLINKS+=getline.3 getdelim.3
     MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3
     MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3
    +MLINKS+=open_memstream.3 open_wmemstream.3
     MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \
     	printf.3 snprintf.3 printf.3 sprintf.3 \
     	printf.3 vasprintf.3 printf.3 vdprintf.3 \
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/stdio/Symbol.map
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/stdio/Symbol.map	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/lib/libc/stdio/Symbol.map	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -156,6 +156,8 @@ FBSD_1.3 {
     	putwc_l;
     	putwchar_l;
     	fmemopen;
    +	open_memstream;
    +	open_wmemstream;
     };
     
     FBSDprivate_1.0 {
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.3 (from r247429, head/lib/libc/stdio/open_memstream.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.3	Thu Feb 28 00:24:13 2013	(r247431, copy of r247429, head/lib/libc/stdio/open_memstream.3)
    @@ -0,0 +1,155 @@
    +.\" Copyright (c) 2013 Advanced Computing Technologies LLC
    +.\" Written by: John H. Baldwin 
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 27, 2013
    +.Dt OPEN_MEMSTREAM 3
    +.Os
    +.Sh NAME
    +.Nm open_memstream ,
    +.Nm open_wmemstream
    +.Nd dynamic memory buffer stream open functions
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In stdio.h
    +.Ft FILE *
    +.Fn open_memstream "char **bufp" "size_t **sizep"
    +.In wchar.h
    +.Ft FILE *
    +.Fn open_wmemstream "wchar_t **bufp" "size_t **sizep"
    +.Sh DESCRIPTION
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions create a write-only, seekable stream backed by a dynamically
    +allocated memory buffer.
    +The
    +.Fn open_memstream
    +function creates a byte-oriented stream,
    +while the
    +.Fn open_wmemstream
    +function creates a wide-oriented stream.
    +.Pp
    +Each stream maintains a current position and size.
    +Initially,
    +the position and size are set to zero.
    +Each write begins at the current position and advances it the number of
    +successfully written bytes for
    +.Fn open_memstream
    +or wide characters for
    +.Fn open_wmemstream .
    +If a write moves the current position beyond the length of the buffer,
    +the length of the buffer is extended and a null character is appended to the
    +buffer.
    +.Pp
    +A stream's buffer always contains a null character at the end of the buffer
    +that is not included in the current length.
    +.Pp
    +If a stream's current position is moved beyond the current length via a
    +seek operation and a write is performed,
    +the characters between the current length and the current position are filled
    +with null characters before the write is performed.
    +.Pp
    +After a successful call to
    +.Xr fclose 3
    +or
    +.Xr fflush 3 ,
    +the pointer referenced by
    +.Fa bufp
    +will contain the start of the memory buffer and the variable referenced by
    +.Fa sizep
    +will contain the smaller of the current position and the current buffer length.
    +.Pp
    +After a successful call to
    +.Xr fflush 3,
    +the pointer referenced by
    +.Fa bufp
    +and the variable referenced by
    +.Fa sizep
    +are only valid until the next write operation or a call to
    +.Xr fclose 3.
    +.Pp
    +Once a stream is closed,
    +the allocated buffer referenced by
    +.Fa bufp
    +should be released via a call to
    +.Xr free 3
    +when it is no longer needed.
    +.Sh IMPLEMENTATION NOTES
    +Internally all I/O streams are effectively byte-oriented,
    +so using wide-oriented operations to write to a stream opened via
    +.Fn open_wmemstream
    +results in wide characters being expanded to a stream of multibyte characters
    +in stdio's internal buffers.
    +These multibyte characters are then converted back to wide characters when
    +written into the stream.
    +As a result,
    +the wide-oriented streams maintain an internal multibyte character conversion
    +state that is cleared on any seek opertion that changes the current position.
    +This should have no effect as long as wide-oriented output operations are used
    +on a wide-oriented stream.
    +.Sh RETURN VALUES
    +Upon successful completion,
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +return a
    +.Tn FILE
    +pointer.
    +Otherwise,
    +.Dv NULL
    +is returned and the global variable
    +.Va errno
    +is set to indicate the error.
    +.Sh ERRORS
    +.Bl -tag -width Er
    +.It Bq Er EINVAL
    +The
    +.Fa bufp
    +or
    +.Fa sizep
    +argument was
    +.Dv NULL .
    +.It Bq Er ENOMEM
    +Memory for the stream or buffer could not be allocated.
    +.El
    +.Sh SEE ALSO
    +.Xr fclose 3 ,
    +.Xr fflush 3 ,
    +.Xr fopen 3 ,
    +.Xr free 3 ,
    +.Xr fseek 3 ,
    +.Xr sbuf 3 ,
    +.Xr stdio 3
    +.Sh STANDARDS
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions conform to
    +.St -p1003.1-2008 .
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.c (from r247429, head/lib/libc/stdio/open_memstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/stdio/open_memstream.c	Thu Feb 28 00:24:13 2013	(r247431, copy of r247429, head/lib/libc/stdio/open_memstream.c)
    @@ -0,0 +1,209 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct memstream {
    +	char **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +};
    +
    +static int
    +memstream_grow(struct memstream *ms, fpos_t newoff)
    +{
    +	char *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX)
    +		newsize = SSIZE_MAX - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, newsize + 1);
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "MS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			memset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +memstream_update(struct memstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +static int
    +memstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct memstream *ms;
    +	ssize_t tocopy;
    +
    +	ms = cookie;
    +	if (!memstream_grow(ms, ms->offset + len))
    +		return (-1);
    +	tocopy = ms->len - ms->offset;
    +	if (len < tocopy)
    +		tocopy = len;
    +	memcpy(*ms->bufp + ms->offset, buf, tocopy);
    +	ms->offset += tocopy;
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: write(%p, %d) = %zd\n", ms, len, tocopy);
    +#endif
    +	return (tocopy);
    +}
    +
    +static fpos_t
    +memstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct memstream *ms;
    +#ifdef DEBUG
    +	fpos_t old;
    +#endif
    +
    +	ms = cookie;
    +#ifdef DEBUG
    +	old = ms->offset;
    +#endif
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: seek(%p, %jd, %d) %jd -> %jd\n", ms, (intmax_t)pos,
    +	    whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +memstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_memstream(char **bufp, size_t *sizep)
    +{
    +	struct memstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, 1);
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memstream_update(ms);
    +	fp = funopen(ms, NULL, memstream_write, memstream_seek,
    +	    memstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, -1);
    +	return (fp);
    +}
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/stdio/open_wmemstream.c (from r247429, head/lib/libc/stdio/open_wmemstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/stdio/open_wmemstream.c	Thu Feb 28 00:24:13 2013	(r247431, copy of r247429, head/lib/libc/stdio/open_wmemstream.c)
    @@ -0,0 +1,271 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct wmemstream {
    +	wchar_t **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +	mbstate_t mbstate;
    +};
    +
    +static int
    +wmemstream_grow(struct wmemstream *ms, fpos_t newoff)
    +{
    +	wchar_t *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX / sizeof(wchar_t))
    +		newsize = SSIZE_MAX / sizeof(wchar_t) - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t));
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "WMS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			wmemset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +wmemstream_update(struct wmemstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +/*
    + * Based on a starting multibyte state and an input buffer, determine
    + * how many wchar_t's would be output.  This doesn't use mbsnrtowcs()
    + * so that it can handle embedded null characters.
    + */
    +static size_t
    +wbuflen(const mbstate_t *state, const char *buf, int len)
    +{
    +	mbstate_t lenstate;
    +	size_t charlen, count;
    +
    +	count = 0;
    +	lenstate = *state;
    +	while (len > 0) {
    +		charlen = mbrlen(buf, len, &lenstate);
    +		if (charlen == (size_t)-1)
    +			return (-1);
    +		if (charlen == (size_t)-2)
    +			break;
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		len -= charlen;
    +		buf += charlen;
    +		count++;
    +	}
    +	return (count);
    +}
    +
    +static int
    +wmemstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct wmemstream *ms;
    +	ssize_t consumed, wlen;
    +	size_t charlen;
    +
    +	ms = cookie;
    +	wlen = wbuflen(&ms->mbstate, buf, len);
    +	if (wlen < 0) {
    +		errno = EILSEQ;
    +		return (-1);
    +	}
    +	if (!wmemstream_grow(ms, ms->offset + wlen))
    +		return (-1);
    +
    +	/*
    +	 * This copies characters one at a time rather than using
    +	 * mbsnrtowcs() so it can properly handle embedded null
    +	 * characters.
    +	 */
    +	consumed = 0;
    +	while (len > 0 && ms->offset < ms->len) {
    +		charlen = mbrtowc(*ms->bufp + ms->offset, buf, len,
    +		    &ms->mbstate);
    +		if (charlen == (size_t)-1) {
    +			if (consumed == 0) {
    +				errno = EILSEQ;
    +				return (-1);
    +			}
    +			/* Treat it as a successful short write. */
    +			break;
    +		}
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		if (charlen == (size_t)-2) {
    +			consumed += len;
    +			len = 0;
    +		} else {
    +			consumed += charlen;
    +			buf += charlen;
    +			len -= charlen;
    +			ms->offset++;
    +		}
    +	}
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: write(%p, %d) = %zd\n", ms, len, consumed);
    +#endif
    +	return (consumed);
    +}
    +
    +static fpos_t
    +wmemstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct wmemstream *ms;
    +	fpos_t old;
    +
    +	ms = cookie;
    +	old = ms->offset;
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	/* Reset the multibyte state if a seek changes the position. */
    +	if (ms->offset != old)
    +		memset(&ms->mbstate, 0, sizeof(ms->mbstate));
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms,
    +	    (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +wmemstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_wmemstream(wchar_t **bufp, size_t *sizep)
    +{
    +	struct wmemstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, sizeof(wchar_t));
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memset(&ms->mbstate, 0, sizeof(mbstate_t));
    +	wmemstream_update(ms);
    +	fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
    +	    wmemstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, 1);
    +	return (fp);
    +}
    
    Modified: user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/sys/boot/common/load_elf.c	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -304,7 +304,7 @@ __elfN(loadimage)(struct preloaded_file 
     	 * only adjust the entry point if it's a virtual address to begin with.
     	 */
     	off = -0xc0000000u;
    -	if ((ehdr->e_entry & 0xc0000000u) == 0xc000000u)
    +	if ((ehdr->e_entry & 0xc0000000u) == 0xc0000000u)
     		ehdr->e_entry += off;
     #ifdef ELF_VERBOSE
     	printf("ehdr->e_entry 0x%08x, va<->pa off %llx\n", ehdr->e_entry, off);
    
    Modified: user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -157,6 +157,11 @@ SYSCTL_INT(_hw_mfi, OID_AUTO, polled_cmd
     	   &mfi_polled_cmd_timeout, 0,
     	   "Polled command timeout - used for firmware flash etc (in seconds)");
     
    +static int	mfi_cmd_timeout = MFI_CMD_TIMEOUT;
    +TUNABLE_INT("hw.mfi.cmd_timeout", &mfi_cmd_timeout);
    +SYSCTL_INT(_hw_mfi, OID_AUTO, cmd_timeout, CTLFLAG_RWTUN, &mfi_cmd_timeout,
    +	   0, "Command timeout (in seconds)");
    +
     /* Management interface */
     static d_open_t		mfi_open;
     static d_close_t	mfi_close;
    @@ -782,7 +787,7 @@ mfi_attach(struct mfi_softc *sc)
     
     	/* Start the timeout watchdog */
     	callout_init(&sc->mfi_watchdog_callout, CALLOUT_MPSAFE);
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (sc->mfi_flags & MFI_FLAGS_TBOLT) {
    @@ -3714,7 +3719,7 @@ mfi_dump_all(void)
     			break;
     		device_printf(sc->mfi_dev, "Dumping\n\n");
     		timedout = 0;
    -		deadline = time_uptime - MFI_CMD_TIMEOUT;
    +		deadline = time_uptime - mfi_cmd_timeout;
     		mtx_lock(&sc->mfi_io_lock);
     		TAILQ_FOREACH(cm, &sc->mfi_busy, cm_link) {
     			if (cm->cm_timestamp <= deadline) {
    @@ -3745,10 +3750,11 @@ mfi_timeout(void *data)
     	time_t deadline;
     	int timedout = 0;
     
    -	deadline = time_uptime - MFI_CMD_TIMEOUT;
    +	deadline = time_uptime - mfi_cmd_timeout;
     	if (sc->adpreset == 0) {
     		if (!mfi_tbolt_reset(sc)) {
    -			callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz, mfi_timeout, sc);
    +			callout_reset(&sc->mfi_watchdog_callout,
    +			    mfi_cmd_timeout * hz, mfi_timeout, sc);
     			return;
     		}
     	}
    @@ -3785,7 +3791,7 @@ mfi_timeout(void *data)
     
     	mtx_unlock(&sc->mfi_io_lock);
     
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (0)
    
    Modified: user/attilio/vmobj-rwlock/sys/dev/watchdog/watchdog.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:22:04 2013	(r247430)
    +++ user/attilio/vmobj-rwlock/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:24:13 2013	(r247431)
    @@ -1,5 +1,8 @@
     /*-
      * Copyright (c) 2004 Poul-Henning Kamp
    + * Copyright (c) 2013 iXsystems.com,
    + *               author: Alfred Perlstein 
    + *
      * All rights reserved.
      *
      * Redistribution and use in source and binary forms, with or without
    @@ -29,21 +32,40 @@
     __FBSDID("$FreeBSD$");
     
     #include 
    +#include 
     #include 
     #include 
     #include 
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include 
     
    +#include  /* kern_clock_gettime() */
    +
    +static int wd_set_pretimeout(int newtimeout, int disableiftoolong);
    +static void wd_timeout_cb(void *arg);
    +
    +static struct callout wd_pretimeo_handle;
    +static int wd_pretimeout;
    +static int wd_pretimeout_act = WD_SOFT_LOG;
    +
    +static struct callout wd_softtimeo_handle;
    +static int wd_softtimer;	/* true = use softtimer instead of hardware
    +				   watchdog */
    +static int wd_softtimeout_act = WD_SOFT_LOG;	/* action for the software timeout */
    +
     static struct cdev *wd_dev;
    -static volatile u_int wd_last_u;
    +static volatile u_int wd_last_u;    /* last timeout value set by kern_do_pat */
     
    -static int
    -kern_do_pat(u_int utim)
    +static int wd_lastpat_valid = 0;
    +static time_t wd_lastpat = 0;	/* when the watchdog was last patted */
    +
    +int
    +wdog_kern_pat(u_int utim)
     {
     	int error;
     
    @@ -51,11 +73,20 @@ kern_do_pat(u_int utim)
     		return (EINVAL);
     
     	if ((utim & WD_LASTVAL) != 0) {
    +		/*
    +		 * if WD_LASTVAL is set, fill in the bits for timeout
    +		 * from the saved value in wd_last_u.
    +		 */
     		MPASS((wd_last_u & ~WD_INTERVAL) == 0);
     		utim &= ~WD_LASTVAL;
     		utim |= wd_last_u;
    -	} else
    +	} else {
    +		/*
    +		 * Otherwise save the new interval.
    +		 * This can be zero (to disable the watchdog)
    +		 */
     		wd_last_u = (utim & WD_INTERVAL);
    +	}
     	if ((utim & WD_INTERVAL) == WD_TO_NEVER) {
     		utim = 0;
     
    @@ -65,18 +96,49 @@ kern_do_pat(u_int utim)
     		/* Assume no watchdog available; watchdog flags success */
     		error = EOPNOTSUPP;
     	}
    -	EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	if (wd_softtimer) {
    +		if (utim == 0) {
    +			callout_stop(&wd_softtimeo_handle);
    +		} else {
    +			(void) callout_reset(&wd_softtimeo_handle,
    +			    hz*utim, wd_timeout_cb, "soft");
    +		}
    +		error = 0;
    +	} else {
    +		EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	}
    +	wd_set_pretimeout(wd_pretimeout, true);
    +	/*
    +	 * If we were able to arm/strobe the watchdog, then
    +	 * update the last time it was strobed for WDIOC_GETTIMELEFT
    +	 */
    +	if (!error) {
    +		struct timespec ts;
    +
    +		error = kern_clock_gettime(curthread /* XXX */,
    +		    CLOCK_MONOTONIC_FAST, &ts);
    +		if (!error) {
    +			wd_lastpat = ts.tv_sec;
    +			wd_lastpat_valid = 1;
    +		}
    +	}
     	return (error);
     }
     
     static int
    -wd_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data,
    -    int flags __unused, struct thread *td)
    +wd_valid_act(int act)
    +{
    +
    +	if ((act & ~(WD_SOFT_MASK)) != 0)
    +		return false;
    +	return true;
    +}
    +
    +static int
    +wd_ioctl_patpat(caddr_t data)
     {
     	u_int u;
     
    -	if (cmd != WDIOCPATPAT)
    -		return (ENOIOCTL);
     	u = *(u_int *)data;
     	if (u & ~(WD_ACTIVE | WD_PASSIVE | WD_LASTVAL | WD_INTERVAL))
     		return (EINVAL);
    @@ -89,24 +151,162 @@ wd_ioctl(struct cdev *dev __unused, u_lo
     		return (ENOSYS);	/* XXX Not implemented yet */
     	u &= ~(WD_ACTIVE | WD_PASSIVE);
     
    -	return (kern_do_pat(u));
    +	return (wdog_kern_pat(u));
     }
     
    -u_int
    -wdog_kern_last_timeout(void)
    +static int
    +wd_get_time_left(struct thread *td, time_t *remainp)
     {
    +	struct timespec ts;
    +	int error;
     
    -	return (wd_last_u);
    +	error = kern_clock_gettime(td, CLOCK_MONOTONIC_FAST, &ts);
    +	if (error)
    +		return (error);
    +	if (!wd_lastpat_valid)
    +		return (ENOENT);
    +	*remainp = ts.tv_sec - wd_lastpat;
    +	return (0);
     }
     
    -int
    -wdog_kern_pat(u_int utim)
    +static void
    +wd_timeout_cb(void *arg)
     {
    +	const char *type = arg;
     
    -	if (utim & ~(WD_LASTVAL | WD_INTERVAL))
    -		return (EINVAL);
    +#ifdef DDB
    +	if ((wd_pretimeout_act & WD_SOFT_DDB)) {
    +		char kdb_why[80];
    +		snprintf(kdb_why, sizeof(buf), "watchdog %s timeout", type);
    +		kdb_backtrace();
    +		kdb_enter(KDB_WHY_WATCHDOG, kdb_why);
    +	}
    +#endif
    +	if ((wd_pretimeout_act & WD_SOFT_LOG))
    +		log(LOG_EMERG, "watchdog %s-timeout, WD_SOFT_LOG", type);
    +	if ((wd_pretimeout_act & WD_SOFT_PRINTF))
    +		printf("watchdog %s-timeout, WD_SOFT_PRINTF\n", type);
    +	if ((wd_pretimeout_act & WD_SOFT_PANIC))
    +		panic("watchdog %s-timeout, WD_SOFT_PANIC set", type);
    +}
     
    -	return (kern_do_pat(utim));
    +/*
    + * Called to manage timeouts.
    + * newtimeout needs to be in the range of 0 to actual watchdog timeout.
    + * if 0, we disable the pre-timeout.
    + * otherwise we set the pre-timeout provided it's not greater than the
    + * current actual watchdog timeout.
    + */
    +static int
    +wd_set_pretimeout(int newtimeout, int disableiftoolong)
    +{
    +	u_int utime;
    +
    +	utime = wdog_kern_last_timeout();
    +	/* do not permit a pre-timeout >= than the timeout. */
    +	if (newtimeout >= utime) {
    +		/*
    +		 * If 'disableiftoolong' then just fall through
    +		 * so as to disable the pre-watchdog
    +		 */
    +		if (disableiftoolong)
    +			newtimeout = 0;
    +		else
    +			return EINVAL;
    +	}
    +
    +	/* disable the pre-timeout */
    +	if (newtimeout == 0) {
    +		wd_pretimeout = 0;
    +		callout_stop(&wd_pretimeo_handle);
    +		return 0;
    +	}
    +
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 00:27:07 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 04C88BAB;
     Thu, 28 Feb 2013 00:27:07 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id DB4AACF9;
     Thu, 28 Feb 2013 00:27:06 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1S0R6YC065362;
     Thu, 28 Feb 2013 00:27:06 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1S0R3FG065340;
     Thu, 28 Feb 2013 00:27:03 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302280027.r1S0R3FG065340@svn.freebsd.org>
    From: Attilio Rao 
    Date: Thu, 28 Feb 2013 00:27:03 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247432 - in user/attilio/vmcontention: . include
     lib/libc/stdio sys/arm/econa sys/arm/s3c2xx0 sys/arm/xscale/i80321
     sys/arm/xscale/i8134x sys/arm/xscale/ixp425 sys/arm/xscale/pxa sys/b...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 00:27:07 -0000
    
    Author: attilio
    Date: Thu Feb 28 00:27:02 2013
    New Revision: 247432
    URL: http://svnweb.freebsd.org/changeset/base/247432
    
    Log:
      MFC
    
    Added:
      user/attilio/vmcontention/lib/libc/stdio/open_memstream.3
         - copied unchanged from r247431, head/lib/libc/stdio/open_memstream.3
      user/attilio/vmcontention/lib/libc/stdio/open_memstream.c
         - copied unchanged from r247431, head/lib/libc/stdio/open_memstream.c
      user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c
         - copied unchanged from r247431, head/lib/libc/stdio/open_wmemstream.c
      user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_memstream.c
         - copied unchanged from r247431, head/tools/regression/lib/libc/stdio/test-open_memstream.c
      user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_memstream.t
         - copied unchanged from r247431, head/tools/regression/lib/libc/stdio/test-open_memstream.t
      user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_wmemstream.c
         - copied unchanged from r247431, head/tools/regression/lib/libc/stdio/test-open_wmemstream.c
      user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_wmemstream.t
         - copied unchanged from r247431, head/tools/regression/lib/libc/stdio/test-open_wmemstream.t
    Modified:
      user/attilio/vmcontention/UPDATING
      user/attilio/vmcontention/include/stdio.h
      user/attilio/vmcontention/include/wchar.h
      user/attilio/vmcontention/lib/libc/stdio/Makefile.inc
      user/attilio/vmcontention/lib/libc/stdio/Symbol.map
      user/attilio/vmcontention/sys/arm/econa/econa_machdep.c
      user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c
      user/attilio/vmcontention/sys/boot/common/load_elf.c
      user/attilio/vmcontention/sys/dev/mfi/mfi.c
      user/attilio/vmcontention/sys/dev/watchdog/watchdog.c
      user/attilio/vmcontention/sys/netinet/sctputil.c
      user/attilio/vmcontention/sys/sys/watchdog.h
      user/attilio/vmcontention/tools/regression/lib/libc/stdio/Makefile
      user/attilio/vmcontention/tools/test/iconv/tablegen/cmp.sh
      user/attilio/vmcontention/usr.sbin/watchdogd/watchdogd.8
      user/attilio/vmcontention/usr.sbin/watchdogd/watchdogd.c
    Directory Properties:
      user/attilio/vmcontention/   (props changed)
      user/attilio/vmcontention/lib/libc/   (props changed)
      user/attilio/vmcontention/sys/   (props changed)
      user/attilio/vmcontention/sys/boot/   (props changed)
    
    Modified: user/attilio/vmcontention/UPDATING
    ==============================================================================
    --- user/attilio/vmcontention/UPDATING	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/UPDATING	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130208:
    +	A new compression method (lz4) has been merged to -HEAD.  Please
    +	refer to zpool-features(7) for more information.
    +
    +	Please refer to the "ZFS notes" section of this file for information
    +	on upgrading boot ZFS pools.
    +
     20130129:
     	A BSD-licensed patch(1) variant has been added and is installed
     	as bsdpatch, being the GNU version the default patch.
    
    Modified: user/attilio/vmcontention/include/stdio.h
    ==============================================================================
    --- user/attilio/vmcontention/include/stdio.h	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/include/stdio.h	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -346,6 +346,7 @@ char	*tempnam(const char *, const char *
     FILE	*fmemopen(void * __restrict, size_t, const char * __restrict);
     ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
     	    FILE * __restrict);
    +FILE	*open_memstream(char **, size_t *);
     int	 renameat(int, const char *, int, const char *);
     int	 vdprintf(int, const char * __restrict, __va_list);
     
    
    Modified: user/attilio/vmcontention/include/wchar.h
    ==============================================================================
    --- user/attilio/vmcontention/include/wchar.h	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/include/wchar.h	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -207,6 +207,7 @@ int	wcwidth(wchar_t);
     #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
     size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     	    size_t, mbstate_t * __restrict);
    +FILE	*open_wmemstream(wchar_t **, size_t *);
     wchar_t	*wcpcpy(wchar_t * __restrict, const wchar_t * __restrict);
     wchar_t	*wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     wchar_t	*wcsdup(const wchar_t *) __malloc_like;
    
    Modified: user/attilio/vmcontention/lib/libc/stdio/Makefile.inc
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -14,6 +14,7 @@ SRCS+=	_flock_stub.c asprintf.c clrerr.c
     	ftell.c funopen.c fvwrite.c fwalk.c fwide.c fwprintf.c fwscanf.c \
     	fwrite.c getc.c getchar.c getdelim.c getline.c \
     	gets.c getw.c getwc.c getwchar.c makebuf.c mktemp.c \
    +	open_memstream.c open_wmemstream.c \
     	perror.c printf.c printf-pos.c putc.c putchar.c \
     	puts.c putw.c putwc.c putwchar.c \
     	refill.c remove.c rewind.c rget.c scanf.c setbuf.c setbuffer.c \
    @@ -36,7 +37,7 @@ MAN+=	fclose.3 ferror.3 fflush.3 fgetln.
     	flockfile.3 \
     	fopen.3 fputs.3 \
     	fputws.3 fread.3 fseek.3 funopen.3 fwide.3 getc.3 \
    -	getline.3 getwc.3 mktemp.3 \
    +	getline.3 getwc.3 mktemp.3 open_memstream.3 \
     	printf.3 printf_l.3 putc.3 putwc.3 remove.3 scanf.3 scanf_l.3 setbuf.3 \
     	stdio.3 tmpnam.3 \
     	ungetc.3 ungetwc.3 wprintf.3 wscanf.3
    @@ -60,6 +61,7 @@ MLINKS+=getc.3 fgetc.3 getc.3 getc_unloc
     MLINKS+=getline.3 getdelim.3
     MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3
     MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3
    +MLINKS+=open_memstream.3 open_wmemstream.3
     MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \
     	printf.3 snprintf.3 printf.3 sprintf.3 \
     	printf.3 vasprintf.3 printf.3 vdprintf.3 \
    
    Modified: user/attilio/vmcontention/lib/libc/stdio/Symbol.map
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/stdio/Symbol.map	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/lib/libc/stdio/Symbol.map	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -156,6 +156,8 @@ FBSD_1.3 {
     	putwc_l;
     	putwchar_l;
     	fmemopen;
    +	open_memstream;
    +	open_wmemstream;
     };
     
     FBSDprivate_1.0 {
    
    Copied: user/attilio/vmcontention/lib/libc/stdio/open_memstream.3 (from r247431, head/lib/libc/stdio/open_memstream.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/stdio/open_memstream.3	Thu Feb 28 00:27:02 2013	(r247432, copy of r247431, head/lib/libc/stdio/open_memstream.3)
    @@ -0,0 +1,155 @@
    +.\" Copyright (c) 2013 Advanced Computing Technologies LLC
    +.\" Written by: John H. Baldwin 
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 27, 2013
    +.Dt OPEN_MEMSTREAM 3
    +.Os
    +.Sh NAME
    +.Nm open_memstream ,
    +.Nm open_wmemstream
    +.Nd dynamic memory buffer stream open functions
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In stdio.h
    +.Ft FILE *
    +.Fn open_memstream "char **bufp" "size_t **sizep"
    +.In wchar.h
    +.Ft FILE *
    +.Fn open_wmemstream "wchar_t **bufp" "size_t **sizep"
    +.Sh DESCRIPTION
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions create a write-only, seekable stream backed by a dynamically
    +allocated memory buffer.
    +The
    +.Fn open_memstream
    +function creates a byte-oriented stream,
    +while the
    +.Fn open_wmemstream
    +function creates a wide-oriented stream.
    +.Pp
    +Each stream maintains a current position and size.
    +Initially,
    +the position and size are set to zero.
    +Each write begins at the current position and advances it the number of
    +successfully written bytes for
    +.Fn open_memstream
    +or wide characters for
    +.Fn open_wmemstream .
    +If a write moves the current position beyond the length of the buffer,
    +the length of the buffer is extended and a null character is appended to the
    +buffer.
    +.Pp
    +A stream's buffer always contains a null character at the end of the buffer
    +that is not included in the current length.
    +.Pp
    +If a stream's current position is moved beyond the current length via a
    +seek operation and a write is performed,
    +the characters between the current length and the current position are filled
    +with null characters before the write is performed.
    +.Pp
    +After a successful call to
    +.Xr fclose 3
    +or
    +.Xr fflush 3 ,
    +the pointer referenced by
    +.Fa bufp
    +will contain the start of the memory buffer and the variable referenced by
    +.Fa sizep
    +will contain the smaller of the current position and the current buffer length.
    +.Pp
    +After a successful call to
    +.Xr fflush 3,
    +the pointer referenced by
    +.Fa bufp
    +and the variable referenced by
    +.Fa sizep
    +are only valid until the next write operation or a call to
    +.Xr fclose 3.
    +.Pp
    +Once a stream is closed,
    +the allocated buffer referenced by
    +.Fa bufp
    +should be released via a call to
    +.Xr free 3
    +when it is no longer needed.
    +.Sh IMPLEMENTATION NOTES
    +Internally all I/O streams are effectively byte-oriented,
    +so using wide-oriented operations to write to a stream opened via
    +.Fn open_wmemstream
    +results in wide characters being expanded to a stream of multibyte characters
    +in stdio's internal buffers.
    +These multibyte characters are then converted back to wide characters when
    +written into the stream.
    +As a result,
    +the wide-oriented streams maintain an internal multibyte character conversion
    +state that is cleared on any seek opertion that changes the current position.
    +This should have no effect as long as wide-oriented output operations are used
    +on a wide-oriented stream.
    +.Sh RETURN VALUES
    +Upon successful completion,
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +return a
    +.Tn FILE
    +pointer.
    +Otherwise,
    +.Dv NULL
    +is returned and the global variable
    +.Va errno
    +is set to indicate the error.
    +.Sh ERRORS
    +.Bl -tag -width Er
    +.It Bq Er EINVAL
    +The
    +.Fa bufp
    +or
    +.Fa sizep
    +argument was
    +.Dv NULL .
    +.It Bq Er ENOMEM
    +Memory for the stream or buffer could not be allocated.
    +.El
    +.Sh SEE ALSO
    +.Xr fclose 3 ,
    +.Xr fflush 3 ,
    +.Xr fopen 3 ,
    +.Xr free 3 ,
    +.Xr fseek 3 ,
    +.Xr sbuf 3 ,
    +.Xr stdio 3
    +.Sh STANDARDS
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions conform to
    +.St -p1003.1-2008 .
    
    Copied: user/attilio/vmcontention/lib/libc/stdio/open_memstream.c (from r247431, head/lib/libc/stdio/open_memstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/stdio/open_memstream.c	Thu Feb 28 00:27:02 2013	(r247432, copy of r247431, head/lib/libc/stdio/open_memstream.c)
    @@ -0,0 +1,209 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct memstream {
    +	char **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +};
    +
    +static int
    +memstream_grow(struct memstream *ms, fpos_t newoff)
    +{
    +	char *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX)
    +		newsize = SSIZE_MAX - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, newsize + 1);
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "MS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			memset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +memstream_update(struct memstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +static int
    +memstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct memstream *ms;
    +	ssize_t tocopy;
    +
    +	ms = cookie;
    +	if (!memstream_grow(ms, ms->offset + len))
    +		return (-1);
    +	tocopy = ms->len - ms->offset;
    +	if (len < tocopy)
    +		tocopy = len;
    +	memcpy(*ms->bufp + ms->offset, buf, tocopy);
    +	ms->offset += tocopy;
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: write(%p, %d) = %zd\n", ms, len, tocopy);
    +#endif
    +	return (tocopy);
    +}
    +
    +static fpos_t
    +memstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct memstream *ms;
    +#ifdef DEBUG
    +	fpos_t old;
    +#endif
    +
    +	ms = cookie;
    +#ifdef DEBUG
    +	old = ms->offset;
    +#endif
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: seek(%p, %jd, %d) %jd -> %jd\n", ms, (intmax_t)pos,
    +	    whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +memstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_memstream(char **bufp, size_t *sizep)
    +{
    +	struct memstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, 1);
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memstream_update(ms);
    +	fp = funopen(ms, NULL, memstream_write, memstream_seek,
    +	    memstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, -1);
    +	return (fp);
    +}
    
    Copied: user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c (from r247431, head/lib/libc/stdio/open_wmemstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c	Thu Feb 28 00:27:02 2013	(r247432, copy of r247431, head/lib/libc/stdio/open_wmemstream.c)
    @@ -0,0 +1,271 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct wmemstream {
    +	wchar_t **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +	mbstate_t mbstate;
    +};
    +
    +static int
    +wmemstream_grow(struct wmemstream *ms, fpos_t newoff)
    +{
    +	wchar_t *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX / sizeof(wchar_t))
    +		newsize = SSIZE_MAX / sizeof(wchar_t) - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t));
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "WMS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			wmemset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +wmemstream_update(struct wmemstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +/*
    + * Based on a starting multibyte state and an input buffer, determine
    + * how many wchar_t's would be output.  This doesn't use mbsnrtowcs()
    + * so that it can handle embedded null characters.
    + */
    +static size_t
    +wbuflen(const mbstate_t *state, const char *buf, int len)
    +{
    +	mbstate_t lenstate;
    +	size_t charlen, count;
    +
    +	count = 0;
    +	lenstate = *state;
    +	while (len > 0) {
    +		charlen = mbrlen(buf, len, &lenstate);
    +		if (charlen == (size_t)-1)
    +			return (-1);
    +		if (charlen == (size_t)-2)
    +			break;
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		len -= charlen;
    +		buf += charlen;
    +		count++;
    +	}
    +	return (count);
    +}
    +
    +static int
    +wmemstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct wmemstream *ms;
    +	ssize_t consumed, wlen;
    +	size_t charlen;
    +
    +	ms = cookie;
    +	wlen = wbuflen(&ms->mbstate, buf, len);
    +	if (wlen < 0) {
    +		errno = EILSEQ;
    +		return (-1);
    +	}
    +	if (!wmemstream_grow(ms, ms->offset + wlen))
    +		return (-1);
    +
    +	/*
    +	 * This copies characters one at a time rather than using
    +	 * mbsnrtowcs() so it can properly handle embedded null
    +	 * characters.
    +	 */
    +	consumed = 0;
    +	while (len > 0 && ms->offset < ms->len) {
    +		charlen = mbrtowc(*ms->bufp + ms->offset, buf, len,
    +		    &ms->mbstate);
    +		if (charlen == (size_t)-1) {
    +			if (consumed == 0) {
    +				errno = EILSEQ;
    +				return (-1);
    +			}
    +			/* Treat it as a successful short write. */
    +			break;
    +		}
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		if (charlen == (size_t)-2) {
    +			consumed += len;
    +			len = 0;
    +		} else {
    +			consumed += charlen;
    +			buf += charlen;
    +			len -= charlen;
    +			ms->offset++;
    +		}
    +	}
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: write(%p, %d) = %zd\n", ms, len, consumed);
    +#endif
    +	return (consumed);
    +}
    +
    +static fpos_t
    +wmemstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct wmemstream *ms;
    +	fpos_t old;
    +
    +	ms = cookie;
    +	old = ms->offset;
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	/* Reset the multibyte state if a seek changes the position. */
    +	if (ms->offset != old)
    +		memset(&ms->mbstate, 0, sizeof(ms->mbstate));
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms,
    +	    (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +wmemstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_wmemstream(wchar_t **bufp, size_t *sizep)
    +{
    +	struct wmemstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, sizeof(wchar_t));
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memset(&ms->mbstate, 0, sizeof(mbstate_t));
    +	wmemstream_update(ms);
    +	fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
    +	    wmemstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, 1);
    +	return (fp);
    +}
    
    Modified: user/attilio/vmcontention/sys/arm/econa/econa_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -67,9 +67,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -79,9 +79,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmcontention/sys/boot/common/load_elf.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/boot/common/load_elf.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/boot/common/load_elf.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -304,7 +304,7 @@ __elfN(loadimage)(struct preloaded_file 
     	 * only adjust the entry point if it's a virtual address to begin with.
     	 */
     	off = -0xc0000000u;
    -	if ((ehdr->e_entry & 0xc0000000u) == 0xc000000u)
    +	if ((ehdr->e_entry & 0xc0000000u) == 0xc0000000u)
     		ehdr->e_entry += off;
     #ifdef ELF_VERBOSE
     	printf("ehdr->e_entry 0x%08x, va<->pa off %llx\n", ehdr->e_entry, off);
    
    Modified: user/attilio/vmcontention/sys/dev/mfi/mfi.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/dev/mfi/mfi.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/dev/mfi/mfi.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -157,6 +157,11 @@ SYSCTL_INT(_hw_mfi, OID_AUTO, polled_cmd
     	   &mfi_polled_cmd_timeout, 0,
     	   "Polled command timeout - used for firmware flash etc (in seconds)");
     
    +static int	mfi_cmd_timeout = MFI_CMD_TIMEOUT;
    +TUNABLE_INT("hw.mfi.cmd_timeout", &mfi_cmd_timeout);
    +SYSCTL_INT(_hw_mfi, OID_AUTO, cmd_timeout, CTLFLAG_RWTUN, &mfi_cmd_timeout,
    +	   0, "Command timeout (in seconds)");
    +
     /* Management interface */
     static d_open_t		mfi_open;
     static d_close_t	mfi_close;
    @@ -782,7 +787,7 @@ mfi_attach(struct mfi_softc *sc)
     
     	/* Start the timeout watchdog */
     	callout_init(&sc->mfi_watchdog_callout, CALLOUT_MPSAFE);
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (sc->mfi_flags & MFI_FLAGS_TBOLT) {
    @@ -3714,7 +3719,7 @@ mfi_dump_all(void)
     			break;
     		device_printf(sc->mfi_dev, "Dumping\n\n");
     		timedout = 0;
    -		deadline = time_uptime - MFI_CMD_TIMEOUT;
    +		deadline = time_uptime - mfi_cmd_timeout;
     		mtx_lock(&sc->mfi_io_lock);
     		TAILQ_FOREACH(cm, &sc->mfi_busy, cm_link) {
     			if (cm->cm_timestamp <= deadline) {
    @@ -3745,10 +3750,11 @@ mfi_timeout(void *data)
     	time_t deadline;
     	int timedout = 0;
     
    -	deadline = time_uptime - MFI_CMD_TIMEOUT;
    +	deadline = time_uptime - mfi_cmd_timeout;
     	if (sc->adpreset == 0) {
     		if (!mfi_tbolt_reset(sc)) {
    -			callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz, mfi_timeout, sc);
    +			callout_reset(&sc->mfi_watchdog_callout,
    +			    mfi_cmd_timeout * hz, mfi_timeout, sc);
     			return;
     		}
     	}
    @@ -3785,7 +3791,7 @@ mfi_timeout(void *data)
     
     	mtx_unlock(&sc->mfi_io_lock);
     
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (0)
    
    Modified: user/attilio/vmcontention/sys/dev/watchdog/watchdog.c
    ==============================================================================
    --- user/attilio/vmcontention/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:24:13 2013	(r247431)
    +++ user/attilio/vmcontention/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:27:02 2013	(r247432)
    @@ -1,5 +1,8 @@
     /*-
      * Copyright (c) 2004 Poul-Henning Kamp
    + * Copyright (c) 2013 iXsystems.com,
    + *               author: Alfred Perlstein 
    + *
      * All rights reserved.
      *
      * Redistribution and use in source and binary forms, with or without
    @@ -29,21 +32,40 @@
     __FBSDID("$FreeBSD$");
     
     #include 
    +#include 
     #include 
     #include 
     #include 
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include 
     
    +#include  /* kern_clock_gettime() */
    +
    +static int wd_set_pretimeout(int newtimeout, int disableiftoolong);
    +static void wd_timeout_cb(void *arg);
    +
    +static struct callout wd_pretimeo_handle;
    +static int wd_pretimeout;
    +static int wd_pretimeout_act = WD_SOFT_LOG;
    +
    +static struct callout wd_softtimeo_handle;
    +static int wd_softtimer;	/* true = use softtimer instead of hardware
    +				   watchdog */
    +static int wd_softtimeout_act = WD_SOFT_LOG;	/* action for the software timeout */
    +
     static struct cdev *wd_dev;
    -static volatile u_int wd_last_u;
    +static volatile u_int wd_last_u;    /* last timeout value set by kern_do_pat */
     
    -static int
    -kern_do_pat(u_int utim)
    +static int wd_lastpat_valid = 0;
    +static time_t wd_lastpat = 0;	/* when the watchdog was last patted */
    +
    +int
    +wdog_kern_pat(u_int utim)
     {
     	int error;
     
    @@ -51,11 +73,20 @@ kern_do_pat(u_int utim)
     		return (EINVAL);
     
     	if ((utim & WD_LASTVAL) != 0) {
    +		/*
    +		 * if WD_LASTVAL is set, fill in the bits for timeout
    +		 * from the saved value in wd_last_u.
    +		 */
     		MPASS((wd_last_u & ~WD_INTERVAL) == 0);
     		utim &= ~WD_LASTVAL;
     		utim |= wd_last_u;
    -	} else
    +	} else {
    +		/*
    +		 * Otherwise save the new interval.
    +		 * This can be zero (to disable the watchdog)
    +		 */
     		wd_last_u = (utim & WD_INTERVAL);
    +	}
     	if ((utim & WD_INTERVAL) == WD_TO_NEVER) {
     		utim = 0;
     
    @@ -65,18 +96,49 @@ kern_do_pat(u_int utim)
     		/* Assume no watchdog available; watchdog flags success */
     		error = EOPNOTSUPP;
     	}
    -	EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	if (wd_softtimer) {
    +		if (utim == 0) {
    +			callout_stop(&wd_softtimeo_handle);
    +		} else {
    +			(void) callout_reset(&wd_softtimeo_handle,
    +			    hz*utim, wd_timeout_cb, "soft");
    +		}
    +		error = 0;
    +	} else {
    +		EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	}
    +	wd_set_pretimeout(wd_pretimeout, true);
    +	/*
    +	 * If we were able to arm/strobe the watchdog, then
    +	 * update the last time it was strobed for WDIOC_GETTIMELEFT
    +	 */
    +	if (!error) {
    +		struct timespec ts;
    +
    +		error = kern_clock_gettime(curthread /* XXX */,
    +		    CLOCK_MONOTONIC_FAST, &ts);
    +		if (!error) {
    +			wd_lastpat = ts.tv_sec;
    +			wd_lastpat_valid = 1;
    +		}
    +	}
     	return (error);
     }
     
     static int
    -wd_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data,
    -    int flags __unused, struct thread *td)
    +wd_valid_act(int act)
    +{
    +
    +	if ((act & ~(WD_SOFT_MASK)) != 0)
    +		return false;
    +	return true;
    +}
    +
    +static int
    +wd_ioctl_patpat(caddr_t data)
     {
     	u_int u;
     
    -	if (cmd != WDIOCPATPAT)
    -		return (ENOIOCTL);
     	u = *(u_int *)data;
     	if (u & ~(WD_ACTIVE | WD_PASSIVE | WD_LASTVAL | WD_INTERVAL))
     		return (EINVAL);
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 00:30:39 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id EBF0CCF3;
     Thu, 28 Feb 2013 00:30:39 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id BF7E8D14;
     Thu, 28 Feb 2013 00:30:39 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1S0UdVl066110;
     Thu, 28 Feb 2013 00:30:39 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1S0UaSn066082;
     Thu, 28 Feb 2013 00:30:36 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201302280030.r1S0UaSn066082@svn.freebsd.org>
    From: Attilio Rao 
    Date: Thu, 28 Feb 2013 00:30:36 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247433 - in user/attilio/vmc-playground: . include
     lib/libc/stdio sys/arm/econa sys/arm/s3c2xx0 sys/arm/xscale/i80321
     sys/arm/xscale/i8134x sys/arm/xscale/ixp425 sys/arm/xscale/pxa sys...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 00:30:40 -0000
    
    Author: attilio
    Date: Thu Feb 28 00:30:35 2013
    New Revision: 247433
    URL: http://svnweb.freebsd.org/changeset/base/247433
    
    Log:
      MFC
    
    Added:
      user/attilio/vmc-playground/lib/libc/stdio/open_memstream.3
         - copied unchanged from r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.3
      user/attilio/vmc-playground/lib/libc/stdio/open_memstream.c
         - copied unchanged from r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.c
      user/attilio/vmc-playground/lib/libc/stdio/open_wmemstream.c
         - copied unchanged from r247432, user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c
      user/attilio/vmc-playground/tools/regression/lib/libc/stdio/test-open_memstream.c
         - copied unchanged from r247432, user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_memstream.c
      user/attilio/vmc-playground/tools/regression/lib/libc/stdio/test-open_memstream.t
         - copied unchanged from r247432, user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_memstream.t
      user/attilio/vmc-playground/tools/regression/lib/libc/stdio/test-open_wmemstream.c
         - copied unchanged from r247432, user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_wmemstream.c
      user/attilio/vmc-playground/tools/regression/lib/libc/stdio/test-open_wmemstream.t
         - copied unchanged from r247432, user/attilio/vmcontention/tools/regression/lib/libc/stdio/test-open_wmemstream.t
    Modified:
      user/attilio/vmc-playground/UPDATING
      user/attilio/vmc-playground/include/stdio.h
      user/attilio/vmc-playground/include/wchar.h
      user/attilio/vmc-playground/lib/libc/stdio/Makefile.inc
      user/attilio/vmc-playground/lib/libc/stdio/Symbol.map
      user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c
      user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c
      user/attilio/vmc-playground/sys/boot/common/load_elf.c
      user/attilio/vmc-playground/sys/dev/mfi/mfi.c
      user/attilio/vmc-playground/sys/dev/watchdog/watchdog.c
      user/attilio/vmc-playground/sys/netinet/sctputil.c
      user/attilio/vmc-playground/sys/sys/watchdog.h
      user/attilio/vmc-playground/tools/regression/lib/libc/stdio/Makefile
      user/attilio/vmc-playground/tools/test/iconv/tablegen/cmp.sh
      user/attilio/vmc-playground/usr.sbin/watchdogd/watchdogd.8
      user/attilio/vmc-playground/usr.sbin/watchdogd/watchdogd.c
    Directory Properties:
      user/attilio/vmc-playground/   (props changed)
      user/attilio/vmc-playground/lib/libc/   (props changed)
      user/attilio/vmc-playground/sys/   (props changed)
      user/attilio/vmc-playground/sys/boot/   (props changed)
    
    Modified: user/attilio/vmc-playground/UPDATING
    ==============================================================================
    --- user/attilio/vmc-playground/UPDATING	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/UPDATING	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130208:
    +	A new compression method (lz4) has been merged to -HEAD.  Please
    +	refer to zpool-features(7) for more information.
    +
    +	Please refer to the "ZFS notes" section of this file for information
    +	on upgrading boot ZFS pools.
    +
     20130129:
     	A BSD-licensed patch(1) variant has been added and is installed
     	as bsdpatch, being the GNU version the default patch.
    
    Modified: user/attilio/vmc-playground/include/stdio.h
    ==============================================================================
    --- user/attilio/vmc-playground/include/stdio.h	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/include/stdio.h	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -346,6 +346,7 @@ char	*tempnam(const char *, const char *
     FILE	*fmemopen(void * __restrict, size_t, const char * __restrict);
     ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
     	    FILE * __restrict);
    +FILE	*open_memstream(char **, size_t *);
     int	 renameat(int, const char *, int, const char *);
     int	 vdprintf(int, const char * __restrict, __va_list);
     
    
    Modified: user/attilio/vmc-playground/include/wchar.h
    ==============================================================================
    --- user/attilio/vmc-playground/include/wchar.h	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/include/wchar.h	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -207,6 +207,7 @@ int	wcwidth(wchar_t);
     #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
     size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     	    size_t, mbstate_t * __restrict);
    +FILE	*open_wmemstream(wchar_t **, size_t *);
     wchar_t	*wcpcpy(wchar_t * __restrict, const wchar_t * __restrict);
     wchar_t	*wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     wchar_t	*wcsdup(const wchar_t *) __malloc_like;
    
    Modified: user/attilio/vmc-playground/lib/libc/stdio/Makefile.inc
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/lib/libc/stdio/Makefile.inc	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -14,6 +14,7 @@ SRCS+=	_flock_stub.c asprintf.c clrerr.c
     	ftell.c funopen.c fvwrite.c fwalk.c fwide.c fwprintf.c fwscanf.c \
     	fwrite.c getc.c getchar.c getdelim.c getline.c \
     	gets.c getw.c getwc.c getwchar.c makebuf.c mktemp.c \
    +	open_memstream.c open_wmemstream.c \
     	perror.c printf.c printf-pos.c putc.c putchar.c \
     	puts.c putw.c putwc.c putwchar.c \
     	refill.c remove.c rewind.c rget.c scanf.c setbuf.c setbuffer.c \
    @@ -36,7 +37,7 @@ MAN+=	fclose.3 ferror.3 fflush.3 fgetln.
     	flockfile.3 \
     	fopen.3 fputs.3 \
     	fputws.3 fread.3 fseek.3 funopen.3 fwide.3 getc.3 \
    -	getline.3 getwc.3 mktemp.3 \
    +	getline.3 getwc.3 mktemp.3 open_memstream.3 \
     	printf.3 printf_l.3 putc.3 putwc.3 remove.3 scanf.3 scanf_l.3 setbuf.3 \
     	stdio.3 tmpnam.3 \
     	ungetc.3 ungetwc.3 wprintf.3 wscanf.3
    @@ -60,6 +61,7 @@ MLINKS+=getc.3 fgetc.3 getc.3 getc_unloc
     MLINKS+=getline.3 getdelim.3
     MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3
     MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3
    +MLINKS+=open_memstream.3 open_wmemstream.3
     MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \
     	printf.3 snprintf.3 printf.3 sprintf.3 \
     	printf.3 vasprintf.3 printf.3 vdprintf.3 \
    
    Modified: user/attilio/vmc-playground/lib/libc/stdio/Symbol.map
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/stdio/Symbol.map	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/lib/libc/stdio/Symbol.map	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -156,6 +156,8 @@ FBSD_1.3 {
     	putwc_l;
     	putwchar_l;
     	fmemopen;
    +	open_memstream;
    +	open_wmemstream;
     };
     
     FBSDprivate_1.0 {
    
    Copied: user/attilio/vmc-playground/lib/libc/stdio/open_memstream.3 (from r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/stdio/open_memstream.3	Thu Feb 28 00:30:35 2013	(r247433, copy of r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.3)
    @@ -0,0 +1,155 @@
    +.\" Copyright (c) 2013 Advanced Computing Technologies LLC
    +.\" Written by: John H. Baldwin 
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 27, 2013
    +.Dt OPEN_MEMSTREAM 3
    +.Os
    +.Sh NAME
    +.Nm open_memstream ,
    +.Nm open_wmemstream
    +.Nd dynamic memory buffer stream open functions
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In stdio.h
    +.Ft FILE *
    +.Fn open_memstream "char **bufp" "size_t **sizep"
    +.In wchar.h
    +.Ft FILE *
    +.Fn open_wmemstream "wchar_t **bufp" "size_t **sizep"
    +.Sh DESCRIPTION
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions create a write-only, seekable stream backed by a dynamically
    +allocated memory buffer.
    +The
    +.Fn open_memstream
    +function creates a byte-oriented stream,
    +while the
    +.Fn open_wmemstream
    +function creates a wide-oriented stream.
    +.Pp
    +Each stream maintains a current position and size.
    +Initially,
    +the position and size are set to zero.
    +Each write begins at the current position and advances it the number of
    +successfully written bytes for
    +.Fn open_memstream
    +or wide characters for
    +.Fn open_wmemstream .
    +If a write moves the current position beyond the length of the buffer,
    +the length of the buffer is extended and a null character is appended to the
    +buffer.
    +.Pp
    +A stream's buffer always contains a null character at the end of the buffer
    +that is not included in the current length.
    +.Pp
    +If a stream's current position is moved beyond the current length via a
    +seek operation and a write is performed,
    +the characters between the current length and the current position are filled
    +with null characters before the write is performed.
    +.Pp
    +After a successful call to
    +.Xr fclose 3
    +or
    +.Xr fflush 3 ,
    +the pointer referenced by
    +.Fa bufp
    +will contain the start of the memory buffer and the variable referenced by
    +.Fa sizep
    +will contain the smaller of the current position and the current buffer length.
    +.Pp
    +After a successful call to
    +.Xr fflush 3,
    +the pointer referenced by
    +.Fa bufp
    +and the variable referenced by
    +.Fa sizep
    +are only valid until the next write operation or a call to
    +.Xr fclose 3.
    +.Pp
    +Once a stream is closed,
    +the allocated buffer referenced by
    +.Fa bufp
    +should be released via a call to
    +.Xr free 3
    +when it is no longer needed.
    +.Sh IMPLEMENTATION NOTES
    +Internally all I/O streams are effectively byte-oriented,
    +so using wide-oriented operations to write to a stream opened via
    +.Fn open_wmemstream
    +results in wide characters being expanded to a stream of multibyte characters
    +in stdio's internal buffers.
    +These multibyte characters are then converted back to wide characters when
    +written into the stream.
    +As a result,
    +the wide-oriented streams maintain an internal multibyte character conversion
    +state that is cleared on any seek opertion that changes the current position.
    +This should have no effect as long as wide-oriented output operations are used
    +on a wide-oriented stream.
    +.Sh RETURN VALUES
    +Upon successful completion,
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +return a
    +.Tn FILE
    +pointer.
    +Otherwise,
    +.Dv NULL
    +is returned and the global variable
    +.Va errno
    +is set to indicate the error.
    +.Sh ERRORS
    +.Bl -tag -width Er
    +.It Bq Er EINVAL
    +The
    +.Fa bufp
    +or
    +.Fa sizep
    +argument was
    +.Dv NULL .
    +.It Bq Er ENOMEM
    +Memory for the stream or buffer could not be allocated.
    +.El
    +.Sh SEE ALSO
    +.Xr fclose 3 ,
    +.Xr fflush 3 ,
    +.Xr fopen 3 ,
    +.Xr free 3 ,
    +.Xr fseek 3 ,
    +.Xr sbuf 3 ,
    +.Xr stdio 3
    +.Sh STANDARDS
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions conform to
    +.St -p1003.1-2008 .
    
    Copied: user/attilio/vmc-playground/lib/libc/stdio/open_memstream.c (from r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/stdio/open_memstream.c	Thu Feb 28 00:30:35 2013	(r247433, copy of r247432, user/attilio/vmcontention/lib/libc/stdio/open_memstream.c)
    @@ -0,0 +1,209 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct memstream {
    +	char **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +};
    +
    +static int
    +memstream_grow(struct memstream *ms, fpos_t newoff)
    +{
    +	char *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX)
    +		newsize = SSIZE_MAX - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, newsize + 1);
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "MS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			memset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +memstream_update(struct memstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +static int
    +memstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct memstream *ms;
    +	ssize_t tocopy;
    +
    +	ms = cookie;
    +	if (!memstream_grow(ms, ms->offset + len))
    +		return (-1);
    +	tocopy = ms->len - ms->offset;
    +	if (len < tocopy)
    +		tocopy = len;
    +	memcpy(*ms->bufp + ms->offset, buf, tocopy);
    +	ms->offset += tocopy;
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: write(%p, %d) = %zd\n", ms, len, tocopy);
    +#endif
    +	return (tocopy);
    +}
    +
    +static fpos_t
    +memstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct memstream *ms;
    +#ifdef DEBUG
    +	fpos_t old;
    +#endif
    +
    +	ms = cookie;
    +#ifdef DEBUG
    +	old = ms->offset;
    +#endif
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: seek(%p, %jd, %d) %jd -> %jd\n", ms, (intmax_t)pos,
    +	    whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +memstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_memstream(char **bufp, size_t *sizep)
    +{
    +	struct memstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, 1);
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memstream_update(ms);
    +	fp = funopen(ms, NULL, memstream_write, memstream_seek,
    +	    memstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, -1);
    +	return (fp);
    +}
    
    Copied: user/attilio/vmc-playground/lib/libc/stdio/open_wmemstream.c (from r247432, user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/stdio/open_wmemstream.c	Thu Feb 28 00:30:35 2013	(r247433, copy of r247432, user/attilio/vmcontention/lib/libc/stdio/open_wmemstream.c)
    @@ -0,0 +1,271 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct wmemstream {
    +	wchar_t **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +	mbstate_t mbstate;
    +};
    +
    +static int
    +wmemstream_grow(struct wmemstream *ms, fpos_t newoff)
    +{
    +	wchar_t *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX / sizeof(wchar_t))
    +		newsize = SSIZE_MAX / sizeof(wchar_t) - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t));
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "WMS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			wmemset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +wmemstream_update(struct wmemstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +/*
    + * Based on a starting multibyte state and an input buffer, determine
    + * how many wchar_t's would be output.  This doesn't use mbsnrtowcs()
    + * so that it can handle embedded null characters.
    + */
    +static size_t
    +wbuflen(const mbstate_t *state, const char *buf, int len)
    +{
    +	mbstate_t lenstate;
    +	size_t charlen, count;
    +
    +	count = 0;
    +	lenstate = *state;
    +	while (len > 0) {
    +		charlen = mbrlen(buf, len, &lenstate);
    +		if (charlen == (size_t)-1)
    +			return (-1);
    +		if (charlen == (size_t)-2)
    +			break;
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		len -= charlen;
    +		buf += charlen;
    +		count++;
    +	}
    +	return (count);
    +}
    +
    +static int
    +wmemstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct wmemstream *ms;
    +	ssize_t consumed, wlen;
    +	size_t charlen;
    +
    +	ms = cookie;
    +	wlen = wbuflen(&ms->mbstate, buf, len);
    +	if (wlen < 0) {
    +		errno = EILSEQ;
    +		return (-1);
    +	}
    +	if (!wmemstream_grow(ms, ms->offset + wlen))
    +		return (-1);
    +
    +	/*
    +	 * This copies characters one at a time rather than using
    +	 * mbsnrtowcs() so it can properly handle embedded null
    +	 * characters.
    +	 */
    +	consumed = 0;
    +	while (len > 0 && ms->offset < ms->len) {
    +		charlen = mbrtowc(*ms->bufp + ms->offset, buf, len,
    +		    &ms->mbstate);
    +		if (charlen == (size_t)-1) {
    +			if (consumed == 0) {
    +				errno = EILSEQ;
    +				return (-1);
    +			}
    +			/* Treat it as a successful short write. */
    +			break;
    +		}
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		if (charlen == (size_t)-2) {
    +			consumed += len;
    +			len = 0;
    +		} else {
    +			consumed += charlen;
    +			buf += charlen;
    +			len -= charlen;
    +			ms->offset++;
    +		}
    +	}
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: write(%p, %d) = %zd\n", ms, len, consumed);
    +#endif
    +	return (consumed);
    +}
    +
    +static fpos_t
    +wmemstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct wmemstream *ms;
    +	fpos_t old;
    +
    +	ms = cookie;
    +	old = ms->offset;
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	/* Reset the multibyte state if a seek changes the position. */
    +	if (ms->offset != old)
    +		memset(&ms->mbstate, 0, sizeof(ms->mbstate));
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms,
    +	    (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +wmemstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_wmemstream(wchar_t **bufp, size_t *sizep)
    +{
    +	struct wmemstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, sizeof(wchar_t));
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memset(&ms->mbstate, 0, sizeof(mbstate_t));
    +	wmemstream_update(ms);
    +	fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
    +	    wmemstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, 1);
    +	return (fp);
    +}
    
    Modified: user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -67,9 +67,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -77,9 +77,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -79,9 +79,7 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     #include 
    -#include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    
    Modified: user/attilio/vmc-playground/sys/boot/common/load_elf.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/boot/common/load_elf.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/boot/common/load_elf.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -304,7 +304,7 @@ __elfN(loadimage)(struct preloaded_file 
     	 * only adjust the entry point if it's a virtual address to begin with.
     	 */
     	off = -0xc0000000u;
    -	if ((ehdr->e_entry & 0xc0000000u) == 0xc000000u)
    +	if ((ehdr->e_entry & 0xc0000000u) == 0xc0000000u)
     		ehdr->e_entry += off;
     #ifdef ELF_VERBOSE
     	printf("ehdr->e_entry 0x%08x, va<->pa off %llx\n", ehdr->e_entry, off);
    
    Modified: user/attilio/vmc-playground/sys/dev/mfi/mfi.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/dev/mfi/mfi.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/dev/mfi/mfi.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -157,6 +157,11 @@ SYSCTL_INT(_hw_mfi, OID_AUTO, polled_cmd
     	   &mfi_polled_cmd_timeout, 0,
     	   "Polled command timeout - used for firmware flash etc (in seconds)");
     
    +static int	mfi_cmd_timeout = MFI_CMD_TIMEOUT;
    +TUNABLE_INT("hw.mfi.cmd_timeout", &mfi_cmd_timeout);
    +SYSCTL_INT(_hw_mfi, OID_AUTO, cmd_timeout, CTLFLAG_RWTUN, &mfi_cmd_timeout,
    +	   0, "Command timeout (in seconds)");
    +
     /* Management interface */
     static d_open_t		mfi_open;
     static d_close_t	mfi_close;
    @@ -782,7 +787,7 @@ mfi_attach(struct mfi_softc *sc)
     
     	/* Start the timeout watchdog */
     	callout_init(&sc->mfi_watchdog_callout, CALLOUT_MPSAFE);
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (sc->mfi_flags & MFI_FLAGS_TBOLT) {
    @@ -3714,7 +3719,7 @@ mfi_dump_all(void)
     			break;
     		device_printf(sc->mfi_dev, "Dumping\n\n");
     		timedout = 0;
    -		deadline = time_uptime - MFI_CMD_TIMEOUT;
    +		deadline = time_uptime - mfi_cmd_timeout;
     		mtx_lock(&sc->mfi_io_lock);
     		TAILQ_FOREACH(cm, &sc->mfi_busy, cm_link) {
     			if (cm->cm_timestamp <= deadline) {
    @@ -3745,10 +3750,11 @@ mfi_timeout(void *data)
     	time_t deadline;
     	int timedout = 0;
     
    -	deadline = time_uptime - MFI_CMD_TIMEOUT;
    +	deadline = time_uptime - mfi_cmd_timeout;
     	if (sc->adpreset == 0) {
     		if (!mfi_tbolt_reset(sc)) {
    -			callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz, mfi_timeout, sc);
    +			callout_reset(&sc->mfi_watchdog_callout,
    +			    mfi_cmd_timeout * hz, mfi_timeout, sc);
     			return;
     		}
     	}
    @@ -3785,7 +3791,7 @@ mfi_timeout(void *data)
     
     	mtx_unlock(&sc->mfi_io_lock);
     
    -	callout_reset(&sc->mfi_watchdog_callout, MFI_CMD_TIMEOUT * hz,
    +	callout_reset(&sc->mfi_watchdog_callout, mfi_cmd_timeout * hz,
     	    mfi_timeout, sc);
     
     	if (0)
    
    Modified: user/attilio/vmc-playground/sys/dev/watchdog/watchdog.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:27:02 2013	(r247432)
    +++ user/attilio/vmc-playground/sys/dev/watchdog/watchdog.c	Thu Feb 28 00:30:35 2013	(r247433)
    @@ -1,5 +1,8 @@
     /*-
      * Copyright (c) 2004 Poul-Henning Kamp
    + * Copyright (c) 2013 iXsystems.com,
    + *               author: Alfred Perlstein 
    + *
      * All rights reserved.
      *
      * Redistribution and use in source and binary forms, with or without
    @@ -29,21 +32,40 @@
     __FBSDID("$FreeBSD$");
     
     #include 
    +#include 
     #include 
     #include 
     #include 
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include 
     
    +#include  /* kern_clock_gettime() */
    +
    +static int wd_set_pretimeout(int newtimeout, int disableiftoolong);
    +static void wd_timeout_cb(void *arg);
    +
    +static struct callout wd_pretimeo_handle;
    +static int wd_pretimeout;
    +static int wd_pretimeout_act = WD_SOFT_LOG;
    +
    +static struct callout wd_softtimeo_handle;
    +static int wd_softtimer;	/* true = use softtimer instead of hardware
    +				   watchdog */
    +static int wd_softtimeout_act = WD_SOFT_LOG;	/* action for the software timeout */
    +
     static struct cdev *wd_dev;
    -static volatile u_int wd_last_u;
    +static volatile u_int wd_last_u;    /* last timeout value set by kern_do_pat */
     
    -static int
    -kern_do_pat(u_int utim)
    +static int wd_lastpat_valid = 0;
    +static time_t wd_lastpat = 0;	/* when the watchdog was last patted */
    +
    +int
    +wdog_kern_pat(u_int utim)
     {
     	int error;
     
    @@ -51,11 +73,20 @@ kern_do_pat(u_int utim)
     		return (EINVAL);
     
     	if ((utim & WD_LASTVAL) != 0) {
    +		/*
    +		 * if WD_LASTVAL is set, fill in the bits for timeout
    +		 * from the saved value in wd_last_u.
    +		 */
     		MPASS((wd_last_u & ~WD_INTERVAL) == 0);
     		utim &= ~WD_LASTVAL;
     		utim |= wd_last_u;
    -	} else
    +	} else {
    +		/*
    +		 * Otherwise save the new interval.
    +		 * This can be zero (to disable the watchdog)
    +		 */
     		wd_last_u = (utim & WD_INTERVAL);
    +	}
     	if ((utim & WD_INTERVAL) == WD_TO_NEVER) {
     		utim = 0;
     
    @@ -65,18 +96,49 @@ kern_do_pat(u_int utim)
     		/* Assume no watchdog available; watchdog flags success */
     		error = EOPNOTSUPP;
     	}
    -	EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	if (wd_softtimer) {
    +		if (utim == 0) {
    +			callout_stop(&wd_softtimeo_handle);
    +		} else {
    +			(void) callout_reset(&wd_softtimeo_handle,
    +			    hz*utim, wd_timeout_cb, "soft");
    +		}
    +		error = 0;
    +	} else {
    +		EVENTHANDLER_INVOKE(watchdog_list, utim, &error);
    +	}
    +	wd_set_pretimeout(wd_pretimeout, true);
    +	/*
    +	 * If we were able to arm/strobe the watchdog, then
    +	 * update the last time it was strobed for WDIOC_GETTIMELEFT
    +	 */
    +	if (!error) {
    +		struct timespec ts;
    +
    +		error = kern_clock_gettime(curthread /* XXX */,
    +		    CLOCK_MONOTONIC_FAST, &ts);
    +		if (!error) {
    +			wd_lastpat = ts.tv_sec;
    +			wd_lastpat_valid = 1;
    +		}
    +	}
     	return (error);
     }
     
     static int
    -wd_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data,
    -    int flags __unused, struct thread *td)
    +wd_valid_act(int act)
    +{
    +
    +	if ((act & ~(WD_SOFT_MASK)) != 0)
    +		return false;
    +	return true;
    +}
    +
    +static int
    +wd_ioctl_patpat(caddr_t data)
     {
     	u_int u;
     
    -	if (cmd != WDIOCPATPAT)
    -		return (ENOIOCTL);
     	u = *(u_int *)data;
     	if (u & ~(WD_ACTIVE | WD_PASSIVE | WD_LASTVAL | WD_INTERVAL))
     		return (EINVAL);
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 19:35:05 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id E6198541;
     Thu, 28 Feb 2013 19:35:05 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id C991BE33;
     Thu, 28 Feb 2013 19:35:05 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1SJZ57I020579;
     Thu, 28 Feb 2013 19:35:05 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1SJZ4nS020571;
     Thu, 28 Feb 2013 19:35:04 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201302281935.r1SJZ4nS020571@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Thu, 28 Feb 2013 19:35:04 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247493 - in user/dchagin/lemul/sys: amd64/linux32
     compat/linux i386/linux
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 19:35:06 -0000
    
    Author: dchagin
    Date: Thu Feb 28 19:35:04 2013
    New Revision: 247493
    URL: http://svnweb.freebsd.org/changeset/base/247493
    
    Log:
      Implement pselect6() system call.
    
    Modified:
      user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c
      user/dchagin/lemul/sys/amd64/linux32/syscalls.master
      user/dchagin/lemul/sys/compat/linux/linux_misc.c
      user/dchagin/lemul/sys/i386/linux/linux_dummy.c
      user/dchagin/lemul/sys/i386/linux/syscalls.master
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c	Thu Feb 28 19:01:04 2013	(r247492)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_dummy.c	Thu Feb 28 19:35:04 2013	(r247493)
    @@ -101,7 +101,6 @@ DUMMY(inotify_add_watch);
     DUMMY(inotify_rm_watch);
     /* linux 2.6.16: */
     DUMMY(migrate_pages);
    -DUMMY(pselect6);
     DUMMY(ppoll);
     DUMMY(unshare);
     /* linux 2.6.17: */
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/syscalls.master
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/syscalls.master	Thu Feb 28 19:01:04 2013	(r247492)
    +++ user/dchagin/lemul/sys/amd64/linux32/syscalls.master	Thu Feb 28 19:35:04 2013	(r247493)
    @@ -505,7 +505,10 @@
     306	AUE_FCHMODAT	STD	{ int linux_fchmodat(l_int dfd, const char *filename, \
     					l_mode_t mode); }
     307	AUE_FACCESSAT	STD	{ int linux_faccessat(l_int dfd, const char *filename, l_int amode, int flag); }
    -308	AUE_NULL	STD	{ int linux_pselect6(void); }
    +308	AUE_SELECT	STD	{ int linux_pselect6(l_int nfds,		\
    +				    l_fd_set *readfds, l_fd_set *writefds,	\
    +				    l_fd_set *exceptfds,			\
    +				    struct l_timespec *tsp, l_uintptr_t *sig); }
     309	AUE_NULL	STD	{ int linux_ppoll(void); }
     310	AUE_NULL	STD	{ int linux_unshare(void); }
     ; linux 2.6.17:
    
    Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c
    ==============================================================================
    --- user/dchagin/lemul/sys/compat/linux/linux_misc.c	Thu Feb 28 19:01:04 2013	(r247492)
    +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c	Thu Feb 28 19:35:04 2013	(r247493)
    @@ -116,6 +116,12 @@ struct l_sysinfo {
     	l_uint		mem_unit;
     	char		_f[20-2*sizeof(l_long)-sizeof(l_int)];	/* padding */
     };
    +
    +struct l_pselect6arg {
    +	l_sigset_t	*ss;
    +	l_size_t	ss_len;
    +};
    +
     int
     linux_sysinfo(struct thread *td, struct linux_sysinfo_args *args)
     {
    @@ -2070,3 +2076,78 @@ out:
     	PRELE(p);
     	return (error);
     }
    +
    +int
    +linux_pselect6(struct thread *td, struct linux_pselect6_args *args)
    +{
    +	struct timeval utv, tv0, tv1, *tvp;
    +	struct l_pselect6arg lpse6;
    +	struct l_timespec lts;
    +	struct timespec uts;
    +	l_sigset_t l_ss;
    +	sigset_t *ssp;
    +	sigset_t ss;
    +	int error;
    +
    +	if (args->sig) {
    +		error = copyin(args->sig, &lpse6, sizeof(lpse6));
    +		if (error)
    +			return (error);
    +		if (lpse6.ss_len != sizeof(l_ss))
    +			return (EINVAL);
    +		error = copyin(lpse6.ss, &l_ss, sizeof(l_ss));
    +		if (error)
    +			return (error);
    +		linux_to_bsd_sigset(&l_ss, &ss);
    +		ssp = &ss;
    +	} else
    +		ssp = NULL;
    +
    +	/*
    +	 * Currently glibc changes nanosecond number to microsecond.
    +	 * This mean losing precision but for now it is hardly seen.
    +	 */
    +	if (args->tsp) {
    +		error = copyin(args->tsp, <s, sizeof(lts));
    +		if (error)
    +			return (error);
    +		uts.tv_sec = lts.tv_sec;
    +		uts.tv_nsec = lts.tv_nsec;
    +
    +		TIMESPEC_TO_TIMEVAL(&utv, &uts);
    +		if (itimerfix(&utv))
    +			return (EINVAL);
    +
    +		microtime(&tv0);
    +		tvp = &utv;
    +	} else
    +		tvp = NULL;
    +
    +	error = kern_pselect(td, args->nfds, args->readfds, args->writefds,
    +	    args->exceptfds, tvp, ssp, sizeof(l_int) * 8);
    +
    +	if (error == 0 && args->tsp) {
    +		if (td->td_retval[0]) {
    +			/*
    +			 * Compute how much time was left of the timeout,
    +			 * by subtracting the current time and the time
    +			 * before we started the call, and subtracting
    +			 * that result from the user-supplied value.
    +			 */
    +
    +			microtime(&tv1);
    +			timevalsub(&tv1, &tv0);
    +			timevalsub(&utv, &tv1);
    +			if (utv.tv_sec < 0)
    +				timevalclear(&utv);
    +		} else
    +			timevalclear(&utv);
    +
    +		TIMEVAL_TO_TIMESPEC(&utv, &uts);
    +		lts.tv_sec = uts.tv_sec;
    +		lts.tv_nsec = uts.tv_nsec;
    +		error = copyout(<s, args->tsp, sizeof(lts));
    +	}
    +
    +	return (error);
    +}
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_dummy.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_dummy.c	Thu Feb 28 19:01:04 2013	(r247492)
    +++ user/dchagin/lemul/sys/i386/linux/linux_dummy.c	Thu Feb 28 19:35:04 2013	(r247493)
    @@ -92,7 +92,6 @@ DUMMY(inotify_add_watch);
     DUMMY(inotify_rm_watch);
     /* linux 2.6.16: */
     DUMMY(migrate_pages);
    -DUMMY(pselect6);
     DUMMY(ppoll);
     DUMMY(unshare);
     /* linux 2.6.17: */
    
    Modified: user/dchagin/lemul/sys/i386/linux/syscalls.master
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/syscalls.master	Thu Feb 28 19:01:04 2013	(r247492)
    +++ user/dchagin/lemul/sys/i386/linux/syscalls.master	Thu Feb 28 19:35:04 2013	(r247493)
    @@ -515,7 +515,10 @@
     306	AUE_FCHMODAT	STD	{ int linux_fchmodat(l_int dfd, const char *filename, \
     					l_mode_t mode); }
     307	AUE_FACCESSAT	STD	{ int linux_faccessat(l_int dfd, const char *filename, l_int amode, l_int flag); }
    -308	AUE_NULL	STD	{ int linux_pselect6(void); }
    +308	AUE_SELECT	STD	{ int linux_pselect6(l_int nfds,			\
    +		    			    l_fd_set *readfds, l_fd_set *writefds,	\
    +					    l_fd_set *exceptfds,			\
    +					    struct l_timespec *tsp, l_uintptr_t *sig); }
     309	AUE_NULL	STD	{ int linux_ppoll(void); }
     310	AUE_NULL	STD	{ int linux_unshare(void); }
     ; linux 2.6.17:
    
    From owner-svn-src-user@FreeBSD.ORG  Thu Feb 28 19:36:25 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 4752466F;
     Thu, 28 Feb 2013 19:36:25 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 39C5FE40;
     Thu, 28 Feb 2013 19:36:25 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1SJaOwq020788;
     Thu, 28 Feb 2013 19:36:24 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1SJaNVE020772;
     Thu, 28 Feb 2013 19:36:23 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201302281936.r1SJaNVE020772@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Thu, 28 Feb 2013 19:36:23 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247494 - in user/dchagin/lemul/sys: amd64/linux32
     i386/linux
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Thu, 28 Feb 2013 19:36:25 -0000
    
    Author: dchagin
    Date: Thu Feb 28 19:36:22 2013
    New Revision: 247494
    URL: http://svnweb.freebsd.org/changeset/base/247494
    
    Log:
      Regen for r247493.
    
    Modified:
      user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h
      user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h
      user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c
      user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c
      user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c
      user/dchagin/lemul/sys/i386/linux/linux_proto.h
      user/dchagin/lemul/sys/i386/linux/linux_syscall.h
      user/dchagin/lemul/sys/i386/linux/linux_syscalls.c
      user/dchagin/lemul/sys/i386/linux/linux_sysent.c
      user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_proto.h	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #ifndef _LINUX_SYSPROTO_H_
    @@ -988,7 +988,12 @@ struct linux_faccessat_args {
     	char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)];
     };
     struct linux_pselect6_args {
    -	register_t dummy;
    +	char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)];
    +	char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)];
    +	char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)];
    +	char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)];
    +	char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)];
    +	char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)];
     };
     struct linux_ppoll_args {
     	register_t dummy;
    @@ -1661,7 +1666,7 @@ int	linux_process_vm_writev(struct threa
     #define	LINUX_SYS_AUE_linux_readlinkat	AUE_READLINKAT
     #define	LINUX_SYS_AUE_linux_fchmodat	AUE_FCHMODAT
     #define	LINUX_SYS_AUE_linux_faccessat	AUE_FACCESSAT
    -#define	LINUX_SYS_AUE_linux_pselect6	AUE_NULL
    +#define	LINUX_SYS_AUE_linux_pselect6	AUE_SELECT
     #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
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscall.h	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #define	LINUX_SYS_linux_exit	1
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_syscalls.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     const char *linux_syscallnames[] = {
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysent.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/amd64/linux32/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #include "opt_compat.h"
    @@ -327,7 +327,7 @@ struct sysent linux_sysent[] = {
     	{ AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 305 = linux_readlinkat */
     	{ AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 306 = linux_fchmodat */
     	{ AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 307 = linux_faccessat */
    -	{ 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 308 = linux_pselect6 */
    +	{ AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 308 = linux_pselect6 */
     	{ 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 309 = linux_ppoll */
     	{ 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 310 = linux_unshare */
     	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 311 = linux_set_robust_list */
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_systrace_args.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -2057,7 +2057,14 @@ systrace_args(int sysnum, void *params, 
     	}
     	/* linux_pselect6 */
     	case 308: {
    -		*n_args = 0;
    +		struct linux_pselect6_args *p = params;
    +		iarg[0] = p->nfds; /* l_int */
    +		uarg[1] = (intptr_t) p->readfds; /* l_fd_set * */
    +		uarg[2] = (intptr_t) p->writefds; /* l_fd_set * */
    +		uarg[3] = (intptr_t) p->exceptfds; /* l_fd_set * */
    +		uarg[4] = (intptr_t) p->tsp; /* struct l_timespec * */
    +		uarg[5] = (intptr_t) p->sig; /* l_uintptr_t * */
    +		*n_args = 6;
     		break;
     	}
     	/* linux_ppoll */
    @@ -5318,6 +5325,28 @@ systrace_entry_setargdesc(int sysnum, in
     		break;
     	/* linux_pselect6 */
     	case 308:
    +		switch(ndx) {
    +		case 0:
    +			p = "l_int";
    +			break;
    +		case 1:
    +			p = "l_fd_set *";
    +			break;
    +		case 2:
    +			p = "l_fd_set *";
    +			break;
    +		case 3:
    +			p = "l_fd_set *";
    +			break;
    +		case 4:
    +			p = "struct l_timespec *";
    +			break;
    +		case 5:
    +			p = "l_uintptr_t *";
    +			break;
    +		default:
    +			break;
    +		};
     		break;
     	/* linux_ppoll */
     	case 309:
    @@ -6656,6 +6685,9 @@ systrace_return_setargdesc(int sysnum, i
     		break;
     	/* linux_pselect6 */
     	case 308:
    +		if (ndx == 0 || ndx == 1)
    +			p = "int";
    +		break;
     	/* linux_ppoll */
     	case 309:
     	/* linux_unshare */
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_proto.h
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_proto.h	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/i386/linux/linux_proto.h	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #ifndef _LINUX_SYSPROTO_H_
    @@ -1011,7 +1011,12 @@ struct linux_faccessat_args {
     	char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)];
     };
     struct linux_pselect6_args {
    -	register_t dummy;
    +	char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)];
    +	char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)];
    +	char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)];
    +	char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)];
    +	char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)];
    +	char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)];
     };
     struct linux_ppoll_args {
     	register_t dummy;
    @@ -1688,7 +1693,7 @@ int	linux_process_vm_writev(struct threa
     #define	LINUX_SYS_AUE_linux_readlinkat	AUE_READLINKAT
     #define	LINUX_SYS_AUE_linux_fchmodat	AUE_FCHMODAT
     #define	LINUX_SYS_AUE_linux_faccessat	AUE_FACCESSAT
    -#define	LINUX_SYS_AUE_linux_pselect6	AUE_NULL
    +#define	LINUX_SYS_AUE_linux_pselect6	AUE_SELECT
     #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
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_syscall.h
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_syscall.h	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/i386/linux/linux_syscall.h	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #define	LINUX_SYS_linux_exit	1
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_syscalls.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_syscalls.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/i386/linux/linux_syscalls.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     const char *linux_syscallnames[] = {
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_sysent.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_sysent.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/i386/linux/linux_sysent.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -3,7 +3,7 @@
      *
      * DO NOT EDIT-- this file is automatically generated.
      * $FreeBSD$
    - * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247384 2013-02-27 06:11:39Z dchagin 
    + * created from FreeBSD: user/dchagin/lemul/sys/i386/linux/syscalls.master 247493 2013-02-28 19:35:04Z dchagin 
      */
     
     #include 
    @@ -326,7 +326,7 @@ struct sysent linux_sysent[] = {
     	{ AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 305 = linux_readlinkat */
     	{ AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 306 = linux_fchmodat */
     	{ AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 307 = linux_faccessat */
    -	{ 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 308 = linux_pselect6 */
    +	{ AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 308 = linux_pselect6 */
     	{ 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 309 = linux_ppoll */
     	{ 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 310 = linux_unshare */
     	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 311 = linux_set_robust_list */
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c	Thu Feb 28 19:35:04 2013	(r247493)
    +++ user/dchagin/lemul/sys/i386/linux/linux_systrace_args.c	Thu Feb 28 19:36:22 2013	(r247494)
    @@ -2148,7 +2148,14 @@ systrace_args(int sysnum, void *params, 
     	}
     	/* linux_pselect6 */
     	case 308: {
    -		*n_args = 0;
    +		struct linux_pselect6_args *p = params;
    +		iarg[0] = p->nfds; /* l_int */
    +		uarg[1] = (intptr_t) p->readfds; /* l_fd_set * */
    +		uarg[2] = (intptr_t) p->writefds; /* l_fd_set * */
    +		uarg[3] = (intptr_t) p->exceptfds; /* l_fd_set * */
    +		uarg[4] = (intptr_t) p->tsp; /* struct l_timespec * */
    +		uarg[5] = (intptr_t) p->sig; /* l_uintptr_t * */
    +		*n_args = 6;
     		break;
     	}
     	/* linux_ppoll */
    @@ -5614,6 +5621,28 @@ systrace_entry_setargdesc(int sysnum, in
     		break;
     	/* linux_pselect6 */
     	case 308:
    +		switch(ndx) {
    +		case 0:
    +			p = "l_int";
    +			break;
    +		case 1:
    +			p = "l_fd_set *";
    +			break;
    +		case 2:
    +			p = "l_fd_set *";
    +			break;
    +		case 3:
    +			p = "l_fd_set *";
    +			break;
    +		case 4:
    +			p = "struct l_timespec *";
    +			break;
    +		case 5:
    +			p = "l_uintptr_t *";
    +			break;
    +		default:
    +			break;
    +		};
     		break;
     	/* linux_ppoll */
     	case 309:
    @@ -7014,6 +7043,9 @@ systrace_return_setargdesc(int sysnum, i
     		break;
     	/* linux_pselect6 */
     	case 308:
    +		if (ndx == 0 || ndx == 1)
    +			p = "int";
    +		break;
     	/* linux_ppoll */
     	case 309:
     	/* linux_unshare */
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 04:21:23 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id AF01D4C2;
     Fri,  1 Mar 2013 04:21:23 +0000 (UTC)
     (envelope-from adrian@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 8A6596C8;
     Fri,  1 Mar 2013 04:21:23 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r214LNZb084963;
     Fri, 1 Mar 2013 04:21:23 GMT (envelope-from adrian@svn.freebsd.org)
    Received: (from adrian@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r214LMmQ084958;
     Fri, 1 Mar 2013 04:21:22 GMT (envelope-from adrian@svn.freebsd.org)
    Message-Id: <201303010421.r214LMmQ084958@svn.freebsd.org>
    From: Adrian Chadd 
    Date: Fri, 1 Mar 2013 04:21:22 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247528 - user/adrian/net80211_tx/sys/net80211
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 04:21:23 -0000
    
    Author: adrian
    Date: Fri Mar  1 04:21:22 2013
    New Revision: 247528
    URL: http://svnweb.freebsd.org/changeset/base/247528
    
    Log:
      Migrate ic->ic_raw_xmit() to a VAP method.
      
      It still calls ic->ic_raw_xmit() for now but it does make it easier to
      convert into a queue method later.
    
    Modified:
      user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c	Fri Mar  1 03:25:43 2013	(r247527)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_ht.c	Fri Mar  1 04:21:22 2013	(r247528)
    @@ -2393,7 +2393,7 @@ ieee80211_send_bar(struct ieee80211_node
     	 * regardless of queue/TX success or failure.
     	 */
     	IEEE80211_TX_LOCK(ic);
    -	ret = ic->ic_raw_xmit(ni, m, NULL);
    +	ret = ieee80211_raw_output(vap, ni, m, NULL);
     	IEEE80211_TX_UNLOCK(ic);
     	if (ret != 0) {
     		IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N,
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c	Fri Mar  1 03:25:43 2013	(r247527)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_hwmp.c	Fri Mar  1 04:21:22 2013	(r247528)
    @@ -673,7 +673,7 @@ hwmp_send_action(struct ieee80211vap *va
     	else
     		params.ibp_try0 = ni->ni_txparms->maxretry;
     	params.ibp_power = ni->ni_txpower;
    -	ret = ic->ic_raw_xmit(ni, m, ¶ms);
    +	ret = ieee80211_raw_output(vap, ni, m, ¶ms);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c	Fri Mar  1 03:25:43 2013	(r247527)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_mesh.c	Fri Mar  1 04:21:22 2013	(r247528)
    @@ -2780,7 +2780,7 @@ mesh_send_action(struct ieee80211_node *
     
     	IEEE80211_NODE_STAT(ni, tx_mgmt);
     
    -	ret = ic->ic_raw_xmit(ni, m, ¶ms);
    +	ret = ieee80211_raw_output(vap, ni, m, ¶ms);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Fri Mar  1 03:25:43 2013	(r247527)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Fri Mar  1 04:21:22 2013	(r247528)
    @@ -430,6 +430,18 @@ ieee80211_start(struct ifnet *ifp)
     }
     
     /*
    + * 802.11 raw output routine.
    + */
    +int
    +ieee80211_raw_output(struct ieee80211vap *vap, struct ieee80211_node *ni,
    +    struct mbuf *m, const struct ieee80211_bpf_params *params)
    +{
    +	struct ieee80211com *ic = vap->iv_ic;
    +
    +	return (ic->ic_raw_xmit(ni, m, params));
    +}
    +
    +/*
      * 802.11 output routine. This is (currently) used only to
      * connect bpf write calls to the 802.11 layer for injecting
      * raw 802.11 frames.
    @@ -550,7 +562,7 @@ ieee80211_output(struct ifnet *ifp, stru
     	 * this is a hack).
     	 * NB: we assume sa_data is suitably aligned to cast.
     	 */
    -	ret = vap->iv_ic->ic_raw_xmit(ni, m,
    +	ret = ieee80211_raw_output(vap, ni, m,
     	    (const struct ieee80211_bpf_params *)(dst->sa_len ?
     		dst->sa_data : NULL));
     	IEEE80211_TX_UNLOCK(ic);
    @@ -733,7 +745,7 @@ ieee80211_mgmt_output(struct ieee80211_n
     #endif
     	IEEE80211_NODE_STAT(ni, tx_mgmt);
     
    -	ret = ic->ic_raw_xmit(ni, m, params);
    +	ret = ieee80211_raw_output(vap, ni, m, params);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    @@ -839,7 +851,7 @@ ieee80211_send_nulldata(struct ieee80211
     	    ieee80211_chan2ieee(ic, ic->ic_curchan),
     	    wh->i_fc[1] & IEEE80211_FC1_PWR_MGT ? "ena" : "dis");
     
    -	ret = ic->ic_raw_xmit(ni, m, NULL);
    +	ret = ieee80211_raw_output(vap, ni, m, NULL);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    @@ -1979,7 +1991,7 @@ ieee80211_send_probereq(struct ieee80211
     	} else
     		params.ibp_try0 = tp->maxretry;
     	params.ibp_power = ni->ni_txpower;
    -	ret = ic->ic_raw_xmit(ni, m, ¶ms);
    +	ret = ieee80211_raw_output(vap, ni, m, ¶ms);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    @@ -2595,7 +2607,7 @@ ieee80211_send_proberesp(struct ieee8021
     	    legacy ? " " : "");
     	IEEE80211_NODE_STAT(bss, tx_mgmt);
     
    -	ret = ic->ic_raw_xmit(bss, m, NULL);
    +	ret = ieee80211_raw_output(vap, bss, m, NULL);
     	IEEE80211_TX_UNLOCK(ic);
     	return (ret);
     }
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Fri Mar  1 03:25:43 2013	(r247527)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Fri Mar  1 04:21:22 2013	(r247528)
    @@ -98,6 +98,8 @@ int	ieee80211_raw_xmit(struct ieee80211_
     		const struct ieee80211_bpf_params *);
     int	ieee80211_output(struct ifnet *, struct mbuf *,
                    struct sockaddr *, struct route *ro);
    +int	ieee80211_raw_output(struct ieee80211vap *, struct ieee80211_node *,
    +		struct mbuf *, const struct ieee80211_bpf_params *);
     void	ieee80211_send_setup(struct ieee80211_node *, struct mbuf *, int, int,
             const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN],
             const uint8_t [IEEE80211_ADDR_LEN]);
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 04:51:45 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id E18CB901;
     Fri,  1 Mar 2013 04:51:45 +0000 (UTC)
     (envelope-from adrian@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id BAFFB77D;
     Fri,  1 Mar 2013 04:51:45 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r214pjwc093828;
     Fri, 1 Mar 2013 04:51:45 GMT (envelope-from adrian@svn.freebsd.org)
    Received: (from adrian@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r214piLe093816;
     Fri, 1 Mar 2013 04:51:44 GMT (envelope-from adrian@svn.freebsd.org)
    Message-Id: <201303010451.r214piLe093816@svn.freebsd.org>
    From: Adrian Chadd 
    Date: Fri, 1 Mar 2013 04:51:44 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247529 - user/adrian/net80211_tx/sys/net80211
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 04:51:45 -0000
    
    Author: adrian
    Date: Fri Mar  1 04:51:44 2013
    New Revision: 247529
    URL: http://svnweb.freebsd.org/changeset/base/247529
    
    Log:
      Defer the main frame TX through a per-vap task.
      
      The task runs in the ieee80211com task, so vaps are still serialised with
      each other as well as the rest of the ic state.
      
      This doesn't serialise the raw xmit path or any of the raw xmit state setup.
      It also doesn't touch the other paths (fast frames deferred handling/flush;
      ageq and power save handling; mesh TX handling.)  These will come next.
      
      Tested:
      
      * AR5416, STA mode
      * AR9280, STA mode
    
    Modified:
      user/adrian/net80211_tx/sys/net80211/ieee80211.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
      user/adrian/net80211_tx/sys/net80211/ieee80211_var.h
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211.c	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211.c	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -427,7 +427,8 @@ ieee80211_vap_setup(struct ieee80211com 
     	if_initname(ifp, name, unit);
     	ifp->if_softc = vap;			/* back pointer */
     	ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST;
    -	ifp->if_start = ieee80211_start;
    +	ifp->if_transmit = ieee80211_vap_transmit;
    +	ifp->if_qflush = ieee80211_vap_qflush;
     	ifp->if_ioctl = ieee80211_ioctl;
     	ifp->if_init = ieee80211_init;
     	/* NB: input+output filled in by ether_ifattach */
    @@ -622,6 +623,7 @@ ieee80211_vap_detach(struct ieee80211vap
     	 */
     	ieee80211_draintask(ic, &vap->iv_nstate_task);
     	ieee80211_draintask(ic, &vap->iv_swbmiss_task);
    +	ieee80211_draintask(ic, &vap->iv_tx_task);
     
     	/* XXX band-aid until ifnet handles this for us */
     	taskqueue_drain(taskqueue_swi, &ifp->if_linktask);
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -761,7 +761,7 @@ static void
     bpf_track(void *arg, struct ifnet *ifp, int dlt, int attach)
     {
     	/* NB: identify vap's by if_start */
    -	if (dlt == DLT_IEEE802_11_RADIO && ifp->if_start == ieee80211_start) {
    +	if (dlt == DLT_IEEE802_11_RADIO && ifp->if_transmit == ieee80211_vap_transmit) {
     		struct ieee80211vap *vap = ifp->if_softc;
     		/*
     		 * Track bpf radiotap listener state.  We mark the vap
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -133,16 +133,6 @@ ieee80211_start_pkt(struct ieee80211vap 
     	int error;
     
     	/*
    -	 * Sanitize mbuf flags for net80211 use.  We cannot
    -	 * clear M_PWR_SAV or M_MORE_DATA because these may
    -	 * be set for frames that are re-submitted from the
    -	 * power save queue.
    -	 *
    -	 * NB: This must be done before ieee80211_classify as
    -	 *     it marks EAPOL in frames with M_EAPOL.
    -	 */
    -	m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA);
    -	/*
     	 * Cancel any background scan.
     	 */
     	if (ic->ic_flags & IEEE80211_F_SCAN)
    @@ -370,14 +360,81 @@ ieee80211_start_pkt(struct ieee80211vap 
     }
     
     /*
    + * Entry point for transmission for all VAPs.
    + *
    + * This sanitises the mbuf flags and queues it into the transmit
    + * queue.
    + */
    +int
    +ieee80211_vap_transmit(struct ifnet *ifp, struct mbuf *m)
    +{
    +	struct ieee80211vap *vap = ifp->if_softc;
    +	struct ieee80211com *ic = vap->iv_ic;
    +	struct ifnet *parent = ic->ic_ifp;
    +
    +	/* NB: parent must be up and running */
    +	if (!IFNET_IS_UP_RUNNING(parent)) {
    +		IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,
    +		    "%s: ignore queue, parent %s not up+running\n",
    +		    __func__, parent->if_xname);
    +		/* XXX stat */
    +		m_free(m);
    +		return (EINVAL);/* XXX errno? */
    +	}
    +
    +	IF_LOCK(&ifp->if_snd);
    +
    +	/* Enforce queue limits */
    +	if (_IF_QFULL(&ifp->if_snd)) {
    +		IF_UNLOCK(&ifp->if_snd);
    +		m_free(m);
    +		return (ENOBUFS);	/* XXX errno? */
    +	}
    +
    +	/*
    +	 * Sanitize mbuf flags for net80211 use.  We cannot
    +	 * clear M_PWR_SAV or M_MORE_DATA because these may
    +	 * be set for frames that are re-submitted from the
    +	 * power save queue.
    +	 *
    +	 * NB: This must be done before ieee80211_classify as
    +	 *     it marks EAPOL in frames with M_EAPOL.
    +	 *
    +	 * XXX TODO: for VAP frames coming in from the stack
    +	 * itself, we should just inject them directly into
    +	 * the vap rather than via ieee80211_vap_transmit().
    +	 * Yes, they still need to go into the ifnet queue
    +	 * and be dequeued, but we can skip this particular
    +	 * check as they're already "in" the net80211 layer.
    +	 */
    +	m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA);
    +	_IF_ENQUEUE(&ifp->if_snd, m);
    +	IF_UNLOCK(&ifp->if_snd);
    +
    +	/* Schedule the deferred TX task */
    +	ieee80211_runtask(ic, &vap->iv_tx_task);
    +
    +	return (0);
    +}
    +
    +void
    +ieee80211_vap_qflush(struct ifnet *ifp)
    +{
    +
    +	/* XXX TODO */
    +}
    +
    +
    +/*
      * Start method for vap's.  All packets from the stack come
      * through here.  We handle common processing of the packets
      * before dispatching them to the underlying device.
      */
     void
    -ieee80211_start(struct ifnet *ifp)
    +ieee80211_vap_tx_task(void *arg, int npending)
     {
    -	struct ieee80211vap *vap = ifp->if_softc;
    +	struct ieee80211vap *vap = (struct ieee80211vap *) arg;
    +	struct ifnet *ifp = vap->iv_ifp;
     	struct ieee80211com *ic = vap->iv_ic;
     	struct ifnet *parent = ic->ic_ifp;
     	struct mbuf *m;
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -199,6 +199,7 @@ ieee80211_proto_vattach(struct ieee80211
     	callout_init(&vap->iv_mgtsend, CALLOUT_MPSAFE);
     	TASK_INIT(&vap->iv_nstate_task, 0, ieee80211_newstate_cb, vap);
     	TASK_INIT(&vap->iv_swbmiss_task, 0, beacon_swmiss, vap);
    +	TASK_INIT(&vap->iv_tx_task, 0, ieee80211_vap_tx_task, vap);
     	/*
     	 * Install default tx rate handling: no fixed rate, lowest
     	 * supported rate for mgmt and multicast frames.  Default
    @@ -1792,7 +1793,7 @@ ieee80211_newstate_cb(void *xvap, int np
     		 * XXX Kick-start a VAP queue - this should be a method,
     		 * not if_start()!
     		 */
    -		if_start(vap->iv_ifp);
    +		ieee80211_runtask(ic, &vap->iv_tx_task);
     
     		/* bring up any vaps waiting on us */
     		wakeupwaiting(vap);
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -103,7 +103,9 @@ int	ieee80211_raw_output(struct ieee8021
     void	ieee80211_send_setup(struct ieee80211_node *, struct mbuf *, int, int,
             const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN],
             const uint8_t [IEEE80211_ADDR_LEN]);
    -void	ieee80211_start(struct ifnet *);
    +int	ieee80211_vap_transmit(struct ifnet *ifp, struct mbuf *m);
    +void	ieee80211_vap_qflush(struct ifnet *ifp);
    +void	ieee80211_vap_tx_task(void *, int);
     int	ieee80211_send_nulldata(struct ieee80211_node *);
     int	ieee80211_classify(struct ieee80211_node *, struct mbuf *m);
     struct mbuf *ieee80211_mbuf_adjust(struct ieee80211vap *, int,
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_var.h
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_var.h	Fri Mar  1 04:21:22 2013	(r247528)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_var.h	Fri Mar  1 04:51:44 2013	(r247529)
    @@ -362,6 +362,7 @@ struct ieee80211vap {
     	int			iv_nstate_arg;	/* pending state arg */
     	struct task		iv_nstate_task;	/* deferred state processing */
     	struct task		iv_swbmiss_task;/* deferred iv_bmiss call */
    +	struct task		iv_tx_task;	/* VAP deferred TX task */
     	struct callout		iv_mgtsend;	/* mgmt frame response timer */
     						/* inactivity timer settings */
     	int			iv_inact_init;	/* setting for new station */
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 06:56:44 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 9400617B;
     Fri,  1 Mar 2013 06:56:44 +0000 (UTC) (envelope-from pho@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 740ADB6D;
     Fri,  1 Mar 2013 06:56:44 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r216uhYR031810;
     Fri, 1 Mar 2013 06:56:43 GMT (envelope-from pho@svn.freebsd.org)
    Received: (from pho@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r216uh2Y031807;
     Fri, 1 Mar 2013 06:56:43 GMT (envelope-from pho@svn.freebsd.org)
    Message-Id: <201303010656.r216uh2Y031807@svn.freebsd.org>
    From: Peter Holm 
    Date: Fri, 1 Mar 2013 06:56:43 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247530 - user/pho/stress2/misc
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 06:56:44 -0000
    
    Author: pho
    Date: Fri Mar  1 06:56:43 2013
    New Revision: 247530
    URL: http://svnweb.freebsd.org/changeset/base/247530
    
    Log:
      Added two "umount -f" scenarios.
    
    Added:
      user/pho/stress2/misc/umountf5.sh   (contents, props changed)
      user/pho/stress2/misc/umountf6.sh   (contents, props changed)
    
    Added: user/pho/stress2/misc/umountf5.sh
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/pho/stress2/misc/umountf5.sh	Fri Mar  1 06:56:43 2013	(r247530)
    @@ -0,0 +1,63 @@
    +#!/bin/sh
    +
    +#
    +# Copyright (c) 2008-2013 Peter Holm 
    +# 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.
    +#
    +# $FreeBSD$
    +#
    +
    +# Test with "umount -f" and SU
    +
    +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
    +
    +. ../default.cfg
    +
    +D=$diskimage
    +dd if=/dev/zero of=$D$m bs=1m count=10 2>&1 |
    +	egrep -v "records|transferred"
    +
    +mount | grep "$mntpoint" | grep md${mdstart}$part > /dev/null && umount $mntpoint
    +mdconfig -l | grep md${mdstart} > /dev/null &&  mdconfig -d -u ${mdstart}
    +
    +mdconfig -a -t vnode -f $D -u ${mdstart}
    +bsdlabel -w md${mdstart} auto
    +newfs -U md${mdstart}$part > /dev/null 2>&1
    +mount /dev/md${mdstart}$part $mntpoint
    +
    +export RUNDIR=$mntpoint/stressX
    +export runRUNTIME=2m
    +cd ..; ./run.sh vfs.cfg > /dev/null 2>&1 &
    +pid=$!
    +
    +sleep 30
    +
    +umount -f $mntpoint
    +mdconfig -d -u $mdstart
    +rm -f $D
    +
    +while ps | egrep "testcases|swap|mkdir|creat" | grep -vq grep; do
    +   ps | egrep "testcases|swap|mkdir|creat" | grep -v grep | awk '{print $1}' | xargs kill
    +   sleep 1
    +done
    
    Added: user/pho/stress2/misc/umountf6.sh
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/pho/stress2/misc/umountf6.sh	Fri Mar  1 06:56:43 2013	(r247530)
    @@ -0,0 +1,91 @@
    +#!/bin/sh
    +
    +#
    +# Copyright (c) 2008-2013 Peter Holm 
    +# 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.
    +#
    +# $FreeBSD$
    +#
    +
    +# Variation of umountf4.sh; FS with "soft updates"
    +
    +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
    +
    +. ../default.cfg
    +
    +mounts=15		# Number of parallel scripts
    +mdstart=$mdstart	# Use md unit numbers from this point
    +D=$diskimage
    +
    +if [ $# -eq 0 ]; then
    +	for i in `jot $mounts`; do
    +		m=$(( i + mdstart - 1 ))
    +		[ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m
    +		mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m
    +		mdconfig -l | grep -q md$m &&  mdconfig -d -u $m
    +
    +		dede $D$m 1m 10
    +		dd if=/dev/zero of=$D$m bs=1m count=10 2>&1 |
    +			egrep -v "records|transferred"
    +		mdconfig -a -t vnode -f $D$m -u $m
    +		bsdlabel -w md$m auto
    +		newfs -U md${m}$part > /dev/null 2>&1
    +	done
    +
    +	# start the parallel tests
    +	for i in `jot $mounts`; do
    +		m=$((i + mdstart - 1))
    +		./$0 $m &
    +		./$0 find &
    +	done
    +
    +	for i in `jot $mounts`; do
    +		wait; wait
    +	done
    +
    +	for i in `jot $mounts`; do
    +		m=$((i + mdstart - 1))
    +		mdconfig -d -u $m
    +		rm -f $D$m
    +	done
    +
    +else
    +	if [ $1 = find ]; then
    +		for i in `jot 100`; do
    +			find ${mntpoint}* -type f > /dev/null 2>&1
    +		done
    +	else
    +
    +		# The test: Parallel mount and unmounts
    +		for i in `jot 100`; do
    +			m=$1
    +			opt=`[ $(( m % 2 )) -eq 0 ] && echo -f`
    +			mount $opt /dev/md${m}$part ${mntpoint}$m
    +			cp -r /usr/include/machine/a* ${mntpoint}$m
    +			while mount | grep -qw $mntpoint$m; do
    +				umount -f ${mntpoint}$m > /dev/null 2>&1
    +			done
    +		done
    +	fi
    +fi
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 08:39:01 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id 4C34DD4D;
     Fri,  1 Mar 2013 08:39:01 +0000 (UTC)
     (envelope-from adrian@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 36F837D;
     Fri,  1 Mar 2013 08:39:01 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r218d1dn062598;
     Fri, 1 Mar 2013 08:39:01 GMT (envelope-from adrian@svn.freebsd.org)
    Received: (from adrian@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r218cvHc062565;
     Fri, 1 Mar 2013 08:38:57 GMT (envelope-from adrian@svn.freebsd.org)
    Message-Id: <201303010838.r218cvHc062565@svn.freebsd.org>
    From: Adrian Chadd 
    Date: Fri, 1 Mar 2013 08:38:57 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247536 - in user/adrian/net80211_tx: .
     cddl/contrib/opensolaris/cmd/zdb contrib/openbsm/bin/auditdistd include
     lib/libc/stdio lib/libutil libexec/rtld-elf sbin/tunefs share/man/man4 sh...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 08:39:01 -0000
    
    Author: adrian
    Date: Fri Mar  1 08:38:57 2013
    New Revision: 247536
    URL: http://svnweb.freebsd.org/changeset/base/247536
    
    Log:
      MFH
    
    Added:
      user/adrian/net80211_tx/lib/libc/stdio/open_memstream.3
         - copied unchanged from r247535, head/lib/libc/stdio/open_memstream.3
      user/adrian/net80211_tx/lib/libc/stdio/open_memstream.c
         - copied unchanged from r247535, head/lib/libc/stdio/open_memstream.c
      user/adrian/net80211_tx/lib/libc/stdio/open_wmemstream.c
         - copied unchanged from r247535, head/lib/libc/stdio/open_wmemstream.c
      user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/bcm2835_dma.c
         - copied unchanged from r247535, head/sys/arm/broadcom/bcm2835/bcm2835_dma.c
      user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/bcm2835_dma.h
         - copied unchanged from r247535, head/sys/arm/broadcom/bcm2835/bcm2835_dma.h
      user/adrian/net80211_tx/tools/regression/lib/libc/stdio/test-open_memstream.c
         - copied unchanged from r247535, head/tools/regression/lib/libc/stdio/test-open_memstream.c
      user/adrian/net80211_tx/tools/regression/lib/libc/stdio/test-open_memstream.t
         - copied unchanged from r247535, head/tools/regression/lib/libc/stdio/test-open_memstream.t
      user/adrian/net80211_tx/tools/regression/lib/libc/stdio/test-open_wmemstream.c
         - copied unchanged from r247535, head/tools/regression/lib/libc/stdio/test-open_wmemstream.c
      user/adrian/net80211_tx/tools/regression/lib/libc/stdio/test-open_wmemstream.t
         - copied unchanged from r247535, head/tools/regression/lib/libc/stdio/test-open_wmemstream.t
    Modified:
      user/adrian/net80211_tx/UPDATING
      user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zdb/zdb.c
      user/adrian/net80211_tx/contrib/openbsm/bin/auditdistd/sender.c
      user/adrian/net80211_tx/include/stdio.h
      user/adrian/net80211_tx/include/wchar.h
      user/adrian/net80211_tx/lib/libc/stdio/Makefile.inc
      user/adrian/net80211_tx/lib/libc/stdio/Symbol.map
      user/adrian/net80211_tx/lib/libutil/kinfo_getproc.3
      user/adrian/net80211_tx/libexec/rtld-elf/map_object.c
      user/adrian/net80211_tx/sbin/tunefs/tunefs.c
      user/adrian/net80211_tx/share/man/man4/arcmsr.4
      user/adrian/net80211_tx/share/man/man9/eventtimers.9
      user/adrian/net80211_tx/share/mk/bsd.compiler.mk
      user/adrian/net80211_tx/sys/amd64/amd64/machdep.c
      user/adrian/net80211_tx/sys/amd64/amd64/pmap.c
      user/adrian/net80211_tx/sys/arm/allwinner/files.a10
      user/adrian/net80211_tx/sys/arm/allwinner/timer.c
      user/adrian/net80211_tx/sys/arm/arm/mpcore_timer.c
      user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
      user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
      user/adrian/net80211_tx/sys/arm/broadcom/bcm2835/files.bcm2835
      user/adrian/net80211_tx/sys/arm/conf/CUBIEBOARD
      user/adrian/net80211_tx/sys/arm/econa/econa_machdep.c
      user/adrian/net80211_tx/sys/arm/include/vmparam.h
      user/adrian/net80211_tx/sys/arm/lpc/lpc_timer.c
      user/adrian/net80211_tx/sys/arm/mv/timer.c
      user/adrian/net80211_tx/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/adrian/net80211_tx/sys/arm/ti/am335x/am335x_dmtimer.c
      user/adrian/net80211_tx/sys/arm/versatile/sp804.c
      user/adrian/net80211_tx/sys/arm/xscale/i80321/ep80219_machdep.c
      user/adrian/net80211_tx/sys/arm/xscale/i80321/iq31244_machdep.c
      user/adrian/net80211_tx/sys/arm/xscale/i8134x/crb_machdep.c
      user/adrian/net80211_tx/sys/arm/xscale/ixp425/avila_machdep.c
      user/adrian/net80211_tx/sys/arm/xscale/pxa/pxa_machdep.c
      user/adrian/net80211_tx/sys/boot/common/load_elf.c
      user/adrian/net80211_tx/sys/boot/fdt/dts/cubieboard.dts
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/adrian/net80211_tx/sys/dev/acpica/acpi_cpu.c
      user/adrian/net80211_tx/sys/dev/acpica/acpi_hpet.c
      user/adrian/net80211_tx/sys/dev/arcmsr/arcmsr.c
      user/adrian/net80211_tx/sys/dev/arcmsr/arcmsr.h
      user/adrian/net80211_tx/sys/dev/ath/if_ath_tx_ht.c
      user/adrian/net80211_tx/sys/dev/ath/if_athrate.h
      user/adrian/net80211_tx/sys/dev/ic/ns16550.h
      user/adrian/net80211_tx/sys/dev/mfi/mfi.c
      user/adrian/net80211_tx/sys/dev/pci/pci.c
      user/adrian/net80211_tx/sys/dev/sdhci/sdhci.c
      user/adrian/net80211_tx/sys/dev/sdhci/sdhci.h
      user/adrian/net80211_tx/sys/dev/sdhci/sdhci_if.m
      user/adrian/net80211_tx/sys/dev/uart/uart_dev_ns8250.c
      user/adrian/net80211_tx/sys/dev/watchdog/watchdog.c
      user/adrian/net80211_tx/sys/i386/i386/machdep.c
      user/adrian/net80211_tx/sys/i386/i386/pmap.c
      user/adrian/net80211_tx/sys/i386/xen/clock.c
      user/adrian/net80211_tx/sys/i386/xen/pmap.c
      user/adrian/net80211_tx/sys/ia64/ia64/clock.c
      user/adrian/net80211_tx/sys/ia64/ia64/machdep.c
      user/adrian/net80211_tx/sys/kern/kern_clocksource.c
      user/adrian/net80211_tx/sys/kern/kern_et.c
      user/adrian/net80211_tx/sys/kern/kern_timeout.c
      user/adrian/net80211_tx/sys/mips/mips/tick.c
      user/adrian/net80211_tx/sys/mips/nlm/tick.c
      user/adrian/net80211_tx/sys/mips/rmi/tick.c
      user/adrian/net80211_tx/sys/modules/ixgbe/Makefile
      user/adrian/net80211_tx/sys/netinet/sctputil.c
      user/adrian/net80211_tx/sys/pc98/pc98/machdep.c
      user/adrian/net80211_tx/sys/powerpc/aim/clock.c
      user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea.c
      user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea64.c
      user/adrian/net80211_tx/sys/powerpc/booke/clock.c
      user/adrian/net80211_tx/sys/powerpc/booke/pmap.c
      user/adrian/net80211_tx/sys/powerpc/powerpc/cpu.c
      user/adrian/net80211_tx/sys/powerpc/ps3/platform_ps3.c
      user/adrian/net80211_tx/sys/powerpc/wii/platform_wii.c
      user/adrian/net80211_tx/sys/sparc64/sparc64/pmap.c
      user/adrian/net80211_tx/sys/sparc64/sparc64/tick.c
      user/adrian/net80211_tx/sys/sys/proc.h
      user/adrian/net80211_tx/sys/sys/systm.h
      user/adrian/net80211_tx/sys/sys/time.h
      user/adrian/net80211_tx/sys/sys/timeet.h
      user/adrian/net80211_tx/sys/sys/types.h
      user/adrian/net80211_tx/sys/sys/watchdog.h
      user/adrian/net80211_tx/sys/vm/vm_object.h
      user/adrian/net80211_tx/sys/x86/isa/atrtc.c
      user/adrian/net80211_tx/sys/x86/isa/clock.c
      user/adrian/net80211_tx/sys/x86/x86/local_apic.c
      user/adrian/net80211_tx/tools/regression/lib/libc/stdio/Makefile
      user/adrian/net80211_tx/tools/test/iconv/tablegen/cmp.sh
      user/adrian/net80211_tx/usr.bin/dc/dc.c
      user/adrian/net80211_tx/usr.sbin/bhyve/acpi.c
      user/adrian/net80211_tx/usr.sbin/bhyve/bhyverun.c
      user/adrian/net80211_tx/usr.sbin/bhyve/bhyverun.h
      user/adrian/net80211_tx/usr.sbin/bhyve/mptbl.c
      user/adrian/net80211_tx/usr.sbin/bhyve/pci_virtio_block.c
      user/adrian/net80211_tx/usr.sbin/bhyve/pci_virtio_net.c
      user/adrian/net80211_tx/usr.sbin/bhyve/virtio.h
      user/adrian/net80211_tx/usr.sbin/watchdogd/watchdogd.8
      user/adrian/net80211_tx/usr.sbin/watchdogd/watchdogd.c
    Directory Properties:
      user/adrian/net80211_tx/   (props changed)
      user/adrian/net80211_tx/cddl/contrib/opensolaris/   (props changed)
      user/adrian/net80211_tx/contrib/openbsm/   (props changed)
      user/adrian/net80211_tx/lib/libc/   (props changed)
      user/adrian/net80211_tx/lib/libutil/   (props changed)
      user/adrian/net80211_tx/sbin/   (props changed)
      user/adrian/net80211_tx/share/man/man4/   (props changed)
      user/adrian/net80211_tx/sys/   (props changed)
      user/adrian/net80211_tx/sys/boot/   (props changed)
      user/adrian/net80211_tx/sys/cddl/contrib/opensolaris/   (props changed)
      user/adrian/net80211_tx/usr.sbin/bhyve/   (props changed)
    
    Modified: user/adrian/net80211_tx/UPDATING
    ==============================================================================
    --- user/adrian/net80211_tx/UPDATING	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/UPDATING	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130208:
    +	A new compression method (lz4) has been merged to -HEAD.  Please
    +	refer to zpool-features(7) for more information.
    +
    +	Please refer to the "ZFS notes" section of this file for information
    +	on upgrading boot ZFS pools.
    +
     20130129:
     	A BSD-licensed patch(1) variant has been added and is installed
     	as bsdpatch, being the GNU version the default patch.
    @@ -39,8 +46,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	unlikely event that -M was the last option on the command line
     	and the command line contained at least two files and a target
     	directory the first file will have logs appended to it.  The -M
    -	option served little practical purpose in the last decade so it's
    -	used expected to be extremely rare.
    +	option served little practical purpose in the last decade so its
    +	use is expected to be extremely rare.
     
     20121223:
     	After switching to Clang as the default compiler some users of ZFS
    
    Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zdb/zdb.c
    ==============================================================================
    --- user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -545,7 +545,7 @@ static void
     dump_metaslab_stats(metaslab_t *msp)
     {
     	char maxbuf[32];
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	avl_tree_t *t = sm->sm_pp_root;
     	int free_pct = sm->sm_space * 100 / sm->sm_size;
     
    @@ -561,7 +561,7 @@ dump_metaslab(metaslab_t *msp)
     {
     	vdev_t *vd = msp->ms_group->mg_vd;
     	spa_t *spa = vd->vdev_spa;
    -	space_map_t *sm = &msp->ms_map;
    +	space_map_t *sm = msp->ms_map;
     	space_map_obj_t *smo = &msp->ms_smo;
     	char freebuf[32];
     
    @@ -2160,11 +2160,11 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    -				VERIFY(space_map_load(&msp->ms_map,
    +				space_map_unload(msp->ms_map);
    +				VERIFY(space_map_load(msp->ms_map,
     				    &zdb_space_map_ops, SM_ALLOC, &msp->ms_smo,
     				    spa->spa_meta_objset) == 0);
    -				msp->ms_map.sm_ppd = vd;
    +				msp->ms_map->sm_ppd = vd;
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    @@ -2187,7 +2187,7 @@ zdb_leak_fini(spa_t *spa)
     			for (int m = 0; m < vd->vdev_ms_count; m++) {
     				metaslab_t *msp = vd->vdev_ms[m];
     				mutex_enter(&msp->ms_lock);
    -				space_map_unload(&msp->ms_map);
    +				space_map_unload(msp->ms_map);
     				mutex_exit(&msp->ms_lock);
     			}
     		}
    
    Modified: user/adrian/net80211_tx/contrib/openbsm/bin/auditdistd/sender.c
    ==============================================================================
    --- user/adrian/net80211_tx/contrib/openbsm/bin/auditdistd/sender.c	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/contrib/openbsm/bin/auditdistd/sender.c	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -394,6 +394,7 @@ read_thread_wait(void)
     
     	mtx_lock(&adist_remote_mtx);
     	if (adhost->adh_reset) {
    +reset:
     		adhost->adh_reset = false;
     		if (trail_filefd(adist_trail) != -1)
     			trail_close(adist_trail);
    @@ -408,6 +409,14 @@ read_thread_wait(void)
     	while (trail_filefd(adist_trail) == -1) {
     		newfile = true;
     		wait_for_dir();
    +		/*
    +		 * We may have been disconnected and reconnected in the
    +		 * meantime, check if reset is set.
    +		 */
    +		mtx_lock(&adist_remote_mtx);
    +		if (adhost->adh_reset)
    +			goto reset;
    +		mtx_unlock(&adist_remote_mtx);
     		if (trail_filefd(adist_trail) == -1)
     			trail_next(adist_trail);
     	}
    
    Modified: user/adrian/net80211_tx/include/stdio.h
    ==============================================================================
    --- user/adrian/net80211_tx/include/stdio.h	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/include/stdio.h	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -346,6 +346,7 @@ char	*tempnam(const char *, const char *
     FILE	*fmemopen(void * __restrict, size_t, const char * __restrict);
     ssize_t	 getdelim(char ** __restrict, size_t * __restrict, int,
     	    FILE * __restrict);
    +FILE	*open_memstream(char **, size_t *);
     int	 renameat(int, const char *, int, const char *);
     int	 vdprintf(int, const char * __restrict, __va_list);
     
    
    Modified: user/adrian/net80211_tx/include/wchar.h
    ==============================================================================
    --- user/adrian/net80211_tx/include/wchar.h	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/include/wchar.h	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -207,6 +207,7 @@ int	wcwidth(wchar_t);
     #if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE
     size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     	    size_t, mbstate_t * __restrict);
    +FILE	*open_wmemstream(wchar_t **, size_t *);
     wchar_t	*wcpcpy(wchar_t * __restrict, const wchar_t * __restrict);
     wchar_t	*wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     wchar_t	*wcsdup(const wchar_t *) __malloc_like;
    
    Modified: user/adrian/net80211_tx/lib/libc/stdio/Makefile.inc
    ==============================================================================
    --- user/adrian/net80211_tx/lib/libc/stdio/Makefile.inc	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/lib/libc/stdio/Makefile.inc	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -14,6 +14,7 @@ SRCS+=	_flock_stub.c asprintf.c clrerr.c
     	ftell.c funopen.c fvwrite.c fwalk.c fwide.c fwprintf.c fwscanf.c \
     	fwrite.c getc.c getchar.c getdelim.c getline.c \
     	gets.c getw.c getwc.c getwchar.c makebuf.c mktemp.c \
    +	open_memstream.c open_wmemstream.c \
     	perror.c printf.c printf-pos.c putc.c putchar.c \
     	puts.c putw.c putwc.c putwchar.c \
     	refill.c remove.c rewind.c rget.c scanf.c setbuf.c setbuffer.c \
    @@ -36,7 +37,7 @@ MAN+=	fclose.3 ferror.3 fflush.3 fgetln.
     	flockfile.3 \
     	fopen.3 fputs.3 \
     	fputws.3 fread.3 fseek.3 funopen.3 fwide.3 getc.3 \
    -	getline.3 getwc.3 mktemp.3 \
    +	getline.3 getwc.3 mktemp.3 open_memstream.3 \
     	printf.3 printf_l.3 putc.3 putwc.3 remove.3 scanf.3 scanf_l.3 setbuf.3 \
     	stdio.3 tmpnam.3 \
     	ungetc.3 ungetwc.3 wprintf.3 wscanf.3
    @@ -60,6 +61,7 @@ MLINKS+=getc.3 fgetc.3 getc.3 getc_unloc
     MLINKS+=getline.3 getdelim.3
     MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3
     MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3
    +MLINKS+=open_memstream.3 open_wmemstream.3
     MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \
     	printf.3 snprintf.3 printf.3 sprintf.3 \
     	printf.3 vasprintf.3 printf.3 vdprintf.3 \
    
    Modified: user/adrian/net80211_tx/lib/libc/stdio/Symbol.map
    ==============================================================================
    --- user/adrian/net80211_tx/lib/libc/stdio/Symbol.map	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/lib/libc/stdio/Symbol.map	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -156,6 +156,8 @@ FBSD_1.3 {
     	putwc_l;
     	putwchar_l;
     	fmemopen;
    +	open_memstream;
    +	open_wmemstream;
     };
     
     FBSDprivate_1.0 {
    
    Copied: user/adrian/net80211_tx/lib/libc/stdio/open_memstream.3 (from r247535, head/lib/libc/stdio/open_memstream.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/adrian/net80211_tx/lib/libc/stdio/open_memstream.3	Fri Mar  1 08:38:57 2013	(r247536, copy of r247535, head/lib/libc/stdio/open_memstream.3)
    @@ -0,0 +1,155 @@
    +.\" Copyright (c) 2013 Advanced Computing Technologies LLC
    +.\" Written by: John H. Baldwin 
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 27, 2013
    +.Dt OPEN_MEMSTREAM 3
    +.Os
    +.Sh NAME
    +.Nm open_memstream ,
    +.Nm open_wmemstream
    +.Nd dynamic memory buffer stream open functions
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In stdio.h
    +.Ft FILE *
    +.Fn open_memstream "char **bufp" "size_t **sizep"
    +.In wchar.h
    +.Ft FILE *
    +.Fn open_wmemstream "wchar_t **bufp" "size_t **sizep"
    +.Sh DESCRIPTION
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions create a write-only, seekable stream backed by a dynamically
    +allocated memory buffer.
    +The
    +.Fn open_memstream
    +function creates a byte-oriented stream,
    +while the
    +.Fn open_wmemstream
    +function creates a wide-oriented stream.
    +.Pp
    +Each stream maintains a current position and size.
    +Initially,
    +the position and size are set to zero.
    +Each write begins at the current position and advances it the number of
    +successfully written bytes for
    +.Fn open_memstream
    +or wide characters for
    +.Fn open_wmemstream .
    +If a write moves the current position beyond the length of the buffer,
    +the length of the buffer is extended and a null character is appended to the
    +buffer.
    +.Pp
    +A stream's buffer always contains a null character at the end of the buffer
    +that is not included in the current length.
    +.Pp
    +If a stream's current position is moved beyond the current length via a
    +seek operation and a write is performed,
    +the characters between the current length and the current position are filled
    +with null characters before the write is performed.
    +.Pp
    +After a successful call to
    +.Xr fclose 3
    +or
    +.Xr fflush 3 ,
    +the pointer referenced by
    +.Fa bufp
    +will contain the start of the memory buffer and the variable referenced by
    +.Fa sizep
    +will contain the smaller of the current position and the current buffer length.
    +.Pp
    +After a successful call to
    +.Xr fflush 3,
    +the pointer referenced by
    +.Fa bufp
    +and the variable referenced by
    +.Fa sizep
    +are only valid until the next write operation or a call to
    +.Xr fclose 3.
    +.Pp
    +Once a stream is closed,
    +the allocated buffer referenced by
    +.Fa bufp
    +should be released via a call to
    +.Xr free 3
    +when it is no longer needed.
    +.Sh IMPLEMENTATION NOTES
    +Internally all I/O streams are effectively byte-oriented,
    +so using wide-oriented operations to write to a stream opened via
    +.Fn open_wmemstream
    +results in wide characters being expanded to a stream of multibyte characters
    +in stdio's internal buffers.
    +These multibyte characters are then converted back to wide characters when
    +written into the stream.
    +As a result,
    +the wide-oriented streams maintain an internal multibyte character conversion
    +state that is cleared on any seek opertion that changes the current position.
    +This should have no effect as long as wide-oriented output operations are used
    +on a wide-oriented stream.
    +.Sh RETURN VALUES
    +Upon successful completion,
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +return a
    +.Tn FILE
    +pointer.
    +Otherwise,
    +.Dv NULL
    +is returned and the global variable
    +.Va errno
    +is set to indicate the error.
    +.Sh ERRORS
    +.Bl -tag -width Er
    +.It Bq Er EINVAL
    +The
    +.Fa bufp
    +or
    +.Fa sizep
    +argument was
    +.Dv NULL .
    +.It Bq Er ENOMEM
    +Memory for the stream or buffer could not be allocated.
    +.El
    +.Sh SEE ALSO
    +.Xr fclose 3 ,
    +.Xr fflush 3 ,
    +.Xr fopen 3 ,
    +.Xr free 3 ,
    +.Xr fseek 3 ,
    +.Xr sbuf 3 ,
    +.Xr stdio 3
    +.Sh STANDARDS
    +The
    +.Fn open_memstream
    +and
    +.Fn open_wmemstream
    +functions conform to
    +.St -p1003.1-2008 .
    
    Copied: user/adrian/net80211_tx/lib/libc/stdio/open_memstream.c (from r247535, head/lib/libc/stdio/open_memstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/adrian/net80211_tx/lib/libc/stdio/open_memstream.c	Fri Mar  1 08:38:57 2013	(r247536, copy of r247535, head/lib/libc/stdio/open_memstream.c)
    @@ -0,0 +1,209 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct memstream {
    +	char **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +};
    +
    +static int
    +memstream_grow(struct memstream *ms, fpos_t newoff)
    +{
    +	char *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX)
    +		newsize = SSIZE_MAX - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, newsize + 1);
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "MS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			memset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +memstream_update(struct memstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +static int
    +memstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct memstream *ms;
    +	ssize_t tocopy;
    +
    +	ms = cookie;
    +	if (!memstream_grow(ms, ms->offset + len))
    +		return (-1);
    +	tocopy = ms->len - ms->offset;
    +	if (len < tocopy)
    +		tocopy = len;
    +	memcpy(*ms->bufp + ms->offset, buf, tocopy);
    +	ms->offset += tocopy;
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: write(%p, %d) = %zd\n", ms, len, tocopy);
    +#endif
    +	return (tocopy);
    +}
    +
    +static fpos_t
    +memstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct memstream *ms;
    +#ifdef DEBUG
    +	fpos_t old;
    +#endif
    +
    +	ms = cookie;
    +#ifdef DEBUG
    +	old = ms->offset;
    +#endif
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "MS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	memstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "MS: seek(%p, %jd, %d) %jd -> %jd\n", ms, (intmax_t)pos,
    +	    whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +memstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_memstream(char **bufp, size_t *sizep)
    +{
    +	struct memstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, 1);
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memstream_update(ms);
    +	fp = funopen(ms, NULL, memstream_write, memstream_seek,
    +	    memstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, -1);
    +	return (fp);
    +}
    
    Copied: user/adrian/net80211_tx/lib/libc/stdio/open_wmemstream.c (from r247535, head/lib/libc/stdio/open_wmemstream.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/adrian/net80211_tx/lib/libc/stdio/open_wmemstream.c	Fri Mar  1 08:38:57 2013	(r247536, copy of r247535, head/lib/libc/stdio/open_wmemstream.c)
    @@ -0,0 +1,271 @@
    +/*-
    + * Copyright (c) 2013 Advanced Computing Technologies LLC
    + * Written by: John H. Baldwin 
    + * 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$");
    +
    +#include "namespace.h"
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include "un-namespace.h"
    +
    +/* XXX: There is no FPOS_MAX.  This assumes fpos_t is an off_t. */
    +#define	FPOS_MAX	OFF_MAX
    +
    +struct wmemstream {
    +	wchar_t **bufp;
    +	size_t *sizep;
    +	ssize_t len;
    +	fpos_t offset;
    +	mbstate_t mbstate;
    +};
    +
    +static int
    +wmemstream_grow(struct wmemstream *ms, fpos_t newoff)
    +{
    +	wchar_t *buf;
    +	ssize_t newsize;
    +
    +	if (newoff < 0 || newoff >= SSIZE_MAX / sizeof(wchar_t))
    +		newsize = SSIZE_MAX / sizeof(wchar_t) - 1;
    +	else
    +		newsize = newoff;
    +	if (newsize > ms->len) {
    +		buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t));
    +		if (buf != NULL) {
    +#ifdef DEBUG
    +			fprintf(stderr, "WMS: %p growing from %zd to %zd\n",
    +			    ms, ms->len, newsize);
    +#endif
    +			wmemset(buf + ms->len + 1, 0, newsize - ms->len);
    +			*ms->bufp = buf;
    +			ms->len = newsize;
    +			return (1);
    +		}
    +		return (0);
    +	}
    +	return (1);
    +}
    +
    +static void
    +wmemstream_update(struct wmemstream *ms)
    +{
    +
    +	assert(ms->len >= 0 && ms->offset >= 0);
    +	*ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
    +}
    +
    +/*
    + * Based on a starting multibyte state and an input buffer, determine
    + * how many wchar_t's would be output.  This doesn't use mbsnrtowcs()
    + * so that it can handle embedded null characters.
    + */
    +static size_t
    +wbuflen(const mbstate_t *state, const char *buf, int len)
    +{
    +	mbstate_t lenstate;
    +	size_t charlen, count;
    +
    +	count = 0;
    +	lenstate = *state;
    +	while (len > 0) {
    +		charlen = mbrlen(buf, len, &lenstate);
    +		if (charlen == (size_t)-1)
    +			return (-1);
    +		if (charlen == (size_t)-2)
    +			break;
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		len -= charlen;
    +		buf += charlen;
    +		count++;
    +	}
    +	return (count);
    +}
    +
    +static int
    +wmemstream_write(void *cookie, const char *buf, int len)
    +{
    +	struct wmemstream *ms;
    +	ssize_t consumed, wlen;
    +	size_t charlen;
    +
    +	ms = cookie;
    +	wlen = wbuflen(&ms->mbstate, buf, len);
    +	if (wlen < 0) {
    +		errno = EILSEQ;
    +		return (-1);
    +	}
    +	if (!wmemstream_grow(ms, ms->offset + wlen))
    +		return (-1);
    +
    +	/*
    +	 * This copies characters one at a time rather than using
    +	 * mbsnrtowcs() so it can properly handle embedded null
    +	 * characters.
    +	 */
    +	consumed = 0;
    +	while (len > 0 && ms->offset < ms->len) {
    +		charlen = mbrtowc(*ms->bufp + ms->offset, buf, len,
    +		    &ms->mbstate);
    +		if (charlen == (size_t)-1) {
    +			if (consumed == 0) {
    +				errno = EILSEQ;
    +				return (-1);
    +			}
    +			/* Treat it as a successful short write. */
    +			break;
    +		}
    +		if (charlen == 0)
    +			/* XXX: Not sure how else to handle this. */
    +			charlen = 1;
    +		if (charlen == (size_t)-2) {
    +			consumed += len;
    +			len = 0;
    +		} else {
    +			consumed += charlen;
    +			buf += charlen;
    +			len -= charlen;
    +			ms->offset++;
    +		}
    +	}
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: write(%p, %d) = %zd\n", ms, len, consumed);
    +#endif
    +	return (consumed);
    +}
    +
    +static fpos_t
    +wmemstream_seek(void *cookie, fpos_t pos, int whence)
    +{
    +	struct wmemstream *ms;
    +	fpos_t old;
    +
    +	ms = cookie;
    +	old = ms->offset;
    +	switch (whence) {
    +	case SEEK_SET:
    +		/* _fseeko() checks for negative offsets. */
    +		assert(pos >= 0);
    +		ms->offset = pos;
    +		break;
    +	case SEEK_CUR:
    +		/* This is only called by _ftello(). */
    +		assert(pos == 0);
    +		break;
    +	case SEEK_END:
    +		if (pos < 0) {
    +			if (pos + ms->len < 0) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EINVAL;
    +				return (-1);
    +			}
    +		} else {
    +			if (FPOS_MAX - ms->len < pos) {
    +#ifdef DEBUG
    +				fprintf(stderr,
    +				    "WMS: bad SEEK_END: pos %jd, len %zd\n",
    +				    (intmax_t)pos, ms->len);
    +#endif
    +				errno = EOVERFLOW;
    +				return (-1);
    +			}
    +		}
    +		ms->offset = ms->len + pos;
    +		break;
    +	}
    +	/* Reset the multibyte state if a seek changes the position. */
    +	if (ms->offset != old)
    +		memset(&ms->mbstate, 0, sizeof(ms->mbstate));
    +	wmemstream_update(ms);
    +#ifdef DEBUG
    +	fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms,
    +	    (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset);
    +#endif
    +	return (ms->offset);
    +}
    +
    +static int
    +wmemstream_close(void *cookie)
    +{
    +
    +	free(cookie);
    +	return (0);
    +}
    +
    +FILE *
    +open_wmemstream(wchar_t **bufp, size_t *sizep)
    +{
    +	struct wmemstream *ms;
    +	int save_errno;
    +	FILE *fp;
    +
    +	if (bufp == NULL || sizep == NULL) {
    +		errno = EINVAL;
    +		return (NULL);
    +	}
    +	*bufp = calloc(1, sizeof(wchar_t));
    +	if (*bufp == NULL)
    +		return (NULL);
    +	ms = malloc(sizeof(*ms));
    +	if (ms == NULL) {
    +		save_errno = errno;
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	ms->bufp = bufp;
    +	ms->sizep = sizep;
    +	ms->len = 0;
    +	ms->offset = 0;
    +	memset(&ms->mbstate, 0, sizeof(mbstate_t));
    +	wmemstream_update(ms);
    +	fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
    +	    wmemstream_close);
    +	if (fp == NULL) {
    +		save_errno = errno;
    +		free(ms);
    +		free(*bufp);
    +		*bufp = NULL;
    +		errno = save_errno;
    +		return (NULL);
    +	}
    +	fwide(fp, 1);
    +	return (fp);
    +}
    
    Modified: user/adrian/net80211_tx/lib/libutil/kinfo_getproc.3
    ==============================================================================
    --- user/adrian/net80211_tx/lib/libutil/kinfo_getproc.3	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/lib/libutil/kinfo_getproc.3	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -25,7 +25,7 @@
     .\"
     .\" $FreeBSD$
     .\"
    -.Dd February 25, 2012
    +.Dd March 1, 2013
     .Dt KINFO_GETPROC 3
     .Os
     .Sh NAME
    @@ -37,7 +37,7 @@
     .In sys/types.h
     .In libutil.h
     .Ft struct kinfo_proc *
    -.Fn kinfo_getproc "pid_t pid" "int *cntp"
    +.Fn kinfo_getproc "pid_t pid"
     .Sh DESCRIPTION
     This function is used for obtaining process information from the kernel.
     .Pp
    
    Modified: user/adrian/net80211_tx/libexec/rtld-elf/map_object.c
    ==============================================================================
    --- user/adrian/net80211_tx/libexec/rtld-elf/map_object.c	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/libexec/rtld-elf/map_object.c	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -175,7 +175,7 @@ map_object(int fd, const char *path, con
         base_vaddr = trunc_page(segs[0]->p_vaddr);
         base_vlimit = round_page(segs[nsegs]->p_vaddr + segs[nsegs]->p_memsz);
         mapsize = base_vlimit - base_vaddr;
    -    base_addr = hdr->e_type == ET_EXEC ? (caddr_t) base_vaddr : NULL;
    +    base_addr = (caddr_t) base_vaddr;
     
         mapbase = mmap(base_addr, mapsize, PROT_NONE, MAP_ANON | MAP_PRIVATE |
           MAP_NOCORE, -1, 0);
    
    Modified: user/adrian/net80211_tx/sbin/tunefs/tunefs.c
    ==============================================================================
    --- user/adrian/net80211_tx/sbin/tunefs/tunefs.c	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/sbin/tunefs/tunefs.c	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -671,7 +671,7 @@ journal_findfile(void)
     				return (ino);
     		}
     	} else {
    -		if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) {
    +		if ((off_t)dp2->di_size >= lblktosize(&sblock, NDADDR)) {
     			warnx("ROOTINO extends beyond direct blocks.");
     			return (-1);
     		}
    
    Modified: user/adrian/net80211_tx/share/man/man4/arcmsr.4
    ==============================================================================
    --- user/adrian/net80211_tx/share/man/man4/arcmsr.4	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/share/man/man4/arcmsr.4	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -24,7 +24,7 @@
     .\"
     .\" $FreeBSD$
     .\"
    -.Dd December 18, 2012
    +.Dd February 27, 2013
     .Dt ARCMSR 4
     .Os
     .Sh NAME
    @@ -108,6 +108,8 @@ ARC-1222
     .It
     ARC-1223
     .It
    +ARC-1224
    +.It
     ARC-1230
     .It
     ARC-1231
    
    Modified: user/adrian/net80211_tx/share/man/man9/eventtimers.9
    ==============================================================================
    --- user/adrian/net80211_tx/share/man/man9/eventtimers.9	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/share/man/man9/eventtimers.9	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -1,5 +1,5 @@
     .\"
    -.\" Copyright (c) 2011 Alexander Motin 
    +.\" Copyright (c) 2011-2013 Alexander Motin 
     .\" All rights reserved.
     .\"
     .\" Redistribution and use in source and binary forms, with or without
    @@ -24,7 +24,7 @@
     .\"
     .\" $FreeBSD$
     .\"
    -.Dd December 14, 2011
    +.Dd February 25, 2013
     .Dt EVENTTIMERS 9
     .Os
     .Sh NAME
    @@ -36,7 +36,7 @@
     struct eventtimer;
     
     typedef int et_start_t(struct eventtimer *et,
    -    struct bintime *first, struct bintime *period);
    +    sbintime_t first, sbintime_t period);
     typedef int et_stop_t(struct eventtimer *et);
     typedef void et_event_cb_t(struct eventtimer *et, void *arg);
     typedef int et_deregister_cb_t(struct eventtimer *et, void *arg);
    @@ -53,8 +53,8 @@ struct eventtimer {
     	int			et_quality;
     	int			et_active;
     	uint64_t		et_frequency;
    -	struct bintime		et_min_period;
    -	struct bintime		et_max_period;
    +	sbintime_t		et_min_period;
    +	sbintime_t		et_max_period;
     	et_start_t		*et_start;
     	et_stop_t		*et_stop;
     	et_event_cb_t		*et_event_cb;
    @@ -75,7 +75,7 @@ struct eventtimer {
     .Ft int
     .Fn et_init "struct eventtimer *et" "et_event_cb_t *event" "et_deregister_cb_t *deregister" "void *arg"
     .Ft int
    -.Fn et_start "struct eventtimer *et" "struct bintime *first" "struct bintime *period"
    +.Fn et_start "struct eventtimer *et" "sbintime_t first" "sbintime_t period"
     .Ft int
     .Fn et_stop "struct eventtimer *et"
     .Ft int
    
    Modified: user/adrian/net80211_tx/share/mk/bsd.compiler.mk
    ==============================================================================
    --- user/adrian/net80211_tx/share/mk/bsd.compiler.mk	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/share/mk/bsd.compiler.mk	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -14,7 +14,7 @@ COMPILER_TYPE:=	gcc
     .  elif ${_COMPILER_VERSION:Mclang}
     COMPILER_TYPE:=	clang
     .  else
    -.error Unable to determine compiler type for ${CC}
    +.error Unable to determine compiler type for ${CC}.  Consider setting COMPILER_TYPE.
     .  endif
     .  undef _COMPILER_VERSION
     . endif
    
    Modified: user/adrian/net80211_tx/sys/amd64/amd64/machdep.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/amd64/amd64/machdep.c	Fri Mar  1 08:30:31 2013	(r247535)
    +++ user/adrian/net80211_tx/sys/amd64/amd64/machdep.c	Fri Mar  1 08:38:57 2013	(r247536)
    @@ -658,7 +658,7 @@ cpu_halt(void)
     		halt();
     }
     
    -void (*cpu_idle_hook)(void) = NULL;	/* ACPI idle hook. */
    +void (*cpu_idle_hook)(sbintime_t) = NULL;	/* ACPI idle hook. */
     static int	cpu_ident_amdc1e = 0;	/* AMD C1E supported. */
     static int	idle_mwait = 1;		/* Use MONITOR/MWAIT for short idle. */
     TUNABLE_INT("machdep.idle_mwait", &idle_mwait);
    @@ -670,7 +670,7 @@ SYSCTL_INT(_machdep, OID_AUTO, idle_mwai
     #define	STATE_SLEEPING	0x2
     
     static void
    -cpu_idle_acpi(int busy)
    +cpu_idle_acpi(sbintime_t sbt)
     {
     	int *state;
     
    @@ -682,14 +682,14 @@ cpu_idle_acpi(int busy)
     	if (sched_runnable())
     		enable_intr();
     	else if (cpu_idle_hook)
    -		cpu_idle_hook();
    +		cpu_idle_hook(sbt);
     	else
     		__asm __volatile("sti; hlt");
     	*state = STATE_RUNNING;
     }
     
     static void
    -cpu_idle_hlt(int busy)
    +cpu_idle_hlt(sbintime_t sbt)
     {
     	int *state;
     
    @@ -730,7 +730,7 @@ cpu_idle_hlt(int busy)
     #define	MWAIT_C4	0x30
     
     static void
    -cpu_idle_mwait(int busy)
    +cpu_idle_mwait(sbintime_t sbt)
     {
     	int *state;
     
    @@ -753,7 +753,7 @@ cpu_idle_mwait(int busy)
     }
     
     static void
    -cpu_idle_spin(int busy)
    +cpu_idle_spin(sbintime_t sbt)
     {
     	int *state;
     	int i;
    @@ -802,12 +802,13 @@ cpu_probe_amdc1e(void)
     	}
     }
     
    -void (*cpu_idle_fn)(int) = cpu_idle_acpi;
    +void (*cpu_idle_fn)(sbintime_t) = cpu_idle_acpi;
     
     void
     cpu_idle(int busy)
     {
     	uint64_t msr;
    +	sbintime_t sbt = -1;
     
     	CTR2(KTR_SPARE2, "cpu_idle(%d) at %d",
     	    busy, curcpu);
    @@ -825,7 +826,7 @@ cpu_idle(int busy)
     	/* If we have time - switch timers into idle mode. */
     	if (!busy) {
     		critical_enter();
    -		cpu_idleclock();
    +		sbt = cpu_idleclock();
     	}
     
     	/* Apply AMD APIC timer C1E workaround. */
    @@ -836,7 +837,7 @@ cpu_idle(int busy)
     	}
     
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 15:59:20 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 130578A3;
     Fri,  1 Mar 2013 15:59:20 +0000 (UTC)
     (envelope-from mjacob@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id DCEA5700;
     Fri,  1 Mar 2013 15:59:19 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r21FxJo1096036;
     Fri, 1 Mar 2013 15:59:19 GMT (envelope-from mjacob@svn.freebsd.org)
    Received: (from mjacob@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r21FxGvx096018;
     Fri, 1 Mar 2013 15:59:16 GMT (envelope-from mjacob@svn.freebsd.org)
    Message-Id: <201303011559.r21FxGvx096018@svn.freebsd.org>
    From: Matt Jacob 
    Date: Fri, 1 Mar 2013 15:59:16 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247552 - in user/mjacob/sys: amd64/acpica amd64/amd64
     amd64/conf amd64/include amd64/linux32 arm/allwinner arm/arm arm/at91
     arm/broadcom/bcm2835 arm/conf arm/econa arm/include arm/lpc ...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 15:59:20 -0000
    
    Author: mjacob
    Date: Fri Mar  1 15:59:14 2013
    New Revision: 247552
    URL: http://svnweb.freebsd.org/changeset/base/247552
    
    Log:
      IFC@247551
    
    Added:
         - copied unchanged from r247551, head/sys/amd64/include/vmm.h
         - copied unchanged from r247551, head/sys/amd64/include/vmm_dev.h
         - copied unchanged from r247551, head/sys/amd64/include/vmm_instruction_emul.h
         - copied from r247551, head/sys/amd64/vmm/
      user/mjacob/sys/arm/allwinner/
         - copied from r247551, head/sys/arm/allwinner/
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_dma.c
         - copied unchanged from r247551, head/sys/arm/broadcom/bcm2835/bcm2835_dma.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_dma.h
         - copied unchanged from r247551, head/sys/arm/broadcom/bcm2835/bcm2835_dma.h
      user/mjacob/sys/arm/conf/CUBIEBOARD
         - copied unchanged from r247551, head/sys/arm/conf/CUBIEBOARD
      user/mjacob/sys/arm/conf/DREAMPLUG-1001
         - copied unchanged from r247551, head/sys/arm/conf/DREAMPLUG-1001
      user/mjacob/sys/boot/fdt/dts/cubieboard.dts
         - copied unchanged from r247551, head/sys/boot/fdt/dts/cubieboard.dts
      user/mjacob/sys/boot/fdt/dts/dreamplug-1001.dts
         - copied unchanged from r247551, head/sys/boot/fdt/dts/dreamplug-1001.dts
      user/mjacob/sys/boot/fdt/dts/dreamplug-1001N.dts
         - copied unchanged from r247551, head/sys/boot/fdt/dts/dreamplug-1001N.dts
      user/mjacob/sys/boot/fdt/help.fdt
         - copied unchanged from r247551, head/sys/boot/fdt/help.fdt
      user/mjacob/sys/boot/usb/
         - copied from r247551, head/sys/boot/usb/
      user/mjacob/sys/cddl/boot/zfs/lz4.c
         - copied unchanged from r247551, head/sys/cddl/boot/zfs/lz4.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4
         - copied unchanged from r247551, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4.descrip
         - copied unchanged from r247551, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.lz4.descrip
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c
         - copied unchanged from r247551, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslfileio.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslfileio.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslhex.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslhex.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslmethod.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslmethod.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslnamesp.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslnamesp.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslprepkg.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslprepkg.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslxref.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/compiler/aslxref.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbconvert.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/debugger/dbconvert.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evhandler.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/events/evhandler.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsconvert.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/namespace/nsconvert.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psobject.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/parser/psobject.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psopinfo.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/parser/psopinfo.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utownerid.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/utilities/utownerid.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utstring.c
         - copied unchanged from r247551, head/sys/contrib/dev/acpica/components/utilities/utstring.c
      user/mjacob/sys/dev/altera/avgen/altera_avgen_fdt.c
         - copied unchanged from r247551, head/sys/dev/altera/avgen/altera_avgen_fdt.c
      user/mjacob/sys/dev/altera/avgen/altera_avgen_nexus.c
         - copied unchanged from r247551, head/sys/dev/altera/avgen/altera_avgen_nexus.c
      user/mjacob/sys/dev/altera/jtag_uart/altera_jtag_uart_fdt.c
         - copied unchanged from r247551, head/sys/dev/altera/jtag_uart/altera_jtag_uart_fdt.c
      user/mjacob/sys/dev/altera/sdcard/altera_sdcard_fdt.c
         - copied unchanged from r247551, head/sys/dev/altera/sdcard/altera_sdcard_fdt.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_spectral.c
         - copied unchanged from r247551, head/sys/dev/ath/ath_hal/ar5416/ar5416_spectral.c
      user/mjacob/sys/dev/ath/if_ath_spectral.c
         - copied unchanged from r247551, head/sys/dev/ath/if_ath_spectral.c
      user/mjacob/sys/dev/ath/if_ath_spectral.h
         - copied unchanged from r247551, head/sys/dev/ath/if_ath_spectral.h
         - copied from r247551, head/sys/dev/bvm/
      user/mjacob/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu
         - copied unchanged from r247551, head/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu
      user/mjacob/sys/dev/isf/isf_fdt.c
         - copied unchanged from r247551, head/sys/dev/isf/isf_fdt.c
      user/mjacob/sys/dev/terasic/de4led/terasic_de4led_fdt.c
         - copied unchanged from r247551, head/sys/dev/terasic/de4led/terasic_de4led_fdt.c
      user/mjacob/sys/dev/terasic/mtl/terasic_mtl_fdt.c
         - copied unchanged from r247551, head/sys/dev/terasic/mtl/terasic_mtl_fdt.c
      user/mjacob/sys/dev/usb/usb_freebsd_loader.h
         - copied unchanged from r247551, head/sys/dev/usb/usb_freebsd_loader.h
      user/mjacob/sys/kern/subr_bus_dma.c
         - copied unchanged from r247551, head/sys/kern/subr_bus_dma.c
      user/mjacob/sys/libkern/arm/ldivmod.S
         - copied unchanged from r247551, head/sys/libkern/arm/ldivmod.S
      user/mjacob/sys/libkern/arm/ldivmod_helper.c
         - copied unchanged from r247551, head/sys/libkern/arm/ldivmod_helper.c
      user/mjacob/sys/mips/mips/bus_space_fdt.c
         - copied unchanged from r247551, head/sys/mips/mips/bus_space_fdt.c
         - copied from r247551, head/sys/modules/vmm/
      user/mjacob/sys/sys/memdesc.h
         - copied unchanged from r247551, head/sys/sys/memdesc.h
      user/mjacob/sys/x86/include/elf.h
         - copied unchanged from r247551, head/sys/x86/include/elf.h
      user/mjacob/sys/x86/include/frame.h
         - copied unchanged from r247551, head/sys/x86/include/frame.h
      user/mjacob/sys/x86/include/sigframe.h
         - copied unchanged from r247551, head/sys/x86/include/sigframe.h
      user/mjacob/sys/x86/include/signal.h
         - copied unchanged from r247551, head/sys/x86/include/signal.h
      user/mjacob/sys/x86/include/ucontext.h
         - copied unchanged from r247551, head/sys/x86/include/ucontext.h
    Directory Properties:
      user/mjacob/sys/amd64/include/vmm.h   (props changed)
      user/mjacob/sys/amd64/include/vmm_dev.h   (props changed)
      user/mjacob/sys/amd64/include/vmm_instruction_emul.h   (props changed)
      user/mjacob/sys/amd64/vmm/   (props changed)
      user/mjacob/sys/dev/bvm/   (props changed)
      user/mjacob/sys/modules/vmm/   (props changed)
    Deleted:
      user/mjacob/sys/arm/mv/kirkwood/files.sheevaplug
      user/mjacob/sys/arm/mv/kirkwood/sheevaplug.c
      user/mjacob/sys/arm/mv/kirkwood/std.sheevaplug
      user/mjacob/sys/dev/cxgbe/common/jhash.h
      user/mjacob/sys/dev/cxgbe/firmware/t4fw-1.6.2.0.bin.uu
      user/mjacob/sys/dev/mxge/mxge_lro.c
      user/mjacob/sys/dev/netmap/netmap_mem1.c
      user/mjacob/sys/dev/xen/evtchn/
      user/mjacob/sys/dev/xen/xenpci/machine_reboot.c
    Modified:
      user/mjacob/sys/amd64/acpica/acpi_machdep.c
      user/mjacob/sys/amd64/amd64/machdep.c
      user/mjacob/sys/amd64/amd64/minidump_machdep.c
      user/mjacob/sys/amd64/amd64/mp_machdep.c
      user/mjacob/sys/amd64/amd64/pmap.c
      user/mjacob/sys/amd64/amd64/vm_machdep.c
      user/mjacob/sys/amd64/conf/GENERIC
      user/mjacob/sys/amd64/conf/NOTES
      user/mjacob/sys/amd64/include/elf.h
      user/mjacob/sys/amd64/include/frame.h
      user/mjacob/sys/amd64/include/intr_machdep.h
      user/mjacob/sys/amd64/include/pmap.h
      user/mjacob/sys/amd64/include/sigframe.h
      user/mjacob/sys/amd64/include/signal.h
      user/mjacob/sys/amd64/include/ucontext.h
      user/mjacob/sys/amd64/linux32/linux.h
      user/mjacob/sys/amd64/linux32/linux32_sysvec.c
      user/mjacob/sys/arm/arm/busdma_machdep-v6.c
      user/mjacob/sys/arm/arm/busdma_machdep.c
      user/mjacob/sys/arm/arm/cpufunc.c
      user/mjacob/sys/arm/arm/cpufunc_asm_arm10.S
      user/mjacob/sys/arm/arm/cpufunc_asm_arm9.S
      user/mjacob/sys/arm/arm/db_trace.c
      user/mjacob/sys/arm/arm/intr.c
      user/mjacob/sys/arm/arm/locore.S
      user/mjacob/sys/arm/arm/machdep.c
      user/mjacob/sys/arm/arm/mp_machdep.c
      user/mjacob/sys/arm/arm/mpcore_timer.c
      user/mjacob/sys/arm/arm/pl310.c
      user/mjacob/sys/arm/arm/pmap-v6.c
      user/mjacob/sys/arm/arm/pmap.c
      user/mjacob/sys/arm/arm/swtch.S
      user/mjacob/sys/arm/arm/trap.c
      user/mjacob/sys/arm/arm/vfp.c
      user/mjacob/sys/arm/arm/vm_machdep.c
      user/mjacob/sys/arm/at91/at91_machdep.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_fb.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
      user/mjacob/sys/arm/broadcom/bcm2835/bcm2835_vcbus.h
      user/mjacob/sys/arm/broadcom/bcm2835/files.bcm2835
      user/mjacob/sys/arm/conf/BEAGLEBONE
      user/mjacob/sys/arm/conf/DOCKSTAR
      user/mjacob/sys/arm/conf/NOTES
      user/mjacob/sys/arm/conf/RPI-B
      user/mjacob/sys/arm/conf/SHEEVAPLUG
      user/mjacob/sys/arm/econa/econa_machdep.c
      user/mjacob/sys/arm/include/atomic.h
      user/mjacob/sys/arm/include/intr.h
      user/mjacob/sys/arm/include/machdep.h
      user/mjacob/sys/arm/include/pcpu.h
      user/mjacob/sys/arm/include/pl310.h
      user/mjacob/sys/arm/include/pmap.h
      user/mjacob/sys/arm/include/proc.h
      user/mjacob/sys/arm/include/vfp.h
      user/mjacob/sys/arm/include/vmparam.h
      user/mjacob/sys/arm/lpc/lpc_timer.c
      user/mjacob/sys/arm/mv/mv_machdep.c
      user/mjacob/sys/arm/mv/timer.c
      user/mjacob/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/mjacob/sys/arm/sa11x0/assabet_machdep.c
      user/mjacob/sys/arm/ti/am335x/am335x_dmtimer.c
      user/mjacob/sys/arm/ti/am335x/am335x_scm_padconf.c
      user/mjacob/sys/arm/ti/cpsw/if_cpsw.c
      user/mjacob/sys/arm/ti/cpsw/if_cpswreg.h
      user/mjacob/sys/arm/ti/cpsw/if_cpswvar.h
      user/mjacob/sys/arm/ti/omap4/omap4_l2cache.c
      user/mjacob/sys/arm/ti/omap4/omap4_smc.h
      user/mjacob/sys/arm/ti/omap4/std.omap4
      user/mjacob/sys/arm/ti/ti_cpuid.c
      user/mjacob/sys/arm/ti/ti_cpuid.h
      user/mjacob/sys/arm/ti/ti_gpio.c
      user/mjacob/sys/arm/ti/ti_scm.c
      user/mjacob/sys/arm/versatile/sp804.c
      user/mjacob/sys/arm/versatile/versatile_clcd.c
      user/mjacob/sys/arm/xscale/i80321/ep80219_machdep.c
      user/mjacob/sys/arm/xscale/i80321/iq31244_machdep.c
      user/mjacob/sys/arm/xscale/i8134x/crb_machdep.c
      user/mjacob/sys/arm/xscale/ixp425/avila_machdep.c
      user/mjacob/sys/arm/xscale/pxa/pxa_machdep.c
      user/mjacob/sys/boot/arm/uboot/Makefile
      user/mjacob/sys/boot/common/interp_forth.c
      user/mjacob/sys/boot/common/load_elf.c
      user/mjacob/sys/boot/common/module.c
      user/mjacob/sys/boot/common/part.c
      user/mjacob/sys/boot/fdt/dts/bcm2835-rpi-b.dts
      user/mjacob/sys/boot/fdt/dts/beaglebone.dts
      user/mjacob/sys/boot/fdt/dts/pandaboard.dts
      user/mjacob/sys/boot/fdt/fdt_loader_cmd.c
      user/mjacob/sys/boot/i386/efi/Makefile
      user/mjacob/sys/boot/i386/libi386/bootinfo64.c
      user/mjacob/sys/boot/i386/libi386/comconsole.c
      user/mjacob/sys/boot/i386/libi386/devicename.c
      user/mjacob/sys/boot/i386/libi386/pxe.c
      user/mjacob/sys/boot/powerpc/ps3/Makefile
      user/mjacob/sys/boot/powerpc/uboot/Makefile
      user/mjacob/sys/boot/sparc64/loader/main.c
      user/mjacob/sys/boot/uboot/common/metadata.c
      user/mjacob/sys/boot/uboot/lib/copy.c
      user/mjacob/sys/boot/uboot/lib/elf_freebsd.c
      user/mjacob/sys/boot/userboot/userboot/Makefile
      user/mjacob/sys/boot/userboot/userboot/elf32_freebsd.c
      user/mjacob/sys/boot/userboot/userboot/main.c
      user/mjacob/sys/bsm/audit_kevents.h
      user/mjacob/sys/cam/ata/ata_pmp.c
      user/mjacob/sys/cam/cam_ccb.h
      user/mjacob/sys/cam/cam_xpt.c
      user/mjacob/sys/cam/ctl/ctl.c
      user/mjacob/sys/cam/ctl/ctl_frontend_cam_sim.c
      user/mjacob/sys/cam/ctl/scsi_ctl.c
      user/mjacob/sys/cam/scsi/scsi_all.c
      user/mjacob/sys/cam/scsi/scsi_cd.c
      user/mjacob/sys/cam/scsi/scsi_da.c
      user/mjacob/sys/cam/scsi/scsi_enc_ses.c
      user/mjacob/sys/cam/scsi/scsi_pass.c
      user/mjacob/sys/cam/scsi/scsi_target.c
      user/mjacob/sys/cddl/boot/zfs/README
      user/mjacob/sys/cddl/boot/zfs/zfsimpl.h
      user/mjacob/sys/cddl/boot/zfs/zfssubr.c
      user/mjacob/sys/cddl/compat/opensolaris/sys/byteorder.h
      user/mjacob/sys/cddl/compat/opensolaris/sys/kmem.h
      user/mjacob/sys/cddl/compat/opensolaris/sys/time.h
      user/mjacob/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c
      user/mjacob/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h
      user/mjacob/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c
      user/mjacob/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h
      user/mjacob/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/Makefile.files
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt_zap.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
      user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
      user/mjacob/sys/cddl/dev/dtrace/dtrace_ioctl.c
      user/mjacob/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S
      user/mjacob/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c
      user/mjacob/sys/compat/linprocfs/linprocfs.c
      user/mjacob/sys/compat/linux/linux_emul.c
      user/mjacob/sys/compat/linux/linux_file.c
      user/mjacob/sys/compat/linux/linux_file.h
      user/mjacob/sys/compat/linux/linux_fork.c
      user/mjacob/sys/compat/linux/linux_futex.c
      user/mjacob/sys/compat/linux/linux_ioctl.h
      user/mjacob/sys/compat/linux/linux_ipc.h
      user/mjacob/sys/compat/linux/linux_mib.c
      user/mjacob/sys/compat/linux/linux_misc.h
      user/mjacob/sys/compat/linux/linux_signal.h
      user/mjacob/sys/compat/linux/linux_socket.c
      user/mjacob/sys/compat/linux/linux_socket.h
      user/mjacob/sys/compat/linux/linux_sysctl.c
      user/mjacob/sys/compat/linux/linux_time.c
      user/mjacob/sys/conf/Makefile.arm
      user/mjacob/sys/conf/NOTES
      user/mjacob/sys/conf/files
      user/mjacob/sys/conf/files.amd64
      user/mjacob/sys/conf/files.arm
      user/mjacob/sys/conf/files.i386
      user/mjacob/sys/conf/files.mips
      user/mjacob/sys/conf/ldscript.arm
      user/mjacob/sys/conf/newvers.sh
      user/mjacob/sys/conf/options
      user/mjacob/sys/conf/options.mips
      user/mjacob/sys/contrib/dev/acpica/changes.txt   (contents, props changed)
      user/mjacob/sys/contrib/dev/acpica/common/adfile.c
      user/mjacob/sys/contrib/dev/acpica/common/adisasm.c
      user/mjacob/sys/contrib/dev/acpica/common/adwalk.c
      user/mjacob/sys/contrib/dev/acpica/common/ahpredef.c
      user/mjacob/sys/contrib/dev/acpica/common/dmextern.c
      user/mjacob/sys/contrib/dev/acpica/common/dmrestag.c
      user/mjacob/sys/contrib/dev/acpica/common/dmtable.c
      user/mjacob/sys/contrib/dev/acpica/common/dmtbdump.c
      user/mjacob/sys/contrib/dev/acpica/common/dmtbinfo.c
      user/mjacob/sys/contrib/dev/acpica/common/getopt.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslanalyze.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslbtypes.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslcodegen.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslcompile.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslcompiler.h
      user/mjacob/sys/contrib/dev/acpica/compiler/aslcompiler.l
      user/mjacob/sys/contrib/dev/acpica/compiler/aslcompiler.y
      user/mjacob/sys/contrib/dev/acpica/compiler/asldefine.h
      user/mjacob/sys/contrib/dev/acpica/compiler/aslerror.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslfiles.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslfold.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslglobal.h
      user/mjacob/sys/contrib/dev/acpica/compiler/asllength.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asllisting.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslload.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asllookup.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslmain.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslmap.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslmessages.h
      user/mjacob/sys/contrib/dev/acpica/compiler/aslopcodes.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asloperands.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslopt.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslpredef.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslresource.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype1.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype1i.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2d.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2e.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2q.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2s.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslrestype2w.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslstartup.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslstubs.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslsupport.l
      user/mjacob/sys/contrib/dev/acpica/compiler/asltransform.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asltree.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asltypes.h
      user/mjacob/sys/contrib/dev/acpica/compiler/aslutils.c
      user/mjacob/sys/contrib/dev/acpica/compiler/asluuid.c
      user/mjacob/sys/contrib/dev/acpica/compiler/aslwalks.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dtcompile.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dtcompiler.h
      user/mjacob/sys/contrib/dev/acpica/compiler/dtexpress.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dtfield.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dtio.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dtparser.l
      user/mjacob/sys/contrib/dev/acpica/compiler/dtparser.y
      user/mjacob/sys/contrib/dev/acpica/compiler/dtsubtable.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dttable.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dttemplate.c
      user/mjacob/sys/contrib/dev/acpica/compiler/dttemplate.h
      user/mjacob/sys/contrib/dev/acpica/compiler/dtutils.c
      user/mjacob/sys/contrib/dev/acpica/compiler/preprocess.h
      user/mjacob/sys/contrib/dev/acpica/compiler/prexpress.c
      user/mjacob/sys/contrib/dev/acpica/compiler/prmacros.c
      user/mjacob/sys/contrib/dev/acpica/compiler/prparser.l
      user/mjacob/sys/contrib/dev/acpica/compiler/prparser.y
      user/mjacob/sys/contrib/dev/acpica/compiler/prscan.c
      user/mjacob/sys/contrib/dev/acpica/compiler/prutils.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbcmds.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbdisply.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbexec.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbfileio.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbhistry.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbinput.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbmethod.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbnames.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbstats.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbutils.c
      user/mjacob/sys/contrib/dev/acpica/components/debugger/dbxface.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmnames.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmobject.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmutils.c
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsargs.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dswload.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dswscope.c
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/dswstate.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evevent.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evglock.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evgpe.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evgpeblk.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evgpeinit.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evgpeutil.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evmisc.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evregion.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evrgnini.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evsci.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evxface.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evxfevnt.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evxfgpe.c
      user/mjacob/sys/contrib/dev/acpica/components/events/evxfregn.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exconfig.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exconvrt.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/excreate.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exdebug.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exdump.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exfield.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exfldio.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exmisc.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exmutex.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exnames.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exoparg1.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exoparg2.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exoparg3.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exoparg6.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exprep.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exregion.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exresnte.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exresolv.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exresop.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exstore.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exstoren.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exstorob.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exsystem.c
      user/mjacob/sys/contrib/dev/acpica/components/executer/exutils.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwacpi.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwesleep.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwgpe.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwpci.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwregs.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwsleep.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwtimer.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwvalid.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwxface.c
      user/mjacob/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsaccess.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsalloc.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsdump.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsdumpdv.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nseval.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsinit.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsload.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsnames.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsobject.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsparse.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nspredef.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsrepair.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nssearch.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsutils.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nswalk.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsxfname.c
      user/mjacob/sys/contrib/dev/acpica/components/namespace/nsxfobj.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psargs.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psloop.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psopcode.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psparse.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psscope.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/pstree.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psutils.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/pswalk.c
      user/mjacob/sys/contrib/dev/acpica/components/parser/psxface.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsaddr.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rscalc.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rscreate.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsdump.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsinfo.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsio.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsirq.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rslist.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsmemory.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsmisc.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsserial.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsutils.c
      user/mjacob/sys/contrib/dev/acpica/components/resources/rsxface.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbfadt.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbfind.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbinstal.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbutils.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbxface.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbxfload.c
      user/mjacob/sys/contrib/dev/acpica/components/tables/tbxfroot.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utaddress.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utalloc.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utcache.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utcopy.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utdebug.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utdecode.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utdelete.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/uteval.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utexcep.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utglobal.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utids.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utinit.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utlock.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utmath.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utmisc.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utmutex.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utobject.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utosi.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utresrc.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utstate.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/uttrack.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utxface.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utxferror.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utxfinit.c
      user/mjacob/sys/contrib/dev/acpica/components/utilities/utxfmutex.c
      user/mjacob/sys/contrib/dev/acpica/include/acapps.h
      user/mjacob/sys/contrib/dev/acpica/include/acbuffer.h
      user/mjacob/sys/contrib/dev/acpica/include/accommon.h
      user/mjacob/sys/contrib/dev/acpica/include/acconfig.h
      user/mjacob/sys/contrib/dev/acpica/include/acdebug.h
      user/mjacob/sys/contrib/dev/acpica/include/acdisasm.h
      user/mjacob/sys/contrib/dev/acpica/include/acdispat.h
      user/mjacob/sys/contrib/dev/acpica/include/acevents.h
      user/mjacob/sys/contrib/dev/acpica/include/acexcep.h
      user/mjacob/sys/contrib/dev/acpica/include/acglobal.h
      user/mjacob/sys/contrib/dev/acpica/include/achware.h
      user/mjacob/sys/contrib/dev/acpica/include/acinterp.h
      user/mjacob/sys/contrib/dev/acpica/include/aclocal.h
      user/mjacob/sys/contrib/dev/acpica/include/acmacros.h
      user/mjacob/sys/contrib/dev/acpica/include/acnames.h
      user/mjacob/sys/contrib/dev/acpica/include/acnamesp.h
      user/mjacob/sys/contrib/dev/acpica/include/acobject.h
      user/mjacob/sys/contrib/dev/acpica/include/acopcode.h
      user/mjacob/sys/contrib/dev/acpica/include/acoutput.h
      user/mjacob/sys/contrib/dev/acpica/include/acparser.h
      user/mjacob/sys/contrib/dev/acpica/include/acpi.h
      user/mjacob/sys/contrib/dev/acpica/include/acpiosxf.h
      user/mjacob/sys/contrib/dev/acpica/include/acpixf.h
      user/mjacob/sys/contrib/dev/acpica/include/acpredef.h
      user/mjacob/sys/contrib/dev/acpica/include/acresrc.h
      user/mjacob/sys/contrib/dev/acpica/include/acrestyp.h
      user/mjacob/sys/contrib/dev/acpica/include/acstruct.h
      user/mjacob/sys/contrib/dev/acpica/include/actables.h
      user/mjacob/sys/contrib/dev/acpica/include/actbl.h
      user/mjacob/sys/contrib/dev/acpica/include/actbl1.h
      user/mjacob/sys/contrib/dev/acpica/include/actbl2.h
      user/mjacob/sys/contrib/dev/acpica/include/actbl3.h
      user/mjacob/sys/contrib/dev/acpica/include/actypes.h
      user/mjacob/sys/contrib/dev/acpica/include/acutils.h
      user/mjacob/sys/contrib/dev/acpica/include/amlcode.h
      user/mjacob/sys/contrib/dev/acpica/include/amlresrc.h
      user/mjacob/sys/contrib/dev/acpica/include/platform/acenv.h
      user/mjacob/sys/contrib/dev/acpica/include/platform/acfreebsd.h
      user/mjacob/sys/contrib/dev/acpica/include/platform/acgcc.h
      user/mjacob/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
      user/mjacob/sys/contrib/octeon-sdk/cvmx-app-init.h
      user/mjacob/sys/contrib/octeon-sdk/cvmx-helper-board.c
      user/mjacob/sys/crypto/aesni/aesni_wrap.c
      user/mjacob/sys/dev/aac/aac_cam.c
      user/mjacob/sys/dev/acpi_support/acpi_asus_wmi.c
      user/mjacob/sys/dev/acpi_support/acpi_fujitsu.c   (contents, props changed)
      user/mjacob/sys/dev/acpi_support/acpi_hp.c
      user/mjacob/sys/dev/acpi_support/acpi_ibm.c   (contents, props changed)
      user/mjacob/sys/dev/acpi_support/acpi_panasonic.c   (contents, props changed)
      user/mjacob/sys/dev/acpi_support/acpi_sony.c   (contents, props changed)
      user/mjacob/sys/dev/acpi_support/acpi_toshiba.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/Osd/OsdSchedule.c
      user/mjacob/sys/dev/acpica/acpi.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_acad.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_button.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_cmbat.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_cpu.c
      user/mjacob/sys/dev/acpica/acpi_dock.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_ec.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_hpet.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_lid.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_pci.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_pci_link.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_pcib.c
      user/mjacob/sys/dev/acpica/acpi_pcib_pci.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_perf.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_resource.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_smbat.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_thermal.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_throttle.c   (contents, props changed)
      user/mjacob/sys/dev/acpica/acpi_timer.c   (contents, props changed)
      user/mjacob/sys/dev/adlink/adlink.c   (contents, props changed)
      user/mjacob/sys/dev/advansys/advansys.c
      user/mjacob/sys/dev/advansys/adwcam.c
      user/mjacob/sys/dev/age/if_age.c
      user/mjacob/sys/dev/age/if_agevar.h
      user/mjacob/sys/dev/agp/agp_ali.c
      user/mjacob/sys/dev/agp/agp_amd.c
      user/mjacob/sys/dev/agp/agp_amd64.c
      user/mjacob/sys/dev/agp/agp_ati.c
      user/mjacob/sys/dev/agp/agp_i810.c
      user/mjacob/sys/dev/agp/agp_intel.c
      user/mjacob/sys/dev/agp/agp_sis.c
      user/mjacob/sys/dev/agp/agp_via.c
      user/mjacob/sys/dev/aha/aha.c
      user/mjacob/sys/dev/ahb/ahb.c
      user/mjacob/sys/dev/ahci/ahci.c
      user/mjacob/sys/dev/aic/aic.c
      user/mjacob/sys/dev/aic7xxx/aic79xx_osm.c
      user/mjacob/sys/dev/aic7xxx/aic7xxx_osm.c
      user/mjacob/sys/dev/altera/avgen/altera_avgen.c
      user/mjacob/sys/dev/altera/avgen/altera_avgen.h
      user/mjacob/sys/dev/altera/jtag_uart/altera_jtag_uart.h
      user/mjacob/sys/dev/altera/jtag_uart/altera_jtag_uart_cons.c
      user/mjacob/sys/dev/altera/jtag_uart/altera_jtag_uart_nexus.c
      user/mjacob/sys/dev/altera/sdcard/altera_sdcard.c
      user/mjacob/sys/dev/altera/sdcard/altera_sdcard.h
      user/mjacob/sys/dev/altera/sdcard/altera_sdcard_io.c
      user/mjacob/sys/dev/altera/sdcard/altera_sdcard_nexus.c
      user/mjacob/sys/dev/amdsbwd/amdsbwd.c
      user/mjacob/sys/dev/amdtemp/amdtemp.c   (contents, props changed)
      user/mjacob/sys/dev/amr/amr_cam.c
      user/mjacob/sys/dev/arcmsr/arcmsr.c
      user/mjacob/sys/dev/arcmsr/arcmsr.h
      user/mjacob/sys/dev/ata/ata-all.c
      user/mjacob/sys/dev/ata/ata-all.h
      user/mjacob/sys/dev/ata/ata-dma.c
      user/mjacob/sys/dev/ata/ata-lowlevel.c
      user/mjacob/sys/dev/ata/ata-pci.h
      user/mjacob/sys/dev/ata/ata-raid.c
      user/mjacob/sys/dev/ata/atapi-cam.c
      user/mjacob/sys/dev/ata/chipsets/ata-intel.c
      user/mjacob/sys/dev/ath/ath_dfs/null/dfs_null.c
      user/mjacob/sys/dev/ath/ath_hal/ah.c
      user/mjacob/sys/dev/ath/ath_hal/ah.h
      user/mjacob/sys/dev/ath/ath_hal/ah_internal.h
      user/mjacob/sys/dev/ath/ath_hal/ar5210/ar5210.h
      user/mjacob/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c
      user/mjacob/sys/dev/ath/ath_hal/ar5211/ar5211.h
      user/mjacob/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c
      user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212.h
      user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416.h
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416phy.h
      user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
      user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c
      user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c
      user/mjacob/sys/dev/ath/ath_rate/sample/sample.c
      user/mjacob/sys/dev/ath/if_ath.c
      user/mjacob/sys/dev/ath/if_ath_ahb.c
      user/mjacob/sys/dev/ath/if_ath_alq.c
      user/mjacob/sys/dev/ath/if_ath_alq.h
      user/mjacob/sys/dev/ath/if_ath_beacon.c
      user/mjacob/sys/dev/ath/if_ath_misc.h
      user/mjacob/sys/dev/ath/if_ath_pci.c
      user/mjacob/sys/dev/ath/if_ath_rx.c
      user/mjacob/sys/dev/ath/if_ath_sysctl.c
      user/mjacob/sys/dev/ath/if_ath_tx.c
      user/mjacob/sys/dev/ath/if_ath_tx.h
      user/mjacob/sys/dev/ath/if_ath_tx_edma.c
      user/mjacob/sys/dev/ath/if_ath_tx_ht.c
      user/mjacob/sys/dev/ath/if_athdfs.h
      user/mjacob/sys/dev/ath/if_athioctl.h
      user/mjacob/sys/dev/ath/if_athrate.h
      user/mjacob/sys/dev/ath/if_athvar.h
      user/mjacob/sys/dev/atkbdc/atkbd.c
      user/mjacob/sys/dev/atkbdc/atkbd_atkbdc.c
      user/mjacob/sys/dev/atkbdc/atkbdreg.h
      user/mjacob/sys/dev/auxio/auxio.c   (contents, props changed)
      user/mjacob/sys/dev/bge/if_bge.c
      user/mjacob/sys/dev/buslogic/bt.c
      user/mjacob/sys/dev/bxe/if_bxe.c
      user/mjacob/sys/dev/cas/if_cas.c
      user/mjacob/sys/dev/ce/if_ce.c   (contents, props changed)
      user/mjacob/sys/dev/cfi/cfi_bus_fdt.c
      user/mjacob/sys/dev/cfi/cfi_bus_ixp4xx.c
      user/mjacob/sys/dev/ciss/ciss.c
      user/mjacob/sys/dev/ciss/cissreg.h
      user/mjacob/sys/dev/ciss/cissvar.h
      user/mjacob/sys/dev/coretemp/coretemp.c   (contents, props changed)
      user/mjacob/sys/dev/cp/if_cp.c   (contents, props changed)
      user/mjacob/sys/dev/cpufreq/ichss.c   (contents, props changed)
      user/mjacob/sys/dev/ctau/if_ct.c   (contents, props changed)
      user/mjacob/sys/dev/cx/if_cx.c   (contents, props changed)
      user/mjacob/sys/dev/cxgbe/adapter.h
      user/mjacob/sys/dev/cxgbe/common/common.h
      user/mjacob/sys/dev/cxgbe/common/t4_hw.c
      user/mjacob/sys/dev/cxgbe/common/t4_hw.h
      user/mjacob/sys/dev/cxgbe/common/t4_msg.h
      user/mjacob/sys/dev/cxgbe/firmware/t4fw_cfg.txt
      user/mjacob/sys/dev/cxgbe/firmware/t4fw_interface.h
      user/mjacob/sys/dev/cxgbe/offload.h
      user/mjacob/sys/dev/cxgbe/t4_l2t.c
      user/mjacob/sys/dev/cxgbe/t4_l2t.h
      user/mjacob/sys/dev/cxgbe/t4_main.c
      user/mjacob/sys/dev/cxgbe/t4_sge.c
      user/mjacob/sys/dev/cxgbe/tom/t4_connect.c
      user/mjacob/sys/dev/cxgbe/tom/t4_cpl_io.c
      user/mjacob/sys/dev/cxgbe/tom/t4_listen.c
      user/mjacob/sys/dev/cxgbe/tom/t4_tom.c
      user/mjacob/sys/dev/cxgbe/tom/t4_tom.h
      user/mjacob/sys/dev/cxgbe/tom/t4_tom_l2t.c
      user/mjacob/sys/dev/dcons/dcons_os.c
      user/mjacob/sys/dev/digi/digi_isa.c   (contents, props changed)
      user/mjacob/sys/dev/digi/digi_pci.c   (contents, props changed)
      user/mjacob/sys/dev/dpt/dpt_scsi.c
      user/mjacob/sys/dev/e1000/e1000_82571.c
      user/mjacob/sys/dev/e1000/e1000_82575.c
      user/mjacob/sys/dev/e1000/e1000_82575.h
      user/mjacob/sys/dev/e1000/e1000_api.c
      user/mjacob/sys/dev/e1000/e1000_api.h
      user/mjacob/sys/dev/e1000/e1000_defines.h
      user/mjacob/sys/dev/e1000/e1000_hw.h
      user/mjacob/sys/dev/e1000/e1000_i210.c
      user/mjacob/sys/dev/e1000/e1000_i210.h
      user/mjacob/sys/dev/e1000/e1000_ich8lan.c
      user/mjacob/sys/dev/e1000/e1000_ich8lan.h
      user/mjacob/sys/dev/e1000/e1000_mac.c
      user/mjacob/sys/dev/e1000/e1000_mac.h
      user/mjacob/sys/dev/e1000/e1000_manage.c
      user/mjacob/sys/dev/e1000/e1000_nvm.c
      user/mjacob/sys/dev/e1000/e1000_nvm.h
      user/mjacob/sys/dev/e1000/e1000_osdep.h
      user/mjacob/sys/dev/e1000/e1000_phy.c
      user/mjacob/sys/dev/e1000/e1000_phy.h
      user/mjacob/sys/dev/e1000/e1000_regs.h
      user/mjacob/sys/dev/e1000/if_em.c   (contents, props changed)
      user/mjacob/sys/dev/e1000/if_igb.c   (contents, props changed)
      user/mjacob/sys/dev/e1000/if_lem.c
      user/mjacob/sys/dev/ep/if_ep_eisa.c   (contents, props changed)
      user/mjacob/sys/dev/ep/if_ep_isa.c   (contents, props changed)
      user/mjacob/sys/dev/ep/if_ep_mca.c   (contents, props changed)
      user/mjacob/sys/dev/ep/if_ep_pccard.c   (contents, props changed)
      user/mjacob/sys/dev/fdc/fdc_acpi.c   (contents, props changed)
      user/mjacob/sys/dev/fdt/fdt_common.h
      user/mjacob/sys/dev/fdt/fdt_mips.c
      user/mjacob/sys/dev/fdt/fdtbus.c
      user/mjacob/sys/dev/firewire/sbp.c
      user/mjacob/sys/dev/hpt27xx/hpt27xx_config.c
      user/mjacob/sys/dev/hpt27xx/os_bsd.h
      user/mjacob/sys/dev/hpt27xx/osm_bsd.c
      user/mjacob/sys/dev/hptiop/hptiop.c
      user/mjacob/sys/dev/hptmv/entry.c
      user/mjacob/sys/dev/hptrr/hptrr_osm_bsd.c
      user/mjacob/sys/dev/hwpmc/hwpmc_core.c
      user/mjacob/sys/dev/hwpmc/hwpmc_intel.c
      user/mjacob/sys/dev/hwpmc/hwpmc_mod.c
      user/mjacob/sys/dev/hwpmc/hwpmc_soft.c
      user/mjacob/sys/dev/hwpmc/pmc_events.h
      user/mjacob/sys/dev/ic/ns16550.h
      user/mjacob/sys/dev/ichsmb/ichsmb_pci.c
      user/mjacob/sys/dev/ichwd/ichwd.c
      user/mjacob/sys/dev/ichwd/ichwd.h
      user/mjacob/sys/dev/iicbus/ad7418.c   (contents, props changed)
      user/mjacob/sys/dev/iicbus/ds133x.c   (contents, props changed)
      user/mjacob/sys/dev/iicbus/ds1672.c   (contents, props changed)
      user/mjacob/sys/dev/iicbus/icee.c   (contents, props changed)
      user/mjacob/sys/dev/iir/iir.c
      user/mjacob/sys/dev/isci/isci_io_request.c
      user/mjacob/sys/dev/isf/isf.c
      user/mjacob/sys/dev/isf/isf.h
      user/mjacob/sys/dev/isf/isf_nexus.c
      user/mjacob/sys/dev/isp/isp.c
      user/mjacob/sys/dev/isp/isp_freebsd.c
      user/mjacob/sys/dev/isp/isp_pci.c
      user/mjacob/sys/dev/isp/isp_sbus.c
      user/mjacob/sys/dev/ixgb/if_ixgb.c   (contents, props changed)
      user/mjacob/sys/dev/ixgbe/ixgbe.c   (contents, props changed)
      user/mjacob/sys/dev/ixgbe/ixv.c
      user/mjacob/sys/dev/led/led.c
      user/mjacob/sys/dev/mcd/mcd.c
      user/mjacob/sys/dev/mfi/mfi.c
      user/mjacob/sys/dev/mfi/mfi_cam.c   (contents, props changed)
      user/mjacob/sys/dev/mfi/mfi_debug.c
      user/mjacob/sys/dev/mfi/mfi_tbolt.c
      user/mjacob/sys/dev/mfi/mfireg.h
      user/mjacob/sys/dev/mfi/mfivar.h
      user/mjacob/sys/dev/mly/mly.c
      user/mjacob/sys/dev/mly/mlyvar.h
      user/mjacob/sys/dev/mmc/mmc.c
      user/mjacob/sys/dev/mmc/mmcreg.h
      user/mjacob/sys/dev/mn/if_mn.c   (contents, props changed)
      user/mjacob/sys/dev/mps/mps.c
      user/mjacob/sys/dev/mps/mps_sas.c
      user/mjacob/sys/dev/mps/mpsvar.h
      user/mjacob/sys/dev/mpt/mpt_cam.c
      user/mjacob/sys/dev/msk/if_msk.c
      user/mjacob/sys/dev/mvs/mvs.c
      user/mjacob/sys/dev/mxge/if_mxge.c   (contents, props changed)
      user/mjacob/sys/dev/mxge/if_mxge_var.h
      user/mjacob/sys/dev/my/if_my.c   (contents, props changed)
      user/mjacob/sys/dev/nand/nand_id.c
      user/mjacob/sys/dev/netmap/if_em_netmap.h
      user/mjacob/sys/dev/netmap/if_igb_netmap.h
      user/mjacob/sys/dev/netmap/if_lem_netmap.h
      user/mjacob/sys/dev/netmap/if_re_netmap.h
      user/mjacob/sys/dev/netmap/ixgbe_netmap.h
      user/mjacob/sys/dev/netmap/netmap.c
      user/mjacob/sys/dev/netmap/netmap_kern.h
      user/mjacob/sys/dev/netmap/netmap_mem2.c
      user/mjacob/sys/dev/nvme/nvme_test.c
      user/mjacob/sys/dev/nvram2env/nvram2env.c   (contents, props changed)
      user/mjacob/sys/dev/nxge/if_nxge.c   (contents, props changed)
      user/mjacob/sys/dev/oce/oce_if.c   (contents, props changed)
      user/mjacob/sys/dev/oce/oce_if.h
      user/mjacob/sys/dev/ppc/ppc.c
      user/mjacob/sys/dev/ppc/ppc_isa.c
      user/mjacob/sys/dev/puc/puc.c
      user/mjacob/sys/dev/random/randomdev_soft.c
      user/mjacob/sys/dev/sdhci/sdhci.c
      user/mjacob/sys/dev/sdhci/sdhci.h
      user/mjacob/sys/dev/sdhci/sdhci_if.m
      user/mjacob/sys/dev/sdhci/sdhci_pci.c
      user/mjacob/sys/dev/si/si.c
      user/mjacob/sys/dev/siis/siis.c
      user/mjacob/sys/dev/sound/pci/emu10kx-midi.c   (contents, props changed)
      user/mjacob/sys/dev/sound/pci/emu10kx-pcm.c   (contents, props changed)
      user/mjacob/sys/dev/sound/pci/emu10kx.c   (contents, props changed)
      user/mjacob/sys/dev/sound/pci/hda/hdaa.c
      user/mjacob/sys/dev/sound/pci/hda/hdac.c
      user/mjacob/sys/dev/sound/pci/hda/hdac.h
      user/mjacob/sys/dev/sound/pcm/mixer.c
      user/mjacob/sys/dev/sound/pcm/mixer.h
      user/mjacob/sys/dev/sound/sbus/cs4231.c   (contents, props changed)
      user/mjacob/sys/dev/sound/usb/uaudio.c
      user/mjacob/sys/dev/sound/usb/uaudio_pcm.c
      user/mjacob/sys/dev/sym/sym_hipd.c
      user/mjacob/sys/dev/syscons/syscons.c
      user/mjacob/sys/dev/terasic/de4led/terasic_de4led.c
      user/mjacob/sys/dev/terasic/de4led/terasic_de4led.h
      user/mjacob/sys/dev/terasic/de4led/terasic_de4led_nexus.c
      user/mjacob/sys/dev/terasic/mtl/terasic_mtl.c
      user/mjacob/sys/dev/terasic/mtl/terasic_mtl.h
      user/mjacob/sys/dev/terasic/mtl/terasic_mtl_nexus.c
      user/mjacob/sys/dev/trm/trm.c
      user/mjacob/sys/dev/twa/tw_osl.h
      user/mjacob/sys/dev/twa/tw_osl_cam.c
      user/mjacob/sys/dev/twa/tw_osl_freebsd.c
      user/mjacob/sys/dev/tws/tws.h
      user/mjacob/sys/dev/tws/tws_cam.c
      user/mjacob/sys/dev/tws/tws_hdm.c
      user/mjacob/sys/dev/uart/uart_bus.h
      user/mjacob/sys/dev/uart/uart_bus_acpi.c
      user/mjacob/sys/dev/uart/uart_bus_isa.c
      user/mjacob/sys/dev/uart/uart_bus_pci.c
      user/mjacob/sys/dev/uart/uart_core.c
      user/mjacob/sys/dev/uart/uart_dev_ns8250.c
      user/mjacob/sys/dev/usb/controller/at91dci.c
      user/mjacob/sys/dev/usb/controller/atmegadci.c
      user/mjacob/sys/dev/usb/controller/avr32dci.c
      user/mjacob/sys/dev/usb/controller/dwc_otg.c
      user/mjacob/sys/dev/usb/controller/ehci.c
      user/mjacob/sys/dev/usb/controller/musb_otg.c
      user/mjacob/sys/dev/usb/controller/ohci.c
      user/mjacob/sys/dev/usb/controller/uhci.c
      user/mjacob/sys/dev/usb/controller/usb_controller.c
      user/mjacob/sys/dev/usb/controller/uss820dci.c
      user/mjacob/sys/dev/usb/controller/xhci.c
      user/mjacob/sys/dev/usb/controller/xhci.h
      user/mjacob/sys/dev/usb/input/uhid.c
      user/mjacob/sys/dev/usb/input/ukbd.c
      user/mjacob/sys/dev/usb/input/ums.c
      user/mjacob/sys/dev/usb/misc/udbp.c
      user/mjacob/sys/dev/usb/misc/ufm.c
      user/mjacob/sys/dev/usb/net/if_axe.c
      user/mjacob/sys/dev/usb/net/if_cdce.c
      user/mjacob/sys/dev/usb/net/if_cue.c
      user/mjacob/sys/dev/usb/net/if_ipheth.c
      user/mjacob/sys/dev/usb/net/if_kue.c
      user/mjacob/sys/dev/usb/net/if_smsc.c
      user/mjacob/sys/dev/usb/quirk/usb_quirk.c
      user/mjacob/sys/dev/usb/serial/u3g.c
      user/mjacob/sys/dev/usb/serial/uftdi.c
      user/mjacob/sys/dev/usb/storage/umass.c
      user/mjacob/sys/dev/usb/storage/urio.c
      user/mjacob/sys/dev/usb/storage/ustorage_fs.c
      user/mjacob/sys/dev/usb/template/usb_template.c
      user/mjacob/sys/dev/usb/template/usb_template_audio.c
      user/mjacob/sys/dev/usb/template/usb_template_cdce.c
      user/mjacob/sys/dev/usb/template/usb_template_kbd.c
      user/mjacob/sys/dev/usb/template/usb_template_modem.c
      user/mjacob/sys/dev/usb/template/usb_template_mouse.c
      user/mjacob/sys/dev/usb/template/usb_template_msc.c
      user/mjacob/sys/dev/usb/template/usb_template_mtp.c
      user/mjacob/sys/dev/usb/ufm_ioctl.h
      user/mjacob/sys/dev/usb/usb.h
      user/mjacob/sys/dev/usb/usb_bus.h
      user/mjacob/sys/dev/usb/usb_busdma.c
      user/mjacob/sys/dev/usb/usb_busdma.h
      user/mjacob/sys/dev/usb/usb_compat_linux.c
      user/mjacob/sys/dev/usb/usb_controller.h
      user/mjacob/sys/dev/usb/usb_core.c
      user/mjacob/sys/dev/usb/usb_core.h
      user/mjacob/sys/dev/usb/usb_debug.c
      user/mjacob/sys/dev/usb/usb_dev.c
      user/mjacob/sys/dev/usb/usb_dev.h
      user/mjacob/sys/dev/usb/usb_device.c
      user/mjacob/sys/dev/usb/usb_device.h
      user/mjacob/sys/dev/usb/usb_dynamic.c
      user/mjacob/sys/dev/usb/usb_endian.h
      user/mjacob/sys/dev/usb/usb_error.c
      user/mjacob/sys/dev/usb/usb_freebsd.h
      user/mjacob/sys/dev/usb/usb_generic.c
      user/mjacob/sys/dev/usb/usb_handle_request.c
      user/mjacob/sys/dev/usb/usb_hid.c
      user/mjacob/sys/dev/usb/usb_hub.c
      user/mjacob/sys/dev/usb/usb_ioctl.h
      user/mjacob/sys/dev/usb/usb_lookup.c
      user/mjacob/sys/dev/usb/usb_mbuf.c
      user/mjacob/sys/dev/usb/usb_msctest.c
      user/mjacob/sys/dev/usb/usb_parse.c
      user/mjacob/sys/dev/usb/usb_pci.h
      user/mjacob/sys/dev/usb/usb_pf.c
      user/mjacob/sys/dev/usb/usb_process.c
      user/mjacob/sys/dev/usb/usb_process.h
      user/mjacob/sys/dev/usb/usb_request.c
      user/mjacob/sys/dev/usb/usb_transfer.c
      user/mjacob/sys/dev/usb/usb_util.c
      user/mjacob/sys/dev/usb/usbdevs
      user/mjacob/sys/dev/usb/usbdi.h
      user/mjacob/sys/dev/usb/usbhid.h
      user/mjacob/sys/dev/usb/wlan/if_rum.c
      user/mjacob/sys/dev/usb/wlan/if_rumvar.h
      user/mjacob/sys/dev/usb/wlan/if_run.c
      user/mjacob/sys/dev/usb/wlan/if_runvar.h
      user/mjacob/sys/dev/usb/wlan/if_uath.c
      user/mjacob/sys/dev/usb/wlan/if_upgt.c
      user/mjacob/sys/dev/usb/wlan/if_upgtvar.h
      user/mjacob/sys/dev/usb/wlan/if_ural.c
      user/mjacob/sys/dev/usb/wlan/if_uralvar.h
      user/mjacob/sys/dev/usb/wlan/if_urtw.c
      user/mjacob/sys/dev/usb/wlan/if_urtwvar.h
      user/mjacob/sys/dev/usb/wlan/if_zyd.c
      user/mjacob/sys/dev/usb/wlan/if_zydreg.h
      user/mjacob/sys/dev/virtio/scsi/virtio_scsi.c
      user/mjacob/sys/dev/vx/if_vx_eisa.c   (contents, props changed)
      user/mjacob/sys/dev/vx/if_vx_pci.c   (contents, props changed)
      user/mjacob/sys/dev/vxge/vxge.c   (contents, props changed)
      user/mjacob/sys/dev/watchdog/watchdog.c
      user/mjacob/sys/dev/wbwd/wbwd.c
      user/mjacob/sys/dev/wds/wd7000.c
      user/mjacob/sys/dev/xen/console/console.c
      user/mjacob/sys/dev/xen/control/control.c
      user/mjacob/sys/dev/xen/netfront/netfront.c
      user/mjacob/sys/fs/devfs/devfs_vnops.c
      user/mjacob/sys/fs/ext2fs/ext2_alloc.c
      user/mjacob/sys/fs/ext2fs/ext2_balloc.c
      user/mjacob/sys/fs/ext2fs/ext2_bmap.c
      user/mjacob/sys/fs/ext2fs/ext2_dinode.h   (contents, props changed)
      user/mjacob/sys/fs/ext2fs/ext2_dir.h   (contents, props changed)
      user/mjacob/sys/fs/ext2fs/ext2_inode.c
      user/mjacob/sys/fs/ext2fs/ext2_inode_cnv.c
      user/mjacob/sys/fs/ext2fs/ext2_lookup.c
      user/mjacob/sys/fs/ext2fs/ext2_mount.h
      user/mjacob/sys/fs/ext2fs/ext2_subr.c
      user/mjacob/sys/fs/ext2fs/ext2_vfsops.c
      user/mjacob/sys/fs/ext2fs/ext2_vnops.c
      user/mjacob/sys/fs/ext2fs/ext2fs.h   (contents, props changed)
      user/mjacob/sys/fs/ext2fs/fs.h
      user/mjacob/sys/fs/ext2fs/inode.h
      user/mjacob/sys/fs/fuse/fuse_io.c
      user/mjacob/sys/fs/msdosfs/msdosfs_fat.c
      user/mjacob/sys/fs/msdosfs/msdosfs_vfsops.c
      user/mjacob/sys/fs/msdosfs/msdosfs_vnops.c
      user/mjacob/sys/fs/msdosfs/msdosfsmount.h
      user/mjacob/sys/fs/nandfs/nandfs_segment.c
      user/mjacob/sys/fs/nfs/nfs.h
      user/mjacob/sys/fs/nfs/nfs_commonkrpc.c
      user/mjacob/sys/fs/nfs/nfs_commonsubs.c
      user/mjacob/sys/fs/nfs/nfsport.h
      user/mjacob/sys/fs/nfsclient/nfs_clport.c
      user/mjacob/sys/fs/nfsclient/nfs_clrpcops.c
      user/mjacob/sys/fs/nfsclient/nfs_clstate.c
      user/mjacob/sys/fs/nfsclient/nfs_clvfsops.c
      user/mjacob/sys/fs/nfsclient/nfs_clvnops.c
      user/mjacob/sys/fs/nfsserver/nfs_nfsdkrpc.c
      user/mjacob/sys/fs/nfsserver/nfs_nfsdport.c
      user/mjacob/sys/fs/nfsserver/nfs_nfsdserv.c
      user/mjacob/sys/fs/nfsserver/nfs_nfsdstate.c
      user/mjacob/sys/fs/nullfs/null.h
      user/mjacob/sys/fs/nullfs/null_subr.c
      user/mjacob/sys/fs/nullfs/null_vfsops.c
      user/mjacob/sys/fs/nullfs/null_vnops.c
      user/mjacob/sys/fs/tmpfs/tmpfs.h
      user/mjacob/sys/fs/tmpfs/tmpfs_subr.c
      user/mjacob/sys/fs/tmpfs/tmpfs_vfsops.c
      user/mjacob/sys/fs/tmpfs/tmpfs_vnops.c
      user/mjacob/sys/geom/geom_vfs.c
      user/mjacob/sys/geom/journal/g_journal.c
      user/mjacob/sys/geom/mirror/g_mirror.c
      user/mjacob/sys/geom/raid/g_raid.c
      user/mjacob/sys/geom/raid/g_raid.h
      user/mjacob/sys/geom/raid/md_intel.c
      user/mjacob/sys/geom/raid/md_promise.c
      user/mjacob/sys/geom/raid/tr_concat.c
      user/mjacob/sys/geom/raid3/g_raid3.c
      user/mjacob/sys/geom/raid3/g_raid3_ctl.c
      user/mjacob/sys/i386/acpica/acpi_machdep.c
      user/mjacob/sys/i386/conf/GENERIC
      user/mjacob/sys/i386/conf/NOTES
      user/mjacob/sys/i386/i386/machdep.c
      user/mjacob/sys/i386/i386/mp_machdep.c
      user/mjacob/sys/i386/i386/pmap.c
      user/mjacob/sys/i386/include/elf.h
      user/mjacob/sys/i386/include/frame.h
      user/mjacob/sys/i386/include/intr_machdep.h
      user/mjacob/sys/i386/include/sigframe.h
      user/mjacob/sys/i386/include/signal.h
      user/mjacob/sys/i386/include/ucontext.h
      user/mjacob/sys/i386/include/vmparam.h
      user/mjacob/sys/i386/isa/pmtimer.c
      user/mjacob/sys/i386/linux/linux.h
      user/mjacob/sys/i386/linux/linux_ptrace.c
      user/mjacob/sys/i386/linux/linux_sysvec.c
      user/mjacob/sys/i386/xen/clock.c
      user/mjacob/sys/i386/xen/pmap.c
      user/mjacob/sys/i386/xen/xen_machdep.c
      user/mjacob/sys/ia64/conf/GENERIC
      user/mjacob/sys/ia64/ia64/busdma_machdep.c
      user/mjacob/sys/ia64/ia64/clock.c
      user/mjacob/sys/ia64/ia64/dump_machdep.c
      user/mjacob/sys/ia64/ia64/genassym.c
      user/mjacob/sys/ia64/ia64/machdep.c
      user/mjacob/sys/ia64/ia64/mem.c
      user/mjacob/sys/ia64/ia64/pmap.c
      user/mjacob/sys/ia64/ia64/support.S
      user/mjacob/sys/ia64/ia64/syscall.S
      user/mjacob/sys/ia64/include/proc.h
      user/mjacob/sys/ia64/include/vmparam.h
      user/mjacob/sys/kern/imgact_elf.c
      user/mjacob/sys/kern/init_main.c
      user/mjacob/sys/kern/kern_clock.c
      user/mjacob/sys/kern/kern_clocksource.c
      user/mjacob/sys/kern/kern_descrip.c
      user/mjacob/sys/kern/kern_et.c
      user/mjacob/sys/kern/kern_exec.c
      user/mjacob/sys/kern/kern_exit.c
      user/mjacob/sys/kern/kern_fork.c
      user/mjacob/sys/kern/kern_intr.c
      user/mjacob/sys/kern/kern_ktr.c
      user/mjacob/sys/kern/kern_lock.c
      user/mjacob/sys/kern/kern_malloc.c
      user/mjacob/sys/kern/kern_mbuf.c
      user/mjacob/sys/kern/kern_mib.c
      user/mjacob/sys/kern/kern_sig.c
      user/mjacob/sys/kern/kern_synch.c
      user/mjacob/sys/kern/kern_sysctl.c
      user/mjacob/sys/kern/kern_tc.c
      user/mjacob/sys/kern/kern_thread.c
      user/mjacob/sys/kern/kern_timeout.c
      user/mjacob/sys/kern/subr_blist.c
      user/mjacob/sys/kern/subr_bus.c
      user/mjacob/sys/kern/subr_param.c
      user/mjacob/sys/kern/subr_sleepqueue.c
      user/mjacob/sys/kern/subr_trap.c
      user/mjacob/sys/kern/subr_turnstile.c
      user/mjacob/sys/kern/subr_uio.c
      user/mjacob/sys/kern/sys_capability.c
      user/mjacob/sys/kern/sys_pipe.c
      user/mjacob/sys/kern/sys_process.c
      user/mjacob/sys/kern/uipc_mbuf.c
      user/mjacob/sys/kern/uipc_syscalls.c
      user/mjacob/sys/kern/uipc_usrreq.c
      user/mjacob/sys/kern/vfs_acl.c
      user/mjacob/sys/kern/vfs_bio.c
      user/mjacob/sys/kern/vfs_cluster.c
      user/mjacob/sys/kern/vfs_export.c
      user/mjacob/sys/kern/vfs_hash.c
      user/mjacob/sys/kern/vfs_init.c
      user/mjacob/sys/kern/vfs_lookup.c
      user/mjacob/sys/kern/vfs_mount.c
      user/mjacob/sys/kern/vfs_subr.c
      user/mjacob/sys/kern/vfs_syscalls.c
      user/mjacob/sys/kern/vfs_vnops.c
      user/mjacob/sys/libkern/arm/divsi3.S
      user/mjacob/sys/libkern/quad.h
      user/mjacob/sys/libkern/ucmpdi2.c
      user/mjacob/sys/mips/adm5120/adm5120_machdep.c
      user/mjacob/sys/mips/alchemy/alchemy_machdep.c
      user/mjacob/sys/mips/atheros/ar71xx_pci.c
      user/mjacob/sys/mips/beri/beri_machdep.c
      user/mjacob/sys/mips/beri/files.beri
      user/mjacob/sys/mips/cavium/octeon_machdep.c
      user/mjacob/sys/mips/conf/OCTEON1
      user/mjacob/sys/mips/gxemul/gxemul_machdep.c
      user/mjacob/sys/mips/idt/idt_machdep.c
      user/mjacob/sys/mips/include/bus.h
      user/mjacob/sys/mips/include/fdt.h
      user/mjacob/sys/mips/include/metadata.h
      user/mjacob/sys/mips/include/vmparam.h
      user/mjacob/sys/mips/malta/malta_machdep.c
      user/mjacob/sys/mips/mips/busdma_machdep.c
      user/mjacob/sys/mips/mips/tick.c
      user/mjacob/sys/mips/nlm/dev/net/mdio.c
      user/mjacob/sys/mips/nlm/dev/net/nae.c
      user/mjacob/sys/mips/nlm/dev/net/sgmii.c
      user/mjacob/sys/mips/nlm/dev/net/xlpge.c
      user/mjacob/sys/mips/nlm/hal/fmn.c
      user/mjacob/sys/mips/nlm/hal/mdio.h
      user/mjacob/sys/mips/nlm/hal/sys.h
      user/mjacob/sys/mips/nlm/hal/ucore_loader.h
      user/mjacob/sys/mips/nlm/tick.c
      user/mjacob/sys/mips/nlm/xlp_machdep.c
      user/mjacob/sys/mips/nlm/xlp_pci.c
      user/mjacob/sys/mips/rmi/tick.c
      user/mjacob/sys/mips/rt305x/rt305x_machdep.c
      user/mjacob/sys/mips/sentry5/s5_machdep.c
      user/mjacob/sys/mips/sibyte/sb_machdep.c
      user/mjacob/sys/modules/Makefile
      user/mjacob/sys/modules/acpi/acpi/Makefile
      user/mjacob/sys/modules/ath/Makefile
      user/mjacob/sys/modules/cxgbe/firmware/Makefile
      user/mjacob/sys/modules/cxgbe/tom/Makefile
      user/mjacob/sys/modules/hpt27xx/Makefile
      user/mjacob/sys/modules/ixgbe/Makefile
      user/mjacob/sys/modules/mxge/mxge/Makefile
      user/mjacob/sys/modules/usb/Makefile
      user/mjacob/sys/modules/usb/smsc/Makefile
      user/mjacob/sys/modules/wlan/Makefile
      user/mjacob/sys/net/bpf.c
      user/mjacob/sys/net/if.c
      user/mjacob/sys/net/if_lagg.c
      user/mjacob/sys/net/if_llatbl.c
      user/mjacob/sys/net/if_llatbl.h
      user/mjacob/sys/net/if_pfsync.h
      user/mjacob/sys/net/if_var.h
      user/mjacob/sys/net/netmap.h
      user/mjacob/sys/net/zlib.c
      user/mjacob/sys/net/zlib.h
      user/mjacob/sys/net80211/ieee80211.h
      user/mjacob/sys/net80211/ieee80211_action.c
      user/mjacob/sys/net80211/ieee80211_adhoc.c
      user/mjacob/sys/net80211/ieee80211_ddb.c
      user/mjacob/sys/net80211/ieee80211_freebsd.c
      user/mjacob/sys/net80211/ieee80211_hostap.c
      user/mjacob/sys/net80211/ieee80211_hwmp.c
      user/mjacob/sys/net80211/ieee80211_input.c
      user/mjacob/sys/net80211/ieee80211_ioctl.h
      user/mjacob/sys/net80211/ieee80211_mesh.c
      user/mjacob/sys/net80211/ieee80211_mesh.h
      user/mjacob/sys/net80211/ieee80211_node.c
      user/mjacob/sys/net80211/ieee80211_node.h
      user/mjacob/sys/net80211/ieee80211_output.c
      user/mjacob/sys/net80211/ieee80211_power.c
      user/mjacob/sys/net80211/ieee80211_radiotap.h
      user/mjacob/sys/net80211/ieee80211_scan_sta.c
      user/mjacob/sys/net80211/ieee80211_superg.c
      user/mjacob/sys/netgraph/ng_ether.c
      user/mjacob/sys/netgraph/ng_parse.c
      user/mjacob/sys/netinet/if_ether.h
      user/mjacob/sys/netinet/in.c
      user/mjacob/sys/netinet/in_pcb.c
      user/mjacob/sys/netinet/ip_carp.c
      user/mjacob/sys/netinet/ip_carp.h
      user/mjacob/sys/netinet/ip_input.c
      user/mjacob/sys/netinet/libalias/alias.c
      user/mjacob/sys/netinet/libalias/libalias.3
      user/mjacob/sys/netinet/sctp.h
      user/mjacob/sys/netinet/sctp_asconf.c
      user/mjacob/sys/netinet/sctp_indata.c
      user/mjacob/sys/netinet/sctp_input.c
      user/mjacob/sys/netinet/sctp_output.c
      user/mjacob/sys/netinet/sctp_output.h
      user/mjacob/sys/netinet/sctp_pcb.c
      user/mjacob/sys/netinet/sctp_pcb.h
      user/mjacob/sys/netinet/sctp_structs.h
      user/mjacob/sys/netinet/sctp_sysctl.c
      user/mjacob/sys/netinet/sctp_timer.c
      user/mjacob/sys/netinet/sctp_usrreq.c
      user/mjacob/sys/netinet/sctputil.c
      user/mjacob/sys/netinet/tcp.h
      user/mjacob/sys/netinet/tcp_input.c
      user/mjacob/sys/netinet/tcp_lro.c
      user/mjacob/sys/netinet/tcp_reass.c
      user/mjacob/sys/netinet/tcp_syncache.c
      user/mjacob/sys/netinet/tcp_timer.c
      user/mjacob/sys/netinet/tcp_usrreq.c
      user/mjacob/sys/netinet/toecore.c
      user/mjacob/sys/netinet/udp.h
      user/mjacob/sys/netinet6/in6.c
      user/mjacob/sys/netinet6/in6_src.c
      user/mjacob/sys/netinet6/nd6.c
      user/mjacob/sys/netinet6/nd6.h
      user/mjacob/sys/netinet6/nd6_nbr.c
      user/mjacob/sys/netinet6/scope6.c
      user/mjacob/sys/netpfil/pf/if_pfsync.c
      user/mjacob/sys/nfs/nfs_common.c
      user/mjacob/sys/nfs/nfs_common.h
      user/mjacob/sys/nfsclient/nfs_krpc.c
      user/mjacob/sys/nfsclient/nfs_subs.c
      user/mjacob/sys/nfsclient/nfs_vfsops.c
      user/mjacob/sys/nfsclient/nfs_vnops.c
      user/mjacob/sys/nfsserver/nfs_srvsubs.c
      user/mjacob/sys/ofed/drivers/net/mlx4/en_tx.c
      user/mjacob/sys/opencrypto/xform.c
      user/mjacob/sys/pc98/cbus/pckbd.c
      user/mjacob/sys/pc98/conf/GENERIC
      user/mjacob/sys/pc98/pc98/machdep.c
      user/mjacob/sys/pci/if_rl.c
      user/mjacob/sys/pci/if_rlreg.h
      user/mjacob/sys/pci/ncr.c
      user/mjacob/sys/powerpc/aim/clock.c
      user/mjacob/sys/powerpc/aim/mmu_oea.c
      user/mjacob/sys/powerpc/aim/mmu_oea64.c
      user/mjacob/sys/powerpc/aim/moea64_native.c
      user/mjacob/sys/powerpc/booke/clock.c
      user/mjacob/sys/powerpc/booke/platform_bare.c
      user/mjacob/sys/powerpc/booke/pmap.c
      user/mjacob/sys/powerpc/conf/GENERIC
      user/mjacob/sys/powerpc/conf/GENERIC64
      user/mjacob/sys/powerpc/include/platformvar.h
      user/mjacob/sys/powerpc/include/vmparam.h
      user/mjacob/sys/powerpc/powermac/platform_powermac.c
      user/mjacob/sys/powerpc/powerpc/busdma_machdep.c
      user/mjacob/sys/powerpc/powerpc/cpu.c
      user/mjacob/sys/powerpc/ps3/mmu_ps3.c
      user/mjacob/sys/powerpc/ps3/platform_ps3.c
      user/mjacob/sys/powerpc/ps3/ps3cdrom.c
      user/mjacob/sys/powerpc/wii/platform_wii.c
      user/mjacob/sys/powerpc/wii/wii_gpio.c
      user/mjacob/sys/powerpc/wii/wii_ipc.c
      user/mjacob/sys/powerpc/wii/wii_pic.c
      user/mjacob/sys/security/audit/audit.c
      user/mjacob/sys/security/audit/audit.h
      user/mjacob/sys/security/audit/audit_bsm.c
      user/mjacob/sys/security/audit/audit_private.h
      user/mjacob/sys/sparc64/conf/GENERIC
      user/mjacob/sys/sparc64/include/bus_dma.h
      user/mjacob/sys/sparc64/include/smp.h
      user/mjacob/sys/sparc64/include/vmparam.h
      user/mjacob/sys/sparc64/sparc64/bus_machdep.c
      user/mjacob/sys/sparc64/sparc64/interrupt.S
      user/mjacob/sys/sparc64/sparc64/iommu.c
      user/mjacob/sys/sparc64/sparc64/pmap.c
      user/mjacob/sys/sparc64/sparc64/tick.c
      user/mjacob/sys/sparc64/sparc64/tsb.c
      user/mjacob/sys/sys/buf.h
      user/mjacob/sys/sys/buf_ring.h
      user/mjacob/sys/sys/bufobj.h
      user/mjacob/sys/sys/bus_dma.h
      user/mjacob/sys/sys/copyright.h
      user/mjacob/sys/sys/diskmbr.h
      user/mjacob/sys/sys/filedesc.h
      user/mjacob/sys/sys/kernel.h
      user/mjacob/sys/sys/mbuf.h
      user/mjacob/sys/sys/mount.h
      user/mjacob/sys/sys/namei.h
      user/mjacob/sys/sys/param.h
      user/mjacob/sys/sys/pmc.h
      user/mjacob/sys/sys/proc.h
      user/mjacob/sys/sys/protosw.h
      user/mjacob/sys/sys/queue.h
      user/mjacob/sys/sys/signalvar.h
      user/mjacob/sys/sys/socket.h
      user/mjacob/sys/sys/systm.h
      user/mjacob/sys/sys/time.h
      user/mjacob/sys/sys/timeet.h
      user/mjacob/sys/sys/types.h
      user/mjacob/sys/sys/uio.h
      user/mjacob/sys/sys/un.h
      user/mjacob/sys/sys/vdso.h
      user/mjacob/sys/sys/vmmeter.h
      user/mjacob/sys/sys/vnode.h
      user/mjacob/sys/sys/watchdog.h
      user/mjacob/sys/tools/vnode_if.awk
      user/mjacob/sys/ufs/ffs/ffs_alloc.c
      user/mjacob/sys/ufs/ffs/ffs_inode.c
      user/mjacob/sys/ufs/ffs/ffs_snapshot.c
      user/mjacob/sys/ufs/ffs/ffs_softdep.c
      user/mjacob/sys/ufs/ffs/ffs_suspend.c
      user/mjacob/sys/ufs/ffs/ffs_vfsops.c
      user/mjacob/sys/ufs/ufs/inode.h
      user/mjacob/sys/ufs/ufs/ufs_lookup.c
      user/mjacob/sys/ufs/ufs/ufs_quota.c
      user/mjacob/sys/vm/device_pager.c
      user/mjacob/sys/vm/swap_pager.c
      user/mjacob/sys/vm/uma.h
      user/mjacob/sys/vm/uma_core.c
      user/mjacob/sys/vm/uma_int.h
      user/mjacob/sys/vm/vm_fault.c
      user/mjacob/sys/vm/vm_kern.c
      user/mjacob/sys/vm/vm_map.c
      user/mjacob/sys/vm/vm_map.h
      user/mjacob/sys/vm/vm_meter.c
      user/mjacob/sys/vm/vm_mmap.c
      user/mjacob/sys/vm/vm_object.c
      user/mjacob/sys/vm/vm_object.h
      user/mjacob/sys/vm/vm_page.c
      user/mjacob/sys/vm/vm_pageout.c
      user/mjacob/sys/vm/vm_phys.c
      user/mjacob/sys/vm/vm_unix.c
      user/mjacob/sys/vm/vnode_pager.c
      user/mjacob/sys/x86/acpica/srat.c
      user/mjacob/sys/x86/include/specialreg.h
      user/mjacob/sys/x86/isa/atrtc.c
      user/mjacob/sys/x86/isa/clock.c
      user/mjacob/sys/x86/x86/busdma_machdep.c
      user/mjacob/sys/x86/x86/intr_machdep.c
      user/mjacob/sys/x86/x86/local_apic.c
      user/mjacob/sys/x86/x86/tsc.c
    Directory Properties:
      user/mjacob/sys/   (props changed)
      user/mjacob/sys/boot/   (props changed)
      user/mjacob/sys/boot/i386/efi/   (props changed)
      user/mjacob/sys/cddl/contrib/opensolaris/   (props changed)
      user/mjacob/sys/conf/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/common/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/compiler/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/debugger/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/disassembler/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/dispatcher/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/events/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/executer/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/hardware/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/namespace/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/parser/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/resources/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/tables/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/components/utilities/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/include/   (props changed)
      user/mjacob/sys/contrib/dev/acpica/os_specific/   (props changed)
      user/mjacob/sys/contrib/octeon-sdk/   (props changed)
      user/mjacob/sys/dev/ath/ath_hal/ar5211/boss.ini   (props changed)
      user/mjacob/sys/dev/bktr/CHANGELOG.TXT   (props changed)
      user/mjacob/sys/dev/ixgbe/ixgbe_82598.h   (props changed)
      user/mjacob/sys/dev/ixgbe/ixgbe_82599.h   (props changed)
      user/mjacob/sys/dev/ixgbe/ixgbe_x540.c   (props changed)
      user/mjacob/sys/dev/ixgbe/ixgbe_x540.h   (props changed)
      user/mjacob/sys/mips/rmi/msgring_xls.cfg   (props changed)
      user/mjacob/sys/modules/digi/Makefile   (props changed)
      user/mjacob/sys/modules/digi/Makefile.inc   (props changed)
      user/mjacob/sys/modules/isci/Makefile   (props changed)
      user/mjacob/sys/modules/sound/driver/ich/Makefile   (props changed)
    
    Modified: user/mjacob/sys/amd64/acpica/acpi_machdep.c
    ==============================================================================
    --- user/mjacob/sys/amd64/acpica/acpi_machdep.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/acpica/acpi_machdep.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -122,7 +122,7 @@ table_map(vm_paddr_t pa, int offset, vm_
     	void *data;
     
     	off = pa & PAGE_MASK;
    -	length = roundup(length + off, PAGE_SIZE);
    +	length = round_page(length + off);
     	pa = pa & PG_FRAME;
     	va = (vm_offset_t)pmap_kenter_temporary(pa, offset) +
     	    (offset * PAGE_SIZE);
    @@ -146,7 +146,7 @@ table_unmap(void *data, vm_offset_t leng
     
     	va = (vm_offset_t)data;
     	off = va & PAGE_MASK;
    -	length = roundup(length + off, PAGE_SIZE);
    +	length = round_page(length + off);
     	va &= ~PAGE_MASK;
     	while (length > 0) {
     		pmap_kremove(va);
    
    Modified: user/mjacob/sys/amd64/amd64/machdep.c
    ==============================================================================
    --- user/mjacob/sys/amd64/amd64/machdep.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/amd64/machdep.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -658,7 +658,7 @@ cpu_halt(void)
     		halt();
     }
     
    -void (*cpu_idle_hook)(void) = NULL;	/* ACPI idle hook. */
    +void (*cpu_idle_hook)(sbintime_t) = NULL;	/* ACPI idle hook. */
     static int	cpu_ident_amdc1e = 0;	/* AMD C1E supported. */
     static int	idle_mwait = 1;		/* Use MONITOR/MWAIT for short idle. */
     TUNABLE_INT("machdep.idle_mwait", &idle_mwait);
    @@ -670,7 +670,7 @@ SYSCTL_INT(_machdep, OID_AUTO, idle_mwai
     #define	STATE_SLEEPING	0x2
     
     static void
    -cpu_idle_acpi(int busy)
    +cpu_idle_acpi(sbintime_t sbt)
     {
     	int *state;
     
    @@ -682,14 +682,14 @@ cpu_idle_acpi(int busy)
     	if (sched_runnable())
     		enable_intr();
     	else if (cpu_idle_hook)
    -		cpu_idle_hook();
    +		cpu_idle_hook(sbt);
     	else
     		__asm __volatile("sti; hlt");
     	*state = STATE_RUNNING;
     }
     
     static void
    -cpu_idle_hlt(int busy)
    +cpu_idle_hlt(sbintime_t sbt)
     {
     	int *state;
     
    @@ -730,7 +730,7 @@ cpu_idle_hlt(int busy)
     #define	MWAIT_C4	0x30
     
     static void
    -cpu_idle_mwait(int busy)
    +cpu_idle_mwait(sbintime_t sbt)
     {
     	int *state;
     
    @@ -753,7 +753,7 @@ cpu_idle_mwait(int busy)
     }
     
     static void
    -cpu_idle_spin(int busy)
    +cpu_idle_spin(sbintime_t sbt)
     {
     	int *state;
     	int i;
    @@ -802,12 +802,13 @@ cpu_probe_amdc1e(void)
     	}
     }
     
    -void (*cpu_idle_fn)(int) = cpu_idle_acpi;
    +void (*cpu_idle_fn)(sbintime_t) = cpu_idle_acpi;
     
     void
     cpu_idle(int busy)
     {
     	uint64_t msr;
    +	sbintime_t sbt = -1;
     
     	CTR2(KTR_SPARE2, "cpu_idle(%d) at %d",
     	    busy, curcpu);
    @@ -825,7 +826,7 @@ cpu_idle(int busy)
     	/* If we have time - switch timers into idle mode. */
     	if (!busy) {
     		critical_enter();
    -		cpu_idleclock();
    +		sbt = cpu_idleclock();
     	}
     
     	/* Apply AMD APIC timer C1E workaround. */
    @@ -836,7 +837,7 @@ cpu_idle(int busy)
     	}
     
     	/* Call main idle method. */
    -	cpu_idle_fn(busy);
    +	cpu_idle_fn(sbt);
     
     	/* Switch timers mack into active mode. */
     	if (!busy) {
    
    Modified: user/mjacob/sys/amd64/amd64/minidump_machdep.c
    ==============================================================================
    --- user/mjacob/sys/amd64/amd64/minidump_machdep.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/amd64/minidump_machdep.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -232,7 +232,7 @@ minidumpsys(struct dumperinfo *di)
     	/* Walk page table pages, set bits in vm_page_dump */
     	pmapsize = 0;
     	pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys);
    -	for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR,
    +	for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + nkpt * NBPDR,
     	    kernel_vm_end); ) {
     		/*
     		 * We always write a page, even if it is zero. Each
    @@ -364,7 +364,7 @@ minidumpsys(struct dumperinfo *di)
     	/* Dump kernel page directory pages */
     	bzero(fakepd, sizeof(fakepd));
     	pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys);
    -	for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR,
    +	for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + nkpt * NBPDR,
     	    kernel_vm_end); va += NBPDP) {
     		i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1);
     
    
    Modified: user/mjacob/sys/amd64/amd64/mp_machdep.c
    ==============================================================================
    --- user/mjacob/sys/amd64/amd64/mp_machdep.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/amd64/mp_machdep.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1431,11 +1431,11 @@ cpususpend_handler(void)
     	while (!CPU_ISSET(cpu, &started_cpus))
     		ia32_pause();
     
    -	CPU_CLR_ATOMIC(cpu, &started_cpus);
    -
     	/* Resume MCA and local APIC */
     	mca_resume();
     	lapic_setup(0);
    +
    +	CPU_CLR_ATOMIC(cpu, &started_cpus);
     }
     
     /*
    
    Modified: user/mjacob/sys/amd64/amd64/pmap.c
    ==============================================================================
    --- user/mjacob/sys/amd64/amd64/pmap.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/amd64/pmap.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -102,6 +102,7 @@ __FBSDID("$FreeBSD$");
     #include "opt_vm.h"
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -133,6 +134,8 @@ __FBSDID("$FreeBSD$");
     #include 
     #include 
     
    +#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -199,6 +202,10 @@ struct pmap kernel_pmap_store;
     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) */
     
    +int nkpt;
    +SYSCTL_INT(_machdep, OID_AUTO, nkpt, CTLFLAG_RD, &nkpt, 0,
    +    "Number of kernel page table pages allocated on bootup");
    +
     static int ndmpdp;
     static vm_paddr_t dmaplimit;
     vm_offset_t kernel_vm_end = VM_MIN_KERNEL_ADDRESS;
    @@ -492,17 +499,42 @@ allocpages(vm_paddr_t *firstaddr, int n)
     
     CTASSERT(powerof2(NDMPML4E));
     
    +/* number of kernel PDP slots */
    +#define	NKPDPE(ptpgs)		howmany((ptpgs), NPDEPG)
    +
     static void
    -create_pagetables(vm_paddr_t *firstaddr)
    +nkpt_init(vm_paddr_t addr)
     {
    -	int i, j, ndm1g;
    +	int pt_pages;
    +	
    +#ifdef NKPT
    +	pt_pages = NKPT;
    +#else
    +	pt_pages = howmany(addr, 1 << PDRSHIFT);
    +	pt_pages += NKPDPE(pt_pages);
     
    -	/* Allocate pages */
    -	KPTphys = allocpages(firstaddr, NKPT);
    -	KPML4phys = allocpages(firstaddr, 1);
    -	KPDPphys = allocpages(firstaddr, NKPML4E);
    -	KPDphys = allocpages(firstaddr, NKPDPE);
    +	/*
    +	 * Add some slop beyond the bare minimum required for bootstrapping
    +	 * the kernel.
    +	 *
    +	 * This is quite important when allocating KVA for kernel modules.
    +	 * The modules are required to be linked in the negative 2GB of
    +	 * the address space.  If we run out of KVA in this region then
    +	 * pmap_growkernel() will need to allocate page table pages to map
    +	 * the entire 512GB of KVA space which is an unnecessary tax on
    +	 * physical memory.
    +	 */
    +	pt_pages += 8;		/* 16MB additional slop for kernel modules */
    +#endif
    +	nkpt = pt_pages;
    +}
    +
    +static void
    +create_pagetables(vm_paddr_t *firstaddr)
    +{
    +	int i, j, ndm1g, nkpdpe;
     
    +	/* Allocate page table pages for the direct map */
     	ndmpdp = (ptoa(Maxmem) + NBPDP - 1) >> PDPSHIFT;
     	if (ndmpdp < 4)		/* Minimum 4GB of dirmap */
     		ndmpdp = 4;
    @@ -514,6 +546,22 @@ create_pagetables(vm_paddr_t *firstaddr)
     		DMPDphys = allocpages(firstaddr, ndmpdp - ndm1g);
     	dmaplimit = (vm_paddr_t)ndmpdp << PDPSHIFT;
     
    +	/* Allocate pages */
    +	KPML4phys = allocpages(firstaddr, 1);
    +	KPDPphys = allocpages(firstaddr, NKPML4E);
    +
    +	/*
    +	 * Allocate the initial number of kernel page table pages required to
    +	 * bootstrap.  We defer this until after all memory-size dependent
    +	 * allocations are done (e.g. direct map), so that we don't have to
    +	 * build in too much slop in our estimate.
    +	 */
    +	nkpt_init(*firstaddr);
    +	nkpdpe = NKPDPE(nkpt);
    +
    +	KPTphys = allocpages(firstaddr, nkpt);
    +	KPDphys = allocpages(firstaddr, nkpdpe);
    +
     	/* Fill in the underlying page table pages */
     	/* Read-only from zero to physfree */
     	/* XXX not fully used, underneath 2M pages */
    @@ -523,7 +571,7 @@ create_pagetables(vm_paddr_t *firstaddr)
     	}
     
     	/* Now map the page tables at their location within PTmap */
    -	for (i = 0; i < NKPT; i++) {
    +	for (i = 0; i < nkpt; i++) {
     		((pd_entry_t *)KPDphys)[i] = KPTphys + (i << PAGE_SHIFT);
     		((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V;
     	}
    @@ -536,7 +584,7 @@ create_pagetables(vm_paddr_t *firstaddr)
     	}
     
     	/* And connect up the PD to the PDP */
    -	for (i = 0; i < NKPDPE; i++) {
    +	for (i = 0; i < nkpdpe; i++) {
     		((pdp_entry_t *)KPDPphys)[i + KPDPI] = KPDphys +
     		    (i << PAGE_SHIFT);
     		((pdp_entry_t *)KPDPphys)[i + KPDPI] |= PG_RW | PG_V | PG_U;
    @@ -765,7 +813,7 @@ pmap_init(void)
     	 * Initialize the vm page array entries for the kernel pmap's
     	 * page table pages.
     	 */ 
    -	for (i = 0; i < NKPT; i++) {
    +	for (i = 0; i < nkpt; i++) {
     		mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT));
     		KASSERT(mpte >= vm_page_array &&
     		    mpte < &vm_page_array[vm_page_array_size],
    @@ -1150,6 +1198,15 @@ pmap_invalidate_cache_range(vm_offset_t 
     	    eva - sva < PMAP_CLFLUSH_THRESHOLD) {
     
     		/*
    +		 * XXX: Some CPUs fault, hang, or trash the local APIC
    +		 * registers if we use CLFLUSH on the local APIC
    +		 * range.  The local APIC is always uncached, so we
    +		 * don't need to flush for that range anyway.
    +		 */
    +		if (pmap_kextract(sva) == lapic_paddr)
    +			return;
    +
    +		/*
     		 * Otherwise, do per-cache line flush.  Use the mfence
     		 * instruction to insure that previous stores are
     		 * included in the write-back.  The processor
    @@ -1424,6 +1481,7 @@ pmap_qremove(vm_offset_t sva, int count)
     
     	va = sva;
     	while (count-- > 0) {
    +		KASSERT(va >= VM_MIN_KERNEL_ADDRESS, ("usermode va %lx", va));
     		pmap_kremove(va);
     		va += PAGE_SIZE;
     	}
    @@ -1983,7 +2041,7 @@ pmap_growkernel(vm_offset_t addr)
     	 * any new kernel page table pages between "kernel_vm_end" and
     	 * "KERNBASE".
     	 */
    -	if (KERNBASE < addr && addr <= KERNBASE + NKPT * NBPDR)
    +	if (KERNBASE < addr && addr <= KERNBASE + nkpt * NBPDR)
     		return;
     
     	addr = roundup2(addr, NBPDR);
    @@ -3434,9 +3492,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, 
     	KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva ||
     	    va >= kmi.clean_eva,
     	    ("pmap_enter: managed mapping within the clean submap"));
    -	KASSERT((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) != 0 ||
    -	    VM_OBJECT_LOCKED(m->object),
    -	    ("pmap_enter: page %p is not busy", m));
    +	if ((m->oflags & (VPO_UNMANAGED | VPO_BUSY)) == 0)
    +		VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
     	pa = VM_PAGE_TO_PHYS(m);
     	newpte = (pt_entry_t)(pa | PG_A | PG_V);
     	if ((access & VM_PROT_WRITE) != 0)
    @@ -4388,8 +4445,10 @@ pmap_remove_pages(pmap_t pmap)
     					pte = &pte[pmap_pte_index(pv->pv_va)];
     					tpte = *pte & ~PG_PTE_PAT;
     				}
    -				if ((tpte & PG_V) == 0)
    -					panic("bad pte");
    +				if ((tpte & PG_V) == 0) {
    +					panic("bad pte va %lx pte %lx",
    +					    pv->pv_va, tpte);
    +				}
     
     /*
      * We cannot remove wired pages from a process' mapping at this time
    @@ -4955,7 +5014,7 @@ pmap_mapdev_attr(vm_paddr_t pa, vm_size_
     			return ((void *)va);
     	}
     	offset = pa & PAGE_MASK;
    -	size = roundup(offset + size, PAGE_SIZE);
    +	size = round_page(offset + size);
     	va = kmem_alloc_nofault(kernel_map, size);
     	if (!va)
     		panic("pmap_mapdev: Couldn't alloc kernel virtual memory");
    @@ -4991,7 +5050,7 @@ pmap_unmapdev(vm_offset_t va, vm_size_t 
     		return;
     	base = trunc_page(va);
     	offset = va & PAGE_MASK;
    -	size = roundup(offset + size, PAGE_SIZE);
    +	size = round_page(offset + size);
     	kmem_free(kernel_map, base, size);
     }
     
    @@ -5113,7 +5172,7 @@ pmap_change_attr_locked(vm_offset_t va, 
     	PMAP_LOCK_ASSERT(kernel_pmap, MA_OWNED);
     	base = trunc_page(va);
     	offset = va & PAGE_MASK;
    -	size = roundup(offset + size, PAGE_SIZE);
    +	size = round_page(offset + size);
     
     	/*
     	 * Only supported on kernel virtual addresses, including the direct
    
    Modified: user/mjacob/sys/amd64/amd64/vm_machdep.c
    ==============================================================================
    --- user/mjacob/sys/amd64/amd64/vm_machdep.c	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/amd64/vm_machdep.c	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -575,7 +575,8 @@ cpu_reset_proxy()
     
     	cpu_reset_proxy_active = 1;
     	while (cpu_reset_proxy_active == 1)
    -		;	/* Wait for other cpu to see that we've started */
    +		ia32_pause(); /* Wait for other cpu to see that we've started */
    +
     	CPU_SETOF(cpu_reset_proxyid, &tcrp);
     	stop_cpus(tcrp);
     	printf("cpu_reset_proxy: Stopped CPU %d\n", cpu_reset_proxyid);
    @@ -611,14 +612,17 @@ cpu_reset()
     			wmb();
     
     			cnt = 0;
    -			while (cpu_reset_proxy_active == 0 && cnt < 10000000)
    +			while (cpu_reset_proxy_active == 0 && cnt < 10000000) {
    +				ia32_pause();
     				cnt++;	/* Wait for BSP to announce restart */
    +			}
     			if (cpu_reset_proxy_active == 0)
     				printf("cpu_reset: Failed to restart BSP\n");
     			enable_intr();
     			cpu_reset_proxy_active = 2;
     
    -			while (1);
    +			while (1)
    +				ia32_pause();
     			/* NOTREACHED */
     		}
     
    
    Modified: user/mjacob/sys/amd64/conf/GENERIC
    ==============================================================================
    --- user/mjacob/sys/amd64/conf/GENERIC	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/conf/GENERIC	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -35,6 +35,7 @@ options 	SOFTUPDATES		# Enable FFS soft 
     options 	UFS_ACL			# Support for access control lists
     options 	UFS_DIRHASH		# Improve performance on big directories
     options 	UFS_GJOURNAL		# Enable gjournal-based UFS journaling
    +options 	QUOTA			# Enable disk quotas for UFS
     options 	MD_ROOT			# MD is a potential root device
     options 	NFSCL			# New Network Filesystem Client
     options 	NFSD			# New Network Filesystem Server
    @@ -196,7 +197,6 @@ device		uart		# Generic UART driver
     device		ppc
     device		ppbus		# Parallel port bus (required)
     device		lpt		# Printer
    -device		plip		# TCP/IP over parallel
     device		ppi		# Parallel port interface device
     #device		vpo		# Requires scbus and da
     
    @@ -317,15 +317,6 @@ device		usb		# USB Bus (required)
     device		ukbd		# Keyboard
     device		umass		# Disks/Mass storage - Requires scbus and da
     
    -# FireWire support
    -device		firewire	# FireWire bus code
    -# sbp(4) works for some systems but causes boot failure on others
    -#device		sbp		# SCSI over FireWire (Requires scbus and da)
    -device		fwe		# Ethernet over FireWire (non-standard!)
    -device		fwip		# IP over FireWire (RFC 2734,3146)
    -device		dcons		# Dumb console driver
    -device		dcons_crom	# Configuration ROM for dcons
    -
     # Sound support
     device		sound		# Generic sound driver (required)
     device		snd_cmi		# CMedia CMI8338/CMI8738
    @@ -340,3 +331,11 @@ device		snd_via8233	# VIA VT8233x Audio
     device		mmc		# MMC/SD bus
     device		mmcsd		# MMC/SD memory card
     device		sdhci		# Generic PCI SD Host Controller
    +
    +# VirtIO support
    +device		virtio		# Generic VirtIO bus (required)
    +device		virtio_pci	# VirtIO PCI device
    +device		vtnet		# VirtIO Ethernet device
    +device		virtio_blk	# VirtIO Block device
    +device		virtio_scsi	# VirtIO SCSI device
    +device		virtio_balloon	# VirtIO Memory Balloon device
    
    Modified: user/mjacob/sys/amd64/conf/NOTES
    ==============================================================================
    --- user/mjacob/sys/amd64/conf/NOTES	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/conf/NOTES	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -440,6 +440,15 @@ device		safe		# SafeNet 1141
     options 	SAFE_DEBUG	# enable debugging support: hw.safe.debug
     options 	SAFE_RNDTEST	# enable rndtest support
     
    +#
    +# VirtIO support
    +device		virtio		# Generic VirtIO bus (required)
    +device		virtio_pci	# VirtIO PCI Interface
    +device		vtnet		# VirtIO Ethernet device
    +device		virtio_blk	# VirtIO Block device
    +device		virtio_scsi	# VirtIO SCSI device
    +device		virtio_balloon	# VirtIO Memory Balloon device
    +
     #####################################################################
     
     #
    
    Modified: user/mjacob/sys/amd64/include/elf.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/elf.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/elf.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1,124 +1,6 @@
     /*-
    - * Copyright (c) 1996-1997 John D. Polstra.
    - * 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.
    - *
    - * $FreeBSD$
    + * This file is in the public domain.
      */
    +/* $FreeBSD$ */
     
    -#ifndef _MACHINE_ELF_H_
    -#define	_MACHINE_ELF_H_ 1
    -
    -/*
    - * ELF definitions for the AMD64 architecture.
    - */
    -
    -
    -#ifndef __ELF_WORD_SIZE
    -#define	__ELF_WORD_SIZE	64	/* Used by  */
    -#endif
    -#include 	/* Definitions common to all 32 bit architectures. */
    -#include 	/* Definitions common to all 64 bit architectures. */
    -#include 
    -
    -#define	ELF_ARCH	EM_X86_64
    -#define	ELF_ARCH32	EM_386
    -
    -#define	ELF_MACHINE_OK(x) ((x) == EM_X86_64)
    -
    -/*
    - * Auxiliary vector entries for passing information to the interpreter.
    - *
    - * The i386 supplement to the SVR4 ABI specification names this "auxv_t",
    - * but POSIX lays claim to all symbols ending with "_t".
    - */
    -typedef struct {	/* Auxiliary vector entry on initial stack */
    -	int	a_type;			/* Entry type. */
    -	union {
    -		int	a_val;		/* Integer value. */
    -	} a_un;
    -} Elf32_Auxinfo;
    -
    -
    -typedef struct {	/* Auxiliary vector entry on initial stack */
    -	long	a_type;			/* Entry type. */
    -	union {
    -		long	a_val;		/* Integer value. */
    -		void	*a_ptr;		/* Address. */
    -		void	(*a_fcn)(void);	/* Function pointer (not used). */
    -	} a_un;
    -} Elf64_Auxinfo;
    -
    -__ElfType(Auxinfo);
    -
    -/* Values for a_type. */
    -#define	AT_NULL		0	/* Terminates the vector. */
    -#define	AT_IGNORE	1	/* Ignored entry. */
    -#define	AT_EXECFD	2	/* File descriptor of program to load. */
    -#define	AT_PHDR		3	/* Program header of program already loaded. */
    -#define	AT_PHENT	4	/* Size of each program header entry. */
    -#define	AT_PHNUM	5	/* Number of program header entries. */
    -#define	AT_PAGESZ	6	/* Page size in bytes. */
    -#define	AT_BASE		7	/* Interpreter's base address. */
    -#define	AT_FLAGS	8	/* Flags (unused for i386). */
    -#define	AT_ENTRY	9	/* Where interpreter should transfer control. */
    -#define	AT_NOTELF	10	/* Program is not ELF ?? */
    -#define	AT_UID		11	/* Real uid. */
    -#define	AT_EUID		12	/* Effective uid. */
    -#define	AT_GID		13	/* Real gid. */
    -#define	AT_EGID		14	/* Effective gid. */
    -#define	AT_EXECPATH	15	/* Path to the executable. */
    -#define	AT_CANARY	16	/* Canary for SSP */
    -#define	AT_CANARYLEN	17	/* Length of the canary. */
    -#define	AT_OSRELDATE	18	/* OSRELDATE. */
    -#define	AT_NCPUS	19	/* Number of CPUs. */
    -#define	AT_PAGESIZES	20	/* Pagesizes. */
    -#define	AT_PAGESIZESLEN	21	/* Number of pagesizes. */
    -#define	AT_TIMEKEEP	22	/* Pointer to timehands. */
    -#define	AT_STACKPROT	23	/* Initial stack protection. */
    -
    -#define	AT_COUNT	24	/* Count of defined aux entry types. */
    -
    -/*
    - * Relocation types.
    - */
    -
    -#define	R_X86_64_COUNT	24	/* Count of defined relocation types. */
    -
    -/* Define "machine" characteristics */
    -#if __ELF_WORD_SIZE == 32
    -#define ELF_TARG_CLASS  ELFCLASS32
    -#else
    -#define ELF_TARG_CLASS  ELFCLASS64
    -#endif
    -#define	ELF_TARG_DATA	ELFDATA2LSB
    -#define	ELF_TARG_MACH	EM_X86_64
    -#define	ELF_TARG_VER	1
    -
    -#if __ELF_WORD_SIZE == 32
    -#define	ET_DYN_LOAD_ADDR 0x01001000
    -#else
    -#define	ET_DYN_LOAD_ADDR 0x01021000
    -#endif
    -
    -#endif /* !_MACHINE_ELF_H_ */
    +#include 
    
    Modified: user/mjacob/sys/amd64/include/frame.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/frame.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/frame.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1,87 +1,6 @@
     /*-
    - * Copyright (c) 2003 Peter Wemm.
    - * Copyright (c) 1990 The Regents of the University of California.
    - * All rights reserved.
    - *
    - * This code is derived from software contributed to Berkeley by
    - * William Jolitz.
    - *
    - * 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.
    - *
    - *	from: @(#)frame.h	5.2 (Berkeley) 1/18/91
    - * $FreeBSD$
    + * This file is in the public domain.
      */
    +/* $FreeBSD$ */
     
    -#ifndef _MACHINE_FRAME_H_
    -#define _MACHINE_FRAME_H_ 1
    -
    -/*
    - * System stack frames.
    - */
    -
    -/*
    - * Exception/Trap Stack Frame
    - *
    - * The ordering of this is specifically so that we can take first 6
    - * the syscall arguments directly from the beginning of the frame.
    - */
    -
    -struct trapframe {
    -	register_t	tf_rdi;
    -	register_t	tf_rsi;
    -	register_t	tf_rdx;
    -	register_t	tf_rcx;
    -	register_t	tf_r8;
    -	register_t	tf_r9;
    -	register_t	tf_rax;
    -	register_t	tf_rbx;
    -	register_t	tf_rbp;
    -	register_t	tf_r10;
    -	register_t	tf_r11;
    -	register_t	tf_r12;
    -	register_t	tf_r13;
    -	register_t	tf_r14;
    -	register_t	tf_r15;
    -	uint32_t	tf_trapno;
    -	uint16_t	tf_fs;
    -	uint16_t	tf_gs;
    -	register_t	tf_addr;
    -	uint32_t	tf_flags;
    -	uint16_t	tf_es;
    -	uint16_t	tf_ds;
    -	/* below portion defined in hardware */
    -	register_t	tf_err;
    -	register_t	tf_rip;
    -	register_t	tf_cs;
    -	register_t	tf_rflags;
    -	register_t	tf_rsp;
    -	register_t	tf_ss;
    -};
    -
    -#define	TF_HASSEGS	0x1
    -#define	TF_HASBASES	0x2
    -#define	TF_HASFPXSTATE	0x4
    -
    -#endif /* _MACHINE_FRAME_H_ */
    +#include 
    
    Modified: user/mjacob/sys/amd64/include/intr_machdep.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/intr_machdep.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/intr_machdep.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -94,7 +94,7 @@ struct pic {
     	int (*pic_config_intr)(struct intsrc *, enum intr_trigger,
     	    enum intr_polarity);
     	int (*pic_assign_cpu)(struct intsrc *, u_int apic_id);
    -	STAILQ_ENTRY(pic) pics;
    +	TAILQ_ENTRY(pic) pics;
     };
     
     /* Flags for pic_disable_source() */
    
    Modified: user/mjacob/sys/amd64/include/pmap.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/pmap.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/pmap.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -113,13 +113,7 @@
     	((unsigned long)(l2) << PDRSHIFT) | \
     	((unsigned long)(l1) << PAGE_SHIFT))
     
    -/* Initial number of kernel page tables. */
    -#ifndef NKPT
    -#define	NKPT		32
    -#endif
    -
     #define NKPML4E		1		/* number of kernel PML4 slots */
    -#define NKPDPE		howmany(NKPT, NPDEPG)/* number of kernel PDP slots */
     
     #define	NUPML4E		(NPML4EPG/2)	/* number of userland PML4 pages */
     #define	NUPDPE		(NUPML4E*NPDPEPG)/* number of userland PDP pages */
    @@ -181,6 +175,7 @@ typedef u_int64_t pml4_entry_t;
     #define	PML4map		((pd_entry_t *)(addr_PML4map))
     #define	PML4pml4e	((pd_entry_t *)(addr_PML4pml4e))
     
    +extern int nkpt;		/* Initial number of kernel page tables */
     extern u_int64_t KPDPphys;	/* physical address of kernel level 3 */
     extern u_int64_t KPML4phys;	/* physical address of kernel level 4 */
     
    
    Modified: user/mjacob/sys/amd64/include/sigframe.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/sigframe.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/sigframe.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1,46 +1,6 @@
     /*-
    - * Copyright (c) 1999 Marcel Moolenaar
    - * 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 
    - *    in this position and unchanged.
    - * 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 the author may not be used to endorse or promote products
    - *    derived from this software without specific prior written permission.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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$
    + * This file is in the public domain.
      */
    +/* $FreeBSD$ */
     
    -#ifndef _MACHINE_SIGFRAME_H_
    -#define	_MACHINE_SIGFRAME_H_
    -
    -/*
    - * Signal frames, arguments passed to application signal handlers.
    - */
    -struct sigframe {
    -	union {
    -		__siginfohandler_t	*sf_action;
    -		__sighandler_t		*sf_handler;
    -	} sf_ahu;
    -	ucontext_t	sf_uc;		/* = *sf_ucontext */
    -	siginfo_t	sf_si;		/* = *sf_siginfo (SA_SIGINFO case) */
    -};
    -
    -#endif /* !_MACHINE_SIGFRAME_H_ */
    +#include 
    
    Modified: user/mjacob/sys/amd64/include/signal.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/signal.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/signal.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1,109 +1,6 @@
     /*-
    - * Copyright (c) 2003 Peter Wemm.
    - * Copyright (c) 1986, 1989, 1991, 1993
    - *	The Regents of the University of California.  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.
    - * 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.
    - *
    - *	@(#)signal.h	8.1 (Berkeley) 6/11/93
    - * $FreeBSD$
    + * This file is in the public domain.
      */
    +/* $FreeBSD$ */
     
    -#ifndef _MACHINE_SIGNAL_H_
    -#define	_MACHINE_SIGNAL_H_
    -
    -#include 
    -#include 
    -
    -/*
    - * Machine-dependent signal definitions
    - */
    -
    -typedef long sig_atomic_t;
    -
    -#if __BSD_VISIBLE
    -#include 	/* codes for SIGILL, SIGFPE */
    -
    -/*
    - * Information pushed on stack when a signal is delivered.
    - * This is used by the kernel to restore state following
    - * execution of the signal handler.  It is also made available
    - * to the handler to allow it to restore state properly if
    - * a non-standard exit is performed.
    - *
    - * The sequence of the fields/registers after sc_mask in struct
    - * sigcontext must match those in mcontext_t and struct trapframe.
    - */
    -struct sigcontext {
    -	struct __sigset sc_mask;	/* signal mask to restore */
    -	long	sc_onstack;		/* sigstack state to restore */
    -	long	sc_rdi;		/* machine state (struct trapframe) */
    -	long	sc_rsi;
    -	long	sc_rdx;
    -	long	sc_rcx;
    -	long	sc_r8;
    -	long	sc_r9;
    -	long	sc_rax;
    -	long	sc_rbx;
    -	long	sc_rbp;
    -	long	sc_r10;
    -	long	sc_r11;
    -	long	sc_r12;
    -	long	sc_r13;
    -	long	sc_r14;
    -	long	sc_r15;
    -	int	sc_trapno;
    -	short	sc_fs;
    -	short	sc_gs;
    -	long	sc_addr;
    -	int	sc_flags;
    -	short	sc_es;
    -	short	sc_ds;
    -	long	sc_err;
    -	long	sc_rip;
    -	long	sc_cs;
    -	long	sc_rflags;
    -	long	sc_rsp;
    -	long	sc_ss;
    -	long	sc_len;			/* sizeof(mcontext_t) */
    -	/*
    -	 * See  and  for the following
    -	 * fields.
    -	 */
    -	long	sc_fpformat;
    -	long	sc_ownedfp;
    -	long	sc_fpstate[64] __aligned(16);
    -
    -	long	sc_fsbase;
    -	long	sc_gsbase;
    -
    -	long	sc_xfpustate;
    -	long	sc_xfpustate_len;
    -
    -	long	sc_spare[4];
    -};
    -#endif /* __BSD_VISIBLE */
    -
    -#endif /* !_MACHINE_SIGNAL_H_ */
    +#include 
    
    Modified: user/mjacob/sys/amd64/include/ucontext.h
    ==============================================================================
    --- user/mjacob/sys/amd64/include/ucontext.h	Fri Mar  1 15:48:31 2013	(r247551)
    +++ user/mjacob/sys/amd64/include/ucontext.h	Fri Mar  1 15:59:14 2013	(r247552)
    @@ -1,103 +1,6 @@
     /*-
    - * Copyright (c) 2003 Peter Wemm
    - * Copyright (c) 1999 Marcel Moolenaar
    - * 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 
    - *    in this position and unchanged.
    - * 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 the author may not be used to endorse or promote products
    - *    derived from this software without specific prior written permission.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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$
    + * This file is in the public domain.
      */
    +/* $FreeBSD$ */
     
    -#ifndef _MACHINE_UCONTEXT_H_
    -#define	_MACHINE_UCONTEXT_H_
    -
    -/*
    - * mc_trapno bits. Shall be in sync with TF_XXX.
    - */
    -#define	_MC_HASSEGS	0x1
    -#define	_MC_HASBASES	0x2
    -#define	_MC_HASFPXSTATE	0x4
    -#define	_MC_FLAG_MASK	(_MC_HASSEGS | _MC_HASBASES | _MC_HASFPXSTATE)
    -
    -typedef struct __mcontext {
    -	/*
    -	 * The definition of mcontext_t must match the layout of
    -	 * struct sigcontext after the sc_mask member.  This is so
    -	 * that we can support sigcontext and ucontext_t at the same
    -	 * time.
    -	 */
    -	__register_t	mc_onstack;	/* XXX - sigcontext compat. */
    -	__register_t	mc_rdi;		/* machine state (struct trapframe) */
    -	__register_t	mc_rsi;
    -	__register_t	mc_rdx;
    -	__register_t	mc_rcx;
    -	__register_t	mc_r8;
    -	__register_t	mc_r9;
    -	__register_t	mc_rax;
    -	__register_t	mc_rbx;
    -	__register_t	mc_rbp;
    -	__register_t	mc_r10;
    -	__register_t	mc_r11;
    -	__register_t	mc_r12;
    -	__register_t	mc_r13;
    -	__register_t	mc_r14;
    -	__register_t	mc_r15;
    -	__uint32_t	mc_trapno;
    -	__uint16_t	mc_fs;
    -	__uint16_t	mc_gs;
    -	__register_t	mc_addr;
    -	__uint32_t	mc_flags;
    -	__uint16_t	mc_es;
    -	__uint16_t	mc_ds;
    -	__register_t	mc_err;
    -	__register_t	mc_rip;
    -	__register_t	mc_cs;
    -	__register_t	mc_rflags;
    -	__register_t	mc_rsp;
    -	__register_t	mc_ss;
    -
    -	long	mc_len;			/* sizeof(mcontext_t) */
    -
    -#define	_MC_FPFMT_NODEV		0x10000	/* device not present or configured */
    -#define	_MC_FPFMT_XMM		0x10002
    -	long	mc_fpformat;
    -#define	_MC_FPOWNED_NONE	0x20000	/* FP state not used */
    -#define	_MC_FPOWNED_FPU		0x20001	/* FP state came from FPU */
    -#define	_MC_FPOWNED_PCB		0x20002	/* FP state came from PCB */
    -	long	mc_ownedfp;
    -	/*
    -	 * See  for the internals of mc_fpstate[].
    -	 */
    -	long	mc_fpstate[64] __aligned(16);
    -
    -	__register_t	mc_fsbase;
    -	__register_t	mc_gsbase;
    -
    -	__register_t	mc_xfpustate;
    -	__register_t	mc_xfpustate_len;
    -
    -	long	mc_spare[4];
    -} mcontext_t;
    -
    -#endif /* !_MACHINE_UCONTEXT_H_ */
    +#include 
    
    Copied: user/mjacob/sys/amd64/include/vmm.h (from r247551, head/sys/amd64/include/vmm.h)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/mjacob/sys/amd64/include/vmm.h	Fri Mar  1 15:59:14 2013	(r247552, copy of r247551, head/sys/amd64/include/vmm.h)
    @@ -0,0 +1,291 @@
    +/*-
    + * Copyright (c) 2011 NetApp, Inc.
    + * 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
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Fri Mar  1 20:48:54 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 15DA5EE2;
     Fri,  1 Mar 2013 20:48:54 +0000 (UTC) (envelope-from des@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id F32491755;
     Fri,  1 Mar 2013 20:48:53 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r21KmrJ2085426;
     Fri, 1 Mar 2013 20:48:53 GMT (envelope-from des@svn.freebsd.org)
    Received: (from des@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r21Kmrd8085423;
     Fri, 1 Mar 2013 20:48:53 GMT (envelope-from des@svn.freebsd.org)
    Message-Id: <201303012048.r21Kmrd8085423@svn.freebsd.org>
    From: Dag-Erling Smørgrav 
    Date: Fri, 1 Mar 2013 20:48:53 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247577 - in user/des/fbce/lib: . FBCE/View
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Fri, 01 Mar 2013 20:48:54 -0000
    
    Author: des
    Date: Fri Mar  1 20:48:53 2013
    New Revision: 247577
    URL: http://svnweb.freebsd.org/changeset/base/247577
    
    Log:
      Switch from Catalyst::Plugin::Unicode (which tries and sometimes fails to
      guess the correct encoding) to Catalyst::Plugin::Unicode::Encoding (which
      doesn't).  Explicitly tell Template::Toolkit that our templates are utf-8.
    
    Modified:
      user/des/fbce/lib/FBCE.pm
      user/des/fbce/lib/FBCE/View/HTML.pm
    
    Modified: user/des/fbce/lib/FBCE.pm
    ==============================================================================
    --- user/des/fbce/lib/FBCE.pm	Fri Mar  1 20:48:53 2013	(r247576)
    +++ user/des/fbce/lib/FBCE.pm	Fri Mar  1 20:48:53 2013	(r247577)
    @@ -13,7 +13,7 @@ use Catalyst qw/
         Session::State::Cookie
         Session::Store::FastMmap
         Static::Simple
    -    Unicode
    +    Unicode::Encoding
     /;
     
     extends 'Catalyst';
    
    Modified: user/des/fbce/lib/FBCE/View/HTML.pm
    ==============================================================================
    --- user/des/fbce/lib/FBCE/View/HTML.pm	Fri Mar  1 20:48:53 2013	(r247576)
    +++ user/des/fbce/lib/FBCE/View/HTML.pm	Fri Mar  1 20:48:53 2013	(r247577)
    @@ -7,6 +7,7 @@ use base 'Catalyst::View::TT';
     
     __PACKAGE__->config(
         TEMPLATE_EXTENSION => '.tt',
    +    ENCODING => 'utf-8',
         render_die => 1,
     );
     
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 09:27:01 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 8B0A9ABA;
     Sat,  2 Mar 2013 09:27:01 +0000 (UTC)
     (envelope-from adrian@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 6D2B71F0;
     Sat,  2 Mar 2013 09:27:01 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r229R0Wb024343;
     Sat, 2 Mar 2013 09:27:00 GMT (envelope-from adrian@svn.freebsd.org)
    Received: (from adrian@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r229QxkW024331;
     Sat, 2 Mar 2013 09:26:59 GMT (envelope-from adrian@svn.freebsd.org)
    Message-Id: <201303020926.r229QxkW024331@svn.freebsd.org>
    From: Adrian Chadd 
    Date: Sat, 2 Mar 2013 09:26:59 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247616 - user/adrian/net80211_tx/sys/net80211
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 09:27:01 -0000
    
    Author: adrian
    Date: Sat Mar  2 09:26:59 2013
    New Revision: 247616
    URL: http://svnweb.freebsd.org/changeset/base/247616
    
    Log:
      Revert the VAP TX task stuff and go back to direct dispatch.
      
      Deferring the VAP TX side of things doesn't buy us anything.
      The only thing is currently buys is serialising the AMPDU TX handling
      in this path - but it doesn't at all serialise the AMPDU TX handling
      from other paths (eg mesh TX.)
      
      The current locking implementation still serialises the TX path correctly
      for 802.11 sequence number handling and driver dispatch, so that's good.
    
    Modified:
      user/adrian/net80211_tx/sys/net80211/ieee80211.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c
      user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
      user/adrian/net80211_tx/sys/net80211/ieee80211_var.h
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211.c	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211.c	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -427,8 +427,7 @@ ieee80211_vap_setup(struct ieee80211com 
     	if_initname(ifp, name, unit);
     	ifp->if_softc = vap;			/* back pointer */
     	ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST;
    -	ifp->if_transmit = ieee80211_vap_transmit;
    -	ifp->if_qflush = ieee80211_vap_qflush;
    +	ifp->if_start = ieee80211_start;
     	ifp->if_ioctl = ieee80211_ioctl;
     	ifp->if_init = ieee80211_init;
     	/* NB: input+output filled in by ether_ifattach */
    @@ -623,7 +622,6 @@ ieee80211_vap_detach(struct ieee80211vap
     	 */
     	ieee80211_draintask(ic, &vap->iv_nstate_task);
     	ieee80211_draintask(ic, &vap->iv_swbmiss_task);
    -	ieee80211_draintask(ic, &vap->iv_tx_task);
     
     	/* XXX band-aid until ifnet handles this for us */
     	taskqueue_drain(taskqueue_swi, &ifp->if_linktask);
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -761,7 +761,7 @@ static void
     bpf_track(void *arg, struct ifnet *ifp, int dlt, int attach)
     {
     	/* NB: identify vap's by if_start */
    -	if (dlt == DLT_IEEE802_11_RADIO && ifp->if_transmit == ieee80211_vap_transmit) {
    +	if (dlt == DLT_IEEE802_11_RADIO && ifp->if_start == ieee80211_start) {
     		struct ieee80211vap *vap = ifp->if_softc;
     		/*
     		 * Track bpf radiotap listener state.  We mark the vap
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -360,81 +360,14 @@ ieee80211_start_pkt(struct ieee80211vap 
     }
     
     /*
    - * Entry point for transmission for all VAPs.
    - *
    - * This sanitises the mbuf flags and queues it into the transmit
    - * queue.
    - */
    -int
    -ieee80211_vap_transmit(struct ifnet *ifp, struct mbuf *m)
    -{
    -	struct ieee80211vap *vap = ifp->if_softc;
    -	struct ieee80211com *ic = vap->iv_ic;
    -	struct ifnet *parent = ic->ic_ifp;
    -
    -	/* NB: parent must be up and running */
    -	if (!IFNET_IS_UP_RUNNING(parent)) {
    -		IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,
    -		    "%s: ignore queue, parent %s not up+running\n",
    -		    __func__, parent->if_xname);
    -		/* XXX stat */
    -		m_free(m);
    -		return (EINVAL);/* XXX errno? */
    -	}
    -
    -	IF_LOCK(&ifp->if_snd);
    -
    -	/* Enforce queue limits */
    -	if (_IF_QFULL(&ifp->if_snd)) {
    -		IF_UNLOCK(&ifp->if_snd);
    -		m_free(m);
    -		return (ENOBUFS);	/* XXX errno? */
    -	}
    -
    -	/*
    -	 * Sanitize mbuf flags for net80211 use.  We cannot
    -	 * clear M_PWR_SAV or M_MORE_DATA because these may
    -	 * be set for frames that are re-submitted from the
    -	 * power save queue.
    -	 *
    -	 * NB: This must be done before ieee80211_classify as
    -	 *     it marks EAPOL in frames with M_EAPOL.
    -	 *
    -	 * XXX TODO: for VAP frames coming in from the stack
    -	 * itself, we should just inject them directly into
    -	 * the vap rather than via ieee80211_vap_transmit().
    -	 * Yes, they still need to go into the ifnet queue
    -	 * and be dequeued, but we can skip this particular
    -	 * check as they're already "in" the net80211 layer.
    -	 */
    -	m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA);
    -	_IF_ENQUEUE(&ifp->if_snd, m);
    -	IF_UNLOCK(&ifp->if_snd);
    -
    -	/* Schedule the deferred TX task */
    -	ieee80211_runtask(ic, &vap->iv_tx_task);
    -
    -	return (0);
    -}
    -
    -void
    -ieee80211_vap_qflush(struct ifnet *ifp)
    -{
    -
    -	/* XXX TODO */
    -}
    -
    -
    -/*
      * Start method for vap's.  All packets from the stack come
      * through here.  We handle common processing of the packets
      * before dispatching them to the underlying device.
      */
     void
    -ieee80211_vap_tx_task(void *arg, int npending)
    +ieee80211_start(struct ifnet *ifp)
     {
    -	struct ieee80211vap *vap = (struct ieee80211vap *) arg;
    -	struct ifnet *ifp = vap->iv_ifp;
    +	struct ieee80211vap *vap = ifp->if_softc;
     	struct ieee80211com *ic = vap->iv_ic;
     	struct ifnet *parent = ic->ic_ifp;
     	struct mbuf *m;
    @@ -481,6 +414,19 @@ ieee80211_vap_tx_task(void *arg, int npe
     		IFQ_DEQUEUE(&ifp->if_snd, m);
     		if (m == NULL)
     			break;
    +		/*
    +		 * Sanitize mbuf flags for net80211 use.  We cannot
    +		 * clear M_PWR_SAV or M_MORE_DATA because these may
    +		 * be set for frames that are re-submitted from the
    +		 * power save queue.
    +		 *
    +		 * NB: This must be done before ieee80211_classify as
    +		 *     it marks EAPOL in frames with M_EAPOL.
    +		 */
    +		m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA);
    +		/*
    +		 * Bump to the packet transmission path.
    +		 */
     		(void) ieee80211_start_pkt(vap, m);
     		/* mbuf is consumed here */
     	}
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -199,7 +199,6 @@ ieee80211_proto_vattach(struct ieee80211
     	callout_init(&vap->iv_mgtsend, CALLOUT_MPSAFE);
     	TASK_INIT(&vap->iv_nstate_task, 0, ieee80211_newstate_cb, vap);
     	TASK_INIT(&vap->iv_swbmiss_task, 0, beacon_swmiss, vap);
    -	TASK_INIT(&vap->iv_tx_task, 0, ieee80211_vap_tx_task, vap);
     	/*
     	 * Install default tx rate handling: no fixed rate, lowest
     	 * supported rate for mgmt and multicast frames.  Default
    @@ -1793,7 +1792,7 @@ ieee80211_newstate_cb(void *xvap, int np
     		 * XXX Kick-start a VAP queue - this should be a method,
     		 * not if_start()!
     		 */
    -		ieee80211_runtask(ic, &vap->iv_tx_task);
    +		if_start(vap->iv_ifp);
     
     		/* bring up any vaps waiting on us */
     		wakeupwaiting(vap);
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -103,9 +103,7 @@ int	ieee80211_raw_output(struct ieee8021
     void	ieee80211_send_setup(struct ieee80211_node *, struct mbuf *, int, int,
             const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN],
             const uint8_t [IEEE80211_ADDR_LEN]);
    -int	ieee80211_vap_transmit(struct ifnet *ifp, struct mbuf *m);
    -void	ieee80211_vap_qflush(struct ifnet *ifp);
    -void	ieee80211_vap_tx_task(void *, int);
    +void	ieee80211_start(struct ifnet *ifp);
     int	ieee80211_send_nulldata(struct ieee80211_node *);
     int	ieee80211_classify(struct ieee80211_node *, struct mbuf *m);
     struct mbuf *ieee80211_mbuf_adjust(struct ieee80211vap *, int,
    
    Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_var.h
    ==============================================================================
    --- user/adrian/net80211_tx/sys/net80211/ieee80211_var.h	Sat Mar  2 08:12:41 2013	(r247615)
    +++ user/adrian/net80211_tx/sys/net80211/ieee80211_var.h	Sat Mar  2 09:26:59 2013	(r247616)
    @@ -362,7 +362,6 @@ struct ieee80211vap {
     	int			iv_nstate_arg;	/* pending state arg */
     	struct task		iv_nstate_task;	/* deferred state processing */
     	struct task		iv_swbmiss_task;/* deferred iv_bmiss call */
    -	struct task		iv_tx_task;	/* VAP deferred TX task */
     	struct callout		iv_mgtsend;	/* mgmt frame response timer */
     						/* inactivity timer settings */
     	int			iv_inact_init;	/* setting for new station */
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 14:28:35 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 7BD59DBD;
     Sat,  2 Mar 2013 14:28:35 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 69D54DFF;
     Sat,  2 Mar 2013 14:28:35 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22ESZKo014944;
     Sat, 2 Mar 2013 14:28:35 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22ESWZ0014921;
     Sat, 2 Mar 2013 14:28:32 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201303021428.r22ESWZ0014921@svn.freebsd.org>
    From: Attilio Rao 
    Date: Sat, 2 Mar 2013 14:28:32 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247623 - in user/attilio/vmcontention: .
     cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libzfs/common
     contrib/openbsm/bin/auditdistd contrib/openbsm/etc lib/libc/gen lib...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 14:28:35 -0000
    
    Author: attilio
    Date: Sat Mar  2 14:28:31 2013
    New Revision: 247623
    URL: http://svnweb.freebsd.org/changeset/base/247623
    
    Log:
      MFC
    
    Added:
      user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3
         - copied unchanged from r247622, head/lib/libc/gen/cap_sandboxed.3
      user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c
         - copied unchanged from r247622, head/lib/libc/gen/cap_sandboxed.c
      user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2
         - copied unchanged from r247622, head/lib/libc/sys/cap_fcntls_limit.2
      user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2
         - copied unchanged from r247622, head/lib/libc/sys/cap_ioctls_limit.2
      user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2
         - copied unchanged from r247622, head/lib/libc/sys/cap_rights_limit.2
      user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_dma.c
         - copied unchanged from r247622, head/sys/arm/broadcom/bcm2835/bcm2835_dma.c
      user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_dma.h
         - copied unchanged from r247622, head/sys/arm/broadcom/bcm2835/bcm2835_dma.h
      user/attilio/vmcontention/tools/regression/capsicum/
         - copied from r247622, head/tools/regression/capsicum/
    Deleted:
      user/attilio/vmcontention/lib/libc/sys/cap_new.2
    Modified:
      user/attilio/vmcontention/UPDATING
      user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zfs/zfs.8
      user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
      user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/sender.c
      user/attilio/vmcontention/contrib/openbsm/etc/audit_event
      user/attilio/vmcontention/lib/libc/gen/Makefile.inc
      user/attilio/vmcontention/lib/libc/include/compat.h
      user/attilio/vmcontention/lib/libc/regex/regcomp.c
      user/attilio/vmcontention/lib/libc/rpc/clnt_vc.c
      user/attilio/vmcontention/lib/libc/sys/Makefile.inc
      user/attilio/vmcontention/lib/libc/sys/Symbol.map
      user/attilio/vmcontention/lib/libc/sys/cap_enter.2
      user/attilio/vmcontention/lib/libc/sys/dup.2
      user/attilio/vmcontention/lib/libprocstat/libprocstat.c
      user/attilio/vmcontention/lib/libprocstat/libprocstat.h
      user/attilio/vmcontention/lib/libstand/nandfs.c
      user/attilio/vmcontention/lib/libutil/kinfo_getproc.3
      user/attilio/vmcontention/share/man/man4/arcmsr.4
      user/attilio/vmcontention/share/man/man9/eventtimers.9
      user/attilio/vmcontention/share/mk/bsd.compiler.mk
      user/attilio/vmcontention/sys/amd64/amd64/machdep.c
      user/attilio/vmcontention/sys/amd64/amd64/pmap.c
      user/attilio/vmcontention/sys/amd64/conf/GENERIC
      user/attilio/vmcontention/sys/arm/allwinner/files.a10
      user/attilio/vmcontention/sys/arm/allwinner/timer.c
      user/attilio/vmcontention/sys/arm/arm/locore.S
      user/attilio/vmcontention/sys/arm/arm/mpcore_timer.c
      user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
      user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
      user/attilio/vmcontention/sys/arm/broadcom/bcm2835/files.bcm2835
      user/attilio/vmcontention/sys/arm/conf/CUBIEBOARD
      user/attilio/vmcontention/sys/arm/conf/RPI-B
      user/attilio/vmcontention/sys/arm/econa/econa_machdep.c
      user/attilio/vmcontention/sys/arm/include/vmparam.h
      user/attilio/vmcontention/sys/arm/lpc/lpc_timer.c
      user/attilio/vmcontention/sys/arm/mv/timer.c
      user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmcontention/sys/arm/ti/am335x/am335x_dmtimer.c
      user/attilio/vmcontention/sys/arm/versatile/sp804.c
      user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c
      user/attilio/vmcontention/sys/boot/fdt/dts/cubieboard.dts
      user/attilio/vmcontention/sys/bsm/audit_kevents.h
      user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/file.h
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
      user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_proto.h
      user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_syscall.h
      user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_syscalls.c
      user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_sysent.c
      user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_systrace_args.c
      user/attilio/vmcontention/sys/compat/freebsd32/syscalls.master
      user/attilio/vmcontention/sys/compat/linux/linux_file.c
      user/attilio/vmcontention/sys/compat/ndis/kern_ndis.c
      user/attilio/vmcontention/sys/compat/svr4/svr4_fcntl.c
      user/attilio/vmcontention/sys/compat/svr4/svr4_filio.c
      user/attilio/vmcontention/sys/compat/svr4/svr4_misc.c
      user/attilio/vmcontention/sys/compat/svr4/svr4_stream.c
      user/attilio/vmcontention/sys/conf/options.sparc64
      user/attilio/vmcontention/sys/dev/aac/aac.c
      user/attilio/vmcontention/sys/dev/aac/aac_cam.c
      user/attilio/vmcontention/sys/dev/aac/aac_disk.c
      user/attilio/vmcontention/sys/dev/aac/aac_pci.c
      user/attilio/vmcontention/sys/dev/aac/aac_tables.h
      user/attilio/vmcontention/sys/dev/aac/aacvar.h
      user/attilio/vmcontention/sys/dev/acpica/acpi_cpu.c
      user/attilio/vmcontention/sys/dev/acpica/acpi_hpet.c
      user/attilio/vmcontention/sys/dev/arcmsr/arcmsr.c
      user/attilio/vmcontention/sys/dev/arcmsr/arcmsr.h
      user/attilio/vmcontention/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmcontention/sys/dev/ath/if_athrate.h
      user/attilio/vmcontention/sys/dev/bce/if_bce.c
      user/attilio/vmcontention/sys/dev/bce/if_bcereg.h
      user/attilio/vmcontention/sys/dev/cas/if_cas.c
      user/attilio/vmcontention/sys/dev/ic/ns16550.h
      user/attilio/vmcontention/sys/dev/iscsi/initiator/iscsi.c
      user/attilio/vmcontention/sys/dev/mfi/mfi.c
      user/attilio/vmcontention/sys/dev/mps/mps.c
      user/attilio/vmcontention/sys/dev/pci/pci.c
      user/attilio/vmcontention/sys/dev/puc/pucdata.c
      user/attilio/vmcontention/sys/dev/sdhci/sdhci.c
      user/attilio/vmcontention/sys/dev/sdhci/sdhci.h
      user/attilio/vmcontention/sys/dev/sdhci/sdhci_if.m
      user/attilio/vmcontention/sys/dev/tws/tws_hdm.c
      user/attilio/vmcontention/sys/dev/uart/uart_dev_ns8250.c
      user/attilio/vmcontention/sys/fs/fdescfs/fdesc_vfsops.c
      user/attilio/vmcontention/sys/fs/fdescfs/fdesc_vnops.c
      user/attilio/vmcontention/sys/fs/nfs/nfsdport.h
      user/attilio/vmcontention/sys/fs/nfsclient/nfs_clport.c
      user/attilio/vmcontention/sys/fs/nfsserver/nfs_nfsdport.c
      user/attilio/vmcontention/sys/fs/nullfs/null_vfsops.c
      user/attilio/vmcontention/sys/i386/conf/GENERIC
      user/attilio/vmcontention/sys/i386/i386/machdep.c
      user/attilio/vmcontention/sys/i386/ibcs2/ibcs2_misc.c
      user/attilio/vmcontention/sys/i386/xen/clock.c
      user/attilio/vmcontention/sys/ia64/ia64/clock.c
      user/attilio/vmcontention/sys/ia64/ia64/machdep.c
      user/attilio/vmcontention/sys/kern/capabilities.conf
      user/attilio/vmcontention/sys/kern/init_sysent.c
      user/attilio/vmcontention/sys/kern/kern_clocksource.c
      user/attilio/vmcontention/sys/kern/kern_descrip.c
      user/attilio/vmcontention/sys/kern/kern_et.c
      user/attilio/vmcontention/sys/kern/kern_exec.c
      user/attilio/vmcontention/sys/kern/kern_exit.c
      user/attilio/vmcontention/sys/kern/kern_fork.c
      user/attilio/vmcontention/sys/kern/kern_sysctl.c
      user/attilio/vmcontention/sys/kern/kern_timeout.c
      user/attilio/vmcontention/sys/kern/subr_sleepqueue.c
      user/attilio/vmcontention/sys/kern/subr_trap.c
      user/attilio/vmcontention/sys/kern/sys_capability.c
      user/attilio/vmcontention/sys/kern/sys_generic.c
      user/attilio/vmcontention/sys/kern/syscalls.c
      user/attilio/vmcontention/sys/kern/syscalls.master
      user/attilio/vmcontention/sys/kern/systrace_args.c
      user/attilio/vmcontention/sys/kern/tty.c
      user/attilio/vmcontention/sys/kern/uipc_mqueue.c
      user/attilio/vmcontention/sys/kern/uipc_sem.c
      user/attilio/vmcontention/sys/kern/uipc_shm.c
      user/attilio/vmcontention/sys/kern/uipc_syscalls.c
      user/attilio/vmcontention/sys/kern/uipc_usrreq.c
      user/attilio/vmcontention/sys/kern/vfs_aio.c
      user/attilio/vmcontention/sys/kern/vfs_default.c
      user/attilio/vmcontention/sys/kern/vfs_lookup.c
      user/attilio/vmcontention/sys/kern/vfs_syscalls.c
      user/attilio/vmcontention/sys/kern/vfs_vnops.c
      user/attilio/vmcontention/sys/mips/mips/tick.c
      user/attilio/vmcontention/sys/mips/nlm/tick.c
      user/attilio/vmcontention/sys/mips/rmi/tick.c
      user/attilio/vmcontention/sys/modules/ixgbe/Makefile
      user/attilio/vmcontention/sys/netsmb/smb_dev.c
      user/attilio/vmcontention/sys/nfsserver/nfs_srvkrpc.c
      user/attilio/vmcontention/sys/ofed/include/linux/file.h
      user/attilio/vmcontention/sys/pc98/pc98/machdep.c
      user/attilio/vmcontention/sys/powerpc/aim/clock.c
      user/attilio/vmcontention/sys/powerpc/booke/clock.c
      user/attilio/vmcontention/sys/powerpc/powerpc/cpu.c
      user/attilio/vmcontention/sys/powerpc/ps3/platform_ps3.c
      user/attilio/vmcontention/sys/powerpc/wii/platform_wii.c
      user/attilio/vmcontention/sys/security/audit/audit.h
      user/attilio/vmcontention/sys/security/audit/audit_arg.c
      user/attilio/vmcontention/sys/security/audit/audit_bsm.c
      user/attilio/vmcontention/sys/security/audit/audit_private.h
      user/attilio/vmcontention/sys/sparc64/pci/ofw_pcib.c
      user/attilio/vmcontention/sys/sparc64/pci/psycho.c
      user/attilio/vmcontention/sys/sparc64/pci/sbbc.c
      user/attilio/vmcontention/sys/sparc64/sbus/sbus.c
      user/attilio/vmcontention/sys/sparc64/sparc64/tick.c
      user/attilio/vmcontention/sys/sys/capability.h
      user/attilio/vmcontention/sys/sys/file.h
      user/attilio/vmcontention/sys/sys/filedesc.h
      user/attilio/vmcontention/sys/sys/namei.h
      user/attilio/vmcontention/sys/sys/proc.h
      user/attilio/vmcontention/sys/sys/rmlock.h
      user/attilio/vmcontention/sys/sys/syscall.h
      user/attilio/vmcontention/sys/sys/syscall.mk
      user/attilio/vmcontention/sys/sys/sysproto.h
      user/attilio/vmcontention/sys/sys/systm.h
      user/attilio/vmcontention/sys/sys/time.h
      user/attilio/vmcontention/sys/sys/timeet.h
      user/attilio/vmcontention/sys/sys/types.h
      user/attilio/vmcontention/sys/sys/user.h
      user/attilio/vmcontention/sys/vm/vm_mmap.c
      user/attilio/vmcontention/sys/x86/isa/atrtc.c
      user/attilio/vmcontention/sys/x86/isa/clock.c
      user/attilio/vmcontention/sys/x86/x86/local_apic.c
      user/attilio/vmcontention/tools/regression/security/cap_test/cap_test_capabilities.c
      user/attilio/vmcontention/tools/regression/security/cap_test/cap_test_relative.c
      user/attilio/vmcontention/usr.bin/dc/dc.c
      user/attilio/vmcontention/usr.bin/kdump/kdump.c
      user/attilio/vmcontention/usr.bin/kdump/mksubr
      user/attilio/vmcontention/usr.bin/procstat/procstat_files.c
      user/attilio/vmcontention/usr.sbin/bhyve/acpi.c
      user/attilio/vmcontention/usr.sbin/bhyve/bhyverun.c
      user/attilio/vmcontention/usr.sbin/bhyve/bhyverun.h
      user/attilio/vmcontention/usr.sbin/bhyve/mptbl.c
      user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_block.c
      user/attilio/vmcontention/usr.sbin/bhyve/pci_virtio_net.c
      user/attilio/vmcontention/usr.sbin/bhyve/virtio.h
    Directory Properties:
      user/attilio/vmcontention/   (props changed)
      user/attilio/vmcontention/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zfs/   (props changed)
      user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
      user/attilio/vmcontention/contrib/openbsm/   (props changed)
      user/attilio/vmcontention/lib/libc/   (props changed)
      user/attilio/vmcontention/lib/libutil/   (props changed)
      user/attilio/vmcontention/share/man/man4/   (props changed)
      user/attilio/vmcontention/sys/   (props changed)
      user/attilio/vmcontention/sys/boot/   (props changed)
      user/attilio/vmcontention/sys/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmcontention/sys/conf/   (props changed)
      user/attilio/vmcontention/usr.bin/procstat/   (props changed)
      user/attilio/vmcontention/usr.sbin/bhyve/   (props changed)
    
    Modified: user/attilio/vmcontention/UPDATING
    ==============================================================================
    --- user/attilio/vmcontention/UPDATING	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/UPDATING	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130301:
    +	The ctl device has been disabled in GENERIC for i386 and amd64.
    +	This was done due to the extra memory being allocated at system
    +	initialisation time by the ctl driver which was only used if
    +	a CAM target device was created.  This makes a FreeBSD system
    +	unusable on 128MB or less of RAM.
    +
     20130208:
     	A new compression method (lz4) has been merged to -HEAD.  Please
     	refer to zpool-features(7) for more information.
    @@ -46,8 +53,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	unlikely event that -M was the last option on the command line
     	and the command line contained at least two files and a target
     	directory the first file will have logs appended to it.  The -M
    -	option served little practical purpose in the last decade so it's
    -	used expected to be extremely rare.
    +	option served little practical purpose in the last decade so its
    +	use is expected to be extremely rare.
     
     20121223:
     	After switching to Clang as the default compiler some users of ZFS
    
    Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zfs/zfs.8
    ==============================================================================
    --- user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -526,6 +526,39 @@ if the snapshot has been marked for defe
     .Qq Nm Cm destroy -d
     command. Otherwise, the property is
     .Cm off .
    +.It Sy logicalreferenced
    +The amount of space that is
    +.Qq logically
    +accessible by this dataset.
    +See the
    +.Sy referenced
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +However, it does include space consumed by metadata.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lrefer .
    +.It Sy logicalused
    +The amount of space that is
    +.Qq logically
    +consumed by this dataset and all its descendents.
    +See the
    +.Sy used
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lused .
     .It Sy mounted
     For file systems, indicates whether the file system is currently mounted. This
     property can be either
    
    Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
    ==============================================================================
    --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -24,6 +24,7 @@
      * Copyright (c) 2011 Pawel Jakub Dawidek .
      * All rights reserved.
      * Copyright (c) 2011 by Delphix. All rights reserved.
    + * Copyright (c) 2013 Martin Matuska . All rights reserved.
      */
     
     #ifndef	_LIBFS_IMPL_H
    @@ -216,6 +217,7 @@ extern void libzfs_fru_clear(libzfs_hand
     
     #ifndef sun
     static int zfs_kernel_version = 0;
    +static int zfs_ioctl_version = 0;
     
     /*
      * This is FreeBSD version of ioctl, because Solaris' ioctl() updates
    @@ -225,19 +227,34 @@ static int zfs_kernel_version = 0;
     static __inline int
     zcmd_ioctl(int fd, unsigned long cmd, zfs_cmd_t *zc)
     {
    -	size_t oldsize, zfs_kernel_version_size;
    +	size_t oldsize, zfs_kernel_version_size, zfs_ioctl_version_size;
     	int version, ret, cflag = ZFS_CMD_COMPAT_NONE;
     
    -	zfs_kernel_version_size = sizeof(zfs_kernel_version);
    -	if (zfs_kernel_version == 0) {
    -		sysctlbyname("vfs.zfs.version.spa", &zfs_kernel_version,
    -		    &zfs_kernel_version_size, NULL, 0);
    +	zfs_ioctl_version_size = sizeof(zfs_ioctl_version);
    +	if (zfs_ioctl_version == 0) {
    +		sysctlbyname("vfs.zfs.version.ioctl", &zfs_ioctl_version,
    +		    &zfs_ioctl_version_size, NULL, 0);
     	}
     
    -	if (zfs_kernel_version == SPA_VERSION_15 ||
    -	    zfs_kernel_version == SPA_VERSION_14 ||
    -	    zfs_kernel_version == SPA_VERSION_13)
    -		cflag = ZFS_CMD_COMPAT_V15;
    +	/*
    +	 * If vfs.zfs.version.ioctl is not defined, assume we have v28
    +	 * compatible binaries and use vfs.zfs.version.spa to test for v15
    +	 */
    +	if (zfs_ioctl_version < ZFS_IOCVER_DEADMAN) {
    +		cflag = ZFS_CMD_COMPAT_V28;
    +		zfs_kernel_version_size = sizeof(zfs_kernel_version);
    +
    +		if (zfs_kernel_version == 0) {
    +			sysctlbyname("vfs.zfs.version.spa",
    +			    &zfs_kernel_version,
    +			    &zfs_kernel_version_size, NULL, 0);
    +		}
    +
    +		if (zfs_kernel_version == SPA_VERSION_15 ||
    +		    zfs_kernel_version == SPA_VERSION_14 ||
    +		    zfs_kernel_version == SPA_VERSION_13)
    +			cflag = ZFS_CMD_COMPAT_V15;
    +	}
     
     	oldsize = zc->zc_nvlist_dst_size;
     	ret = zcmd_ioctl_compat(fd, cmd, zc, cflag);
    
    Modified: user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/sender.c
    ==============================================================================
    --- user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -394,6 +394,7 @@ read_thread_wait(void)
     
     	mtx_lock(&adist_remote_mtx);
     	if (adhost->adh_reset) {
    +reset:
     		adhost->adh_reset = false;
     		if (trail_filefd(adist_trail) != -1)
     			trail_close(adist_trail);
    @@ -408,6 +409,14 @@ read_thread_wait(void)
     	while (trail_filefd(adist_trail) == -1) {
     		newfile = true;
     		wait_for_dir();
    +		/*
    +		 * We may have been disconnected and reconnected in the
    +		 * meantime, check if reset is set.
    +		 */
    +		mtx_lock(&adist_remote_mtx);
    +		if (adhost->adh_reset)
    +			goto reset;
    +		mtx_unlock(&adist_remote_mtx);
     		if (trail_filefd(adist_trail) == -1)
     			trail_next(adist_trail);
     	}
    
    Modified: user/attilio/vmcontention/contrib/openbsm/etc/audit_event
    ==============================================================================
    --- user/attilio/vmcontention/contrib/openbsm/etc/audit_event	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/contrib/openbsm/etc/audit_event	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -548,7 +548,7 @@
     43184:AUE_OPENAT:openat(2) - attr only:fa
     43185:AUE_POSIX_OPENPT:posix_openpt(2):ip
     43186:AUE_CAP_NEW:cap_new(2):fm
    -43187:AUE_CAP_GETRIGHTS:cap_getrights(2):fm
    +43187:AUE_CAP_RIGHTS_GET:cap_rights_get(2):fm
     43188:AUE_CAP_ENTER:cap_enter(2):pc
     43189:AUE_CAP_GETMODE:cap_getmode(2):pc
     43190:AUE_POSIX_SPAWN:posix_spawn(2):pc
    @@ -563,6 +563,11 @@
     43199:AUE_PDGETPID:pdgetpid(2):pc
     43200:AUE_PDWAIT:pdwait(2):pc
     43201:AUE_WAIT6:wait6(2):pc
    +43202:AUE_CAP_RIGHTS_LIMIT:cap_rights_limit(2):fm
    +43203:AUE_CAP_IOCTLS_LIMIT:cap_ioctls_limit(2):fm
    +43204:AUE_CAP_IOCTLS_GET:cap_ioctls_get(2):fm
    +43205:AUE_CAP_FCNTLS_LIMIT:cap_fcntls_limit(2):fm
    +43206:AUE_CAP_FCNTLS_GET:cap_fcntls_get(2):fm
     #
     # Solaris userspace events.
     #
    
    Modified: user/attilio/vmcontention/lib/libc/gen/Makefile.inc
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/gen/Makefile.inc	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/gen/Makefile.inc	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -16,6 +16,7 @@ SRCS+=	__getosreldate.c \
     	assert.c \
     	auxv.c \
     	basename.c \
    +	cap_sandboxed.c \
     	check_utility_compat.c \
     	clock.c \
     	clock_getcpuclockid.c \
    @@ -168,6 +169,7 @@ SYM_MAPS+=${.CURDIR}/gen/Symbol.map
     MAN+=	alarm.3 \
     	arc4random.3 \
     	basename.3 \
    +	cap_sandboxed.3 \
     	check_utility_compat.3 \
     	clock.3 \
     	clock_getcpuclockid.3 \
    
    Copied: user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3 (from r247622, head/lib/libc/gen/cap_sandboxed.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3	Sat Mar  2 14:28:31 2013	(r247623, copy of r247622, head/lib/libc/gen/cap_sandboxed.3)
    @@ -0,0 +1,70 @@
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 18, 2012
    +.Dt CAP_SANDBOXED 3
    +.Os
    +.Sh NAME
    +.Nm cap_sandboxed
    +.Nd Check if in a capability mode sandbox
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.In stdbool.h
    +.Ft bool
    +.Fn cap_sandboxed "void"
    +.Sh DESCRIPTION
    +.Fn cap_sandboxed
    +returns
    +.Va true
    +if the process is in a capability mode sandbox or
    +.Va false
    +if it is not.
    +This function is a more handy alternative to the
    +.Xr cap_getmode 2
    +system call as it always succeeds, so there is no need for error checking.
    +If the support for capability mode is not compiled into the kernel,
    +.Fn cap_sandboxed
    +will always return
    +.Va false .
    +.Sh RETURN VALUES
    +Function
    +.Fn cap_sandboxed
    +is always successful and will return either
    +.Va true
    +or
    +.Va false .
    +.Sh SEE ALSO
    +.Xr cap_enter 2 ,
    +.Xr capsicum 4
    +.Sh AUTHORS
    +This function was implemented and manual page was written by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c (from r247622, head/lib/libc/gen/cap_sandboxed.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c	Sat Mar  2 14:28:31 2013	(r247623, copy of r247622, head/lib/libc/gen/cap_sandboxed.c)
    @@ -0,0 +1,50 @@
    +/*-
    + * Copyright (c) 2012 The FreeBSD Foundation
    + * All rights reserved.
    + *
    + * This software was developed by Pawel Jakub Dawidek under sponsorship from
    + * the FreeBSD Foundation.
    + *
    + * 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 AUTHORS 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 AUTHORS 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$");
    +
    +#include 
    +
    +#include 
    +#include 
    +#include 
    +
    +bool
    +cap_sandboxed(void)
    +{
    +	u_int mode;
    +
    +	if (cap_getmode(&mode) != 0) {
    +		assert(errno == ENOSYS);
    +		return (false);
    +	}
    +	assert(mode == 0 || mode == 1);
    +	return (mode == 1);
    +}
    
    Modified: user/attilio/vmcontention/lib/libc/include/compat.h
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/include/compat.h	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/include/compat.h	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -42,6 +42,8 @@ __sym_compat(__semctl, freebsd7___semctl
     __sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
     __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
     
    +__sym_compat(cap_getrights, cap_rights_get, FBSD_1.2);
    +
     #undef __sym_compat
     
     #endif	/* __LIBC_COMPAT_H__ */
    
    Modified: user/attilio/vmcontention/lib/libc/regex/regcomp.c
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/regex/regcomp.c	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/regex/regcomp.c	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -1212,7 +1212,7 @@ CHaddrange(struct parse *p, cset *cs, wi
     	}
     	cs->ranges = newranges;
     	cs->ranges[cs->nranges].min = min;
    -	cs->ranges[cs->nranges].min = max;
    +	cs->ranges[cs->nranges].max = max;
     	cs->nranges++;
     }
     
    
    Modified: user/attilio/vmcontention/lib/libc/rpc/clnt_vc.c
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -260,7 +260,7 @@ clnt_vc_create(fd, raddr, prog, vers, se
     	if (ct->ct_addr.buf == NULL)
     		goto err;
     	memcpy(ct->ct_addr.buf, raddr->buf, raddr->len);
    -	ct->ct_addr.len = raddr->maxlen;
    +	ct->ct_addr.len = raddr->len;
     	ct->ct_addr.maxlen = raddr->maxlen;
     
     	/*
    
    Modified: user/attilio/vmcontention/lib/libc/sys/Makefile.inc
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/sys/Makefile.inc	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/sys/Makefile.inc	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -93,7 +93,9 @@ MAN+=	abort2.2 \
     	bind.2 \
     	brk.2 \
     	cap_enter.2 \
    -	cap_new.2 \
    +	cap_fcntls_limit.2 \
    +	cap_ioctls_limit.2 \
    +	cap_rights_limit.2 \
     	chdir.2 \
     	chflags.2 \
     	chmod.2 \
    @@ -270,7 +272,9 @@ MLINKS+=access.2 eaccess.2 \
     	access.2 faccessat.2
     MLINKS+=brk.2 sbrk.2
     MLINKS+=cap_enter.2 cap_getmode.2
    -MLINKS+=cap_new.2 cap_getrights.2
    +MLINKS+=cap_fcntls_limit.2 cap_fcntls_get.2
    +MLINKS+=cap_ioctls_limit.2 cap_ioctls_get.2
    +MLINKS+=cap_rights_limit.2 cap_rights_get.2
     MLINKS+=chdir.2 fchdir.2
     MLINKS+=chflags.2 fchflags.2 \
     	chflags.2 lchflags.2
    
    Modified: user/attilio/vmcontention/lib/libc/sys/Symbol.map
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/sys/Symbol.map	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/sys/Symbol.map	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -364,7 +364,6 @@ FBSD_1.2 {
     	cap_enter;
     	cap_getmode;
     	cap_new;
    -	cap_getrights;
     	getloginclass;
     	pdfork;
     	pdgetpid;
    @@ -379,6 +378,13 @@ FBSD_1.2 {
     };
     
     FBSD_1.3 {
    +	cap_fcntls_get;
    +	cap_fcntls_limit;
    +	cap_ioctls_get;
    +	cap_ioctls_limit;
    +	cap_rights_get;
    +	cap_rights_limit;
    +	cap_sandboxed;
     	clock_getcpuclockid2;
     	ffclock_getcounter;
     	ffclock_getestimate;
    
    Modified: user/attilio/vmcontention/lib/libc/sys/cap_enter.2
    ==============================================================================
    --- user/attilio/vmcontention/lib/libc/sys/cap_enter.2	Sat Mar  2 14:19:08 2013	(r247622)
    +++ user/attilio/vmcontention/lib/libc/sys/cap_enter.2	Sat Mar  2 14:28:31 2013	(r247623)
    @@ -58,8 +58,10 @@ or
     .Xr pdfork 2
     will be placed in capability mode from inception.
     .Pp
    -When combined with capabilities created with
    -.Xr cap_new 2 ,
    +When combined with
    +.Xr cap_rights_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_fcntls_limit 2 ,
     .Fn cap_enter
     may be used to create kernel-enforced sandboxes in which
     appropriately-crafted applications or application components may be run.
    @@ -71,11 +73,6 @@ sandbox.
     Creating effective process sandboxes is a tricky process that involves
     identifying the least possible rights required by the process and then
     passing those rights into the process in a safe manner.
    -See the CAVEAT
    -section of
    -.Xr cap_new 2
    -for why this is particularly tricky with UNIX file descriptors as the
    -canonical representation of a right.
     Consumers of
     .Fn cap_enter
     should also be aware of other inherited rights, such as access to VM
    @@ -87,9 +84,35 @@ to create a runtime environment inside t
     acquired rights as possible.
     .Sh RETURN VALUES
     .Rv -std cap_enter cap_getmode
    +.Sh ERRORS
    +The
    +.Fn cap_enter
    +and
    +.Fn cap_getmode
    +system calls
    +will fail if:
    +.Bl -tag -width Er
    +.It Bq Er ENOSYS
    +The kernel is compiled without:
    +.Pp
    +.Cd "options CAPABILITY_MODE"
    +.El
    +.Pp
    +The
    +.Fn cap_getmode
    +system call may also return the following error:
    +.Bl -tag -width Er
    +.It Bq Er EFAULT
    +Pointer
    +.Fa modep
    +points outside the process's allocated address space.
    +.El
     .Sh SEE ALSO
    -.Xr cap_new 2 ,
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
     .Xr fexecve 2 ,
    +.Xr cap_sandboxed 3 ,
     .Xr capsicum 4
     .Sh HISTORY
     Support for capabilities and capabilities mode was developed as part of the
    
    Copied: user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2 (from r247622, head/lib/libc/sys/cap_fcntls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2	Sat Mar  2 14:28:31 2013	(r247623, copy of r247622, head/lib/libc/sys/cap_fcntls_limit.2)
    @@ -0,0 +1,126 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_FCNTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_fcntls_limit ,
    +.Nm cap_fcntls_get
    +.Nd manage allowed fcntl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_fcntls_limit "int fd" "uint32_t fcntlrights"
    +.Ft int
    +.Fn cap_fcntls_get "int fd" "uint32_t *fcntlrightsp"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_FCNTL
    +capability right, the list of allowed
    +.Xr fcntl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_fcntls_limit
    +system call.
    +.Pp
    +A bitmask of allowed fcntls commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_fcntls_get
    +system call.
    +.Sh FLAGS
    +The following flags may be specified in the
    +.Fa fcntlrights
    +argument or returned in the
    +.Fa fcntlrightsp
    +argument:
    +.Bl -tag -width CAP_FCNTL_GETOWN
    +.It Dv CAP_FCNTL_GETFL
    +Permit
    +.Dv F_GETFL
    +command.
    +.It Dv CAP_FCNTL_SETFL
    +Permit
    +.Dv F_SETFL
    +command.
    +.It Dv CAP_FCNTL_GETOWN
    +Permit
    +.Dv F_GETOWN
    +command.
    +.It Dv CAP_FCNTL_SETOWN
    +Permit
    +.Dv F_SETOWN
    +command.
    +.El
    +.Sh RETURN VALUES
    +.Rv -std
    +.Sh ERRORS
    +.Fn cap_fcntls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EINVAL
    +An invalid flag has been passed in
    +.Fa fcntlrights .
    +.It Bq Er ENOTCAPABLE
    +.Fa fcntlrights
    +would expand the list of allowed
    +.Xr fcntl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_fcntls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa fcntlrightsp
    +argument points at an invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr fcntl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2 (from r247622, head/lib/libc/sys/cap_ioctls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2	Sat Mar  2 14:28:31 2013	(r247623, copy of r247622, head/lib/libc/sys/cap_ioctls_limit.2)
    @@ -0,0 +1,157 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_IOCTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_ioctls_limit ,
    +.Nm cap_ioctls_get
    +.Nd manage allowed ioctl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_ioctls_limit "int fd" "const unsigned long *cmds" "size_t ncmds"
    +.Ft ssize_t
    +.Fn cap_ioctls_get "int fd" "unsigned long *cmds" "size_t maxcmds"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_IOCTL
    +capability right, the list of allowed
    +.Xr ioctl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_ioctls_limit
    +system call.
    +The
    +.Fa cmds
    +argument is an array of
    +.Xr ioctl 2
    +commands and the
    +.Fa ncmds
    +argument specifies the number of elements in the array.
    +There might be up to
    +.Va 256
    +elements in the array.
    +.Pp
    +The list of allowed ioctl commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_ioctls_get
    +system call.
    +The
    +.Fa cmds
    +argument points at memory that can hold up to
    +.Fa maxcmds
    +values.
    +The function populates the provided buffer with up to
    +.Fa maxcmds
    +elements, but always returns the total number of ioctl commands allowed for the
    +given file descriptor.
    +The total number of ioctls commands for the given file descriptor can be
    +obtained by passing
    +.Dv NULL as the
    +.Fa cmds
    +argument and
    +.Va 0
    +as the
    +.Fa maxcmds
    +argument.
    +If all ioctl commands are allowed
    +.Dv ( CAP_IOCTL
    +capability right is assigned to the file descriptor and the
    +.Fn cap_ioctls_limit
    +system call was never called for this file descriptor), the
    +.Fn cap_ioctls_get
    +system call will return
    +.Dv CAP_IOCTLS_ALL
    +and won't modify the buffer pointed out by the
    +.Fa cmds
    +argument.
    +.Sh RETURN VALUES
    +.Rv -std cap_ioctls_limit
    +.Pp
    +The
    +.Fn cap_ioctls_limit
    +function, if successfull, returns the total number of allowed ioctl commands or
    +the value
    +.Dv INT_MAX
    +if all ioctls commands are allowed.
    +On failure the value
    +.Va -1
    +is returned and the global variable errno is set to indicate the error.
    +.Sh ERRORS
    +.Fn cap_ioctls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at an invalid address.
    +.It Bq Er EINVAL
    +The
    +.Fa ncmds
    +argument is greater than
    +.Va 256 .
    +.It Bq Er ENOTCAPABLE
    +.Fa cmds
    +would expand the list of allowed
    +.Xr ioctl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_ioctls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr ioctl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2 (from r247622, head/lib/libc/sys/cap_rights_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2	Sat Mar  2 14:28:31 2013	(r247623, copy of r247622, head/lib/libc/sys/cap_rights_limit.2)
    @@ -0,0 +1,602 @@
    +.\"
    +.\" Copyright (c) 2008-2010 Robert N. M. Watson
    +.\" Copyright (c) 2012-2013 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This software was developed at the University of Cambridge Computer
    +.\" Laboratory with support from a grant from Google, Inc.
    +.\"
    +.\" Portions of this documentation were written by Pawel Jakub Dawidek
    +.\" under sponsorship from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 23, 2013
    +.Dt CAP_RIGHTS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_rights_limit ,
    +.Nm cap_rights_get
    +.Nd manage capability rights
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_rights_limit "int fd" "cap_rights_t rights"
    +.Ft int
    +.Fn cap_rights_get "int fd" "cap_rights_t *rightsp"
    +.Sh DESCRIPTION
    +When a file descriptor is created by a function such as
    +.Xr fhopen 2 ,
    +.Xr kqueue 2 ,
    +.Xr mq_open 2 ,
    +.Xr open 2 ,
    +.Xr openat 2 ,
    +.Xr pdfork 2 ,
    +.Xr pipe 2 ,
    +.Xr shm_open 2 ,
    +.Xr socket 2 ,
    +or
    +.Xr socketpair 2 ,
    +it is assigned all capability rights.
    +Those rights can be reduced (but never expanded) by using the
    +.Fn cap_rights_limit
    +system call.
    +Once capability rights are reduced, operations on the file descriptor will be
    +limited to those permitted by
    +.Fa rights .
    +.Pp
    +A bitmask of capability rights assigned to a file descriptor can be obtained with
    +the
    +.Fn cap_rights_get
    +system call.
    +.Sh RIGHTS
    +The following rights may be specified in a rights mask:
    +.Bl -tag -width CAP_EXTATTR_DELETE
    +.It Dv CAP_ACCEPT
    +Permit
    +.Xr accept 2 .
    +.It Dv CAP_ACL_CHECK
    +Permit checking of an ACL on a file descriptor; there is no cross-reference
    +for this system call.
    +.It Dv CAP_ACL_DELETE
    +Permit
    +.Xr acl_delete_fd_np 3 .
    +.It Dv CAP_ACL_GET
    +Permit
    +.Xr acl_get_fd 3
    +and
    +.Xr acl_get_fd_np 3 .
    +.It Dv CAP_ACL_SET
    +Permit
    +.Xr acl_set_fd 3
    +and
    +.Xr acl_set_fd_np 3 .
    +.It Dv CAP_BIND
    +Permit
    +.Xr bind 2 .
    +Note that sockets can also become bound implicitly as a result of
    +.Xr connect 2
    +or
    +.Xr send 2 ,
    +and that socket options set with
    +.Xr setsockopt 2
    +may also affect binding behavior.
    +.It Dv CAP_CONNECT
    +Permit
    +.Xr connect 2 ;
    +also required for
    +.Xr sendto 2
    +with a non-NULL destination address.
    +.It Dv CAP_CREATE
    +Permit
    +.Xr openat 2
    +with the
    +.Dv O_CREAT
    +flag.
    +.\" XXXPJD: Doesn't exist anymore.
    +.It Dv CAP_EVENT
    +Permit
    +.Xr select 2 ,
    +.Xr poll 2 ,
    +and
    +.Xr kevent 2
    +to be used in monitoring the file descriptor for events.
    +.It Dv CAP_FEXECVE
    +Permit
    +.Xr fexecve 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_EXEC
    +flag;
    +.Dv CAP_READ
    +will also be required.
    +.It Dv CAP_EXTATTR_DELETE
    +Permit
    +.Xr extattr_delete_fd 2 .
    +.It Dv CAP_EXTATTR_GET
    +Permit
    +.Xr extattr_get_fd 2 .
    +.It Dv CAP_EXTATTR_LIST
    +Permit
    +.Xr extattr_list_fd 2 .
    +.It Dv CAP_EXTATTR_SET
    +Permit
    +.Xr extattr_set_fd 2 .
    +.It Dv CAP_FCHDIR
    +Permit
    +.Xr fchdir 2 .
    +.It Dv CAP_FCHFLAGS
    +Permit
    +.Xr fchflags 2 .
    +.It Dv CAP_FCHMOD
    +Permit
    +.Xr fchmod 2
    +and
    +.Xr fchmodat 2 .
    +.It Dv CAP_FCHMODAT
    +An alias to
    +.Dv CAP_FCHMOD .
    +.It Dv CAP_FCHOWN
    +Permit
    +.Xr fchown 2
    +and
    +.Xr fchownat 2 .
    +.It Dv CAP_FCHOWNAT
    +An alias to
    +.Dv CAP_FCHOWN .
    +.It Dv CAP_FCNTL
    +Permit
    +.Xr fcntl 2 .
    +Note that only the
    +.Dv F_GETFL ,
    +.Dv F_SETFL ,
    +.Dv F_GETOWN
    +and
    +.Dv F_SETOWN
    +commands require this capability right.
    +Also note that the list of permitted commands can be further limited with the
    +.Xr cap_fcntls_limit 2
    +system call.
    +.It Dv CAP_FLOCK
    +Permit
    +.Xr flock 2 ,
    +.Xr fcntl 2
    +(with
    +.Dv F_GETLK ,
    +.Dv F_SETLK
    +or
    +.Dv F_SETLKW
    +flag) and
    +.Xr openat 2
    +(with
    +.Dv O_EXLOCK
    +or
    +.Dv O_SHLOCK
    +flag).
    +.It Dv CAP_FPATHCONF
    +Permit
    +.Xr fpathconf 2 .
    +.It Dv CAP_FSCK
    +Permit UFS background-fsck operations on the descriptor.
    +.It Dv CAP_FSTAT
    +Permit
    +.Xr fstat 2
    +and
    +.Xr fstatat 2 .
    +.It Dv CAP_FSTATAT
    +An alias to
    +.Dv CAP_FSTAT .
    +.It Dv CAP_FSTATFS
    +Permit
    +.Xr fstatfs 2 .
    +.It Dv CAP_FSYNC
    +Permit
    +.Xr aio_fsync 2 ,
    +.Xr fsync 2
    +and
    +.Xr openat 2
    +with
    +.Dv O_FSYNC
    +or
    +.Dv O_SYNC
    +flag.
    +.It Dv CAP_FTRUNCATE
    +Permit
    +.Xr ftruncate 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_TRUNC
    +flag.
    +.It Dv CAP_FUTIMES
    +Permit
    +.Xr futimes 2
    +and
    +.Xr futimesat 2 .
    +.It Dv CAP_FUTIMESAT
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 14:35:19 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id DDD53FA9;
     Sat,  2 Mar 2013 14:35:19 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id CB9E5E40;
     Sat,  2 Mar 2013 14:35:19 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22EZJkM017514;
     Sat, 2 Mar 2013 14:35:19 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22EZGLh017491;
     Sat, 2 Mar 2013 14:35:16 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201303021435.r22EZGLh017491@svn.freebsd.org>
    From: Attilio Rao 
    Date: Sat, 2 Mar 2013 14:35:16 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247624 - in user/attilio/vmc-playground: .
     cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libzfs/common
     contrib/openbsm/bin/auditdistd contrib/openbsm/etc lib/libc/gen l...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 14:35:19 -0000
    
    Author: attilio
    Date: Sat Mar  2 14:35:15 2013
    New Revision: 247624
    URL: http://svnweb.freebsd.org/changeset/base/247624
    
    Log:
      Merge from vmcontention
    
    Added:
      user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.3
         - copied unchanged from r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3
      user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.c
         - copied unchanged from r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c
      user/attilio/vmc-playground/lib/libc/sys/cap_fcntls_limit.2
         - copied unchanged from r247623, user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2
      user/attilio/vmc-playground/lib/libc/sys/cap_ioctls_limit.2
         - copied unchanged from r247623, user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2
      user/attilio/vmc-playground/lib/libc/sys/cap_rights_limit.2
         - copied unchanged from r247623, user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2
      user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_dma.c
         - copied unchanged from r247623, user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_dma.c
      user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_dma.h
         - copied unchanged from r247623, user/attilio/vmcontention/sys/arm/broadcom/bcm2835/bcm2835_dma.h
      user/attilio/vmc-playground/tools/regression/capsicum/
         - copied from r247623, user/attilio/vmcontention/tools/regression/capsicum/
    Deleted:
      user/attilio/vmc-playground/lib/libc/sys/cap_new.2
    Modified:
      user/attilio/vmc-playground/UPDATING
      user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zfs/zfs.8
      user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
      user/attilio/vmc-playground/contrib/openbsm/bin/auditdistd/sender.c
      user/attilio/vmc-playground/contrib/openbsm/etc/audit_event
      user/attilio/vmc-playground/lib/libc/gen/Makefile.inc
      user/attilio/vmc-playground/lib/libc/include/compat.h
      user/attilio/vmc-playground/lib/libc/regex/regcomp.c
      user/attilio/vmc-playground/lib/libc/rpc/clnt_vc.c
      user/attilio/vmc-playground/lib/libc/sys/Makefile.inc
      user/attilio/vmc-playground/lib/libc/sys/Symbol.map
      user/attilio/vmc-playground/lib/libc/sys/cap_enter.2
      user/attilio/vmc-playground/lib/libc/sys/dup.2
      user/attilio/vmc-playground/lib/libprocstat/libprocstat.c
      user/attilio/vmc-playground/lib/libprocstat/libprocstat.h
      user/attilio/vmc-playground/lib/libstand/nandfs.c
      user/attilio/vmc-playground/lib/libutil/kinfo_getproc.3
      user/attilio/vmc-playground/share/man/man4/arcmsr.4
      user/attilio/vmc-playground/share/man/man9/eventtimers.9
      user/attilio/vmc-playground/share/mk/bsd.compiler.mk
      user/attilio/vmc-playground/sys/amd64/amd64/machdep.c
      user/attilio/vmc-playground/sys/amd64/conf/GENERIC
      user/attilio/vmc-playground/sys/arm/allwinner/files.a10
      user/attilio/vmc-playground/sys/arm/allwinner/timer.c
      user/attilio/vmc-playground/sys/arm/arm/locore.S
      user/attilio/vmc-playground/sys/arm/arm/mpcore_timer.c
      user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
      user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
      user/attilio/vmc-playground/sys/arm/broadcom/bcm2835/files.bcm2835
      user/attilio/vmc-playground/sys/arm/conf/CUBIEBOARD
      user/attilio/vmc-playground/sys/arm/conf/RPI-B
      user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c
      user/attilio/vmc-playground/sys/arm/include/vmparam.h
      user/attilio/vmc-playground/sys/arm/lpc/lpc_timer.c
      user/attilio/vmc-playground/sys/arm/mv/timer.c
      user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmc-playground/sys/arm/ti/am335x/am335x_dmtimer.c
      user/attilio/vmc-playground/sys/arm/versatile/sp804.c
      user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c
      user/attilio/vmc-playground/sys/boot/fdt/dts/cubieboard.dts
      user/attilio/vmc-playground/sys/bsm/audit_kevents.h
      user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/file.h
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
      user/attilio/vmc-playground/sys/compat/freebsd32/freebsd32_proto.h
      user/attilio/vmc-playground/sys/compat/freebsd32/freebsd32_syscall.h
      user/attilio/vmc-playground/sys/compat/freebsd32/freebsd32_syscalls.c
      user/attilio/vmc-playground/sys/compat/freebsd32/freebsd32_sysent.c
      user/attilio/vmc-playground/sys/compat/freebsd32/freebsd32_systrace_args.c
      user/attilio/vmc-playground/sys/compat/freebsd32/syscalls.master
      user/attilio/vmc-playground/sys/compat/linux/linux_file.c
      user/attilio/vmc-playground/sys/compat/ndis/kern_ndis.c
      user/attilio/vmc-playground/sys/compat/svr4/svr4_fcntl.c
      user/attilio/vmc-playground/sys/compat/svr4/svr4_filio.c
      user/attilio/vmc-playground/sys/compat/svr4/svr4_misc.c
      user/attilio/vmc-playground/sys/compat/svr4/svr4_stream.c
      user/attilio/vmc-playground/sys/conf/options.sparc64
      user/attilio/vmc-playground/sys/dev/aac/aac.c
      user/attilio/vmc-playground/sys/dev/aac/aac_cam.c
      user/attilio/vmc-playground/sys/dev/aac/aac_disk.c
      user/attilio/vmc-playground/sys/dev/aac/aac_pci.c
      user/attilio/vmc-playground/sys/dev/aac/aac_tables.h
      user/attilio/vmc-playground/sys/dev/aac/aacvar.h
      user/attilio/vmc-playground/sys/dev/acpica/acpi_cpu.c
      user/attilio/vmc-playground/sys/dev/acpica/acpi_hpet.c
      user/attilio/vmc-playground/sys/dev/arcmsr/arcmsr.c
      user/attilio/vmc-playground/sys/dev/arcmsr/arcmsr.h
      user/attilio/vmc-playground/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmc-playground/sys/dev/ath/if_athrate.h
      user/attilio/vmc-playground/sys/dev/bce/if_bce.c
      user/attilio/vmc-playground/sys/dev/bce/if_bcereg.h
      user/attilio/vmc-playground/sys/dev/cas/if_cas.c
      user/attilio/vmc-playground/sys/dev/ic/ns16550.h
      user/attilio/vmc-playground/sys/dev/iscsi/initiator/iscsi.c
      user/attilio/vmc-playground/sys/dev/mfi/mfi.c
      user/attilio/vmc-playground/sys/dev/mps/mps.c
      user/attilio/vmc-playground/sys/dev/pci/pci.c
      user/attilio/vmc-playground/sys/dev/puc/pucdata.c
      user/attilio/vmc-playground/sys/dev/sdhci/sdhci.c
      user/attilio/vmc-playground/sys/dev/sdhci/sdhci.h
      user/attilio/vmc-playground/sys/dev/sdhci/sdhci_if.m
      user/attilio/vmc-playground/sys/dev/tws/tws_hdm.c
      user/attilio/vmc-playground/sys/dev/uart/uart_dev_ns8250.c
      user/attilio/vmc-playground/sys/fs/fdescfs/fdesc_vfsops.c
      user/attilio/vmc-playground/sys/fs/fdescfs/fdesc_vnops.c
      user/attilio/vmc-playground/sys/fs/nfs/nfsdport.h
      user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clport.c
      user/attilio/vmc-playground/sys/fs/nfsserver/nfs_nfsdport.c
      user/attilio/vmc-playground/sys/fs/nullfs/null_vfsops.c
      user/attilio/vmc-playground/sys/i386/conf/GENERIC
      user/attilio/vmc-playground/sys/i386/i386/machdep.c
      user/attilio/vmc-playground/sys/i386/ibcs2/ibcs2_misc.c
      user/attilio/vmc-playground/sys/i386/xen/clock.c
      user/attilio/vmc-playground/sys/ia64/ia64/clock.c
      user/attilio/vmc-playground/sys/ia64/ia64/machdep.c
      user/attilio/vmc-playground/sys/kern/capabilities.conf
      user/attilio/vmc-playground/sys/kern/init_sysent.c
      user/attilio/vmc-playground/sys/kern/kern_clocksource.c
      user/attilio/vmc-playground/sys/kern/kern_descrip.c
      user/attilio/vmc-playground/sys/kern/kern_et.c
      user/attilio/vmc-playground/sys/kern/kern_exec.c
      user/attilio/vmc-playground/sys/kern/kern_exit.c
      user/attilio/vmc-playground/sys/kern/kern_fork.c
      user/attilio/vmc-playground/sys/kern/kern_sysctl.c
      user/attilio/vmc-playground/sys/kern/kern_timeout.c
      user/attilio/vmc-playground/sys/kern/subr_sleepqueue.c
      user/attilio/vmc-playground/sys/kern/subr_trap.c
      user/attilio/vmc-playground/sys/kern/sys_capability.c
      user/attilio/vmc-playground/sys/kern/sys_generic.c
      user/attilio/vmc-playground/sys/kern/syscalls.c
      user/attilio/vmc-playground/sys/kern/syscalls.master
      user/attilio/vmc-playground/sys/kern/systrace_args.c
      user/attilio/vmc-playground/sys/kern/tty.c
      user/attilio/vmc-playground/sys/kern/uipc_mqueue.c
      user/attilio/vmc-playground/sys/kern/uipc_sem.c
      user/attilio/vmc-playground/sys/kern/uipc_shm.c
      user/attilio/vmc-playground/sys/kern/uipc_syscalls.c
      user/attilio/vmc-playground/sys/kern/uipc_usrreq.c
      user/attilio/vmc-playground/sys/kern/vfs_aio.c
      user/attilio/vmc-playground/sys/kern/vfs_default.c
      user/attilio/vmc-playground/sys/kern/vfs_lookup.c
      user/attilio/vmc-playground/sys/kern/vfs_syscalls.c
      user/attilio/vmc-playground/sys/kern/vfs_vnops.c
      user/attilio/vmc-playground/sys/mips/mips/tick.c
      user/attilio/vmc-playground/sys/mips/nlm/tick.c
      user/attilio/vmc-playground/sys/mips/rmi/tick.c
      user/attilio/vmc-playground/sys/modules/ixgbe/Makefile
      user/attilio/vmc-playground/sys/netsmb/smb_dev.c
      user/attilio/vmc-playground/sys/nfsserver/nfs_srvkrpc.c
      user/attilio/vmc-playground/sys/ofed/include/linux/file.h
      user/attilio/vmc-playground/sys/pc98/pc98/machdep.c
      user/attilio/vmc-playground/sys/powerpc/aim/clock.c
      user/attilio/vmc-playground/sys/powerpc/booke/clock.c
      user/attilio/vmc-playground/sys/powerpc/powerpc/cpu.c
      user/attilio/vmc-playground/sys/powerpc/ps3/platform_ps3.c
      user/attilio/vmc-playground/sys/powerpc/wii/platform_wii.c
      user/attilio/vmc-playground/sys/security/audit/audit.h
      user/attilio/vmc-playground/sys/security/audit/audit_arg.c
      user/attilio/vmc-playground/sys/security/audit/audit_bsm.c
      user/attilio/vmc-playground/sys/security/audit/audit_private.h
      user/attilio/vmc-playground/sys/sparc64/pci/ofw_pcib.c
      user/attilio/vmc-playground/sys/sparc64/pci/psycho.c
      user/attilio/vmc-playground/sys/sparc64/pci/sbbc.c
      user/attilio/vmc-playground/sys/sparc64/sbus/sbus.c
      user/attilio/vmc-playground/sys/sparc64/sparc64/tick.c
      user/attilio/vmc-playground/sys/sys/capability.h
      user/attilio/vmc-playground/sys/sys/file.h
      user/attilio/vmc-playground/sys/sys/filedesc.h
      user/attilio/vmc-playground/sys/sys/namei.h
      user/attilio/vmc-playground/sys/sys/proc.h
      user/attilio/vmc-playground/sys/sys/rmlock.h
      user/attilio/vmc-playground/sys/sys/syscall.h
      user/attilio/vmc-playground/sys/sys/syscall.mk
      user/attilio/vmc-playground/sys/sys/sysproto.h
      user/attilio/vmc-playground/sys/sys/systm.h
      user/attilio/vmc-playground/sys/sys/time.h
      user/attilio/vmc-playground/sys/sys/timeet.h
      user/attilio/vmc-playground/sys/sys/types.h
      user/attilio/vmc-playground/sys/sys/user.h
      user/attilio/vmc-playground/sys/vm/vm_mmap.c
      user/attilio/vmc-playground/sys/x86/isa/atrtc.c
      user/attilio/vmc-playground/sys/x86/isa/clock.c
      user/attilio/vmc-playground/sys/x86/x86/local_apic.c
      user/attilio/vmc-playground/tools/regression/security/cap_test/cap_test_capabilities.c
      user/attilio/vmc-playground/tools/regression/security/cap_test/cap_test_relative.c
      user/attilio/vmc-playground/usr.bin/dc/dc.c
      user/attilio/vmc-playground/usr.bin/kdump/kdump.c
      user/attilio/vmc-playground/usr.bin/kdump/mksubr
      user/attilio/vmc-playground/usr.bin/procstat/procstat_files.c
      user/attilio/vmc-playground/usr.sbin/bhyve/acpi.c
      user/attilio/vmc-playground/usr.sbin/bhyve/bhyverun.c
      user/attilio/vmc-playground/usr.sbin/bhyve/bhyverun.h
      user/attilio/vmc-playground/usr.sbin/bhyve/mptbl.c
      user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_block.c
      user/attilio/vmc-playground/usr.sbin/bhyve/pci_virtio_net.c
      user/attilio/vmc-playground/usr.sbin/bhyve/virtio.h
    Directory Properties:
      user/attilio/vmc-playground/   (props changed)
      user/attilio/vmc-playground/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zfs/   (props changed)
      user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
      user/attilio/vmc-playground/contrib/openbsm/   (props changed)
      user/attilio/vmc-playground/lib/libc/   (props changed)
      user/attilio/vmc-playground/lib/libutil/   (props changed)
      user/attilio/vmc-playground/share/man/man4/   (props changed)
      user/attilio/vmc-playground/sys/   (props changed)
      user/attilio/vmc-playground/sys/boot/   (props changed)
      user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmc-playground/sys/conf/   (props changed)
      user/attilio/vmc-playground/usr.bin/procstat/   (props changed)
      user/attilio/vmc-playground/usr.sbin/bhyve/   (props changed)
    
    Modified: user/attilio/vmc-playground/UPDATING
    ==============================================================================
    --- user/attilio/vmc-playground/UPDATING	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/UPDATING	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130301:
    +	The ctl device has been disabled in GENERIC for i386 and amd64.
    +	This was done due to the extra memory being allocated at system
    +	initialisation time by the ctl driver which was only used if
    +	a CAM target device was created.  This makes a FreeBSD system
    +	unusable on 128MB or less of RAM.
    +
     20130208:
     	A new compression method (lz4) has been merged to -HEAD.  Please
     	refer to zpool-features(7) for more information.
    @@ -46,8 +53,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	unlikely event that -M was the last option on the command line
     	and the command line contained at least two files and a target
     	directory the first file will have logs appended to it.  The -M
    -	option served little practical purpose in the last decade so it's
    -	used expected to be extremely rare.
    +	option served little practical purpose in the last decade so its
    +	use is expected to be extremely rare.
     
     20121223:
     	After switching to Clang as the default compiler some users of ZFS
    
    Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zfs/zfs.8
    ==============================================================================
    --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -526,6 +526,39 @@ if the snapshot has been marked for defe
     .Qq Nm Cm destroy -d
     command. Otherwise, the property is
     .Cm off .
    +.It Sy logicalreferenced
    +The amount of space that is
    +.Qq logically
    +accessible by this dataset.
    +See the
    +.Sy referenced
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +However, it does include space consumed by metadata.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lrefer .
    +.It Sy logicalused
    +The amount of space that is
    +.Qq logically
    +consumed by this dataset and all its descendents.
    +See the
    +.Sy used
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lused .
     .It Sy mounted
     For file systems, indicates whether the file system is currently mounted. This
     property can be either
    
    Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
    ==============================================================================
    --- user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -24,6 +24,7 @@
      * Copyright (c) 2011 Pawel Jakub Dawidek .
      * All rights reserved.
      * Copyright (c) 2011 by Delphix. All rights reserved.
    + * Copyright (c) 2013 Martin Matuska . All rights reserved.
      */
     
     #ifndef	_LIBFS_IMPL_H
    @@ -216,6 +217,7 @@ extern void libzfs_fru_clear(libzfs_hand
     
     #ifndef sun
     static int zfs_kernel_version = 0;
    +static int zfs_ioctl_version = 0;
     
     /*
      * This is FreeBSD version of ioctl, because Solaris' ioctl() updates
    @@ -225,19 +227,34 @@ static int zfs_kernel_version = 0;
     static __inline int
     zcmd_ioctl(int fd, unsigned long cmd, zfs_cmd_t *zc)
     {
    -	size_t oldsize, zfs_kernel_version_size;
    +	size_t oldsize, zfs_kernel_version_size, zfs_ioctl_version_size;
     	int version, ret, cflag = ZFS_CMD_COMPAT_NONE;
     
    -	zfs_kernel_version_size = sizeof(zfs_kernel_version);
    -	if (zfs_kernel_version == 0) {
    -		sysctlbyname("vfs.zfs.version.spa", &zfs_kernel_version,
    -		    &zfs_kernel_version_size, NULL, 0);
    +	zfs_ioctl_version_size = sizeof(zfs_ioctl_version);
    +	if (zfs_ioctl_version == 0) {
    +		sysctlbyname("vfs.zfs.version.ioctl", &zfs_ioctl_version,
    +		    &zfs_ioctl_version_size, NULL, 0);
     	}
     
    -	if (zfs_kernel_version == SPA_VERSION_15 ||
    -	    zfs_kernel_version == SPA_VERSION_14 ||
    -	    zfs_kernel_version == SPA_VERSION_13)
    -		cflag = ZFS_CMD_COMPAT_V15;
    +	/*
    +	 * If vfs.zfs.version.ioctl is not defined, assume we have v28
    +	 * compatible binaries and use vfs.zfs.version.spa to test for v15
    +	 */
    +	if (zfs_ioctl_version < ZFS_IOCVER_DEADMAN) {
    +		cflag = ZFS_CMD_COMPAT_V28;
    +		zfs_kernel_version_size = sizeof(zfs_kernel_version);
    +
    +		if (zfs_kernel_version == 0) {
    +			sysctlbyname("vfs.zfs.version.spa",
    +			    &zfs_kernel_version,
    +			    &zfs_kernel_version_size, NULL, 0);
    +		}
    +
    +		if (zfs_kernel_version == SPA_VERSION_15 ||
    +		    zfs_kernel_version == SPA_VERSION_14 ||
    +		    zfs_kernel_version == SPA_VERSION_13)
    +			cflag = ZFS_CMD_COMPAT_V15;
    +	}
     
     	oldsize = zc->zc_nvlist_dst_size;
     	ret = zcmd_ioctl_compat(fd, cmd, zc, cflag);
    
    Modified: user/attilio/vmc-playground/contrib/openbsm/bin/auditdistd/sender.c
    ==============================================================================
    --- user/attilio/vmc-playground/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -394,6 +394,7 @@ read_thread_wait(void)
     
     	mtx_lock(&adist_remote_mtx);
     	if (adhost->adh_reset) {
    +reset:
     		adhost->adh_reset = false;
     		if (trail_filefd(adist_trail) != -1)
     			trail_close(adist_trail);
    @@ -408,6 +409,14 @@ read_thread_wait(void)
     	while (trail_filefd(adist_trail) == -1) {
     		newfile = true;
     		wait_for_dir();
    +		/*
    +		 * We may have been disconnected and reconnected in the
    +		 * meantime, check if reset is set.
    +		 */
    +		mtx_lock(&adist_remote_mtx);
    +		if (adhost->adh_reset)
    +			goto reset;
    +		mtx_unlock(&adist_remote_mtx);
     		if (trail_filefd(adist_trail) == -1)
     			trail_next(adist_trail);
     	}
    
    Modified: user/attilio/vmc-playground/contrib/openbsm/etc/audit_event
    ==============================================================================
    --- user/attilio/vmc-playground/contrib/openbsm/etc/audit_event	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/contrib/openbsm/etc/audit_event	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -548,7 +548,7 @@
     43184:AUE_OPENAT:openat(2) - attr only:fa
     43185:AUE_POSIX_OPENPT:posix_openpt(2):ip
     43186:AUE_CAP_NEW:cap_new(2):fm
    -43187:AUE_CAP_GETRIGHTS:cap_getrights(2):fm
    +43187:AUE_CAP_RIGHTS_GET:cap_rights_get(2):fm
     43188:AUE_CAP_ENTER:cap_enter(2):pc
     43189:AUE_CAP_GETMODE:cap_getmode(2):pc
     43190:AUE_POSIX_SPAWN:posix_spawn(2):pc
    @@ -563,6 +563,11 @@
     43199:AUE_PDGETPID:pdgetpid(2):pc
     43200:AUE_PDWAIT:pdwait(2):pc
     43201:AUE_WAIT6:wait6(2):pc
    +43202:AUE_CAP_RIGHTS_LIMIT:cap_rights_limit(2):fm
    +43203:AUE_CAP_IOCTLS_LIMIT:cap_ioctls_limit(2):fm
    +43204:AUE_CAP_IOCTLS_GET:cap_ioctls_get(2):fm
    +43205:AUE_CAP_FCNTLS_LIMIT:cap_fcntls_limit(2):fm
    +43206:AUE_CAP_FCNTLS_GET:cap_fcntls_get(2):fm
     #
     # Solaris userspace events.
     #
    
    Modified: user/attilio/vmc-playground/lib/libc/gen/Makefile.inc
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/gen/Makefile.inc	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/gen/Makefile.inc	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -16,6 +16,7 @@ SRCS+=	__getosreldate.c \
     	assert.c \
     	auxv.c \
     	basename.c \
    +	cap_sandboxed.c \
     	check_utility_compat.c \
     	clock.c \
     	clock_getcpuclockid.c \
    @@ -168,6 +169,7 @@ SYM_MAPS+=${.CURDIR}/gen/Symbol.map
     MAN+=	alarm.3 \
     	arc4random.3 \
     	basename.3 \
    +	cap_sandboxed.3 \
     	check_utility_compat.3 \
     	clock.3 \
     	clock_getcpuclockid.3 \
    
    Copied: user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.3 (from r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.3	Sat Mar  2 14:35:15 2013	(r247624, copy of r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.3)
    @@ -0,0 +1,70 @@
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 18, 2012
    +.Dt CAP_SANDBOXED 3
    +.Os
    +.Sh NAME
    +.Nm cap_sandboxed
    +.Nd Check if in a capability mode sandbox
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.In stdbool.h
    +.Ft bool
    +.Fn cap_sandboxed "void"
    +.Sh DESCRIPTION
    +.Fn cap_sandboxed
    +returns
    +.Va true
    +if the process is in a capability mode sandbox or
    +.Va false
    +if it is not.
    +This function is a more handy alternative to the
    +.Xr cap_getmode 2
    +system call as it always succeeds, so there is no need for error checking.
    +If the support for capability mode is not compiled into the kernel,
    +.Fn cap_sandboxed
    +will always return
    +.Va false .
    +.Sh RETURN VALUES
    +Function
    +.Fn cap_sandboxed
    +is always successful and will return either
    +.Va true
    +or
    +.Va false .
    +.Sh SEE ALSO
    +.Xr cap_enter 2 ,
    +.Xr capsicum 4
    +.Sh AUTHORS
    +This function was implemented and manual page was written by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.c (from r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/gen/cap_sandboxed.c	Sat Mar  2 14:35:15 2013	(r247624, copy of r247623, user/attilio/vmcontention/lib/libc/gen/cap_sandboxed.c)
    @@ -0,0 +1,50 @@
    +/*-
    + * Copyright (c) 2012 The FreeBSD Foundation
    + * All rights reserved.
    + *
    + * This software was developed by Pawel Jakub Dawidek under sponsorship from
    + * the FreeBSD Foundation.
    + *
    + * 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 AUTHORS 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 AUTHORS 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$");
    +
    +#include 
    +
    +#include 
    +#include 
    +#include 
    +
    +bool
    +cap_sandboxed(void)
    +{
    +	u_int mode;
    +
    +	if (cap_getmode(&mode) != 0) {
    +		assert(errno == ENOSYS);
    +		return (false);
    +	}
    +	assert(mode == 0 || mode == 1);
    +	return (mode == 1);
    +}
    
    Modified: user/attilio/vmc-playground/lib/libc/include/compat.h
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/include/compat.h	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/include/compat.h	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -42,6 +42,8 @@ __sym_compat(__semctl, freebsd7___semctl
     __sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
     __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
     
    +__sym_compat(cap_getrights, cap_rights_get, FBSD_1.2);
    +
     #undef __sym_compat
     
     #endif	/* __LIBC_COMPAT_H__ */
    
    Modified: user/attilio/vmc-playground/lib/libc/regex/regcomp.c
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/regex/regcomp.c	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/regex/regcomp.c	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -1212,7 +1212,7 @@ CHaddrange(struct parse *p, cset *cs, wi
     	}
     	cs->ranges = newranges;
     	cs->ranges[cs->nranges].min = min;
    -	cs->ranges[cs->nranges].min = max;
    +	cs->ranges[cs->nranges].max = max;
     	cs->nranges++;
     }
     
    
    Modified: user/attilio/vmc-playground/lib/libc/rpc/clnt_vc.c
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -260,7 +260,7 @@ clnt_vc_create(fd, raddr, prog, vers, se
     	if (ct->ct_addr.buf == NULL)
     		goto err;
     	memcpy(ct->ct_addr.buf, raddr->buf, raddr->len);
    -	ct->ct_addr.len = raddr->maxlen;
    +	ct->ct_addr.len = raddr->len;
     	ct->ct_addr.maxlen = raddr->maxlen;
     
     	/*
    
    Modified: user/attilio/vmc-playground/lib/libc/sys/Makefile.inc
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/sys/Makefile.inc	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/sys/Makefile.inc	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -93,7 +93,9 @@ MAN+=	abort2.2 \
     	bind.2 \
     	brk.2 \
     	cap_enter.2 \
    -	cap_new.2 \
    +	cap_fcntls_limit.2 \
    +	cap_ioctls_limit.2 \
    +	cap_rights_limit.2 \
     	chdir.2 \
     	chflags.2 \
     	chmod.2 \
    @@ -270,7 +272,9 @@ MLINKS+=access.2 eaccess.2 \
     	access.2 faccessat.2
     MLINKS+=brk.2 sbrk.2
     MLINKS+=cap_enter.2 cap_getmode.2
    -MLINKS+=cap_new.2 cap_getrights.2
    +MLINKS+=cap_fcntls_limit.2 cap_fcntls_get.2
    +MLINKS+=cap_ioctls_limit.2 cap_ioctls_get.2
    +MLINKS+=cap_rights_limit.2 cap_rights_get.2
     MLINKS+=chdir.2 fchdir.2
     MLINKS+=chflags.2 fchflags.2 \
     	chflags.2 lchflags.2
    
    Modified: user/attilio/vmc-playground/lib/libc/sys/Symbol.map
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/sys/Symbol.map	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/sys/Symbol.map	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -364,7 +364,6 @@ FBSD_1.2 {
     	cap_enter;
     	cap_getmode;
     	cap_new;
    -	cap_getrights;
     	getloginclass;
     	pdfork;
     	pdgetpid;
    @@ -379,6 +378,13 @@ FBSD_1.2 {
     };
     
     FBSD_1.3 {
    +	cap_fcntls_get;
    +	cap_fcntls_limit;
    +	cap_ioctls_get;
    +	cap_ioctls_limit;
    +	cap_rights_get;
    +	cap_rights_limit;
    +	cap_sandboxed;
     	clock_getcpuclockid2;
     	ffclock_getcounter;
     	ffclock_getestimate;
    
    Modified: user/attilio/vmc-playground/lib/libc/sys/cap_enter.2
    ==============================================================================
    --- user/attilio/vmc-playground/lib/libc/sys/cap_enter.2	Sat Mar  2 14:28:31 2013	(r247623)
    +++ user/attilio/vmc-playground/lib/libc/sys/cap_enter.2	Sat Mar  2 14:35:15 2013	(r247624)
    @@ -58,8 +58,10 @@ or
     .Xr pdfork 2
     will be placed in capability mode from inception.
     .Pp
    -When combined with capabilities created with
    -.Xr cap_new 2 ,
    +When combined with
    +.Xr cap_rights_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_fcntls_limit 2 ,
     .Fn cap_enter
     may be used to create kernel-enforced sandboxes in which
     appropriately-crafted applications or application components may be run.
    @@ -71,11 +73,6 @@ sandbox.
     Creating effective process sandboxes is a tricky process that involves
     identifying the least possible rights required by the process and then
     passing those rights into the process in a safe manner.
    -See the CAVEAT
    -section of
    -.Xr cap_new 2
    -for why this is particularly tricky with UNIX file descriptors as the
    -canonical representation of a right.
     Consumers of
     .Fn cap_enter
     should also be aware of other inherited rights, such as access to VM
    @@ -87,9 +84,35 @@ to create a runtime environment inside t
     acquired rights as possible.
     .Sh RETURN VALUES
     .Rv -std cap_enter cap_getmode
    +.Sh ERRORS
    +The
    +.Fn cap_enter
    +and
    +.Fn cap_getmode
    +system calls
    +will fail if:
    +.Bl -tag -width Er
    +.It Bq Er ENOSYS
    +The kernel is compiled without:
    +.Pp
    +.Cd "options CAPABILITY_MODE"
    +.El
    +.Pp
    +The
    +.Fn cap_getmode
    +system call may also return the following error:
    +.Bl -tag -width Er
    +.It Bq Er EFAULT
    +Pointer
    +.Fa modep
    +points outside the process's allocated address space.
    +.El
     .Sh SEE ALSO
    -.Xr cap_new 2 ,
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
     .Xr fexecve 2 ,
    +.Xr cap_sandboxed 3 ,
     .Xr capsicum 4
     .Sh HISTORY
     Support for capabilities and capabilities mode was developed as part of the
    
    Copied: user/attilio/vmc-playground/lib/libc/sys/cap_fcntls_limit.2 (from r247623, user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/sys/cap_fcntls_limit.2	Sat Mar  2 14:35:15 2013	(r247624, copy of r247623, user/attilio/vmcontention/lib/libc/sys/cap_fcntls_limit.2)
    @@ -0,0 +1,126 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_FCNTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_fcntls_limit ,
    +.Nm cap_fcntls_get
    +.Nd manage allowed fcntl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_fcntls_limit "int fd" "uint32_t fcntlrights"
    +.Ft int
    +.Fn cap_fcntls_get "int fd" "uint32_t *fcntlrightsp"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_FCNTL
    +capability right, the list of allowed
    +.Xr fcntl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_fcntls_limit
    +system call.
    +.Pp
    +A bitmask of allowed fcntls commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_fcntls_get
    +system call.
    +.Sh FLAGS
    +The following flags may be specified in the
    +.Fa fcntlrights
    +argument or returned in the
    +.Fa fcntlrightsp
    +argument:
    +.Bl -tag -width CAP_FCNTL_GETOWN
    +.It Dv CAP_FCNTL_GETFL
    +Permit
    +.Dv F_GETFL
    +command.
    +.It Dv CAP_FCNTL_SETFL
    +Permit
    +.Dv F_SETFL
    +command.
    +.It Dv CAP_FCNTL_GETOWN
    +Permit
    +.Dv F_GETOWN
    +command.
    +.It Dv CAP_FCNTL_SETOWN
    +Permit
    +.Dv F_SETOWN
    +command.
    +.El
    +.Sh RETURN VALUES
    +.Rv -std
    +.Sh ERRORS
    +.Fn cap_fcntls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EINVAL
    +An invalid flag has been passed in
    +.Fa fcntlrights .
    +.It Bq Er ENOTCAPABLE
    +.Fa fcntlrights
    +would expand the list of allowed
    +.Xr fcntl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_fcntls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa fcntlrightsp
    +argument points at an invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr fcntl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmc-playground/lib/libc/sys/cap_ioctls_limit.2 (from r247623, user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/sys/cap_ioctls_limit.2	Sat Mar  2 14:35:15 2013	(r247624, copy of r247623, user/attilio/vmcontention/lib/libc/sys/cap_ioctls_limit.2)
    @@ -0,0 +1,157 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_IOCTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_ioctls_limit ,
    +.Nm cap_ioctls_get
    +.Nd manage allowed ioctl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_ioctls_limit "int fd" "const unsigned long *cmds" "size_t ncmds"
    +.Ft ssize_t
    +.Fn cap_ioctls_get "int fd" "unsigned long *cmds" "size_t maxcmds"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_IOCTL
    +capability right, the list of allowed
    +.Xr ioctl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_ioctls_limit
    +system call.
    +The
    +.Fa cmds
    +argument is an array of
    +.Xr ioctl 2
    +commands and the
    +.Fa ncmds
    +argument specifies the number of elements in the array.
    +There might be up to
    +.Va 256
    +elements in the array.
    +.Pp
    +The list of allowed ioctl commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_ioctls_get
    +system call.
    +The
    +.Fa cmds
    +argument points at memory that can hold up to
    +.Fa maxcmds
    +values.
    +The function populates the provided buffer with up to
    +.Fa maxcmds
    +elements, but always returns the total number of ioctl commands allowed for the
    +given file descriptor.
    +The total number of ioctls commands for the given file descriptor can be
    +obtained by passing
    +.Dv NULL as the
    +.Fa cmds
    +argument and
    +.Va 0
    +as the
    +.Fa maxcmds
    +argument.
    +If all ioctl commands are allowed
    +.Dv ( CAP_IOCTL
    +capability right is assigned to the file descriptor and the
    +.Fn cap_ioctls_limit
    +system call was never called for this file descriptor), the
    +.Fn cap_ioctls_get
    +system call will return
    +.Dv CAP_IOCTLS_ALL
    +and won't modify the buffer pointed out by the
    +.Fa cmds
    +argument.
    +.Sh RETURN VALUES
    +.Rv -std cap_ioctls_limit
    +.Pp
    +The
    +.Fn cap_ioctls_limit
    +function, if successfull, returns the total number of allowed ioctl commands or
    +the value
    +.Dv INT_MAX
    +if all ioctls commands are allowed.
    +On failure the value
    +.Va -1
    +is returned and the global variable errno is set to indicate the error.
    +.Sh ERRORS
    +.Fn cap_ioctls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at an invalid address.
    +.It Bq Er EINVAL
    +The
    +.Fa ncmds
    +argument is greater than
    +.Va 256 .
    +.It Bq Er ENOTCAPABLE
    +.Fa cmds
    +would expand the list of allowed
    +.Xr ioctl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_ioctls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr ioctl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmc-playground/lib/libc/sys/cap_rights_limit.2 (from r247623, user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmc-playground/lib/libc/sys/cap_rights_limit.2	Sat Mar  2 14:35:15 2013	(r247624, copy of r247623, user/attilio/vmcontention/lib/libc/sys/cap_rights_limit.2)
    @@ -0,0 +1,602 @@
    +.\"
    +.\" Copyright (c) 2008-2010 Robert N. M. Watson
    +.\" Copyright (c) 2012-2013 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This software was developed at the University of Cambridge Computer
    +.\" Laboratory with support from a grant from Google, Inc.
    +.\"
    +.\" Portions of this documentation were written by Pawel Jakub Dawidek
    +.\" under sponsorship from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 23, 2013
    +.Dt CAP_RIGHTS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_rights_limit ,
    +.Nm cap_rights_get
    +.Nd manage capability rights
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_rights_limit "int fd" "cap_rights_t rights"
    +.Ft int
    +.Fn cap_rights_get "int fd" "cap_rights_t *rightsp"
    +.Sh DESCRIPTION
    +When a file descriptor is created by a function such as
    +.Xr fhopen 2 ,
    +.Xr kqueue 2 ,
    +.Xr mq_open 2 ,
    +.Xr open 2 ,
    +.Xr openat 2 ,
    +.Xr pdfork 2 ,
    +.Xr pipe 2 ,
    +.Xr shm_open 2 ,
    +.Xr socket 2 ,
    +or
    +.Xr socketpair 2 ,
    +it is assigned all capability rights.
    +Those rights can be reduced (but never expanded) by using the
    +.Fn cap_rights_limit
    +system call.
    +Once capability rights are reduced, operations on the file descriptor will be
    +limited to those permitted by
    +.Fa rights .
    +.Pp
    +A bitmask of capability rights assigned to a file descriptor can be obtained with
    +the
    +.Fn cap_rights_get
    +system call.
    +.Sh RIGHTS
    +The following rights may be specified in a rights mask:
    +.Bl -tag -width CAP_EXTATTR_DELETE
    +.It Dv CAP_ACCEPT
    +Permit
    +.Xr accept 2 .
    +.It Dv CAP_ACL_CHECK
    +Permit checking of an ACL on a file descriptor; there is no cross-reference
    +for this system call.
    +.It Dv CAP_ACL_DELETE
    +Permit
    +.Xr acl_delete_fd_np 3 .
    +.It Dv CAP_ACL_GET
    +Permit
    +.Xr acl_get_fd 3
    +and
    +.Xr acl_get_fd_np 3 .
    +.It Dv CAP_ACL_SET
    +Permit
    +.Xr acl_set_fd 3
    +and
    +.Xr acl_set_fd_np 3 .
    +.It Dv CAP_BIND
    +Permit
    +.Xr bind 2 .
    +Note that sockets can also become bound implicitly as a result of
    +.Xr connect 2
    +or
    +.Xr send 2 ,
    +and that socket options set with
    +.Xr setsockopt 2
    +may also affect binding behavior.
    +.It Dv CAP_CONNECT
    +Permit
    +.Xr connect 2 ;
    +also required for
    +.Xr sendto 2
    +with a non-NULL destination address.
    +.It Dv CAP_CREATE
    +Permit
    +.Xr openat 2
    +with the
    +.Dv O_CREAT
    +flag.
    +.\" XXXPJD: Doesn't exist anymore.
    +.It Dv CAP_EVENT
    +Permit
    +.Xr select 2 ,
    +.Xr poll 2 ,
    +and
    +.Xr kevent 2
    +to be used in monitoring the file descriptor for events.
    +.It Dv CAP_FEXECVE
    +Permit
    +.Xr fexecve 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_EXEC
    +flag;
    +.Dv CAP_READ
    +will also be required.
    +.It Dv CAP_EXTATTR_DELETE
    +Permit
    +.Xr extattr_delete_fd 2 .
    +.It Dv CAP_EXTATTR_GET
    +Permit
    +.Xr extattr_get_fd 2 .
    +.It Dv CAP_EXTATTR_LIST
    +Permit
    +.Xr extattr_list_fd 2 .
    +.It Dv CAP_EXTATTR_SET
    +Permit
    +.Xr extattr_set_fd 2 .
    +.It Dv CAP_FCHDIR
    +Permit
    +.Xr fchdir 2 .
    +.It Dv CAP_FCHFLAGS
    +Permit
    +.Xr fchflags 2 .
    +.It Dv CAP_FCHMOD
    +Permit
    +.Xr fchmod 2
    +and
    +.Xr fchmodat 2 .
    +.It Dv CAP_FCHMODAT
    +An alias to
    +.Dv CAP_FCHMOD .
    +.It Dv CAP_FCHOWN
    +Permit
    +.Xr fchown 2
    +and
    +.Xr fchownat 2 .
    +.It Dv CAP_FCHOWNAT
    +An alias to
    +.Dv CAP_FCHOWN .
    +.It Dv CAP_FCNTL
    +Permit
    +.Xr fcntl 2 .
    +Note that only the
    +.Dv F_GETFL ,
    +.Dv F_SETFL ,
    +.Dv F_GETOWN
    +and
    +.Dv F_SETOWN
    +commands require this capability right.
    +Also note that the list of permitted commands can be further limited with the
    +.Xr cap_fcntls_limit 2
    +system call.
    +.It Dv CAP_FLOCK
    +Permit
    +.Xr flock 2 ,
    +.Xr fcntl 2
    +(with
    +.Dv F_GETLK ,
    +.Dv F_SETLK
    +or
    +.Dv F_SETLKW
    +flag) and
    +.Xr openat 2
    +(with
    +.Dv O_EXLOCK
    +or
    +.Dv O_SHLOCK
    +flag).
    +.It Dv CAP_FPATHCONF
    +Permit
    +.Xr fpathconf 2 .
    +.It Dv CAP_FSCK
    +Permit UFS background-fsck operations on the descriptor.
    +.It Dv CAP_FSTAT
    +Permit
    +.Xr fstat 2
    +and
    +.Xr fstatat 2 .
    +.It Dv CAP_FSTATAT
    +An alias to
    +.Dv CAP_FSTAT .
    +.It Dv CAP_FSTATFS
    +Permit
    +.Xr fstatfs 2 .
    +.It Dv CAP_FSYNC
    +Permit
    +.Xr aio_fsync 2 ,
    +.Xr fsync 2
    +and
    +.Xr openat 2
    +with
    +.Dv O_FSYNC
    +or
    +.Dv O_SYNC
    +flag.
    +.It Dv CAP_FTRUNCATE
    +Permit
    +.Xr ftruncate 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_TRUNC
    +flag.
    +.It Dv CAP_FUTIMES
    +Permit
    +.Xr futimes 2
    +and
    +.Xr futimesat 2 .
    +.It Dv CAP_FUTIMESAT
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 14:48:45 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id C32FF4DB;
     Sat,  2 Mar 2013 14:48:45 +0000 (UTC)
     (envelope-from attilio@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id A9253F17;
     Sat,  2 Mar 2013 14:48:45 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22EmjqJ022356;
     Sat, 2 Mar 2013 14:48:45 GMT (envelope-from attilio@svn.freebsd.org)
    Received: (from attilio@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22EmfID022333;
     Sat, 2 Mar 2013 14:48:41 GMT (envelope-from attilio@svn.freebsd.org)
    Message-Id: <201303021448.r22EmfID022333@svn.freebsd.org>
    From: Attilio Rao 
    Date: Sat, 2 Mar 2013 14:48:41 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247627 - in user/attilio/vmobj-rwlock: .
     cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libzfs/common
     contrib/openbsm/bin/auditdistd contrib/openbsm/etc lib/libc/gen lib...
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 14:48:45 -0000
    
    Author: attilio
    Date: Sat Mar  2 14:48:41 2013
    New Revision: 247627
    URL: http://svnweb.freebsd.org/changeset/base/247627
    
    Log:
      MFC
    
    Added:
      user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.3
         - copied unchanged from r247625, head/lib/libc/gen/cap_sandboxed.3
      user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.c
         - copied unchanged from r247625, head/lib/libc/gen/cap_sandboxed.c
      user/attilio/vmobj-rwlock/lib/libc/sys/cap_fcntls_limit.2
         - copied unchanged from r247625, head/lib/libc/sys/cap_fcntls_limit.2
      user/attilio/vmobj-rwlock/lib/libc/sys/cap_ioctls_limit.2
         - copied unchanged from r247625, head/lib/libc/sys/cap_ioctls_limit.2
      user/attilio/vmobj-rwlock/lib/libc/sys/cap_rights_limit.2
         - copied unchanged from r247625, head/lib/libc/sys/cap_rights_limit.2
      user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/bcm2835_dma.c
         - copied unchanged from r247625, head/sys/arm/broadcom/bcm2835/bcm2835_dma.c
      user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/bcm2835_dma.h
         - copied unchanged from r247625, head/sys/arm/broadcom/bcm2835/bcm2835_dma.h
      user/attilio/vmobj-rwlock/tools/regression/capsicum/
         - copied from r247625, head/tools/regression/capsicum/
    Deleted:
      user/attilio/vmobj-rwlock/lib/libc/sys/cap_new.2
    Modified:
      user/attilio/vmobj-rwlock/UPDATING
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zfs/zfs.8
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
      user/attilio/vmobj-rwlock/contrib/openbsm/bin/auditdistd/sender.c
      user/attilio/vmobj-rwlock/contrib/openbsm/etc/audit_event
      user/attilio/vmobj-rwlock/lib/libc/gen/Makefile.inc
      user/attilio/vmobj-rwlock/lib/libc/include/compat.h
      user/attilio/vmobj-rwlock/lib/libc/regex/regcomp.c
      user/attilio/vmobj-rwlock/lib/libc/rpc/clnt_vc.c
      user/attilio/vmobj-rwlock/lib/libc/sys/Makefile.inc
      user/attilio/vmobj-rwlock/lib/libc/sys/Symbol.map
      user/attilio/vmobj-rwlock/lib/libc/sys/cap_enter.2
      user/attilio/vmobj-rwlock/lib/libc/sys/dup.2
      user/attilio/vmobj-rwlock/lib/libprocstat/libprocstat.c
      user/attilio/vmobj-rwlock/lib/libprocstat/libprocstat.h
      user/attilio/vmobj-rwlock/lib/libstand/nandfs.c
      user/attilio/vmobj-rwlock/lib/libutil/kinfo_getproc.3
      user/attilio/vmobj-rwlock/share/man/man4/arcmsr.4
      user/attilio/vmobj-rwlock/share/man/man9/eventtimers.9
      user/attilio/vmobj-rwlock/share/mk/bsd.compiler.mk
      user/attilio/vmobj-rwlock/sys/amd64/amd64/machdep.c
      user/attilio/vmobj-rwlock/sys/amd64/amd64/pmap.c
      user/attilio/vmobj-rwlock/sys/amd64/conf/GENERIC
      user/attilio/vmobj-rwlock/sys/amd64/include/pmap.h
      user/attilio/vmobj-rwlock/sys/arm/allwinner/files.a10
      user/attilio/vmobj-rwlock/sys/arm/allwinner/timer.c
      user/attilio/vmobj-rwlock/sys/arm/arm/locore.S
      user/attilio/vmobj-rwlock/sys/arm/arm/mpcore_timer.c
      user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
      user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
      user/attilio/vmobj-rwlock/sys/arm/broadcom/bcm2835/files.bcm2835
      user/attilio/vmobj-rwlock/sys/arm/conf/CUBIEBOARD
      user/attilio/vmobj-rwlock/sys/arm/conf/RPI-B
      user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/include/vmparam.h
      user/attilio/vmobj-rwlock/sys/arm/lpc/lpc_timer.c
      user/attilio/vmobj-rwlock/sys/arm/mv/timer.c
      user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/ti/am335x/am335x_dmtimer.c
      user/attilio/vmobj-rwlock/sys/arm/versatile/sp804.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c
      user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c
      user/attilio/vmobj-rwlock/sys/boot/fdt/dts/cubieboard.dts
      user/attilio/vmobj-rwlock/sys/bsm/audit_kevents.h
      user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/file.h
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/freebsd32_proto.h
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/freebsd32_syscall.h
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/freebsd32_syscalls.c
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/freebsd32_sysent.c
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/freebsd32_systrace_args.c
      user/attilio/vmobj-rwlock/sys/compat/freebsd32/syscalls.master
      user/attilio/vmobj-rwlock/sys/compat/linux/linux_file.c
      user/attilio/vmobj-rwlock/sys/compat/ndis/kern_ndis.c
      user/attilio/vmobj-rwlock/sys/compat/svr4/svr4_fcntl.c
      user/attilio/vmobj-rwlock/sys/compat/svr4/svr4_filio.c
      user/attilio/vmobj-rwlock/sys/compat/svr4/svr4_misc.c
      user/attilio/vmobj-rwlock/sys/compat/svr4/svr4_stream.c
      user/attilio/vmobj-rwlock/sys/conf/options.sparc64
      user/attilio/vmobj-rwlock/sys/dev/aac/aac.c
      user/attilio/vmobj-rwlock/sys/dev/aac/aac_cam.c
      user/attilio/vmobj-rwlock/sys/dev/aac/aac_disk.c
      user/attilio/vmobj-rwlock/sys/dev/aac/aac_pci.c
      user/attilio/vmobj-rwlock/sys/dev/aac/aac_tables.h
      user/attilio/vmobj-rwlock/sys/dev/aac/aacvar.h
      user/attilio/vmobj-rwlock/sys/dev/acpica/acpi_cpu.c
      user/attilio/vmobj-rwlock/sys/dev/acpica/acpi_hpet.c
      user/attilio/vmobj-rwlock/sys/dev/arcmsr/arcmsr.c
      user/attilio/vmobj-rwlock/sys/dev/arcmsr/arcmsr.h
      user/attilio/vmobj-rwlock/sys/dev/ath/if_ath_tx_ht.c
      user/attilio/vmobj-rwlock/sys/dev/ath/if_athrate.h
      user/attilio/vmobj-rwlock/sys/dev/bce/if_bce.c
      user/attilio/vmobj-rwlock/sys/dev/bce/if_bcereg.h
      user/attilio/vmobj-rwlock/sys/dev/cas/if_cas.c
      user/attilio/vmobj-rwlock/sys/dev/ic/ns16550.h
      user/attilio/vmobj-rwlock/sys/dev/iscsi/initiator/iscsi.c
      user/attilio/vmobj-rwlock/sys/dev/mfi/mfi.c
      user/attilio/vmobj-rwlock/sys/dev/mps/mps.c
      user/attilio/vmobj-rwlock/sys/dev/pci/pci.c
      user/attilio/vmobj-rwlock/sys/dev/puc/pucdata.c
      user/attilio/vmobj-rwlock/sys/dev/sdhci/sdhci.c
      user/attilio/vmobj-rwlock/sys/dev/sdhci/sdhci.h
      user/attilio/vmobj-rwlock/sys/dev/sdhci/sdhci_if.m
      user/attilio/vmobj-rwlock/sys/dev/tws/tws_hdm.c
      user/attilio/vmobj-rwlock/sys/dev/uart/uart_dev_ns8250.c
      user/attilio/vmobj-rwlock/sys/fs/fdescfs/fdesc_vfsops.c
      user/attilio/vmobj-rwlock/sys/fs/fdescfs/fdesc_vnops.c
      user/attilio/vmobj-rwlock/sys/fs/nfs/nfsdport.h
      user/attilio/vmobj-rwlock/sys/fs/nfsclient/nfs_clport.c
      user/attilio/vmobj-rwlock/sys/fs/nfsserver/nfs_nfsdport.c
      user/attilio/vmobj-rwlock/sys/fs/nullfs/null_vfsops.c
      user/attilio/vmobj-rwlock/sys/i386/conf/GENERIC
      user/attilio/vmobj-rwlock/sys/i386/i386/machdep.c
      user/attilio/vmobj-rwlock/sys/i386/i386/pmap.c
      user/attilio/vmobj-rwlock/sys/i386/ibcs2/ibcs2_misc.c
      user/attilio/vmobj-rwlock/sys/i386/include/pmap.h
      user/attilio/vmobj-rwlock/sys/i386/xen/clock.c
      user/attilio/vmobj-rwlock/sys/ia64/ia64/clock.c
      user/attilio/vmobj-rwlock/sys/ia64/ia64/machdep.c
      user/attilio/vmobj-rwlock/sys/kern/capabilities.conf
      user/attilio/vmobj-rwlock/sys/kern/init_sysent.c
      user/attilio/vmobj-rwlock/sys/kern/kern_clocksource.c
      user/attilio/vmobj-rwlock/sys/kern/kern_descrip.c
      user/attilio/vmobj-rwlock/sys/kern/kern_et.c
      user/attilio/vmobj-rwlock/sys/kern/kern_exec.c
      user/attilio/vmobj-rwlock/sys/kern/kern_exit.c
      user/attilio/vmobj-rwlock/sys/kern/kern_fork.c
      user/attilio/vmobj-rwlock/sys/kern/kern_sysctl.c
      user/attilio/vmobj-rwlock/sys/kern/kern_timeout.c
      user/attilio/vmobj-rwlock/sys/kern/subr_sleepqueue.c
      user/attilio/vmobj-rwlock/sys/kern/subr_trap.c
      user/attilio/vmobj-rwlock/sys/kern/sys_capability.c
      user/attilio/vmobj-rwlock/sys/kern/sys_generic.c
      user/attilio/vmobj-rwlock/sys/kern/syscalls.c
      user/attilio/vmobj-rwlock/sys/kern/syscalls.master
      user/attilio/vmobj-rwlock/sys/kern/systrace_args.c
      user/attilio/vmobj-rwlock/sys/kern/tty.c
      user/attilio/vmobj-rwlock/sys/kern/uipc_mqueue.c
      user/attilio/vmobj-rwlock/sys/kern/uipc_sem.c
      user/attilio/vmobj-rwlock/sys/kern/uipc_shm.c
      user/attilio/vmobj-rwlock/sys/kern/uipc_syscalls.c
      user/attilio/vmobj-rwlock/sys/kern/uipc_usrreq.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_aio.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_default.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_lookup.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_syscalls.c
      user/attilio/vmobj-rwlock/sys/kern/vfs_vnops.c
      user/attilio/vmobj-rwlock/sys/mips/mips/tick.c
      user/attilio/vmobj-rwlock/sys/mips/nlm/tick.c
      user/attilio/vmobj-rwlock/sys/mips/rmi/tick.c
      user/attilio/vmobj-rwlock/sys/modules/ixgbe/Makefile
      user/attilio/vmobj-rwlock/sys/netsmb/smb_dev.c
      user/attilio/vmobj-rwlock/sys/nfsserver/nfs_srvkrpc.c
      user/attilio/vmobj-rwlock/sys/ofed/include/linux/file.h
      user/attilio/vmobj-rwlock/sys/pc98/pc98/machdep.c
      user/attilio/vmobj-rwlock/sys/powerpc/aim/clock.c
      user/attilio/vmobj-rwlock/sys/powerpc/booke/clock.c
      user/attilio/vmobj-rwlock/sys/powerpc/powerpc/cpu.c
      user/attilio/vmobj-rwlock/sys/powerpc/ps3/platform_ps3.c
      user/attilio/vmobj-rwlock/sys/powerpc/wii/platform_wii.c
      user/attilio/vmobj-rwlock/sys/security/audit/audit.h
      user/attilio/vmobj-rwlock/sys/security/audit/audit_arg.c
      user/attilio/vmobj-rwlock/sys/security/audit/audit_bsm.c
      user/attilio/vmobj-rwlock/sys/security/audit/audit_private.h
      user/attilio/vmobj-rwlock/sys/sparc64/pci/ofw_pcib.c
      user/attilio/vmobj-rwlock/sys/sparc64/pci/psycho.c
      user/attilio/vmobj-rwlock/sys/sparc64/pci/sbbc.c
      user/attilio/vmobj-rwlock/sys/sparc64/sbus/sbus.c
      user/attilio/vmobj-rwlock/sys/sparc64/sparc64/tick.c
      user/attilio/vmobj-rwlock/sys/sys/capability.h
      user/attilio/vmobj-rwlock/sys/sys/file.h
      user/attilio/vmobj-rwlock/sys/sys/filedesc.h
      user/attilio/vmobj-rwlock/sys/sys/namei.h
      user/attilio/vmobj-rwlock/sys/sys/proc.h
      user/attilio/vmobj-rwlock/sys/sys/rmlock.h
      user/attilio/vmobj-rwlock/sys/sys/syscall.h
      user/attilio/vmobj-rwlock/sys/sys/syscall.mk
      user/attilio/vmobj-rwlock/sys/sys/sysproto.h
      user/attilio/vmobj-rwlock/sys/sys/systm.h
      user/attilio/vmobj-rwlock/sys/sys/time.h
      user/attilio/vmobj-rwlock/sys/sys/timeet.h
      user/attilio/vmobj-rwlock/sys/sys/types.h
      user/attilio/vmobj-rwlock/sys/sys/user.h
      user/attilio/vmobj-rwlock/sys/vm/vm_mmap.c
      user/attilio/vmobj-rwlock/sys/x86/isa/atrtc.c
      user/attilio/vmobj-rwlock/sys/x86/isa/clock.c
      user/attilio/vmobj-rwlock/sys/x86/x86/local_apic.c
      user/attilio/vmobj-rwlock/tools/regression/security/cap_test/cap_test_capabilities.c
      user/attilio/vmobj-rwlock/tools/regression/security/cap_test/cap_test_relative.c
      user/attilio/vmobj-rwlock/usr.bin/dc/dc.c
      user/attilio/vmobj-rwlock/usr.bin/kdump/kdump.c
      user/attilio/vmobj-rwlock/usr.bin/kdump/mksubr
      user/attilio/vmobj-rwlock/usr.bin/procstat/procstat_files.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/acpi.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/bhyverun.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/bhyverun.h
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/mptbl.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_block.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/pci_virtio_net.c
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/virtio.h
    Directory Properties:
      user/attilio/vmobj-rwlock/   (props changed)
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zfs/   (props changed)
      user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
      user/attilio/vmobj-rwlock/contrib/openbsm/   (props changed)
      user/attilio/vmobj-rwlock/lib/libc/   (props changed)
      user/attilio/vmobj-rwlock/lib/libutil/   (props changed)
      user/attilio/vmobj-rwlock/share/man/man4/   (props changed)
      user/attilio/vmobj-rwlock/sys/   (props changed)
      user/attilio/vmobj-rwlock/sys/boot/   (props changed)
      user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/   (props changed)
      user/attilio/vmobj-rwlock/sys/conf/   (props changed)
      user/attilio/vmobj-rwlock/usr.bin/procstat/   (props changed)
      user/attilio/vmobj-rwlock/usr.sbin/bhyve/   (props changed)
    
    Modified: user/attilio/vmobj-rwlock/UPDATING
    ==============================================================================
    --- user/attilio/vmobj-rwlock/UPDATING	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/UPDATING	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	disable the most expensive debugging functionality run
     	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
     
    +20130301:
    +	The ctl device has been disabled in GENERIC for i386 and amd64.
    +	This was done due to the extra memory being allocated at system
    +	initialisation time by the ctl driver which was only used if
    +	a CAM target device was created.  This makes a FreeBSD system
    +	unusable on 128MB or less of RAM.
    +
     20130208:
     	A new compression method (lz4) has been merged to -HEAD.  Please
     	refer to zpool-features(7) for more information.
    @@ -46,8 +53,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
     	unlikely event that -M was the last option on the command line
     	and the command line contained at least two files and a target
     	directory the first file will have logs appended to it.  The -M
    -	option served little practical purpose in the last decade so it's
    -	used expected to be extremely rare.
    +	option served little practical purpose in the last decade so its
    +	use is expected to be extremely rare.
     
     20121223:
     	After switching to Clang as the default compiler some users of ZFS
    
    Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zfs/zfs.8
    ==============================================================================
    --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -526,6 +526,39 @@ if the snapshot has been marked for defe
     .Qq Nm Cm destroy -d
     command. Otherwise, the property is
     .Cm off .
    +.It Sy logicalreferenced
    +The amount of space that is
    +.Qq logically
    +accessible by this dataset.
    +See the
    +.Sy referenced
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +However, it does include space consumed by metadata.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lrefer .
    +.It Sy logicalused
    +The amount of space that is
    +.Qq logically
    +consumed by this dataset and all its descendents.
    +See the
    +.Sy used
    +property.
    +The logical space ignores the effect of the
    +.Sy compression
    +and
    +.Sy copies
    +properties, giving a quantity closer to the amount of data that applications
    +see.
    +.Pp
    +This property can also be referred to by its shortened column name,
    +.Sy lused .
     .It Sy mounted
     For file systems, indicates whether the file system is currently mounted. This
     property can be either
    
    Modified: user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -24,6 +24,7 @@
      * Copyright (c) 2011 Pawel Jakub Dawidek .
      * All rights reserved.
      * Copyright (c) 2011 by Delphix. All rights reserved.
    + * Copyright (c) 2013 Martin Matuska . All rights reserved.
      */
     
     #ifndef	_LIBFS_IMPL_H
    @@ -216,6 +217,7 @@ extern void libzfs_fru_clear(libzfs_hand
     
     #ifndef sun
     static int zfs_kernel_version = 0;
    +static int zfs_ioctl_version = 0;
     
     /*
      * This is FreeBSD version of ioctl, because Solaris' ioctl() updates
    @@ -225,19 +227,34 @@ static int zfs_kernel_version = 0;
     static __inline int
     zcmd_ioctl(int fd, unsigned long cmd, zfs_cmd_t *zc)
     {
    -	size_t oldsize, zfs_kernel_version_size;
    +	size_t oldsize, zfs_kernel_version_size, zfs_ioctl_version_size;
     	int version, ret, cflag = ZFS_CMD_COMPAT_NONE;
     
    -	zfs_kernel_version_size = sizeof(zfs_kernel_version);
    -	if (zfs_kernel_version == 0) {
    -		sysctlbyname("vfs.zfs.version.spa", &zfs_kernel_version,
    -		    &zfs_kernel_version_size, NULL, 0);
    +	zfs_ioctl_version_size = sizeof(zfs_ioctl_version);
    +	if (zfs_ioctl_version == 0) {
    +		sysctlbyname("vfs.zfs.version.ioctl", &zfs_ioctl_version,
    +		    &zfs_ioctl_version_size, NULL, 0);
     	}
     
    -	if (zfs_kernel_version == SPA_VERSION_15 ||
    -	    zfs_kernel_version == SPA_VERSION_14 ||
    -	    zfs_kernel_version == SPA_VERSION_13)
    -		cflag = ZFS_CMD_COMPAT_V15;
    +	/*
    +	 * If vfs.zfs.version.ioctl is not defined, assume we have v28
    +	 * compatible binaries and use vfs.zfs.version.spa to test for v15
    +	 */
    +	if (zfs_ioctl_version < ZFS_IOCVER_DEADMAN) {
    +		cflag = ZFS_CMD_COMPAT_V28;
    +		zfs_kernel_version_size = sizeof(zfs_kernel_version);
    +
    +		if (zfs_kernel_version == 0) {
    +			sysctlbyname("vfs.zfs.version.spa",
    +			    &zfs_kernel_version,
    +			    &zfs_kernel_version_size, NULL, 0);
    +		}
    +
    +		if (zfs_kernel_version == SPA_VERSION_15 ||
    +		    zfs_kernel_version == SPA_VERSION_14 ||
    +		    zfs_kernel_version == SPA_VERSION_13)
    +			cflag = ZFS_CMD_COMPAT_V15;
    +	}
     
     	oldsize = zc->zc_nvlist_dst_size;
     	ret = zcmd_ioctl_compat(fd, cmd, zc, cflag);
    
    Modified: user/attilio/vmobj-rwlock/contrib/openbsm/bin/auditdistd/sender.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/contrib/openbsm/bin/auditdistd/sender.c	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -394,6 +394,7 @@ read_thread_wait(void)
     
     	mtx_lock(&adist_remote_mtx);
     	if (adhost->adh_reset) {
    +reset:
     		adhost->adh_reset = false;
     		if (trail_filefd(adist_trail) != -1)
     			trail_close(adist_trail);
    @@ -408,6 +409,14 @@ read_thread_wait(void)
     	while (trail_filefd(adist_trail) == -1) {
     		newfile = true;
     		wait_for_dir();
    +		/*
    +		 * We may have been disconnected and reconnected in the
    +		 * meantime, check if reset is set.
    +		 */
    +		mtx_lock(&adist_remote_mtx);
    +		if (adhost->adh_reset)
    +			goto reset;
    +		mtx_unlock(&adist_remote_mtx);
     		if (trail_filefd(adist_trail) == -1)
     			trail_next(adist_trail);
     	}
    
    Modified: user/attilio/vmobj-rwlock/contrib/openbsm/etc/audit_event
    ==============================================================================
    --- user/attilio/vmobj-rwlock/contrib/openbsm/etc/audit_event	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/contrib/openbsm/etc/audit_event	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -548,7 +548,7 @@
     43184:AUE_OPENAT:openat(2) - attr only:fa
     43185:AUE_POSIX_OPENPT:posix_openpt(2):ip
     43186:AUE_CAP_NEW:cap_new(2):fm
    -43187:AUE_CAP_GETRIGHTS:cap_getrights(2):fm
    +43187:AUE_CAP_RIGHTS_GET:cap_rights_get(2):fm
     43188:AUE_CAP_ENTER:cap_enter(2):pc
     43189:AUE_CAP_GETMODE:cap_getmode(2):pc
     43190:AUE_POSIX_SPAWN:posix_spawn(2):pc
    @@ -563,6 +563,11 @@
     43199:AUE_PDGETPID:pdgetpid(2):pc
     43200:AUE_PDWAIT:pdwait(2):pc
     43201:AUE_WAIT6:wait6(2):pc
    +43202:AUE_CAP_RIGHTS_LIMIT:cap_rights_limit(2):fm
    +43203:AUE_CAP_IOCTLS_LIMIT:cap_ioctls_limit(2):fm
    +43204:AUE_CAP_IOCTLS_GET:cap_ioctls_get(2):fm
    +43205:AUE_CAP_FCNTLS_LIMIT:cap_fcntls_limit(2):fm
    +43206:AUE_CAP_FCNTLS_GET:cap_fcntls_get(2):fm
     #
     # Solaris userspace events.
     #
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/gen/Makefile.inc
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/gen/Makefile.inc	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/gen/Makefile.inc	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -16,6 +16,7 @@ SRCS+=	__getosreldate.c \
     	assert.c \
     	auxv.c \
     	basename.c \
    +	cap_sandboxed.c \
     	check_utility_compat.c \
     	clock.c \
     	clock_getcpuclockid.c \
    @@ -168,6 +169,7 @@ SYM_MAPS+=${.CURDIR}/gen/Symbol.map
     MAN+=	alarm.3 \
     	arc4random.3 \
     	basename.3 \
    +	cap_sandboxed.3 \
     	check_utility_compat.3 \
     	clock.3 \
     	clock_getcpuclockid.3 \
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.3 (from r247625, head/lib/libc/gen/cap_sandboxed.3)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.3	Sat Mar  2 14:48:41 2013	(r247627, copy of r247625, head/lib/libc/gen/cap_sandboxed.3)
    @@ -0,0 +1,70 @@
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 18, 2012
    +.Dt CAP_SANDBOXED 3
    +.Os
    +.Sh NAME
    +.Nm cap_sandboxed
    +.Nd Check if in a capability mode sandbox
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.In stdbool.h
    +.Ft bool
    +.Fn cap_sandboxed "void"
    +.Sh DESCRIPTION
    +.Fn cap_sandboxed
    +returns
    +.Va true
    +if the process is in a capability mode sandbox or
    +.Va false
    +if it is not.
    +This function is a more handy alternative to the
    +.Xr cap_getmode 2
    +system call as it always succeeds, so there is no need for error checking.
    +If the support for capability mode is not compiled into the kernel,
    +.Fn cap_sandboxed
    +will always return
    +.Va false .
    +.Sh RETURN VALUES
    +Function
    +.Fn cap_sandboxed
    +is always successful and will return either
    +.Va true
    +or
    +.Va false .
    +.Sh SEE ALSO
    +.Xr cap_enter 2 ,
    +.Xr capsicum 4
    +.Sh AUTHORS
    +This function was implemented and manual page was written by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.c (from r247625, head/lib/libc/gen/cap_sandboxed.c)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/gen/cap_sandboxed.c	Sat Mar  2 14:48:41 2013	(r247627, copy of r247625, head/lib/libc/gen/cap_sandboxed.c)
    @@ -0,0 +1,50 @@
    +/*-
    + * Copyright (c) 2012 The FreeBSD Foundation
    + * All rights reserved.
    + *
    + * This software was developed by Pawel Jakub Dawidek under sponsorship from
    + * the FreeBSD Foundation.
    + *
    + * 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 AUTHORS 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 AUTHORS 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$");
    +
    +#include 
    +
    +#include 
    +#include 
    +#include 
    +
    +bool
    +cap_sandboxed(void)
    +{
    +	u_int mode;
    +
    +	if (cap_getmode(&mode) != 0) {
    +		assert(errno == ENOSYS);
    +		return (false);
    +	}
    +	assert(mode == 0 || mode == 1);
    +	return (mode == 1);
    +}
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/include/compat.h
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/include/compat.h	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/include/compat.h	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -42,6 +42,8 @@ __sym_compat(__semctl, freebsd7___semctl
     __sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
     __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
     
    +__sym_compat(cap_getrights, cap_rights_get, FBSD_1.2);
    +
     #undef __sym_compat
     
     #endif	/* __LIBC_COMPAT_H__ */
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/regex/regcomp.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/regex/regcomp.c	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/regex/regcomp.c	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -1212,7 +1212,7 @@ CHaddrange(struct parse *p, cset *cs, wi
     	}
     	cs->ranges = newranges;
     	cs->ranges[cs->nranges].min = min;
    -	cs->ranges[cs->nranges].min = max;
    +	cs->ranges[cs->nranges].max = max;
     	cs->nranges++;
     }
     
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/rpc/clnt_vc.c
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/rpc/clnt_vc.c	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -260,7 +260,7 @@ clnt_vc_create(fd, raddr, prog, vers, se
     	if (ct->ct_addr.buf == NULL)
     		goto err;
     	memcpy(ct->ct_addr.buf, raddr->buf, raddr->len);
    -	ct->ct_addr.len = raddr->maxlen;
    +	ct->ct_addr.len = raddr->len;
     	ct->ct_addr.maxlen = raddr->maxlen;
     
     	/*
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/sys/Makefile.inc
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/sys/Makefile.inc	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/Makefile.inc	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -93,7 +93,9 @@ MAN+=	abort2.2 \
     	bind.2 \
     	brk.2 \
     	cap_enter.2 \
    -	cap_new.2 \
    +	cap_fcntls_limit.2 \
    +	cap_ioctls_limit.2 \
    +	cap_rights_limit.2 \
     	chdir.2 \
     	chflags.2 \
     	chmod.2 \
    @@ -270,7 +272,9 @@ MLINKS+=access.2 eaccess.2 \
     	access.2 faccessat.2
     MLINKS+=brk.2 sbrk.2
     MLINKS+=cap_enter.2 cap_getmode.2
    -MLINKS+=cap_new.2 cap_getrights.2
    +MLINKS+=cap_fcntls_limit.2 cap_fcntls_get.2
    +MLINKS+=cap_ioctls_limit.2 cap_ioctls_get.2
    +MLINKS+=cap_rights_limit.2 cap_rights_get.2
     MLINKS+=chdir.2 fchdir.2
     MLINKS+=chflags.2 fchflags.2 \
     	chflags.2 lchflags.2
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/sys/Symbol.map
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/sys/Symbol.map	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/Symbol.map	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -364,7 +364,6 @@ FBSD_1.2 {
     	cap_enter;
     	cap_getmode;
     	cap_new;
    -	cap_getrights;
     	getloginclass;
     	pdfork;
     	pdgetpid;
    @@ -379,6 +378,13 @@ FBSD_1.2 {
     };
     
     FBSD_1.3 {
    +	cap_fcntls_get;
    +	cap_fcntls_limit;
    +	cap_ioctls_get;
    +	cap_ioctls_limit;
    +	cap_rights_get;
    +	cap_rights_limit;
    +	cap_sandboxed;
     	clock_getcpuclockid2;
     	ffclock_getcounter;
     	ffclock_getestimate;
    
    Modified: user/attilio/vmobj-rwlock/lib/libc/sys/cap_enter.2
    ==============================================================================
    --- user/attilio/vmobj-rwlock/lib/libc/sys/cap_enter.2	Sat Mar  2 14:47:10 2013	(r247626)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/cap_enter.2	Sat Mar  2 14:48:41 2013	(r247627)
    @@ -58,8 +58,10 @@ or
     .Xr pdfork 2
     will be placed in capability mode from inception.
     .Pp
    -When combined with capabilities created with
    -.Xr cap_new 2 ,
    +When combined with
    +.Xr cap_rights_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_fcntls_limit 2 ,
     .Fn cap_enter
     may be used to create kernel-enforced sandboxes in which
     appropriately-crafted applications or application components may be run.
    @@ -71,11 +73,6 @@ sandbox.
     Creating effective process sandboxes is a tricky process that involves
     identifying the least possible rights required by the process and then
     passing those rights into the process in a safe manner.
    -See the CAVEAT
    -section of
    -.Xr cap_new 2
    -for why this is particularly tricky with UNIX file descriptors as the
    -canonical representation of a right.
     Consumers of
     .Fn cap_enter
     should also be aware of other inherited rights, such as access to VM
    @@ -87,9 +84,35 @@ to create a runtime environment inside t
     acquired rights as possible.
     .Sh RETURN VALUES
     .Rv -std cap_enter cap_getmode
    +.Sh ERRORS
    +The
    +.Fn cap_enter
    +and
    +.Fn cap_getmode
    +system calls
    +will fail if:
    +.Bl -tag -width Er
    +.It Bq Er ENOSYS
    +The kernel is compiled without:
    +.Pp
    +.Cd "options CAPABILITY_MODE"
    +.El
    +.Pp
    +The
    +.Fn cap_getmode
    +system call may also return the following error:
    +.Bl -tag -width Er
    +.It Bq Er EFAULT
    +Pointer
    +.Fa modep
    +points outside the process's allocated address space.
    +.El
     .Sh SEE ALSO
    -.Xr cap_new 2 ,
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
     .Xr fexecve 2 ,
    +.Xr cap_sandboxed 3 ,
     .Xr capsicum 4
     .Sh HISTORY
     Support for capabilities and capabilities mode was developed as part of the
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/sys/cap_fcntls_limit.2 (from r247625, head/lib/libc/sys/cap_fcntls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/cap_fcntls_limit.2	Sat Mar  2 14:48:41 2013	(r247627, copy of r247625, head/lib/libc/sys/cap_fcntls_limit.2)
    @@ -0,0 +1,126 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_FCNTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_fcntls_limit ,
    +.Nm cap_fcntls_get
    +.Nd manage allowed fcntl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_fcntls_limit "int fd" "uint32_t fcntlrights"
    +.Ft int
    +.Fn cap_fcntls_get "int fd" "uint32_t *fcntlrightsp"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_FCNTL
    +capability right, the list of allowed
    +.Xr fcntl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_fcntls_limit
    +system call.
    +.Pp
    +A bitmask of allowed fcntls commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_fcntls_get
    +system call.
    +.Sh FLAGS
    +The following flags may be specified in the
    +.Fa fcntlrights
    +argument or returned in the
    +.Fa fcntlrightsp
    +argument:
    +.Bl -tag -width CAP_FCNTL_GETOWN
    +.It Dv CAP_FCNTL_GETFL
    +Permit
    +.Dv F_GETFL
    +command.
    +.It Dv CAP_FCNTL_SETFL
    +Permit
    +.Dv F_SETFL
    +command.
    +.It Dv CAP_FCNTL_GETOWN
    +Permit
    +.Dv F_GETOWN
    +command.
    +.It Dv CAP_FCNTL_SETOWN
    +Permit
    +.Dv F_SETOWN
    +command.
    +.El
    +.Sh RETURN VALUES
    +.Rv -std
    +.Sh ERRORS
    +.Fn cap_fcntls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EINVAL
    +An invalid flag has been passed in
    +.Fa fcntlrights .
    +.It Bq Er ENOTCAPABLE
    +.Fa fcntlrights
    +would expand the list of allowed
    +.Xr fcntl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_fcntls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa fcntlrightsp
    +argument points at an invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_ioctls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr fcntl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/sys/cap_ioctls_limit.2 (from r247625, head/lib/libc/sys/cap_ioctls_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/cap_ioctls_limit.2	Sat Mar  2 14:48:41 2013	(r247627, copy of r247625, head/lib/libc/sys/cap_ioctls_limit.2)
    @@ -0,0 +1,157 @@
    +.\"
    +.\" Copyright (c) 2012 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This documentation was written by Pawel Jakub Dawidek under sponsorship
    +.\" the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd September 20, 2012
    +.Dt CAP_IOCTLS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_ioctls_limit ,
    +.Nm cap_ioctls_get
    +.Nd manage allowed ioctl commands
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_ioctls_limit "int fd" "const unsigned long *cmds" "size_t ncmds"
    +.Ft ssize_t
    +.Fn cap_ioctls_get "int fd" "unsigned long *cmds" "size_t maxcmds"
    +.Sh DESCRIPTION
    +If a file descriptor is granted the
    +.Dv CAP_IOCTL
    +capability right, the list of allowed
    +.Xr ioctl 2
    +commands can be selectively reduced (but never expanded) with the
    +.Fn cap_ioctls_limit
    +system call.
    +The
    +.Fa cmds
    +argument is an array of
    +.Xr ioctl 2
    +commands and the
    +.Fa ncmds
    +argument specifies the number of elements in the array.
    +There might be up to
    +.Va 256
    +elements in the array.
    +.Pp
    +The list of allowed ioctl commands for a given file descriptor can be obtained
    +with the
    +.Fn cap_ioctls_get
    +system call.
    +The
    +.Fa cmds
    +argument points at memory that can hold up to
    +.Fa maxcmds
    +values.
    +The function populates the provided buffer with up to
    +.Fa maxcmds
    +elements, but always returns the total number of ioctl commands allowed for the
    +given file descriptor.
    +The total number of ioctls commands for the given file descriptor can be
    +obtained by passing
    +.Dv NULL as the
    +.Fa cmds
    +argument and
    +.Va 0
    +as the
    +.Fa maxcmds
    +argument.
    +If all ioctl commands are allowed
    +.Dv ( CAP_IOCTL
    +capability right is assigned to the file descriptor and the
    +.Fn cap_ioctls_limit
    +system call was never called for this file descriptor), the
    +.Fn cap_ioctls_get
    +system call will return
    +.Dv CAP_IOCTLS_ALL
    +and won't modify the buffer pointed out by the
    +.Fa cmds
    +argument.
    +.Sh RETURN VALUES
    +.Rv -std cap_ioctls_limit
    +.Pp
    +The
    +.Fn cap_ioctls_limit
    +function, if successfull, returns the total number of allowed ioctl commands or
    +the value
    +.Dv INT_MAX
    +if all ioctls commands are allowed.
    +On failure the value
    +.Va -1
    +is returned and the global variable errno is set to indicate the error.
    +.Sh ERRORS
    +.Fn cap_ioctls_limit
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at an invalid address.
    +.It Bq Er EINVAL
    +The
    +.Fa ncmds
    +argument is greater than
    +.Va 256 .
    +.It Bq Er ENOTCAPABLE
    +.Fa cmds
    +would expand the list of allowed
    +.Xr ioctl 2
    +commands.
    +.El
    +.Pp
    +.Fn cap_ioctls_get
    +succeeds unless:
    +.Bl -tag -width Er
    +.It Bq Er EBADF
    +The
    +.Fa fd
    +argument is not a valid descriptor.
    +.It Bq Er EFAULT
    +The
    +.Fa cmds
    +argument points at invalid address.
    +.El
    +.Sh SEE ALSO
    +.Xr cap_fcntls_limit 2 ,
    +.Xr cap_rights_limit 2 ,
    +.Xr ioctl 2
    +.Sh HISTORY
    +Support for capabilities and capabilities mode was developed as part of the
    +.Tn TrustedBSD
    +Project.
    +.Sh AUTHORS
    +This function was created by
    +.An Pawel Jakub Dawidek Aq pawel@dawidek.net
    +under sponsorship of the FreeBSD Foundation.
    
    Copied: user/attilio/vmobj-rwlock/lib/libc/sys/cap_rights_limit.2 (from r247625, head/lib/libc/sys/cap_rights_limit.2)
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ user/attilio/vmobj-rwlock/lib/libc/sys/cap_rights_limit.2	Sat Mar  2 14:48:41 2013	(r247627, copy of r247625, head/lib/libc/sys/cap_rights_limit.2)
    @@ -0,0 +1,602 @@
    +.\"
    +.\" Copyright (c) 2008-2010 Robert N. M. Watson
    +.\" Copyright (c) 2012-2013 The FreeBSD Foundation
    +.\" All rights reserved.
    +.\"
    +.\" This software was developed at the University of Cambridge Computer
    +.\" Laboratory with support from a grant from Google, Inc.
    +.\"
    +.\" Portions of this documentation were written by Pawel Jakub Dawidek
    +.\" under sponsorship from the FreeBSD Foundation.
    +.\"
    +.\" 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.
    +.\"
    +.\" $FreeBSD$
    +.\"
    +.Dd February 23, 2013
    +.Dt CAP_RIGHTS_LIMIT 2
    +.Os
    +.Sh NAME
    +.Nm cap_rights_limit ,
    +.Nm cap_rights_get
    +.Nd manage capability rights
    +.Sh LIBRARY
    +.Lb libc
    +.Sh SYNOPSIS
    +.In sys/capability.h
    +.Ft int
    +.Fn cap_rights_limit "int fd" "cap_rights_t rights"
    +.Ft int
    +.Fn cap_rights_get "int fd" "cap_rights_t *rightsp"
    +.Sh DESCRIPTION
    +When a file descriptor is created by a function such as
    +.Xr fhopen 2 ,
    +.Xr kqueue 2 ,
    +.Xr mq_open 2 ,
    +.Xr open 2 ,
    +.Xr openat 2 ,
    +.Xr pdfork 2 ,
    +.Xr pipe 2 ,
    +.Xr shm_open 2 ,
    +.Xr socket 2 ,
    +or
    +.Xr socketpair 2 ,
    +it is assigned all capability rights.
    +Those rights can be reduced (but never expanded) by using the
    +.Fn cap_rights_limit
    +system call.
    +Once capability rights are reduced, operations on the file descriptor will be
    +limited to those permitted by
    +.Fa rights .
    +.Pp
    +A bitmask of capability rights assigned to a file descriptor can be obtained with
    +the
    +.Fn cap_rights_get
    +system call.
    +.Sh RIGHTS
    +The following rights may be specified in a rights mask:
    +.Bl -tag -width CAP_EXTATTR_DELETE
    +.It Dv CAP_ACCEPT
    +Permit
    +.Xr accept 2 .
    +.It Dv CAP_ACL_CHECK
    +Permit checking of an ACL on a file descriptor; there is no cross-reference
    +for this system call.
    +.It Dv CAP_ACL_DELETE
    +Permit
    +.Xr acl_delete_fd_np 3 .
    +.It Dv CAP_ACL_GET
    +Permit
    +.Xr acl_get_fd 3
    +and
    +.Xr acl_get_fd_np 3 .
    +.It Dv CAP_ACL_SET
    +Permit
    +.Xr acl_set_fd 3
    +and
    +.Xr acl_set_fd_np 3 .
    +.It Dv CAP_BIND
    +Permit
    +.Xr bind 2 .
    +Note that sockets can also become bound implicitly as a result of
    +.Xr connect 2
    +or
    +.Xr send 2 ,
    +and that socket options set with
    +.Xr setsockopt 2
    +may also affect binding behavior.
    +.It Dv CAP_CONNECT
    +Permit
    +.Xr connect 2 ;
    +also required for
    +.Xr sendto 2
    +with a non-NULL destination address.
    +.It Dv CAP_CREATE
    +Permit
    +.Xr openat 2
    +with the
    +.Dv O_CREAT
    +flag.
    +.\" XXXPJD: Doesn't exist anymore.
    +.It Dv CAP_EVENT
    +Permit
    +.Xr select 2 ,
    +.Xr poll 2 ,
    +and
    +.Xr kevent 2
    +to be used in monitoring the file descriptor for events.
    +.It Dv CAP_FEXECVE
    +Permit
    +.Xr fexecve 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_EXEC
    +flag;
    +.Dv CAP_READ
    +will also be required.
    +.It Dv CAP_EXTATTR_DELETE
    +Permit
    +.Xr extattr_delete_fd 2 .
    +.It Dv CAP_EXTATTR_GET
    +Permit
    +.Xr extattr_get_fd 2 .
    +.It Dv CAP_EXTATTR_LIST
    +Permit
    +.Xr extattr_list_fd 2 .
    +.It Dv CAP_EXTATTR_SET
    +Permit
    +.Xr extattr_set_fd 2 .
    +.It Dv CAP_FCHDIR
    +Permit
    +.Xr fchdir 2 .
    +.It Dv CAP_FCHFLAGS
    +Permit
    +.Xr fchflags 2 .
    +.It Dv CAP_FCHMOD
    +Permit
    +.Xr fchmod 2
    +and
    +.Xr fchmodat 2 .
    +.It Dv CAP_FCHMODAT
    +An alias to
    +.Dv CAP_FCHMOD .
    +.It Dv CAP_FCHOWN
    +Permit
    +.Xr fchown 2
    +and
    +.Xr fchownat 2 .
    +.It Dv CAP_FCHOWNAT
    +An alias to
    +.Dv CAP_FCHOWN .
    +.It Dv CAP_FCNTL
    +Permit
    +.Xr fcntl 2 .
    +Note that only the
    +.Dv F_GETFL ,
    +.Dv F_SETFL ,
    +.Dv F_GETOWN
    +and
    +.Dv F_SETOWN
    +commands require this capability right.
    +Also note that the list of permitted commands can be further limited with the
    +.Xr cap_fcntls_limit 2
    +system call.
    +.It Dv CAP_FLOCK
    +Permit
    +.Xr flock 2 ,
    +.Xr fcntl 2
    +(with
    +.Dv F_GETLK ,
    +.Dv F_SETLK
    +or
    +.Dv F_SETLKW
    +flag) and
    +.Xr openat 2
    +(with
    +.Dv O_EXLOCK
    +or
    +.Dv O_SHLOCK
    +flag).
    +.It Dv CAP_FPATHCONF
    +Permit
    +.Xr fpathconf 2 .
    +.It Dv CAP_FSCK
    +Permit UFS background-fsck operations on the descriptor.
    +.It Dv CAP_FSTAT
    +Permit
    +.Xr fstat 2
    +and
    +.Xr fstatat 2 .
    +.It Dv CAP_FSTATAT
    +An alias to
    +.Dv CAP_FSTAT .
    +.It Dv CAP_FSTATFS
    +Permit
    +.Xr fstatfs 2 .
    +.It Dv CAP_FSYNC
    +Permit
    +.Xr aio_fsync 2 ,
    +.Xr fsync 2
    +and
    +.Xr openat 2
    +with
    +.Dv O_FSYNC
    +or
    +.Dv O_SYNC
    +flag.
    +.It Dv CAP_FTRUNCATE
    +Permit
    +.Xr ftruncate 2
    +and
    +.Xr openat 2
    +with the
    +.Dv O_TRUNC
    +flag.
    +.It Dv CAP_FUTIMES
    +Permit
    +.Xr futimes 2
    +and
    +.Xr futimesat 2 .
    +.It Dv CAP_FUTIMESAT
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 17:06:40 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id F13549ED;
     Sat,  2 Mar 2013 17:06:40 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id D8DAF82C;
     Sat,  2 Mar 2013 17:06:40 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22H6eof067746;
     Sat, 2 Mar 2013 17:06:40 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22H6eRl067742;
     Sat, 2 Mar 2013 17:06:40 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201303021706.r22H6eRl067742@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Sat, 2 Mar 2013 17:06:40 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247642 - in user/dchagin/lemul/sys: amd64/linux32
     i386/linux kern sys
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 17:06:41 -0000
    
    Author: dchagin
    Date: Sat Mar  2 17:06:39 2013
    New Revision: 247642
    URL: http://svnweb.freebsd.org/changeset/base/247642
    
    Log:
      To allow to run the interpreter itself add a new ELF branding type.
      Allow Linux ABI to run ELF interpreter.
    
    Modified:
      user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c
      user/dchagin/lemul/sys/i386/linux/linux_sysvec.c
      user/dchagin/lemul/sys/kern/imgact_elf.c
      user/dchagin/lemul/sys/sys/imgact_elf.h
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c	Sat Mar  2 16:45:58 2013	(r247641)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c	Sat Mar  2 17:06:39 2013	(r247642)
    @@ -1105,7 +1105,7 @@ static Elf32_Brandinfo linux_brand = {
     	.sysvec		= &elf_linux_sysvec,
     	.interp_newpath	= NULL,
     	.brand_note	= &linux32_brandnote,
    -	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE
    +	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE | BI_CAN_EXEC_INTERP
     };
     
     static Elf32_Brandinfo linux_glibc2brand = {
    @@ -1117,7 +1117,7 @@ static Elf32_Brandinfo linux_glibc2brand
     	.sysvec		= &elf_linux_sysvec,
     	.interp_newpath	= NULL,
     	.brand_note	= &linux32_brandnote,
    -	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE
    +	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE | BI_CAN_EXEC_INTERP
     };
     
     Elf32_Brandinfo *linux_brandlist[] = {
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_sysvec.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_sysvec.c	Sat Mar  2 16:45:58 2013	(r247641)
    +++ user/dchagin/lemul/sys/i386/linux/linux_sysvec.c	Sat Mar  2 17:06:39 2013	(r247642)
    @@ -1078,7 +1078,7 @@ static Elf32_Brandinfo linux_brand = {
     	.sysvec		= &elf_linux_sysvec,
     	.interp_newpath	= NULL,
     	.brand_note	= &linux_brandnote,
    -	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE
    +	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE | BI_CAN_EXEC_INTERP 
     };
     
     static Elf32_Brandinfo linux_glibc2brand = {
    @@ -1090,7 +1090,7 @@ static Elf32_Brandinfo linux_glibc2brand
     	.sysvec		= &elf_linux_sysvec,
     	.interp_newpath	= NULL,
     	.brand_note	= &linux_brandnote,
    -	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE
    +	.flags		= BI_CAN_EXEC_DYN | BI_BRAND_NOTE | BI_CAN_EXEC_INTERP 
     };
     
     Elf32_Brandinfo *linux_brandlist[] = {
    
    Modified: user/dchagin/lemul/sys/kern/imgact_elf.c
    ==============================================================================
    --- user/dchagin/lemul/sys/kern/imgact_elf.c	Sat Mar  2 16:45:58 2013	(r247641)
    +++ user/dchagin/lemul/sys/kern/imgact_elf.c	Sat Mar  2 17:06:39 2013	(r247642)
    @@ -258,6 +258,8 @@ __elfN(get_brandinfo)(struct image_param
     {
     	const Elf_Ehdr *hdr = (const Elf_Ehdr *)imgp->image_header;
     	Elf_Brandinfo *bi;
    +	const char *fname_name, *interp_brand_name;
    +	int fname_len, interp_len;
     	boolean_t ret;
     	int i;
     
    @@ -308,6 +310,33 @@ __elfN(get_brandinfo)(struct image_param
     		}
     	}
     
    +	/* Some ABI allows to run the interpreter itself. */
    +	for (i = 0; i < MAX_BRANDS; i++) {
    +		bi = elf_brand_list[i];
    +		if (bi == NULL || bi->flags & BI_BRAND_NOTE_MANDATORY)
    +			continue;
    +		if (hdr->e_machine != bi->machine ||
    +		    (bi->flags & BI_CAN_EXEC_INTERP) == 0)
    +			continue;
    +		/*
    +		 * Compare the interpreter name not the path to allow run it
    +		 * from everywhere.
    +		 */
    +		interp_brand_name = strrchr(bi->interp_path, '/');
    +		if (interp_brand_name == NULL)
    +			interp_brand_name = bi->interp_path;
    +		interp_len = strlen(interp_brand_name);
    +		fname_name = strrchr(imgp->args->fname, '/');
    +		if (fname_name == NULL)
    +			fname_name = imgp->args->fname;
    +		fname_len = strlen(fname_name);
    +		if (fname_len < interp_len)
    +			continue;
    +		ret = strncmp(fname_name, interp_brand_name, interp_len);
    +		if (ret == 0)
    +			return (bi);
    +	}
    +
     	/* Lacking a recognized interpreter, try the default brand */
     	for (i = 0; i < MAX_BRANDS; i++) {
     		bi = elf_brand_list[i];
    
    Modified: user/dchagin/lemul/sys/sys/imgact_elf.h
    ==============================================================================
    --- user/dchagin/lemul/sys/sys/imgact_elf.h	Sat Mar  2 16:45:58 2013	(r247641)
    +++ user/dchagin/lemul/sys/sys/imgact_elf.h	Sat Mar  2 17:06:39 2013	(r247642)
    @@ -77,6 +77,7 @@ typedef struct {
     #define	BI_CAN_EXEC_DYN		0x0001
     #define	BI_BRAND_NOTE		0x0002	/* May have note.ABI-tag section. */
     #define	BI_BRAND_NOTE_MANDATORY	0x0004	/* Must have note.ABI-tag section. */
    +#define	BI_CAN_EXEC_INTERP	0x0008	/* Allow to run interpreter itself. */
     } __ElfN(Brandinfo);
     
     __ElfType(Auxargs);
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 17:08:15 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 5B567B09;
     Sat,  2 Mar 2013 17:08:15 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 4E70F831;
     Sat,  2 Mar 2013 17:08:15 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22H8FvI068053;
     Sat, 2 Mar 2013 17:08:15 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22H8E9S068049;
     Sat, 2 Mar 2013 17:08:14 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201303021708.r22H8E9S068049@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Sat, 2 Mar 2013 17:08:14 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247643 - in user/dchagin/lemul/sys: amd64/linux32
     i386/linux
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 17:08:15 -0000
    
    Author: dchagin
    Date: Sat Mar  2 17:08:14 2013
    New Revision: 247643
    URL: http://svnweb.freebsd.org/changeset/base/247643
    
    Log:
      Linux do not allow an mmap() offset which is not modulo the pagesize.
    
    Modified:
      user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c
      user/dchagin/lemul/sys/i386/linux/linux_machdep.c
    
    Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c
    ==============================================================================
    --- user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c	Sat Mar  2 17:06:39 2013	(r247642)
    +++ user/dchagin/lemul/sys/amd64/linux32/linux32_machdep.c	Sat Mar  2 17:08:14 2013	(r247643)
    @@ -522,6 +522,13 @@ linux_mmap_common(struct thread *td, l_u
     	fp = NULL;
     
     	/*
    +	 * Linux do not allow an offset which is not
    +	 * modulo the pagesize.
    +	 */
    +	if (pos & PAGE_MASK)
    +		return (EINVAL);
    +
    +	/*
     	 * Linux mmap(2):
     	 * You must specify exactly one of MAP_SHARED and MAP_PRIVATE
     	 */
    
    Modified: user/dchagin/lemul/sys/i386/linux/linux_machdep.c
    ==============================================================================
    --- user/dchagin/lemul/sys/i386/linux/linux_machdep.c	Sat Mar  2 17:06:39 2013	(r247642)
    +++ user/dchagin/lemul/sys/i386/linux/linux_machdep.c	Sat Mar  2 17:08:14 2013	(r247643)
    @@ -426,6 +426,13 @@ linux_mmap_common(struct thread *td, l_u
     	fp = NULL;
     
     	/*
    +	 * Linux do not allow an offset which is not
    +	 * modulo the pagesize.
    +	 */
    +	if (pos & PAGE_MASK)
    +		return (EINVAL);
    +
    +	/*
     	 * Linux mmap(2):
     	 * You must specify exactly one of MAP_SHARED and MAP_PRIVATE
     	 */
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 18:18:31 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 0D8765E9;
     Sat,  2 Mar 2013 18:18:31 +0000 (UTC) (envelope-from alc@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id C774DB24;
     Sat,  2 Mar 2013 18:18:30 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22IIUAh090418;
     Sat, 2 Mar 2013 18:18:30 GMT (envelope-from alc@svn.freebsd.org)
    Received: (from alc@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22IIU9s090417;
     Sat, 2 Mar 2013 18:18:30 GMT (envelope-from alc@svn.freebsd.org)
    Message-Id: <201303021818.r22IIU9s090417@svn.freebsd.org>
    From: Alan Cox 
    Date: Sat, 2 Mar 2013 18:18:30 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247661 - user/attilio/vmc-playground/sys/vm
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 18:18:31 -0000
    
    Author: alc
    Date: Sat Mar  2 18:18:30 2013
    New Revision: 247661
    URL: http://svnweb.freebsd.org/changeset/base/247661
    
    Log:
      Assert that the trie is empty when a vm object is destroyed.
      
      Since vm objects are allocated from type-stable memory, we don't need to
      initialize the trie's root in _vm_object_allocate() on every vm object
      allocation.  We can instead do it once in vm_object_zinit().
      
      We don't need to call vm_radix_reclaim_allnodes() in vm_object_terminate()
      unless the resident page count is non-zero.
      
      Reviewed by:	attilio
      Sponsored by:	EMC / Isilon Storage Division
    
    Modified:
      user/attilio/vmc-playground/sys/vm/vm_object.c
    
    Modified: user/attilio/vmc-playground/sys/vm/vm_object.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/vm/vm_object.c	Sat Mar  2 18:08:03 2013	(r247660)
    +++ user/attilio/vmc-playground/sys/vm/vm_object.c	Sat Mar  2 18:18:30 2013	(r247661)
    @@ -166,8 +166,9 @@ vm_object_zdtor(void *mem, int size, voi
     
     	object = (vm_object_t)mem;
     	KASSERT(TAILQ_EMPTY(&object->memq),
    -	    ("object %p has resident pages",
    -	    object));
    +	    ("object %p has resident pages in its memq", object));
    +	KASSERT(object->rtree.rt_root == 0,
    +	    ("object %p has resident pages in its trie", object));
     #if VM_NRESERVLEVEL > 0
     	KASSERT(LIST_EMPTY(&object->rvq),
     	    ("object %p has reservations",
    @@ -198,6 +199,7 @@ vm_object_zinit(void *mem, int size, int
     	mtx_init(&object->mtx, "vm object", NULL, MTX_DEF | MTX_DUPOK);
     
     	/* These are true for any object that has been freed */
    +	object->rtree.rt_root = 0;
     	object->paging_in_progress = 0;
     	object->resident_page_count = 0;
     	object->shadow_count = 0;
    @@ -211,7 +213,6 @@ _vm_object_allocate(objtype_t type, vm_p
     	TAILQ_INIT(&object->memq);
     	LIST_INIT(&object->shadow_head);
     
    -	object->rtree.rt_root = 0;
     	object->type = type;
     	switch (type) {
     	case OBJT_DEAD:
    @@ -736,13 +737,14 @@ vm_object_terminate(vm_object_t object)
     		}
     		vm_page_unlock(p);
     	}
    -	vm_radix_reclaim_allnodes(&object->rtree);
    +
     	/*
     	 * If the object contained any pages, then reset it to an empty state.
     	 * None of the object's fields, including "resident_page_count", were
     	 * modified by the preceding loop.
     	 */
     	if (object->resident_page_count != 0) {
    +		vm_radix_reclaim_allnodes(&object->rtree);
     		TAILQ_INIT(&object->memq);
     		object->resident_page_count = 0;
     		if (object->type == OBJT_VNODE)
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 18:27:52 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by hub.freebsd.org (Postfix) with ESMTP id 7F98BA21;
     Sat,  2 Mar 2013 18:27:52 +0000 (UTC) (envelope-from alc@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 68A3ABD6;
     Sat,  2 Mar 2013 18:27:52 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22IRqt6093319;
     Sat, 2 Mar 2013 18:27:52 GMT (envelope-from alc@svn.freebsd.org)
    Received: (from alc@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22IRqN4093318;
     Sat, 2 Mar 2013 18:27:52 GMT (envelope-from alc@svn.freebsd.org)
    Message-Id: <201303021827.r22IRqN4093318@svn.freebsd.org>
    From: Alan Cox 
    Date: Sat, 2 Mar 2013 18:27:52 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247663 - user/attilio/vmc-playground/sys/vm
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 18:27:52 -0000
    
    Author: alc
    Date: Sat Mar  2 18:27:51 2013
    New Revision: 247663
    URL: http://svnweb.freebsd.org/changeset/base/247663
    
    Log:
      Revert white space change in the previous commit.
      
      Requested by:	attilio
    
    Modified:
      user/attilio/vmc-playground/sys/vm/vm_object.c
    
    Modified: user/attilio/vmc-playground/sys/vm/vm_object.c
    ==============================================================================
    --- user/attilio/vmc-playground/sys/vm/vm_object.c	Sat Mar  2 18:23:59 2013	(r247662)
    +++ user/attilio/vmc-playground/sys/vm/vm_object.c	Sat Mar  2 18:27:51 2013	(r247663)
    @@ -737,7 +737,6 @@ vm_object_terminate(vm_object_t object)
     		}
     		vm_page_unlock(p);
     	}
    -
     	/*
     	 * If the object contained any pages, then reset it to an empty state.
     	 * None of the object's fields, including "resident_page_count", were
    
    From owner-svn-src-user@FreeBSD.ORG  Sat Mar  2 18:38:30 2013
    Return-Path: 
    Delivered-To: svn-src-user@freebsd.org
    Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
     by hub.freebsd.org (Postfix) with ESMTP id 0F782EB0;
     Sat,  2 Mar 2013 18:38:30 +0000 (UTC)
     (envelope-from dchagin@FreeBSD.org)
    Received: from svn.freebsd.org (svn.freebsd.org
     [IPv6:2001:1900:2254:2068::e6a:0])
     by mx1.freebsd.org (Postfix) with ESMTP id 027B9CB8;
     Sat,  2 Mar 2013 18:38:30 +0000 (UTC)
    Received: from svn.freebsd.org ([127.0.1.70])
     by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r22IcTcH096523;
     Sat, 2 Mar 2013 18:38:29 GMT (envelope-from dchagin@svn.freebsd.org)
    Received: (from dchagin@localhost)
     by svn.freebsd.org (8.14.5/8.14.5/Submit) id r22IcTCo096522;
     Sat, 2 Mar 2013 18:38:29 GMT (envelope-from dchagin@svn.freebsd.org)
    Message-Id: <201303021838.r22IcTCo096522@svn.freebsd.org>
    From: Dmitry Chagin 
    Date: Sat, 2 Mar 2013 18:38:29 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-user@freebsd.org
    Subject: svn commit: r247664 - user/dchagin/lemul/sys/compat/linux
    X-SVN-Group: user
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-user@freebsd.org
    X-Mailman-Version: 2.1.14
    Precedence: list
    List-Id: "SVN commit messages for the experimental " user"
     src tree" 
    List-Unsubscribe: ,
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Sat, 02 Mar 2013 18:38:30 -0000
    
    Author: dchagin
    Date: Sat Mar  2 18:38:29 2013
    New Revision: 247664
    URL: http://svnweb.freebsd.org/changeset/base/247664
    
    Log:
      Fix a bug introduced in r247493.
      Use proper type to handle ia32 pointers.
    
    Modified:
      user/dchagin/lemul/sys/compat/linux/linux_misc.c
    
    Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c
    ==============================================================================
    --- user/dchagin/lemul/sys/compat/linux/linux_misc.c	Sat Mar  2 18:27:51 2013	(r247663)
    +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c	Sat Mar  2 18:38:29 2013	(r247664)
    @@ -118,7 +118,7 @@ struct l_sysinfo {
     };
     
     struct l_pselect6arg {
    -	l_sigset_t	*ss;
    +	l_uintptr_t	ss;
     	l_size_t	ss_len;
     };
     
    @@ -2095,7 +2095,7 @@ linux_pselect6(struct thread *td, struct
     			return (error);
     		if (lpse6.ss_len != sizeof(l_ss))
     			return (EINVAL);
    -		error = copyin(lpse6.ss, &l_ss, sizeof(l_ss));
    +		error = copyin(PTRIN(lpse6.ss), &l_ss, sizeof(l_ss));
     		if (error)
     			return (error);
     		linux_to_bsd_sigset(&l_ss, &ss);