From owner-svn-src-projects@FreeBSD.ORG Sun May 24 11:52:08 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1C59106566C; Sun, 24 May 2009 11:52:08 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 907758FC0A; Sun, 24 May 2009 11:52:08 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OBq8Yf088868; Sun, 24 May 2009 11:52:08 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OBq8bR088867; Sun, 24 May 2009 11:52:08 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905241152.n4OBq8bR088867@svn.freebsd.org> From: Rui Paulo Date: Sun, 24 May 2009 11:52:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192680 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 11:52:09 -0000 Author: rpaulo Date: Sun May 24 11:52:08 2009 New Revision: 192680 URL: http://svn.freebsd.org/changeset/base/192680 Log: Add a discard note and fix spacing. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Sun May 24 11:37:10 2009 (r192679) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Sun May 24 11:52:08 2009 (r192680) @@ -183,6 +183,10 @@ ieee80211_hwmp_recv_action(struct ieee80 break; case IEEE80211_ACTION_MESHPATH_ERR: break; + default: + IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_MESH, + ni->ni_macaddr, NULL, + "unknown path action 0x%x", ia->ia_action); } } @@ -206,7 +210,7 @@ ieee80211_add_meshprep(uint8_t *frm, str *frm++ = sizeof(struct ieee80211_meshprep_ie) - 2; *frm++ = prep->prep_flags; *frm++ = prep->prep_hopcount; - *frm++ = prep->prep_ttl; + *frm++ = prep->prep_ttl; IEEE80211_ADDR_COPY(frm, prep->prep_targetaddr); frm += 6; ADDWORD(frm, prep->prep_targetseq); From owner-svn-src-projects@FreeBSD.ORG Sun May 24 21:41:05 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A8D11065675; Sun, 24 May 2009 21:41:05 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 483348FC21; Sun, 24 May 2009 21:41:05 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OLf5U3001944; Sun, 24 May 2009 21:41:05 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OLf5WY001943; Sun, 24 May 2009 21:41:05 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905242141.n4OLf5WY001943@svn.freebsd.org> From: Robert Watson Date: Sun, 24 May 2009 21:41:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192699 - projects/pnet/sys/netipsec X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 21:41:05 -0000 Author: rwatson Date: Sun May 24 21:41:05 2009 New Revision: 192699 URL: http://svn.freebsd.org/changeset/base/192699 Log: Fix IPSEC build with NETISR2 following KPI change for netisr2. Submitted by: bz Modified: projects/pnet/sys/netipsec/ipsec_input.c Modified: projects/pnet/sys/netipsec/ipsec_input.c ============================================================================== --- projects/pnet/sys/netipsec/ipsec_input.c Sun May 24 21:00:02 2009 (r192698) +++ projects/pnet/sys/netipsec/ipsec_input.c Sun May 24 21:41:05 2009 (r192699) @@ -488,7 +488,7 @@ ipsec4_common_input_cb(struct mbuf *m, s * XXXRW: Is this ordering sufficient? Perhaps should be * m->m_pkthdr.rcvif? */ - if ((error = netisr2_queue(NETISR_IP, (uintptr_t)sav, m))) { + if ((error = netisr2_queue_src(NETISR_IP, (uintptr_t)sav, m))) { #else if ((error = netisr_queue(NETISR_IP, m))) { #endif From owner-svn-src-projects@FreeBSD.ORG Sun May 24 22:00:21 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D16351065677; Sun, 24 May 2009 22:00:21 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BAC8B8FC13; Sun, 24 May 2009 22:00:21 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OM0LaG002379; Sun, 24 May 2009 22:00:21 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OM0Li5002371; Sun, 24 May 2009 22:00:21 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905242200.n4OM0Li5002371@svn.freebsd.org> From: John Birrell Date: Sun, 24 May 2009 22:00:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192700 - in projects/jbuild: . bin/chflags bin/cp bin/ps contrib/bind9 contrib/cpio contrib/csup contrib/gcc/config/mips contrib/gdb contrib/gdtoa contrib/less contrib/libpcap contrib/... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 22:00:22 -0000 Author: jb Date: Sun May 24 22:00:20 2009 New Revision: 192700 URL: http://svn.freebsd.org/changeset/base/192700 Log: MFC Added: projects/jbuild/crypto/openssh/auth2-jpake.c - copied unchanged from r192698, head/crypto/openssh/auth2-jpake.c projects/jbuild/crypto/openssh/jpake.c - copied unchanged from r192698, head/crypto/openssh/jpake.c projects/jbuild/crypto/openssh/jpake.h - copied unchanged from r192698, head/crypto/openssh/jpake.h projects/jbuild/crypto/openssh/schnorr.c - copied unchanged from r192698, head/crypto/openssh/schnorr.c projects/jbuild/lib/libc/posix1e/acl_compat.c - copied unchanged from r192698, head/lib/libc/posix1e/acl_compat.c projects/jbuild/tools/tools/iso/ - copied from r192698, head/tools/tools/iso/ projects/jbuild/tools/tools/npe/ - copied from r192698, head/tools/tools/npe/ projects/jbuild/usr.sbin/nfsd/nfsv4.4 - copied unchanged from r192698, head/usr.sbin/nfsd/nfsv4.4 projects/jbuild/usr.sbin/nfsd/stablerestart.5 - copied unchanged from r192698, head/usr.sbin/nfsd/stablerestart.5 Deleted: projects/jbuild/etc/rc.d/idmapd projects/jbuild/sbin/idmapd/ projects/jbuild/sys/modules/nfs4client/ projects/jbuild/sys/nfs4client/ projects/jbuild/sys/rpc/rpcclnt.c projects/jbuild/sys/rpc/rpcclnt.h projects/jbuild/usr.sbin/zic/Arts.htm projects/jbuild/usr.sbin/zic/tz-art.htm projects/jbuild/usr.sbin/zic/tz-link.htm Modified: projects/jbuild/ (props changed) projects/jbuild/ObsoleteFiles.inc projects/jbuild/UPDATING projects/jbuild/bin/chflags/chflags.c projects/jbuild/bin/cp/Makefile projects/jbuild/bin/ps/print.c projects/jbuild/contrib/bind9/ (props changed) projects/jbuild/contrib/cpio/ (props changed) projects/jbuild/contrib/csup/rcstokenizer.l (props changed) projects/jbuild/contrib/gcc/config/mips/freebsd.h (props changed) projects/jbuild/contrib/gdb/ (props changed) projects/jbuild/contrib/gdtoa/ (props changed) projects/jbuild/contrib/less/ (props changed) projects/jbuild/contrib/libpcap/ (props changed) projects/jbuild/contrib/libpcap/FREEBSD-Xlist (props changed) projects/jbuild/contrib/ncurses/ (props changed) projects/jbuild/contrib/netcat/ (props changed) projects/jbuild/contrib/ntp/ (props changed) projects/jbuild/contrib/openbsm/ (props changed) projects/jbuild/contrib/openpam/ (props changed) projects/jbuild/contrib/pf/ (props changed) projects/jbuild/contrib/sendmail/ (props changed) projects/jbuild/contrib/tcpdump/ (props changed) projects/jbuild/contrib/tcpdump/FREEBSD-Xlist (props changed) projects/jbuild/contrib/top/ (props changed) projects/jbuild/contrib/wpa/ (props changed) projects/jbuild/crypto/openssh/ (props changed) projects/jbuild/crypto/openssh/ChangeLog projects/jbuild/crypto/openssh/PROTOCOL projects/jbuild/crypto/openssh/README projects/jbuild/crypto/openssh/addrmatch.c projects/jbuild/crypto/openssh/auth-options.c projects/jbuild/crypto/openssh/auth-pam.c (contents, props changed) projects/jbuild/crypto/openssh/auth.c projects/jbuild/crypto/openssh/auth.h projects/jbuild/crypto/openssh/auth2-chall.c projects/jbuild/crypto/openssh/auth2.c projects/jbuild/crypto/openssh/canohost.c projects/jbuild/crypto/openssh/canohost.h projects/jbuild/crypto/openssh/channels.c projects/jbuild/crypto/openssh/channels.h projects/jbuild/crypto/openssh/cipher.c projects/jbuild/crypto/openssh/cipher.h projects/jbuild/crypto/openssh/clientloop.c projects/jbuild/crypto/openssh/compat.c projects/jbuild/crypto/openssh/compat.h projects/jbuild/crypto/openssh/config.guess projects/jbuild/crypto/openssh/config.h projects/jbuild/crypto/openssh/config.h.in projects/jbuild/crypto/openssh/defines.h projects/jbuild/crypto/openssh/dispatch.c projects/jbuild/crypto/openssh/kex.c projects/jbuild/crypto/openssh/kexgexs.c projects/jbuild/crypto/openssh/key.c projects/jbuild/crypto/openssh/loginrec.c projects/jbuild/crypto/openssh/misc.c projects/jbuild/crypto/openssh/monitor.c projects/jbuild/crypto/openssh/monitor.h projects/jbuild/crypto/openssh/monitor_fdpass.c projects/jbuild/crypto/openssh/monitor_wrap.c projects/jbuild/crypto/openssh/monitor_wrap.h projects/jbuild/crypto/openssh/myproposal.h projects/jbuild/crypto/openssh/nchan.c projects/jbuild/crypto/openssh/openbsd-compat/bsd-poll.c projects/jbuild/crypto/openssh/openbsd-compat/port-uw.c projects/jbuild/crypto/openssh/openbsd-compat/xcrypt.c projects/jbuild/crypto/openssh/openbsd-compat/xmmap.c projects/jbuild/crypto/openssh/packet.c projects/jbuild/crypto/openssh/pathnames.h projects/jbuild/crypto/openssh/readconf.c projects/jbuild/crypto/openssh/readconf.h projects/jbuild/crypto/openssh/scp.c projects/jbuild/crypto/openssh/servconf.c projects/jbuild/crypto/openssh/servconf.h projects/jbuild/crypto/openssh/serverloop.c projects/jbuild/crypto/openssh/session.c projects/jbuild/crypto/openssh/sftp-server-main.c projects/jbuild/crypto/openssh/sftp.1 (contents, props changed) projects/jbuild/crypto/openssh/sftp.c projects/jbuild/crypto/openssh/ssh-keygen.1 (contents, props changed) projects/jbuild/crypto/openssh/ssh-keygen.c projects/jbuild/crypto/openssh/ssh-keyscan.1 (contents, props changed) projects/jbuild/crypto/openssh/ssh-keyscan.c projects/jbuild/crypto/openssh/ssh.1 projects/jbuild/crypto/openssh/ssh.c projects/jbuild/crypto/openssh/ssh2.h projects/jbuild/crypto/openssh/ssh_config projects/jbuild/crypto/openssh/ssh_config.5 projects/jbuild/crypto/openssh/ssh_namespace.h projects/jbuild/crypto/openssh/sshconnect.c projects/jbuild/crypto/openssh/sshconnect2.c projects/jbuild/crypto/openssh/sshd.8 projects/jbuild/crypto/openssh/sshd.c projects/jbuild/crypto/openssh/sshd_config projects/jbuild/crypto/openssh/sshd_config.5 projects/jbuild/crypto/openssh/sshpty.c projects/jbuild/crypto/openssh/ttymodes.c projects/jbuild/crypto/openssh/uidswap.c projects/jbuild/crypto/openssh/version.h projects/jbuild/crypto/openssl/ (props changed) projects/jbuild/etc/defaults/rc.conf projects/jbuild/etc/rc.d/Makefile projects/jbuild/lib/libarchive/archive_read_support_compression_gzip.c projects/jbuild/lib/libc/ (props changed) projects/jbuild/lib/libc/nls/be_BY.UTF-8.msg (props changed) projects/jbuild/lib/libc/nls/el_GR.ISO8859-7.msg (props changed) projects/jbuild/lib/libc/nls/mn_MN.UTF-8.msg (props changed) projects/jbuild/lib/libc/nls/ru_RU.KOI8-R.msg (props changed) projects/jbuild/lib/libc/nls/uk_UA.UTF-8.msg (props changed) projects/jbuild/lib/libc/posix1e/Makefile.inc projects/jbuild/lib/libc/posix1e/Symbol.map projects/jbuild/lib/libc/posix1e/acl.3 projects/jbuild/lib/libc/posix1e/acl_add_perm.3 projects/jbuild/lib/libc/posix1e/acl_delete.c projects/jbuild/lib/libc/posix1e/acl_entry.c projects/jbuild/lib/libc/posix1e/acl_get.3 projects/jbuild/lib/libc/posix1e/acl_get.c projects/jbuild/lib/libc/posix1e/acl_init.c projects/jbuild/lib/libc/posix1e/acl_set.3 projects/jbuild/lib/libc/posix1e/acl_set.c projects/jbuild/lib/libc/posix1e/acl_set_tag_type.3 projects/jbuild/lib/libc/posix1e/acl_support.c projects/jbuild/lib/libc/posix1e/acl_support.h projects/jbuild/lib/libc/posix1e/acl_valid.c projects/jbuild/lib/libc/stdtime/ (props changed) projects/jbuild/lib/libc/stdtime/asctime.c projects/jbuild/lib/libc/stdtime/difftime.c projects/jbuild/lib/libc/stdtime/localtime.c projects/jbuild/lib/libc/stdtime/private.h projects/jbuild/lib/libc/stdtime/strftime.c projects/jbuild/lib/libc/stdtime/time2posix.3 projects/jbuild/lib/libc/stdtime/tzfile.5 projects/jbuild/lib/libc/stdtime/tzfile.h projects/jbuild/lib/libc/string/ffsll.c (props changed) projects/jbuild/lib/libc/string/flsll.c (props changed) projects/jbuild/lib/libstand/stand.h projects/jbuild/lib/libusb/ (props changed) projects/jbuild/lib/libusb/libusb.3 (props changed) projects/jbuild/lib/libutil/ (props changed) projects/jbuild/rescue/rescue/Makefile projects/jbuild/sbin/Makefile projects/jbuild/sbin/ipfw/ (props changed) projects/jbuild/sbin/mount_nfs/Makefile projects/jbuild/sbin/mount_nfs/mount_nfs.8 projects/jbuild/sbin/mount_nfs/mount_nfs.c projects/jbuild/sbin/restore/Makefile projects/jbuild/secure/lib/libssh/Makefile projects/jbuild/secure/usr.sbin/sshd/Makefile projects/jbuild/share/man/man4/ipsec.4 projects/jbuild/share/man/man9/VFS_MOUNT.9 projects/jbuild/share/man/man9/VFS_QUOTACTL.9 projects/jbuild/share/man/man9/VFS_ROOT.9 projects/jbuild/share/man/man9/VFS_STATFS.9 projects/jbuild/share/man/man9/VFS_SYNC.9 projects/jbuild/share/man/man9/VFS_UNMOUNT.9 projects/jbuild/share/man/man9/acl.9 projects/jbuild/share/misc/committers-src.dot projects/jbuild/share/misc/iso639 projects/jbuild/share/zoneinfo/ (props changed) projects/jbuild/sys/ (props changed) projects/jbuild/sys/Makefile projects/jbuild/sys/amd64/include/xen/ (props changed) projects/jbuild/sys/arm/xscale/ixp425/if_npe.c projects/jbuild/sys/arm/xscale/ixp425/std.ixp435 (props changed) projects/jbuild/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/jbuild/sys/compat/ndis/kern_ndis.c projects/jbuild/sys/conf/NOTES projects/jbuild/sys/conf/files projects/jbuild/sys/conf/options projects/jbuild/sys/contrib/dev/acpica/ (props changed) projects/jbuild/sys/contrib/pf/ (props changed) projects/jbuild/sys/dev/cxgb/ (props changed) projects/jbuild/sys/dev/cxgb/cxgb_main.c projects/jbuild/sys/dev/xen/netfront/ (props changed) projects/jbuild/sys/dev/xen/xenpci/ (props changed) projects/jbuild/sys/fs/nfs/nfs.h projects/jbuild/sys/fs/nfs/nfs_commonkrpc.c projects/jbuild/sys/fs/nfs/nfs_commonport.c projects/jbuild/sys/fs/nfs/nfsport.h projects/jbuild/sys/fs/nfsclient/nfs_clkrpc.c projects/jbuild/sys/fs/nfsclient/nfs_clport.c projects/jbuild/sys/fs/nfsclient/nfs_clvfsops.c projects/jbuild/sys/fs/nfsclient/nfs_clvnops.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdport.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdstate.c projects/jbuild/sys/fs/nwfs/nwfs_io.c projects/jbuild/sys/kern/kern_jail.c projects/jbuild/sys/kern/kern_lockf.c projects/jbuild/sys/kern/kern_vimage.c projects/jbuild/sys/kern/subr_acl_posix1e.c projects/jbuild/sys/kern/tty.c projects/jbuild/sys/kern/vfs_acl.c projects/jbuild/sys/kgssapi/gsstest.c projects/jbuild/sys/mips/mips/pmap.c projects/jbuild/sys/modules/dtrace/dtnfsclient/ (props changed) projects/jbuild/sys/modules/ip6_mroute_mod/ (props changed) projects/jbuild/sys/modules/ipmi/ipmi_linux/ (props changed) projects/jbuild/sys/modules/nfsclient/Makefile projects/jbuild/sys/modules/wlan/Makefile projects/jbuild/sys/net/if.c projects/jbuild/sys/net/if_clone.c projects/jbuild/sys/net/if_loop.c projects/jbuild/sys/net/if_var.h projects/jbuild/sys/net/vnet.h projects/jbuild/sys/netinet/in.c projects/jbuild/sys/netinet/ip_ipsec.c projects/jbuild/sys/netinet/tcp_subr.c projects/jbuild/sys/netinet/udp_usrreq.c projects/jbuild/sys/netinet/udp_var.h projects/jbuild/sys/netinet/vinet.h projects/jbuild/sys/netinet6/ip6_ipsec.c projects/jbuild/sys/netinet6/udp6_usrreq.c projects/jbuild/sys/netipsec/ipsec.c projects/jbuild/sys/netipsec/ipsec.h projects/jbuild/sys/netipsec/ipsec6.h projects/jbuild/sys/netipsec/vipsec.h projects/jbuild/sys/nfsclient/bootp_subr.c projects/jbuild/sys/nfsclient/krpc_subr.c projects/jbuild/sys/nfsclient/nfs.h projects/jbuild/sys/nfsclient/nfs_bio.c projects/jbuild/sys/nfsclient/nfs_diskless.c projects/jbuild/sys/nfsclient/nfs_krpc.c projects/jbuild/sys/nfsclient/nfs_lock.c projects/jbuild/sys/nfsclient/nfs_nfsiod.c projects/jbuild/sys/nfsclient/nfs_node.c projects/jbuild/sys/nfsclient/nfs_socket.c projects/jbuild/sys/nfsclient/nfs_subs.c projects/jbuild/sys/nfsclient/nfs_vfsops.c projects/jbuild/sys/nfsclient/nfs_vnops.c projects/jbuild/sys/nfsclient/nfsm_subs.h projects/jbuild/sys/nfsclient/nfsmount.h projects/jbuild/sys/nfsclient/nfsnode.h projects/jbuild/sys/nfsserver/nfs_srvkrpc.c projects/jbuild/sys/nlm/nlm_advlock.c projects/jbuild/sys/opencrypto/cryptodev.c projects/jbuild/sys/sys/acl.h projects/jbuild/sys/sys/lockf.h projects/jbuild/sys/sys/param.h projects/jbuild/sys/sys/priv.h projects/jbuild/sys/sys/vimage.h projects/jbuild/sys/ufs/ufs/ufs_acl.c projects/jbuild/sys/xen/evtchn.h (props changed) projects/jbuild/sys/xen/hypervisor.h (props changed) projects/jbuild/sys/xen/xen_intr.h (props changed) projects/jbuild/sys/xen/xenbus/init.txt (props changed) projects/jbuild/tools/regression/lib/msun/test-conj.t (props changed) projects/jbuild/tools/tools/README projects/jbuild/tools/tools/ath/common/dumpregs.h (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/jbuild/tools/tools/nanobsd/gateworks/common projects/jbuild/usr.bin/procstat/ (props changed) projects/jbuild/usr.sbin/iostat/iostat.c projects/jbuild/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/jbuild/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/jbuild/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/jbuild/usr.sbin/makefs/getid.c (props changed) projects/jbuild/usr.sbin/nfsd/Makefile projects/jbuild/usr.sbin/nfsd/nfsd.8 projects/jbuild/usr.sbin/nfsd/nfsd.c projects/jbuild/usr.sbin/zic/ (props changed) projects/jbuild/usr.sbin/zic/README projects/jbuild/usr.sbin/zic/Theory projects/jbuild/usr.sbin/zic/ialloc.c projects/jbuild/usr.sbin/zic/private.h projects/jbuild/usr.sbin/zic/scheck.c projects/jbuild/usr.sbin/zic/zdump.8 projects/jbuild/usr.sbin/zic/zdump.c projects/jbuild/usr.sbin/zic/zic.8 projects/jbuild/usr.sbin/zic/zic.c Modified: projects/jbuild/ObsoleteFiles.inc ============================================================================== --- projects/jbuild/ObsoleteFiles.inc Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/ObsoleteFiles.inc Sun May 24 22:00:20 2009 (r192700) @@ -14,6 +14,15 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090522: removal of University of Michigan NFSv4 client +OLD_FILES+=etc/rc.d/idmapd +OLD_FILES+=sbin/idmapd +OLD_FILES+=sbin/mount_nfs4 +OLD_FILES+=usr/share/man/man8/idmapd.8.gz +OLD_FILES+=usr/share/man/man8/mount_nfs4.8.gz +# 20090513: removal of legacy versions of USB network interface drivers +OLD_FILES+=usr/include/legacy/dev/usb/if_upgtvar.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_ethersubr.h # 20090417: removal of legacy versions of USB network interface drivers OLD_FILES+=usr/include/legacy/dev/usb/if_auereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_axereg.h Modified: projects/jbuild/UPDATING ============================================================================== --- projects/jbuild/UPDATING Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/UPDATING Sun May 24 22:00:20 2009 (r192700) @@ -22,6 +22,16 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090523: + The layout of struct vnet_net has changed, therefore modules + need to be rebuilt. + Bump __FreeBSD_version to 800090. + +20090523: + The newly imported zic(8) produces a new format in the + output. Please run tzsetup(8) to install the newly created + data to /etc/localtime. + 20090520: The sysctl tree for the usb stack has renamed from hw.usb2.* to hw.usb.* and is now consistent again with previous releases. @@ -274,7 +284,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. memory segment of size > 2 GB on the 64-bit architectures. Due to a limitation of the existing ABI, the shm_segsz member of the struct shmid_ds, returned by shmctl(IPC_STAT) call is - wrong for large segments. Note that limits must be explicitely + wrong for large segments. Note that limits must be explicitly raised to allow such segments to be created. 20090301: Modified: projects/jbuild/bin/chflags/chflags.c ============================================================================== --- projects/jbuild/bin/chflags/chflags.c Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/bin/chflags/chflags.c Sun May 24 22:00:20 2009 (r192700) @@ -115,7 +115,7 @@ main(int argc, char *argv[]) fts_options |= FTS_LOGICAL; } } else - fts_options = FTS_LOGICAL; + fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL; /* XXX: Why don't chflags and lchflags have compatible prototypes? */ if (hflag) Modified: projects/jbuild/bin/cp/Makefile ============================================================================== --- projects/jbuild/bin/cp/Makefile Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/bin/cp/Makefile Sun May 24 22:00:20 2009 (r192700) @@ -3,6 +3,6 @@ PROG= cp SRCS= cp.c utils.c -CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED +CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED -D_ACL_PRIVATE .include Modified: projects/jbuild/bin/ps/print.c ============================================================================== --- projects/jbuild/bin/ps/print.c Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/bin/ps/print.c Sun May 24 22:00:20 2009 (r192700) @@ -596,6 +596,10 @@ elapsed(KINFO *k, VARENT *ve) char obuff[128]; v = ve->var; + if (!k->ki_valid) { + (void)printf("%-*s", v->width, "-"); + return; + } val = now - k->ki_p->ki_start.tv_sec; days = val / (24 * 60 * 60); val %= 24 * 60 * 60; Modified: projects/jbuild/crypto/openssh/ChangeLog ============================================================================== --- projects/jbuild/crypto/openssh/ChangeLog Sun May 24 21:41:05 2009 (r192699) +++ projects/jbuild/crypto/openssh/ChangeLog Sun May 24 22:00:20 2009 (r192700) @@ -1,3 +1,497 @@ +20090223 + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2009/02/22 23:50:57 + [ssh_config.5 sshd_config.5] + don't advertise experimental options + - djm@cvs.openbsd.org 2009/02/22 23:59:25 + [sshd_config.5] + missing period + - djm@cvs.openbsd.org 2009/02/23 00:06:15 + [version.h] + openssh-5.2 + - (djm) [README] update for 5.2 + - (djm) Release openssh-5.2p1 + +20090222 + - (djm) OpenBSD CVS Sync + - tobias@cvs.openbsd.org 2009/02/21 19:32:04 + [misc.c sftp-server-main.c ssh-keygen.c] + Added missing newlines in error messages. + ok dtucker + +20090221 + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2009/02/17 01:28:32 + [ssh_config] + sync with revised default ciphers; pointed out by dkrause@ + - djm@cvs.openbsd.org 2009/02/18 04:31:21 + [schnorr.c] + signature should hash over the entire group, not just the generator + (this is still disabled code) + - (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec] + [contrib/suse/openssh.spec] Prepare for 5.2p1 + +20090216 + - (djm) [regress/conch-ciphers.sh regress/putty-ciphers.sh] + [regress/putty-kex.sh regress/putty-transfer.sh] Downgrade disabled + interop tests from FATAL error to a warning. Allows some interop + tests to proceed if others are missing necessary prerequisites. + - (djm) [configure.ac] support GNU/kFreeBSD and GNU/kOpensolaris + systems; patch from Aurelien Jarno via rmh AT aybabtu.com + +20090214 + - (djm) OpenBSD CVS Sync + - dtucker@cvs.openbsd.org 2009/02/02 11:15:14 + [sftp.c] + Initialize a few variables to prevent spurious "may be used + uninitialized" warnings from newer gcc's. ok djm@ + - djm@cvs.openbsd.org 2009/02/12 03:00:56 + [canohost.c canohost.h channels.c channels.h clientloop.c readconf.c] + [readconf.h serverloop.c ssh.c] + support remote port forwarding with a zero listen port (-R0:...) to + dyamically allocate a listen port at runtime (this is actually + specified in rfc4254); bz#1003 ok markus@ + - djm@cvs.openbsd.org 2009/02/12 03:16:01 + [serverloop.c] + tighten check for -R0:... forwarding: only allow dynamic allocation + if want_reply is set in the packet + - djm@cvs.openbsd.org 2009/02/12 03:26:22 + [monitor.c] + some paranoia: check that the serialised key is really KEY_RSA before + diddling its internals + - djm@cvs.openbsd.org 2009/02/12 03:42:09 + [ssh.1] + document -R0:... usage + - djm@cvs.openbsd.org 2009/02/12 03:44:25 + [ssh.1] + consistency: Dq => Ql + - djm@cvs.openbsd.org 2009/02/12 03:46:17 + [ssh_config.5] + document RemoteForward usage with 0 listen port + - jmc@cvs.openbsd.org 2009/02/12 07:34:20 + [ssh_config.5] + kill trailing whitespace; + - markus@cvs.openbsd.org 2009/02/13 11:50:21 + [packet.c] + check for enc !=NULL in packet_start_discard + - djm@cvs.openbsd.org 2009/02/14 06:35:49 + [PROTOCOL] + mention that eow and no-more-sessions extensions are sent only to + OpenSSH peers + +20090212 + - (djm) [sshpty.c] bz#1419: OSX uses cloning ptys that automagically + set ownership and modes, so avoid explicitly setting them + - (djm) [configure.ac loginrec.c] bz#1421: fix lastlog support for OSX. + OSX provides a getlastlogxbyname function that automates the reading of + a lastlog file. Also, the pututxline function will update lastlog so + there is no need for loginrec.c to do it explicitly. Collapse some + overly verbose code while I'm in there. + +20090201 + - (dtucker) [defines.h sshconnect.c] INET6_ADDRSTRLEN is now needed in + channels.c too, so move the definition for non-IP6 platforms to defines.h + where it can be shared. + +20090129 + - (tim) [contrib/cygwin/ssh-host-config] Patch from Corinna Vinschen. + If the CYGWIN environment variable is empty, the installer script + should not install the service with an empty CYGWIN variable, but + rather without setting CYGWNI entirely. + - (tim) [contrib/cygwin/ssh-host-config] Whitespace cleanup. No code changes. + +20090128 + - (tim) [contrib/cygwin/ssh-host-config] Patch from Corinna Vinschen. + Changes to work on Cygwin 1.5.x as well as on the new Cygwin 1.7.x. + The information given for the setting of the CYGWIN environment variable + is wrong for both releases so I just removed it, together with the + unnecessary (Cygwin 1.5.x) or wrong (Cygwin 1.7.x) default setting. + +20081228 + - (djm) OpenBSD CVS Sync + - stevesk@cvs.openbsd.org 2008/12/09 03:20:42 + [channels.c servconf.c] + channel_print_adm_permitted_opens() should deal with all the printing + for that config option. suggested by markus@; ok markus@ djm@ + dtucker@ + - djm@cvs.openbsd.org 2008/12/09 04:32:22 + [auth2-chall.c] + replace by-hand string building with xasprinf(); ok deraadt@ + - sobrado@cvs.openbsd.org 2008/12/09 15:35:00 + [sftp.1 sftp.c] + update for the synopses displayed by the 'help' command, there are a + few missing flags; add 'bye' to the output of 'help'; sorting and spacing. + jmc@ suggested replacing .Oo/.Oc with a single .Op macro. + ok jmc@ + - stevesk@cvs.openbsd.org 2008/12/09 22:37:33 + [clientloop.c] + fix typo in error message + - stevesk@cvs.openbsd.org 2008/12/10 03:55:20 + [addrmatch.c] + o cannot be NULL here but use xfree() to be consistent; ok djm@ + - stevesk@cvs.openbsd.org 2008/12/29 01:12:36 + [ssh-keyscan.1] + fix example, default key type is rsa for 3+ years; from + frederic.perrin@resel.fr + - stevesk@cvs.openbsd.org 2008/12/29 02:23:26 + [pathnames.h] + no need to escape single quotes in comments + - okan@cvs.openbsd.org 2008/12/30 00:46:56 + [sshd_config.5] + add AllowAgentForwarding to available Match keywords list + ok djm + - djm@cvs.openbsd.org 2009/01/01 21:14:35 + [channels.c] + call channel destroy callbacks on receipt of open failure messages. + fixes client hangs when connecting to a server that has MaxSessions=0 + set spotted by imorgan AT nas.nasa.gov; ok markus@ + - djm@cvs.openbsd.org 2009/01/01 21:17:36 + [kexgexs.c] + fix hash calculation for KEXGEX: hash over the original client-supplied + values and not the sanity checked versions that we acutally use; + bz#1540 reported by john.smith AT arrows.demon.co.uk + ok markus@ + - djm@cvs.openbsd.org 2009/01/14 01:38:06 + [channels.c] + support SOCKS4A protocol, from dwmw2 AT infradead.org via bz#1482; + "looks ok" markus@ + - stevesk@cvs.openbsd.org 2009/01/15 17:38:43 + [readconf.c] + 1) use obsolete instead of alias for consistency + 2) oUserKnownHostsFile not obsolete but oGlobalKnownHostsFile2 is + so move the comment. + 3) reorder so like options are together + ok djm@ + - djm@cvs.openbsd.org 2009/01/22 09:46:01 + [channels.c channels.h session.c] + make Channel->path an allocated string, saving a few bytes here and + there and fixing bz#1380 in the process; ok markus@ + - djm@cvs.openbsd.org 2009/01/22 09:49:57 + [channels.c] + oops! I committed the wrong version of the Channel->path diff, + it was missing some tweaks suggested by stevesk@ + - djm@cvs.openbsd.org 2009/01/22 10:02:34 + [clientloop.c misc.c readconf.c readconf.h servconf.c servconf.h] + [serverloop.c ssh-keyscan.c ssh.c sshd.c] + make a2port() return -1 when it encounters an invalid port number + rather than 0, which it will now treat as valid (needed for future work) + adjust current consumers of a2port() to check its return value is <= 0, + which in turn required some things to be converted from u_short => int + make use of int vs. u_short consistent in some other places too + feedback & ok markus@ + - djm@cvs.openbsd.org 2009/01/22 10:09:16 + [auth-options.c] + another chunk of a2port() diff that got away. wtfdjm?? + - djm@cvs.openbsd.org 2009/01/23 07:58:11 + [myproposal.h] + prefer CTR modes and revised arcfour (i.e w/ discard) modes to CBC + modes; ok markus@ + - naddy@cvs.openbsd.org 2009/01/24 17:10:22 + [ssh_config.5 sshd_config.5] + sync list of preferred ciphers; ok djm@ + - markus@cvs.openbsd.org 2009/01/26 09:58:15 + [cipher.c cipher.h packet.c] + Work around the CPNI-957037 Plaintext Recovery Attack by always + reading 256K of data on packet size or HMAC errors (in CBC mode only). + Help, feedback and ok djm@ + Feedback from Martin Albrecht and Paterson Kenny + +20090107 + - (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X. + Patch based on one from vgiffin AT apple.com; ok dtucker@ + - (djm) [channels.c] bz#1419: support "on demand" X11 forwarding via + launchd on OS X; patch from vgiffin AT apple.com, slightly tweaked; + ok dtucker@ + - (djm) [contrib/ssh-copy-id.1 contrib/ssh-copy-id] bz#1492: Make + ssh-copy-id copy id_rsa.pub by default (instead of the legacy "identity" + key). Patch from cjwatson AT debian.org + +20090107 + - (tim) [configure.ac defines.h openbsd-compat/port-uw.c + openbsd-compat/xcrypt.c] Add SECUREWARE support to OpenServer 6 SVR5 ABI. + OK djm@ dtucker@ + - (tim) [configure.ac] Move check_for_libcrypt_later=1 in *-*-sysv5*) section. + OpenServer 6 doesn't need libcrypt. + +20081209 + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2008/12/09 02:38:18 + [clientloop.c] + The ~C escape handler does not work correctly for multiplexed sessions - + it opens a commandline on the master session, instead of on the slave + that requested it. Disable it on slave sessions until such time as it + is fixed; bz#1543 report from Adrian Bridgett via Colin Watson + ok markus@ + - djm@cvs.openbsd.org 2008/12/09 02:39:59 + [sftp.c] + Deal correctly with failures in remote stat() operation in sftp, + correcting fail-on-error behaviour in batchmode. bz#1541 report and + fix from anedvedicky AT gmail.com; ok markus@ + - djm@cvs.openbsd.org 2008/12/09 02:58:16 + [readconf.c] + don't leave junk (free'd) pointers around in Forward *fwd argument on + failure; avoids double-free in ~C -L handler when given an invalid + forwarding specification; bz#1539 report from adejong AT debian.org + via Colin Watson; ok markus@ dtucker@ + - djm@cvs.openbsd.org 2008/12/09 03:02:37 + [sftp.1 sftp.c] + correct sftp(1) and corresponding usage syntax; + bz#1518 patch from imorgan AT nas.nasa.gov; ok deraadt@ improved diff jmc@ + +20081208 + - (djm) [configure.ac] bz#1538: better test for ProPolice/SSP: actually + use some stack in main(). + Report and suggested fix from vapier AT gentoo.org + - (djm) OpenBSD CVS Sync + - markus@cvs.openbsd.org 2008/12/02 19:01:07 + [clientloop.c] + we have to use the recipient's channel number (RFC 4254) for + SSH2_MSG_CHANNEL_SUCCESS/SSH2_MSG_CHANNEL_FAILURE messages, + otherwise we trigger 'Non-public channel' error messages on sshd + systems with clientkeepalive enabled; noticed by sturm; ok djm; + - markus@cvs.openbsd.org 2008/12/02 19:08:59 + [serverloop.c] + backout 1.149, since it's not necessary and openssh clients send + broken CHANNEL_FAILURE/SUCCESS messages since about 2004; ok djm@ + - markus@cvs.openbsd.org 2008/12/02 19:09:38 + [channels.c] + s/remote_id/id/ to be more consistent with other code; ok djm@ + +20081201 + - (dtucker) [contrib/cygwin/{Makefile,ssh-host-config}] Add new doc files + and tweak the is-sshd-running check in ssh-host-config. Patch from + vinschen at redhat com. + - (dtucker) OpenBSD CVS Sync + - markus@cvs.openbsd.org 2008/11/21 15:47:38 + [packet.c] + packet_disconnect() on padding error, too. should reduce the success + probability for the CPNI-957037 Plaintext Recovery Attack to 2^-18 + ok djm@ + - dtucker@cvs.openbsd.org 2008/11/30 11:59:26 + [monitor_fdpass.c] + Retry sendmsg/recvmsg on EAGAIN and EINTR; ok djm@ + +20081123 + - (dtucker) [monitor_fdpass.c] Reduce diff vs OpenBSD by moving some + declarations, removing an unnecessary union member and adding whitespace. + cmsgbuf.tmp thing spotted by des at des no, ok djm some time ago. + +20081118 + - (tim) [addrmatch.c configure.ac] Some platforms do not have sin6_scope_id + member of sockaddr_in6. Also reported in Bug 1491 by David Leonard. OK and + feedback by djm@ + +20081111 + - (dtucker) OpenBSD CVS Sync + - jmc@cvs.openbsd.org 2008/11/05 11:22:54 + [servconf.c] + passord -> password; + fixes user/5975 from Rene Maroufi + - stevesk@cvs.openbsd.org 2008/11/07 00:42:12 + [ssh-keygen.c] + spelling/typo in comment + - stevesk@cvs.openbsd.org 2008/11/07 18:50:18 + [nchan.c] + add space to some log/debug messages for readability; ok djm@ markus@ + - dtucker@cvs.openbsd.org 2008/11/07 23:34:48 + [auth2-jpake.c] + Move JPAKE define to make life easier for portable. ok djm@ + - tobias@cvs.openbsd.org 2008/11/09 12:34:47 + [session.c ssh.1] + typo fixed (overriden -> overridden) + ok espie, jmc + - stevesk@cvs.openbsd.org 2008/11/11 02:58:09 + [servconf.c] + USE_AFS not referenced so remove #ifdef. fixes sshd -T not printing + kerberosgetafstoken. ok dtucker@ + (Id sync only, we still want the ifdef in portable) + - stevesk@cvs.openbsd.org 2008/11/11 03:55:11 + [channels.c] + for sshd -T print 'permitopen any' vs. 'permitopen' for case of no + permitopen's; ok and input dtucker@ + - djm@cvs.openbsd.org 2008/11/10 02:06:35 + [regress/putty-ciphers.sh] + PuTTY supports AES CTR modes, so interop test against them too + +20081105 + - OpenBSD CVS Sync + - djm@cvs.openbsd.org 2008/11/03 08:59:41 + [servconf.c] + include MaxSessions in sshd -T output; patch from imorgan AT nas.nasa.gov + - djm@cvs.openbsd.org 2008/11/04 07:58:09 + [auth.c] + need unistd.h for close() prototype + (ID sync only) + - djm@cvs.openbsd.org 2008/11/04 08:22:13 + [auth.h auth2.c monitor.c monitor.h monitor_wrap.c monitor_wrap.h] + [readconf.c readconf.h servconf.c servconf.h ssh2.h ssh_config.5] + [sshconnect2.c sshd_config.5 jpake.c jpake.h schnorr.c auth2-jpake.c] + [Makefile.in] + Add support for an experimental zero-knowledge password authentication + method using the J-PAKE protocol described in F. Hao, P. Ryan, + "Password Authenticated Key Exchange by Juggling", 16th Workshop on + Security Protocols, Cambridge, April 2008. + + This method allows password-based authentication without exposing + the password to the server. Instead, the client and server exchange + cryptographic proofs to demonstrate of knowledge of the password while + revealing nothing useful to an attacker or compromised endpoint. + + This is experimental, work-in-progress code and is presently + compiled-time disabled (turn on -DJPAKE in Makefile.inc). + + "just commit it. It isn't too intrusive." deraadt@ + - stevesk@cvs.openbsd.org 2008/11/04 19:18:00 + [readconf.c] + because parse_forward() is now used to parse all forward types (DLR), + and it malloc's space for host variables, we don't need to malloc + here. fixes small memory leaks. + + previously dynamic forwards were not parsed in parse_forward() and + space was not malloc'd in that case. + + ok djm@ + - stevesk@cvs.openbsd.org 2008/11/05 03:23:09 + [clientloop.c ssh.1] + add dynamic forward escape command line; ok djm@ + +20081103 + - OpenBSD CVS Sync + - sthen@cvs.openbsd.org 2008/07/24 23:55:30 + [ssh-keygen.1] + Add "ssh-keygen -F -l" to synopsis (displays fingerprint from + known_hosts). ok djm@ + - grunk@cvs.openbsd.org 2008/07/25 06:56:35 + [ssh_config] + Add VisualHostKey to example file, ok djm@ + - grunk@cvs.openbsd.org 2008/07/25 07:05:16 + [key.c] + In random art visualization, make sure to use the end marker only at the + end. Initial diff by Dirk Loss, tweaks and ok djm@ + - markus@cvs.openbsd.org 2008/07/31 14:48:28 + [sshconnect2.c] + don't allocate space for empty banners; report t8m at centrum.cz; + ok deraadt + - krw@cvs.openbsd.org 2008/08/02 04:29:51 + [ssh_config.5] + whitepsace -> whitespace. From Matthew Clarke via bugs@. + - djm@cvs.openbsd.org 2008/08/21 04:09:57 + [session.c] + allow ForceCommand internal-sftp with arguments. based on patch from + michael.barabanov AT gmail.com; ok markus@ + - djm@cvs.openbsd.org 2008/09/06 12:24:13 + [kex.c] + OpenSSL 0.9.8h supplies a real EVP_sha256 so we do not need our + replacement anymore + (ID sync only for portable - we still need this) + - markus@cvs.openbsd.org 2008/09/11 14:22:37 + [compat.c compat.h nchan.c ssh.c] + only send eow and no-more-sessions requests to openssh 5 and newer; + fixes interop problems with broken ssh v2 implementations; ok djm@ + - millert@cvs.openbsd.org 2008/10/02 14:39:35 + [session.c] + Convert an unchecked strdup to xstrdup. OK deraadt@ + - jmc@cvs.openbsd.org 2008/10/03 13:08:12 + [sshd.8] + do not give an example of how to chmod files: we can presume the user + knows that. removes an ambiguity in the permission of authorized_keys; + ok deraadt + - deraadt@cvs.openbsd.org 2008/10/03 23:56:28 + [sshconnect2.c] + Repair strnvis() buffersize of 4*n+1, with termination gauranteed by the + function. + spotted by des@freebsd, who commited an incorrect fix to the freebsd tree + and (as is fairly typical) did not report the problem to us. But this fix + is correct. + ok djm + - djm@cvs.openbsd.org 2008/10/08 23:34:03 + [ssh.1 ssh.c] + Add -y option to force logging via syslog rather than stderr. + Useful for daemonised ssh connection (ssh -f). Patch originally from + and ok'd by markus@ + - djm@cvs.openbsd.org 2008/10/09 03:50:54 + [servconf.c sshd_config.5] + support setting PermitEmptyPasswords in a Match block + requested in PR3891; ok dtucker@ + - jmc@cvs.openbsd.org 2008/10/09 06:54:22 + [ssh.c] + add -y to usage(); + - stevesk@cvs.openbsd.org 2008/10/10 04:55:16 + [scp.c] + spelling in comment; ok djm@ + - stevesk@cvs.openbsd.org 2008/10/10 05:00:12 + [key.c] + typo in error message; ok djm@ + - stevesk@cvs.openbsd.org 2008/10/10 16:43:27 + [ssh_config.5] + use 'Privileged ports can be forwarded only when logging in as root on + the remote machine.' for RemoteForward just like ssh.1 -R. + ok djm@ jmc@ + - stevesk@cvs.openbsd.org 2008/10/14 18:11:33 + [sshconnect.c] + use #define ROQUIET here; no binary change. ok dtucker@ + - stevesk@cvs.openbsd.org 2008/10/17 18:36:24 + [ssh_config.5] + correct and clarify VisualHostKey; ok jmc@ + - stevesk@cvs.openbsd.org 2008/10/30 19:31:16 + [clientloop.c sshd.c] + don't need to #include "monitor_fdpass.h" + - stevesk@cvs.openbsd.org 2008/10/31 15:05:34 + [dispatch.c] + remove unused #define DISPATCH_MIN; ok markus@ + - djm@cvs.openbsd.org 2008/11/01 04:50:08 + [sshconnect2.c] + sprinkle ARGSUSED on dispatch handlers + nuke stale unusued prototype + - stevesk@cvs.openbsd.org 2008/11/01 06:43:33 + [channels.c] + fix some typos in log messages; ok djm@ + - sobrado@cvs.openbsd.org 2008/11/01 11:14:36 + [ssh-keyscan.1 ssh-keyscan.c] + the ellipsis is not an optional argument; while here, improve spacing. + - stevesk@cvs.openbsd.org 2008/11/01 17:40:33 + [clientloop.c readconf.c readconf.h ssh.c] + merge dynamic forward parsing into parse_forward(); + 'i think this is OK' djm@ + - stevesk@cvs.openbsd.org 2008/11/02 00:16:16 + [ttymodes.c] + protocol 2 tty modes support is now 7.5 years old so remove these + debug3()s; ok deraadt@ + - stevesk@cvs.openbsd.org 2008/11/03 01:07:02 + [readconf.c] + remove valueless comment + - stevesk@cvs.openbsd.org 2008/11/03 02:44:41 + [readconf.c] + fix comment + - (djm) [contrib/caldera/ssh-host-keygen contrib/suse/rc.sshd] + Make example scripts generate keys with default sizes rather than fixed, + non-default 1024 bits; patch from imorgan AT nas.nasa.gov + - (djm) [contrib/sshd.pam.generic contrib/caldera/sshd.pam] + [contrib/redhat/sshd.pam] Move pam_nologin to account group from + incorrect auth group in example files; + patch from imorgan AT nas.nasa.gov + +20080906 + - (dtucker) [config.guess config.sub] Update to latest versions from + http://git.savannah.gnu.org/gitweb/ (2008-04-14 and 2008-06-16 + respectively). + +20080830 + - (dtucker) [openbsd-compat/bsd-poll.c] correctly check for number of FDs + larger than FD_SETSIZE (OpenSSH only ever uses poll with one fd). Patch + from Nicholas Marriott. + +20080721 + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2008/07/23 07:36:55 + [servconf.c] + do not try to print options that have been compile-time disabled + in config test mode (sshd -T); report from nix-corp AT esperi.org.uk + ok dtucker@ + - (djm) [servconf.c] Print UsePAM option in config test mode (when it + has been compiled in); report from nix-corp AT esperi.org.uk + ok dtucker@ + 20080721 - (djm) OpenBSD CVS Sync - jmc@cvs.openbsd.org 2008/07/18 22:51:01 @@ -873,3841 +1367,3 @@ [contrib/suse/openssh.spec] Crank version numbers in RPM spec files - (djm) [README] Update link to release notes - (djm) Release 5.0p1 - -20080315 - - (djm) [regress/test-exec.sh] Quote putty-related variables in case they are - empty; report and patch from Peter Stuge - - (djm) [regress/test-exec.sh] Silence noise from detection of putty - commands; report from Peter Stuge - - (djm) [session.c] Relocate incorrectly-placed closefrom() that was causing - crashes when used with ChrootDirectory - - -20080327 - - (dtucker) Cache selinux status earlier so we know if it's enabled after a - chroot. Allows ChrootDirectory to work with selinux support compiled in - but not enabled. Using it with selinux enabled will require some selinux - support inside the chroot. "looks sane" djm@ - - (djm) Fix RCS ident in sftp-server-main.c - - (djm) OpenBSD CVS sync: - - jmc@cvs.openbsd.org 2008/02/11 07:58:28 - [ssh.1 sshd.8 sshd_config.5] - bump Mdocdate for pages committed in "febuary", necessary because - of a typo in rcs.c; - - deraadt@cvs.openbsd.org 2008/03/13 01:49:53 - [monitor_fdpass.c] - Correct CMSG_SPACE and CMSG_LEN usage everywhere in the tree. Due to - an extensive discussion with otto, kettenis, millert, and hshoexer - - deraadt@cvs.openbsd.org 2008/03/15 16:19:02 - [monitor_fdpass.c] - Repair the simple cases for msg_controllen where it should just be - CMSG_SIZE(sizeof(int)), not sizeof(buffer) which may be larger because - of alignment; ok kettenis hshoexer - - djm@cvs.openbsd.org 2008/03/23 12:54:01 - [sftp-client.c] - prefer POSIX-style file renaming over filexfer rename behaviour if the - server supports the posix-rename@openssh.com extension. - Note that the old (filexfer) behaviour would refuse to clobber an - existing file. Users who depended on this should adjust their sftp(1) - usage. - ok deraadt@ markus@ - - deraadt@cvs.openbsd.org 2008/03/24 16:11:07 - [monitor_fdpass.c] - msg_controllen has to be CMSG_SPACE so that the kernel can account for - each cmsg_len (ie. msg_controllen = sum of CMSG_ALIGN(cmsg_len). This - works now that kernel fd passing has been fixed to accept a bit of - sloppiness because of this ABI repair. - lots of discussion with kettenis - - djm@cvs.openbsd.org 2008/03/25 11:58:02 - [session.c sshd_config.5] - ignore ~/.ssh/rc if a sshd_config ForceCommand is specified; - from dtucker@ ok deraadt@ djm@ - - djm@cvs.openbsd.org 2008/03/25 23:01:41 - [session.c] - last patch had backwards test; spotted by termim AT gmail.com - - djm@cvs.openbsd.org 2008/03/26 21:28:14 - [auth-options.c auth-options.h session.c sshd.8] - add no-user-rc authorized_keys option to disable execution of ~/.ssh/rc - - djm@cvs.openbsd.org 2008/03/27 00:16:49 - [version.h] - openssh-4.9 - - djm@cvs.openbsd.org 2008/03/24 21:46:54 - [regress/sftp-badcmds.sh] - disable no-replace rename test now that we prefer a POSIX rename; spotted - by dkrause@ - - (djm) [configure.ac] fix alignment of --without-stackprotect description - - (djm) [configure.ac] --with-selinux too - - (djm) [regress/Makefile] cleanup PuTTY interop test droppings - - (djm) [README] Update link to release notes - - (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec] - [contrib/suse/openssh.spec] Crank version numbers in RPM spec files - - (djm) Release 4.9p1 - -20080315 - - (djm) [regress/test-exec.sh] Quote putty-related variables in case they are - empty; report and patch from Peter Stuge - - (djm) [regress/test-exec.sh] Silence noise from detection of putty - commands; report from Peter Stuge - - (djm) [session.c] Relocate incorrectly-placed closefrom() that was causing - crashes when used with ChrootDirectory - -20080314 - - (tim) [regress/sftp-cmds.sh] s/cd/lcd/ in lls test. Reported by - vinschen at redhat.com. Add () to put echo commands in subshell for lls test - I mistakenly left out of last commit. - - (tim) [regress/localcommand.sh] Shell portability fix. Reported by imorgan at - nas.nasa.gov - -20080313 - - (djm) [Makefile.in regress/Makefile] Fix interop-tests target (note to - self: make changes to Makefile.in next time, not the generated Makefile). - - (djm) [Makefile.in regress/test-exec.sh] Find installed plink(1) and - puttygen(1) by $PATH - - (tim) [scp.c] Use poll.h if available, fall back to sys/poll.h if not. Patch - by vinschen at redhat.com. - - (tim) [regress/sftp-cmds.sh regress/ssh2putty.sh] Shell portability fixes - from vinschen at redhat.com and imorgan at nas.nasa.gov - -20080312 - - (djm) OpenBSD CVS Sync - - dtucker@cvs.openbsd.org 2007/10/29 06:57:13 - [regress/Makefile regress/localcommand.sh] - Add simple regress test for LocalCommand; ok djm@ - - jmc@cvs.openbsd.org 2007/11/25 15:35:09 - [regress/agent-getpeereid.sh regress/agent.sh] - more existant -> existent, from Martynas Venckus; - pfctl changes: ok henning - ssh changes: ok deraadt - - djm@cvs.openbsd.org 2007/12/12 05:04:03 - [regress/sftp-cmds.sh] - unbreak lls command and add a regress test that would have caught the - breakage; spotted by mouring@ - NB. sftp code change already committed. - - djm@cvs.openbsd.org 2007/12/21 04:13:53 - [regress/Makefile regress/test-exec.sh regress/putty-ciphers.sh] - [regress/putty-kex.sh regress/putty-transfer.sh regress/ssh2putty.sh] - basic (crypto, kex and transfer) interop regression tests against putty - To run these, install putty and run "make interop-tests" from the build - directory - the tests aren't run by default yet. - -20080311 - - (dtucker) [auth-pam.c monitor.c session.c sshd.c] Bug #926: Move - pam_open_session and pam_close_session into the privsep monitor, which - will ensure that pam_session_close is called as root. Patch from Tomas - Mraz. - -20080309 - - (dtucker) [configure.ac] It turns out gcc's -fstack-protector-all doesn't - always work for all platforms and versions, so test what we can and - add a configure flag to turn it of if needed. ok djm@ - - (dtucker) [openbsd-compat/port-aix.{c,h}] Remove AIX specific initgroups - implementation. It's not needed to fix bug #1081 and breaks the build - on some AIX configurations. - - (dtucker) [openbsd-compat/regress/strtonumtest.c] Bug #1347: Use platform's - equivalent of LLONG_MAX for the compat regression tests, which makes them - run on AIX and HP-UX. Patch from David Leonard. - - (dtucker) [configure.ac] Run stack-protector tests with -Werror to catch - platforms where gcc understands the option but it's not supported (and - thus generates a warning). - -20080307 - - (djm) OpenBSD CVS Sync - - jmc@cvs.openbsd.org 2008/02/11 07:58:28 - [ssh.1 sshd.8 sshd_config.5] - bump Mdocdate for pages committed in "febuary", necessary because - of a typo in rcs.c; - - djm@cvs.openbsd.org 2008/02/13 22:38:17 - [servconf.h session.c sshd.c] - rekey arc4random and OpenSSL RNG in postauth child - closefrom fds > 2 before shell/command execution - ok markus@ - - mbalmer@cvs.openbsd.org 2008/02/14 13:10:31 - [sshd.c] - When started in configuration test mode (-t) do not check that sshd is - being started with an absolute path. - ok djm - - markus@cvs.openbsd.org 2008/02/20 15:25:26 - [session.c] - correct boolean encoding for coredump; der Mouse via dugsong - - djm@cvs.openbsd.org 2008/02/22 05:58:56 - [session.c] - closefrom() call was too early, delay it until just before we execute - the user's rc files (if any). - - dtucker@cvs.openbsd.org 2008/02/22 20:44:02 - [clientloop.c packet.c packet.h serverloop.c] - Allow all SSH2 packet types, including UNIMPLEMENTED to reset the - keepalive timer (bz #1307). ok markus@ - - djm@cvs.openbsd.org 2008/02/27 20:21:15 - [sftp-server.c] - add an extension method "posix-rename@openssh.com" to perform POSIX atomic - rename() operations. based on patch from miklos AT szeredi.hu in bz#1400; - ok dtucker@ markus@ - - deraadt@cvs.openbsd.org 2008/03/02 18:19:35 - [monitor_fdpass.c] - use a union to ensure alignment of the cmsg (pay attention: various other - parts of the tree need this treatment too); ok djm - - deraadt@cvs.openbsd.org 2008/03/04 21:15:42 - [version.h] - crank version; from djm - - (tim) [regress/sftp-glob.sh] Shell portability fix. - -20080302 - - (dtucker) [configure.ac] FreeBSD's glob() doesn't behave the way we expect - either, so use our own. - -20080229 - - (dtucker) [openbsd-compat/bsd-poll.c] We don't check for select(2) in - configure (and there's not much point, as openssh won't work without it) - so HAVE_SELECT is not defined and the poll(2) compat code doesn't get - built in. Remove HAVE_SELECT so we can build on platforms without poll. - - (dtucker) [scp.c] Include sys/poll.h inside HAVE_SYS_POLL_H. - - (djm) [contrib/gnome-ssh-askpass2.h] Keep askpass windown on top. From - Debian patch via bernd AT openbsd.org - -20080228 - - (dtucker) [configure.ac] Add -fstack-protector to LDFLAGS too, fixes - linking problems on AIX with gcc 4.1.x. - - (dtucker) [includes.h ssh-add.c ssh-agent.c ssh-keygen.c ssh.c sshd.c - openbsd-compat/openssl-compat.{c,h}] Bug #1437 Move the OpenSSL compat - header to after OpenSSL headers, since some versions of OpenSSL have - SSLeay_add_all_algorithms as a macro already. - - (dtucker) [key.c defines.h openbsd-compat/openssl-compat.h] Move old OpenSSL - compat glue into openssl-compat.h. - - (dtucker) [configure.ac openbsd-compat/port-aix.{c,h}] Bug #1081: Implement - getgrouplist via getgrset on AIX, rather than iterating over getgrent. - This allows, eg, Match and AllowGroups directives to work with NIS and - LDAP groups. - - (dtucker) [sshd.c] Bug #1042: make log messages for tcpwrappers use the - same SyslogFacility as the rest of sshd. Patch from William Knox, - ok djm@. - -20080225 - - (dtucker) [openbsd-compat/fake-rfc2553.h] rename ssh_gai_strerror hack - since it now conflicts with the helper function in misc.c. From - vinschen AT redhat.com. - - (dtucker) [configure.ac audit-bsm.c] Bug #1420: Add a local implementation - of aug_get_machine for systems that don't have their own (eg OS X, FreeBSD). - Help and testing from csjp at FreeBSD org, vgiffin at apple com. ok djm@ - - (dtucker) [includes.h openbsd-compat/openssl-compat.c] Bug #1437: reshuffle - headers so ./configure --with-ssl-engine actually works. Patch from - Ian Lister. - -20080224 - - (tim) [contrib/cygwin/ssh-host-config] - Grammar changes on SYSCONFDIR LOCALSTATEDIR messages. - Check more thoroughly that it's possible to create the /var/empty directory. - Patch by vinschen AT redhat.com - -20080210 - - OpenBSD CVS Sync - - chl@cvs.openbsd.org 2008/01/11 07:22:28 - [sftp-client.c sftp-client.h] - disable unused functions - initially from tobias@, but disabled them by placing them in - "#ifdef notyet" which was asked by djm@ - ok djm@ tobias@ - - djm@cvs.openbsd.org 2008/01/19 19:13:28 - [ssh.1] - satisfy the pedants: -q does not suppress all diagnostic messages (e.g. - some commandline parsing warnings go unconditionally to stdout). - - djm@cvs.openbsd.org 2008/01/19 20:48:53 - [clientloop.c] - fd leak on session multiplexing error path. Report and patch from - gregory_shively AT fanniemae.com - - djm@cvs.openbsd.org 2008/01/19 20:51:26 - [ssh.c] - ignore SIGPIPE in multiplex client mode - we can receive this if the - server runs out of fds on us midway. Report and patch from - gregory_shively AT fanniemae.com - - djm@cvs.openbsd.org 2008/01/19 22:04:57 - [sftp-client.c] - fix remote handle leak in do_download() local file open error path; - report and fix from sworley AT chkno.net - - djm@cvs.openbsd.org 2008/01/19 22:22:58 - [ssh-keygen.c] - when hashing individual hosts (ssh-keygen -Hf hostname), make sure we - hash just the specified hostname and not the entire hostspec from the - keyfile. It may be of the form "hostname,ipaddr", which would lead to - a hash that never matches. report and fix from jp AT devnull.cz - - djm@cvs.openbsd.org 2008/01/19 22:37:19 - [ssh-keygen.c] - unbreak line numbering (broken in revision 1.164), fix error message - - djm@cvs.openbsd.org 2008/01/19 23:02:40 - [channels.c] - When we added support for specified bind addresses for port forwards, we - added a quirk SSH_OLD_FORWARD_ADDR. There is a bug in our handling of - this for -L port forwards that causes the client to listen on both v4 - and v6 addresses when connected to a server with this quirk, despite - having set 0.0.0.0 as a bind_address. - report and patch from Jan.Pechanec AT Sun.COM; ok dtucker@ - - djm@cvs.openbsd.org 2008/01/19 23:09:49 - [readconf.c readconf.h sshconnect2.c] - promote rekeylimit to a int64 so it can hold the maximum useful limit - of 2^32; report and patch from Jan.Pechanec AT Sun.COM, ok dtucker@ - - djm@cvs.openbsd.org 2008/01/20 00:38:30 - [sftp.c] - When uploading, correctly handle the case of an unquoted filename with - glob metacharacters that match a file exactly but not as a glob, e.g. a - file called "[abcd]". report and test cases from duncan2nd AT gmx.de - - djm@cvs.openbsd.org 2008/01/21 17:24:30 - [sftp-server.c] - Remove the fixed 100 handle limit in sftp-server and allocate as many - as we have available file descriptors. Patch from miklos AT szeredi.hu; - ok dtucker@ markus@ - - djm@cvs.openbsd.org 2008/01/21 19:20:17 - [sftp-client.c] - when a remote write error occurs during an upload, ensure that ACKs for - all issued requests are properly drained. patch from t8m AT centrum.cz - - dtucker@cvs.openbsd.org 2008/01/23 01:56:54 - [clientloop.c packet.c serverloop.c] - Revert the change for bz #1307 as it causes connection aborts if an IGNORE - packet arrives while we're waiting in packet_read_expect (and possibly - elsewhere). - - jmc@cvs.openbsd.org 2008/01/31 20:06:50 - [scp.1] - explain how to handle local file names containing colons; - requested by Tamas TEVESZ - ok dtucker - - markus@cvs.openbsd.org 2008/02/04 21:53:00 - [session.c sftp-server.c sftp.h] - link sftp-server into sshd; feedback and ok djm@ - - mcbride@cvs.openbsd.org 2008/02/09 12:15:43 - [ssh.1 sshd.8] - Document the correct permissions for the ~/.ssh/ directory. - ok jmc - - djm@cvs.openbsd.org 2008/02/10 09:55:37 - [sshd_config.5] - mantion that "internal-sftp" is useful with ForceCommand too - - djm@cvs.openbsd.org 2008/02/10 10:54:29 - [servconf.c session.c] - delay ~ expansion for ChrootDirectory so it expands to the logged-in user's - home, rather than the user who starts sshd (probably root) - -20080119 - - (djm) Silence noice from expr in ssh-copy-id; patch from - mikel AT mikelward.com - - (djm) Only listen for IPv6 connections on AF_INET6 sockets; patch from - tsr2600 AT gmail.com - -20080102 - - (dtucker) [configure.ac] Fix message for -fstack-protector-all test. - -20080101 - - (dtucker) OpenBSD CVS Sync - - dtucker@cvs.openbsd.org 2007/12/31 10:41:31 - [readconf.c servconf.c] - Prevent strict-aliasing warnings on newer gcc versions. bz #1355, patch - from Dmitry V. Levin, ok djm@ - - dtucker@cvs.openbsd.org 2007/12/31 15:27:04 - [sshd.c] - When in inetd mode, have sshd generate a Protocol 1 ephemeral server - key only for connections where the client chooses Protocol 1 as opposed - to when it's enabled in the server's config. Speeds up Protocol 2 - connections to inetd-mode servers that also allow Protocol 1. bz #440, - based on a patch from bruno at wolff.to, ok markus@ - - dtucker@cvs.openbsd.org 2008/01/01 08:47:04 - [misc.c] - spaces -> tabs from my previous commit - - dtucker@cvs.openbsd.org 2008/01/01 09:06:39 - [scp.c] - If scp -p encounters a pre-epoch timestamp, use the epoch which is - as close as we can get given that it's used unsigned. Add a little - debugging while there. bz #828, ok djm@ - - dtucker@cvs.openbsd.org 2008/01/01 09:27:33 - [sshd_config.5 servconf.c] - Allow PermitRootLogin in a Match block. Allows for, eg, permitting root - only from the local network. ok markus@, man page bit ok jmc@ - - dtucker@cvs.openbsd.org 2008/01/01 08:51:20 - [moduli] - Updated moduli file; ok djm@ - -20071231 - - (dtucker) [configure.ac openbsd-compat/glob.{c,h}] Bug #1407: force use of - builtin glob implementation on Mac OS X. Based on a patch from - vgiffin at apple. - -20071229 - - (dtucker) OpenBSD CVS Sync - - djm@cvs.openbsd.org 2007/12/12 05:04:03 - [sftp.c] - unbreak lls command and add a regress test that would have caught the - breakage; spotted by mouring@ - - dtucker@cvs.openbsd.org 2007/12/27 14:22:08 - [servconf.c canohost.c misc.c channels.c sshconnect.c misc.h ssh-keyscan.c - sshd.c] - Add a small helper function to consistently handle the EAI_SYSTEM error - code of getaddrinfo. Prompted by vgiffin at apple com via bz #1417. - ok markus@ stevesk@ - - dtucker@cvs.openbsd.org 2007/12/28 15:32:24 - [clientloop.c serverloop.c packet.c] - Make SSH2_MSG_UNIMPLEMENTED and SSH2_MSG_IGNORE messages reset the - ServerAlive and ClientAlive timers. Prevents dropping a connection - when these are enabled but the peer does not support our keepalives. - bz #1307, ok djm@. - - dtucker@cvs.openbsd.org 2007/12/28 22:34:47 - [clientloop.c] - Use the correct packet maximum sizes for remote port and agent forwarding. - Prevents the server from killing the connection if too much data is queued - and an excessively large packet gets sent. bz #1360, ok djm@. - -20071202 - - (dtucker) [configure.ac] Enable -fstack-protector-all on systems where - gcc supports it. ok djm@ - - (dtucker) [scp.c] Update $OpenBSD tag missing from rev 1.175 and remove - leftover debug code. - - (dtucker) OpenBSD CVS Sync - - dtucker@cvs.openbsd.org 2007/10/29 00:52:45 - [auth2-gss.c] - Allow build without -DGSSAPI; ok deraadt@ - (Id sync only, Portable already has the ifdefs) - - dtucker@cvs.openbsd.org 2007/10/29 01:55:04 - [ssh.c] - Plug tiny mem leaks in ControlPath and ProxyCommand option processing; - ok djm@ - - dtucker@cvs.openbsd.org 2007/10/29 04:08:08 - [monitor_wrap.c monitor.c] - Send config block back to slave for invalid users too so options - set by a Match block (eg Banner) behave the same for non-existent - users. Found by and ok djm@ - - dtucker@cvs.openbsd.org 2007/10/29 06:51:59 - [ssh_config.5] - ProxyCommand and LocalCommand use the user's shell, not /bin/sh; ok djm@ - - dtucker@cvs.openbsd.org 2007/10/29 06:54:50 - [ssh.c] - Make LocalCommand work for Protocol 1 too; ok djm@ - - jmc@cvs.openbsd.org 2007/10/29 07:48:19 - [ssh_config.5] - clean up after previous macro removal; - - djm@cvs.openbsd.org 2007/11/03 00:36:14 - [clientloop.c] - fix memory leak in process_cmdline(), patch from Jan.Pechanec AT Sun.COM; - ok dtucker@ - - deraadt@cvs.openbsd.org 2007/11/03 01:24:06 - [ssh.c] - bz #1377: getpwuid results were being clobbered by another getpw* call - inside tilde_expand_filename(); save the data we need carefully - ok djm - - dtucker@cvs.openbsd.org 2007/11/03 02:00:32 - [ssh.c] *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun May 24 22:07:23 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93FE0106566B; Sun, 24 May 2009 22:07:23 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 810828FC12; Sun, 24 May 2009 22:07:23 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OM7N2L002565; Sun, 24 May 2009 22:07:23 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OM7N82002557; Sun, 24 May 2009 22:07:23 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905242207.n4OM7N82002557@svn.freebsd.org> From: John Birrell Date: Sun, 24 May 2009 22:07:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192701 - projects/jbuild/usr.bin/make X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 22:07:24 -0000 Author: jb Date: Sun May 24 22:07:23 2009 New Revision: 192701 URL: http://svn.freebsd.org/changeset/base/192701 Log: Merge build/jbuild changes from p4 Modified: projects/jbuild/usr.bin/make/cond.c projects/jbuild/usr.bin/make/dir.c projects/jbuild/usr.bin/make/dir.h projects/jbuild/usr.bin/make/globals.h projects/jbuild/usr.bin/make/job.c projects/jbuild/usr.bin/make/job.h projects/jbuild/usr.bin/make/main.c projects/jbuild/usr.bin/make/make.c projects/jbuild/usr.bin/make/parse.c projects/jbuild/usr.bin/make/pathnames.h projects/jbuild/usr.bin/make/proc.c projects/jbuild/usr.bin/make/proc.h projects/jbuild/usr.bin/make/util.c projects/jbuild/usr.bin/make/var.c Modified: projects/jbuild/usr.bin/make/cond.c ============================================================================== --- projects/jbuild/usr.bin/make/cond.c Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/cond.c Sun May 24 22:07:23 2009 (r192701) @@ -148,7 +148,7 @@ static CondProc *condDefProc; /* default static char *condExpr; /* The expression to parse */ static Token condPushBack = None; /* Single push-back token in parsing */ -#define MAXIF 30 /* greatest depth of #if'ing */ +#define MAXIF 1024 /* greatest depth of #if'ing */ static Boolean condStack[MAXIF]; /* Stack of conditionals's values */ static int condLineno[MAXIF]; /* Line numbers of the opening .if */ Modified: projects/jbuild/usr.bin/make/dir.c ============================================================================== --- projects/jbuild/usr.bin/make/dir.c Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/dir.c Sun May 24 22:07:23 2009 (r192701) @@ -1152,3 +1152,15 @@ Path_Print(const struct Path *path) TAILQ_FOREACH(p, path, link) printf("%s ", p->dir->name); } + +#ifdef MAKE_IS_BUILD +void +Path_List(const struct Path *path, path_listcb_t *cbfunc, char *srctop, + size_t ssrctop) +{ + const struct PathElement *p; + + TAILQ_FOREACH(p, path, link) + cbfunc(srctop, ssrctop, p->dir->name); +} +#endif Modified: projects/jbuild/usr.bin/make/dir.h ============================================================================== --- projects/jbuild/usr.bin/make/dir.h Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/dir.h Sun May 24 22:07:23 2009 (r192701) @@ -68,4 +68,9 @@ char *Path_FindFile(char *, struct Path char *Path_MakeFlags(const char *, const struct Path *); void Path_Print(const struct Path *); +#ifdef MAKE_IS_BUILD +typedef void path_listcb_t(char *, size_t, const char *); +void Path_List(const struct Path *, path_listcb_t *, char *, size_t); +#endif + #endif /* dir_h_6002e3b8 */ Modified: projects/jbuild/usr.bin/make/globals.h ============================================================================== --- projects/jbuild/usr.bin/make/globals.h Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/globals.h Sun May 24 22:07:23 2009 (r192701) @@ -69,6 +69,9 @@ extern struct Path parseIncPath; /* The system include path. */ extern struct Path sysIncPath; +/* The build include path. */ +extern struct Path bldIncPath; + extern int jobLimit; /* -j argument: maximum number of jobs */ extern int makeErrors; /* Number of targets not remade due to errors */ extern Boolean jobsRunning; /* True if jobs are running */ @@ -95,6 +98,9 @@ extern Boolean touchFlag; * when the shell exits */ extern Boolean usePipes; +/* Gather meta data. */ +extern Boolean use_meta; + /* TRUE if we aren't supposed to really make anything, just see if the * targets are out-of-date */ extern Boolean queryFlag; Modified: projects/jbuild/usr.bin/make/job.c ============================================================================== --- projects/jbuild/usr.bin/make/job.c Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/job.c Sun May 24 22:07:23 2009 (r192701) @@ -101,8 +101,10 @@ __FBSDID("$FreeBSD$"); * thems as need creatin' */ +#include #include #include +#include #include #include #ifdef USE_KQUEUE @@ -114,6 +116,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -136,9 +139,17 @@ __FBSDID("$FreeBSD$"); #include "targ.h" #include "util.h" #include "var.h" +#ifdef MAKE_IS_BUILD +#include "jdirdep.h" +#ifndef BUILDMON +#include "filemon.h" +#endif +#endif #define TMPPAT "/tmp/makeXXXXXXXXXX" +extern char **environ; + #ifndef USE_KQUEUE /* * The SEL_ constants determine the maximum amount of time spent in select @@ -165,6 +176,16 @@ typedef struct Job { pid_t pid; /* The child's process ID */ struct GNode *node; /* The target the child is making */ + char cwd[MAXPATHLEN]; + +#ifdef MAKE_IS_BUILD + char mon_fname[MAXPATHLEN]; +#ifndef BUILDMON + int filemon_fd; + int mon_fd; +#endif + FILE *mfp; +#endif /* * A LstNode for the first command to be saved after the job completes. @@ -264,6 +285,13 @@ TAILQ_HEAD(JobList, Job); * error handling variables */ static int aborting = 0; /* why is the make aborting? */ +#ifdef MAKE_IS_BUILD +static char mon_fname[MAXPATHLEN]; +#ifndef BUILDMON +static int filemon_fd = -1; +static int mon_fd = -1; +#endif +#endif #define ABORT_ERROR 1 /* Because of an error */ #define ABORT_INTERRUPT 2 /* Because it was interrupted */ #define ABORT_WAIT 3 /* Waiting for jobs to finish */ @@ -379,11 +407,283 @@ static int JobStart(GNode *, int, Job *) static void JobDoOutput(Job *, Boolean); static void JobInterrupt(int, int); static void JobRestartJobs(void); -static int Compat_RunCommand(char *, struct GNode *); +static int Compat_RunCommand(char *, struct GNode *, FILE *); static GNode *curTarg = NULL; static GNode *ENDNode; +#ifdef MAKE_IS_BUILD +static int n_meta_created = 0; /* Number of meta data files created. */ + +void +meta_exit(void) +{ + Boolean f = 0; + char *result; + char sharedobj[MAXPATHLEN]; + const char *curdir; + const char *filedep_name; + const char *objdir; + const char *objroot; + const char *p_incmk; + const char *p_machine; + const char *p_machine_arch; + const char *srcrel; + const char *srctop; + size_t len = 0; + + /* + * If no meta data files were created, then there can be no change + * to the dependencies. + */ + if (n_meta_created == 0) + return; + + /* + * If there is no include makefile list variable defined, then + * we can't update dependencies. + */ + if ((p_incmk = Var_Value("INCMK", VAR_GLOBAL)) != NULL) { + /* Initialise the include makefile name list. */ + jdirdep_incmk(Var_Value("INCMK", VAR_GLOBAL)); + + p_machine = Var_Value("MACHINE", VAR_GLOBAL); + p_machine_arch = Var_Value("MACHINE_ARCH", VAR_GLOBAL); + + if ((result = Var_Parse(p_machine_arch, VAR_GLOBAL, TRUE, &len, &f)) != var_Error) + p_machine_arch = result; + else + p_machine_arch = NULL; + + /* + * Initialise the current machine and architecture. + * Using this method, we only do one machine type at + * a time. + */ + jdirdep_supmac_add(p_machine, p_machine_arch); + + srctop = Var_Value(".SRCTOP", VAR_GLOBAL); + curdir = Var_Value(".CURDIR", VAR_GLOBAL); + srcrel = Var_Value(".SRCREL", VAR_GLOBAL); + objroot = Var_Value(".OBJROOT", VAR_GLOBAL); + objdir = Var_Value(".OBJDIR", VAR_GLOBAL); + filedep_name = Var_Value(".FILEDEP_NAME", VAR_GLOBAL); + + snprintf(sharedobj, sizeof(sharedobj), "%s/../shared", objroot); + + /* Add any new directory and/or source dependencies. */ + jdirdep(srctop, curdir, srcrel, objroot, objdir, sharedobj, filedep_name, + JDIRDEP_OPT_ADD | JDIRDEP_OPT_SOURCE | JDIRDEP_OPT_UPDATE); + } +} + +/* + * Read the build monitor output file and write records to the target's + * metadata file. + */ +static void +buildmon_read(FILE *mfp, const char *fname) +{ + FILE *fp; + char bufr[1024]; + int done = 0; + + /* Check if we're not writing to a meta data file.*/ + if (mfp == NULL) { + /* + * Delete the build monitor file since we have no need + * for it. + */ + unlink(fname); + return; + } + + if ((fp = fopen(fname, "r")) == NULL) + err(1, "Could not read build monitor file '%s'", fname); + + fprintf(mfp, "-- buildmon acquired metadata --\n"); + + do { + if (fgets(bufr, sizeof(bufr), fp) != NULL) { + if (strncmp(bufr, "# Session completed", 19) == 0) + done = 1; + + fprintf(mfp, "%s", bufr); + } else +#ifdef BUILDMON + usleep(1000); +#else + done = 1; +#endif + + clearerr(fp); + } while (!done); + + fclose(fp); + + /* Delete the build monitor file now we're done with it. */ + unlink(fname); +} + +#ifndef BUILDMON +/* + * Open the filemon device. + */ +static void +filemon_open(Job *job) +{ + int retry = 5; + + strcpy(mon_fname, "filemon.XXXXXX"); + + while (retry > 0) { + if ((filemon_fd = open("/dev/filemon", O_RDWR)) >= 0) + break; + + retry--; + } + + if (filemon_fd < 0) + err(1, "Could not open filemon device!"); + if ((mon_fd = mkstemp(mon_fname)) < 0) + err(1, "Could not create temporary file!"); + else if (ioctl(filemon_fd, FILEMON_SET_FD, &mon_fd) < 0) + err(1, "Could not set filemon file descriptor!"); + + if (job != NULL) { + job->filemon_fd = filemon_fd; + job->mon_fd = mon_fd; + strlcpy(job->mon_fname, mon_fname, sizeof(job->mon_fname)); + } +} +#endif + +char * +meta_name(struct GNode *gn, char *mname, size_t mnamelen) +{ + char bufr[PATH_MAX]; + char *p; + const char *dname = Var_Value(".OBJDIR", gn); + const char *tname = Var_Value(TARGET, gn); + + /* Weed out relative paths from the target file name. */ + tname = realpath(tname, bufr); + + if (strcmp(dname, dirname(tname)) == 0) + snprintf(mname, mnamelen, "%s.meta", tname); + else { + snprintf(mname, mnamelen, "%s/%s.meta", dname, tname); + + /* + * Replace path separators in the file name after the + * current object directory path. + */ + p = mname + strlen(dname) + 1; + + while (*p != '\0') { + if (*p == '/') + *p = '_'; + p++; + } + } + + return (mname); +} + +static FILE * +meta_create(GNode *gn) +{ + FILE *fp; + LstNode *ln; + char bufr[PATH_MAX]; + char fname[MAXPATHLEN]; + char **ptr; + const char *cname = Var_Value(".CURDIR", gn); + const char *dname = Var_Value(".OBJDIR", gn); + const char *p; + const char *tname = Var_Value(TARGET, gn); + int f_make = 0; + struct stat fs; + + /* This may be a phony node which we don't want meta data for... */ + if ((gn->type & OP_PHONY) != 0) + return (NULL); + + /* The object directory may not exist. Check it.. */ + if (stat(dname, &fs) != 0) + return (NULL); + + /* Check if there are no commands to execute. */ + if (gn->commands.firstPtr == NULL) + return (NULL); + + /* If we aren't in the object directory, don't create a meta file. */ + if (strcmp(cname, dname) == 0) + return (NULL); + + LST_FOREACH(ln, &gn->commands) { + char *cp; + for (cp = Lst_Datum(ln); !f_make && *cp != '\0'; cp++) { + if (*cp == '$') { + Boolean f = 0; + size_t len = 0; + char *result; + + if ((result = Var_Parse(cp, gn, TRUE, + &len, &f)) != var_Error) { + if (len == 7 && strncmp(cp, "${MAKE}", 7) == 0) + f_make = 1; + if (f) + free(result); + cp += len - 1; + } + } + } + } + + /* Check if a recusive 'make' reference was found. */ + if (f_make) + /* Don't create meta data for recursive make commands. */ + return (NULL); + + /* Check if the target is in the current object directory. */ + if ((p = strrchr(tname, '/')) == NULL) { + p = tname; + fprintf(stderr, "Building %s/%s\n", dname, p); + } else { + p++; + fprintf(stderr, "Building %s\n", realpath(tname, bufr)); + } + + fflush(stdout); + + if (!use_meta) + /* Don't create meta data. */ + return (NULL); + + meta_name(gn, fname, sizeof(fname)); + + if ((fp = fopen(fname, "w")) == NULL) + err(1, "Could not open meta file '%s'", fname); + + fprintf(fp, "# Meta data file %s\n", fname); + + LST_FOREACH(ln, &gn->commands) + fprintf(fp, "CMD %s\n", Buf_Peel(Var_Subst(Lst_Datum(ln), gn, FALSE))); + + fprintf(fp, "CWD %s\n", getcwd(bufr, sizeof(bufr))); + + for (ptr = environ; *ptr != NULL; ptr++) + fprintf(fp, "ENV %s\n", *ptr); + + fprintf(fp, "-- command output --\n"); + + n_meta_created++; + + return (fp); +} +#endif + /** * Create a fifo file with a uniq filename, and returns a file * descriptor to that fifo. @@ -713,7 +1013,7 @@ JobPrintCommand(char *cmd, Job *job) * but this one needs to be - use compat mode * just for it. */ - Compat_RunCommand(cmd, job->node); + Compat_RunCommand(cmd, job->node, NULL); return (0); } break; @@ -959,6 +1259,15 @@ JobFinish(Job *job, int *status) MESSAGE(out, job->node); lastNode = job->node; } +#ifdef MAKE_IS_BUILD + if (job->mfp != NULL) + fprintf(job->mfp, "*** Error code %d%s\n", + WEXITSTATUS(*status), + (job->flags & JOB_IGNERR) ? + "(ignored)" : ""); +#endif + fprintf(out, "Error building '%s'\nin directory %s\n", + job->node->path, job->cwd); fprintf(out, "*** Error code %d%s\n", WEXITSTATUS(*status), (job->flags & JOB_IGNERR) ? @@ -1118,6 +1427,23 @@ JobFinish(Job *job, int *status) Buf_Peel( Var_Subst(Lst_Datum(ln), job->node, FALSE))); } +#ifdef MAKE_IS_BUILD + if (job->mfp != NULL) { +#ifndef BUILDMON + close(job->filemon_fd); + close(job->mon_fd); +#endif + + /* Process the build monitor file. */ + buildmon_read(job->mfp, job->mon_fname); + + /* + * Close the meta file now that the target has been + * made. + */ + fclose(job->mfp); + } +#endif job->node->made = MADE; Make_Update(job->node); @@ -1299,6 +1625,11 @@ static void JobExec(Job *job, char **argv) { ProcStuff ps; +#ifdef MAKE_IS_BUILD +#ifdef BUILDMON + ssize_t num; +#endif +#endif if (DEBUG(JOB)) { int i; @@ -1347,6 +1678,19 @@ JobExec(Job *job, char **argv) ps.argv = argv; ps.argv_free = 0; +#ifdef MAKE_IS_BUILD + ps.mfp = job->mfp; + +#ifdef BUILDMON + if (job->mfp != NULL && pipe(ps.pipe_fds) < 0) + errx(1, "Could not create pipe for child/parent comms"); +#else + if (job->mfp != NULL) + /* Open the filemon device. */ + filemon_open(job); +#endif +#endif + /* * Fork. Warning since we are doing vfork() instead of fork(), * do not allocate memory in the child process! @@ -1362,6 +1706,14 @@ JobExec(Job *job, char **argv) if (fifoFd >= 0) close(fifoFd); +#ifdef MAKE_IS_BUILD +#ifdef BUILDMON + if (job->mfp != NULL) + /* Close the read end of the pipe. */ + close(ps.pipe_fds[0]); +#endif +#endif + Proc_Exec(&ps); /* NOTREACHED */ } @@ -1371,6 +1723,29 @@ JobExec(Job *job, char **argv) */ job->pid = ps.child_pid; +#ifdef MAKE_IS_BUILD + if (job->mfp != NULL) { +#ifdef BUILDMON + /* Close the write end of the pipe. */ + close(ps.pipe_fds[1]); + + if ((num = read(ps.pipe_fds[0], job->mon_fname, + sizeof(job->mon_fname))) <= 0) + err(1, "Error reading buildmon file name from pipe"); + + /* Close the read end of the pipe. */ + close(ps.pipe_fds[0]); +#else + /* + * Now that the child's pid is known update the filemon to + * monitor just it. + */ + if (ioctl(job->filemon_fd, FILEMON_SET_PID, &ps.child_pid) < 0) + err(1, "Could not set filemon pid!"); +#endif + } +#endif + if (usePipes && (job->flags & JOB_FIRST)) { /* * The first time a job is run for a node, we set the @@ -1593,6 +1968,7 @@ JobStart(GNode *gn, int flags, Job *prev job->node = gn; job->tailCmds = NULL; + getcwd(job->cwd, sizeof(job->cwd)); /* * Set the initial value of the flags for this job based on the global @@ -1693,6 +2069,9 @@ JobStart(GNode *gn, int flags, Job *prev * We can do all the commands at once. hooray for sanity */ numCommands = 0; +#ifdef MAKE_IS_BUILD + job->mfp = meta_create(gn); +#endif LST_FOREACH(ln, &gn->commands) { if (JobPrintCommand(Lst_Datum(ln), job)) break; @@ -2022,6 +2401,12 @@ JobDoOutput(Job *job, Boolean finish) MESSAGE(stdout, job->node); lastNode = job->node; } +#ifdef MAKE_IS_BUILD + if (job->mfp != NULL && + strncmp(cp, "Building", 8) != 0) + fprintf(job->mfp, "%s%s", cp, + gotNL ? "\n" : ""); +#endif fprintf(stdout, "%s%s", cp, gotNL ? "\n" : ""); fflush(stdout); @@ -2706,6 +3091,10 @@ Cmd_Exec(const char *cmd, const char **e ps.argv[3] = NULL; ps.argv_free = 1; +#ifdef MAKE_IS_BUILD + ps.mfp = NULL; +#endif + /* * Fork. Warning since we are doing vfork() instead of fork(), * do not allocate memory in the child process! @@ -2718,6 +3107,16 @@ Cmd_Exec(const char *cmd, const char **e /* * Child */ +#ifdef MAKE_IS_BUILD +#ifdef BUILDMON + /* Close the read end of the pipe. */ + close(ps.pipe_fds[0]); +#else + /* Close the write end of the pipe. */ + close(ps.pipe_fds[1]); +#endif +#endif + Proc_Exec(&ps); /* NOTREACHED */ } @@ -2813,7 +3212,7 @@ CompatInterrupt(int signo) gn = Targ_FindNode(".INTERRUPT", TARG_NOCREATE); if (gn != NULL) { LST_FOREACH(ln, &gn->commands) { - if (Compat_RunCommand(Lst_Datum(ln), gn)) + if (Compat_RunCommand(Lst_Datum(ln), gn, NULL)) break; } } @@ -2888,7 +3287,7 @@ shellneed(ArgArray *aa, char *cmd) * The node's 'made' field may be set to ERROR. */ static int -Compat_RunCommand(char *cmd, GNode *gn) +Compat_RunCommand(char *cmd, GNode *gn, FILE *mfp) { ArgArray aa; char *cmdStart; /* Start of expanded command */ @@ -2995,21 +3394,67 @@ Compat_RunCommand(char *cmd, GNode *gn) } ps.errCheck = errCheck; +#ifdef MAKE_IS_BUILD + ps.mfp = mfp; + +#ifdef BUILDMON + if (mfp != NULL && pipe(ps.pipe_fds) < 0) + errx(1, "Could not create pipe for child/parent comms"); +#else + if (mfp != NULL) + /* Open the filemon device. */ + filemon_open(NULL); +#endif +#endif + /* * Warning since we are doing vfork() instead of fork(), * do not allocate memory in the child process! */ if ((ps.child_pid = vfork()) == -1) { - Fatal("Could not fork"); + Fatal("Cannot fork"); } else if (ps.child_pid == 0) { /* * Child */ +#ifdef MAKE_IS_BUILD +#ifdef BUILDMON + /* Close the read end of the pipe. */ + close(ps.pipe_fds[0]); +#endif +#endif + Proc_Exec(&ps); - /* NOTREACHED */ + _exit(1); } else { +#ifdef MAKE_IS_BUILD +#ifdef BUILDMON + char bufr[MAXPATHLEN]; + if (mfp != NULL) { + ssize_t num; + + /* Close the write end of the pipe. */ + close(ps.pipe_fds[1]); + + if ((num = read(ps.pipe_fds[0], bufr, sizeof(bufr))) <= 0) + err(1, "Error reading buildmon file name from pipe"); + + /* Close the read end of the pipe. */ + close(ps.pipe_fds[0]); + } +#else + if (mfp != NULL) + /* + * Now that the child's pid is known update the + * filemon to monitor just it. + */ + if (ioctl(filemon_fd, FILEMON_SET_PID, &ps.child_pid) < 0) + err(1, "Could not set filemon pid!"); +#endif +#endif + if (ps.argv_free) { free(ps.argv[2]); free(ps.argv[1]); @@ -3034,6 +3479,17 @@ Compat_RunCommand(char *cmd, GNode *gn) */ reason = ProcWait(&ps); +#ifdef MAKE_IS_BUILD + if (mfp != NULL) { +#ifndef BUILDMON + close(filemon_fd); + close(mon_fd); +#endif + /* Process the build monitor file. */ + buildmon_read(mfp, mon_fname); + } +#endif + if (interrupted) CompatInterrupt(interrupted); @@ -3047,12 +3503,20 @@ Compat_RunCommand(char *cmd, GNode *gn) return (0); } else { printf("*** Error code %d", status); +#ifdef MAKE_IS_BUILD + if (mfp != NULL) + fprintf(mfp, "*** Error code %d", status); +#endif } } else if (WIFSTOPPED(reason)) { status = WSTOPSIG(reason); } else { status = WTERMSIG(reason); printf("*** Signal %d", status); +#ifdef MAKE_IS_BUILD + if (mfp != NULL) + fprintf(mfp, "*** Signal %d", status); +#endif } if (ps.errCheck) { @@ -3064,6 +3528,10 @@ Compat_RunCommand(char *cmd, GNode *gn) * others continue. */ printf(" (continuing)\n"); +#ifdef MAKE_IS_BUILD + if (mfp != NULL) + fprintf(mfp, " (continuing)\n"); +#endif } return (status); } else { @@ -3074,6 +3542,10 @@ Compat_RunCommand(char *cmd, GNode *gn) * happen... */ printf(" (ignored)\n"); +#ifdef MAKE_IS_BUILD + if (mfp != NULL) + fprintf(mfp, " (ignored)\n"); +#endif return (0); } } @@ -3117,10 +3589,27 @@ Compat_Make(GNode *gn, GNode *pgn) return (0); } +#ifdef MAKE_IS_BUILD + if (strcmp(gn->name, ".depend") == 0) { + gn->made = UPTODATE; + return (0); + } +#endif + if (Lst_Member(&gn->iParents, pgn) != NULL) { Var_Set(IMPSRC, Var_Value(TARGET, gn), pgn); } +#ifdef MAKE_IS_BUILD + /* + * We need to check if the target is out-of-date. This includes + * checking if the expanded command has changed. This in turn + * requires that all variables are set in the same way that they + * would be if the target needs to be re-built. + */ + Make_DoAllVar(gn); +#endif + /* * All the children were made ok. Now cmtime contains the * modification time of the newest child, we need to find out @@ -3144,12 +3633,14 @@ Compat_Make(GNode *gn, GNode *pgn) exit(1); } +#ifndef MAKE_IS_BUILD /* * We need to be re-made. We also have to make sure we've got * a $? variable. To be nice, we also define the $> variable * using Make_DoAllVar(). */ Make_DoAllVar(gn); +#endif /* * Alter our type to tell if errors should be ignored or things @@ -3171,7 +3662,7 @@ Compat_Make(GNode *gn, GNode *pgn) curTarg = gn; LST_FOREACH(ln, &gn->commands) { if (Compat_RunCommand(Lst_Datum(ln), - gn)) + gn, NULL)) break; } curTarg = NULL; @@ -3348,8 +3839,13 @@ Compat_Run(Lst *targs) if (!queryFlag) { gn = Targ_FindNode(".BEGIN", TARG_NOCREATE); if (gn != NULL) { +#ifdef MAKE_IS_BUILD + fprintf(stderr, "Building %s/%s\n", Var_Value(".OBJDIR", gn), + Var_Value(TARGET, gn)); + fflush(stdout); +#endif LST_FOREACH(ln, &gn->commands) { - if (Compat_RunCommand(Lst_Datum(ln), gn)) + if (Compat_RunCommand(Lst_Datum(ln), gn, NULL)) break; } if (gn->made == ERROR) { @@ -3387,9 +3883,14 @@ Compat_Run(Lst *targs) * If the user has defined a .END target, run its commands. */ if (makeErrors == 0) { +#ifdef MAKE_IS_BUILD + fprintf(stderr, "Building %s/%s\n", Var_Value(".OBJDIR", gn), + Var_Value(TARGET, gn)); +#endif LST_FOREACH(ln, &ENDNode->commands) { - if (Compat_RunCommand(Lst_Datum(ln), ENDNode)) + if (Compat_RunCommand(Lst_Datum(ln), ENDNode, NULL)) break; } } } + Modified: projects/jbuild/usr.bin/make/job.h ============================================================================== --- projects/jbuild/usr.bin/make/job.h Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/job.h Sun May 24 22:07:23 2009 (r192701) @@ -77,4 +77,9 @@ int Compat_Make(struct GNode *gn, struct void Compat_InstallSignalHandlers(void); void Compat_Run(struct Lst *); +#ifdef MAKE_IS_BUILD +char *meta_name(struct GNode *, char *, size_t); +void meta_exit(void); +#endif + #endif /* job_h_4678dfd1 */ Modified: projects/jbuild/usr.bin/make/main.c ============================================================================== --- projects/jbuild/usr.bin/make/main.c Sun May 24 22:00:20 2009 (r192700) +++ projects/jbuild/usr.bin/make/main.c Sun May 24 22:07:23 2009 (r192701) @@ -114,6 +114,13 @@ static char *curdir; /* startup director static char *objdir; /* where we chdir'ed to */ static char **save_argv; /* saved argv */ static char *save_makeflags;/* saved MAKEFLAGS */ +#ifdef MAKE_IS_BUILD +static char *save_mklvl; /* saved __MKLVL__ */ +static char *save_path; /* saved PATH */ +static char *clean_environ[2]; +static char *default_machine = NULL; +#endif +static struct utsname utsname; /* (-E) vars to override from env */ Lst envFirstVars = Lst_Initializer(envFirstVars); @@ -140,6 +147,9 @@ Boolean printGraphOnly; /* -p flag */ Boolean queryFlag; /* -q flag */ Boolean touchFlag; /* -t flag */ Boolean usePipes; /* !-P flag */ +#ifdef MAKE_IS_BUILD +Boolean use_meta; /* !-Q flag */ +#endif uint32_t warn_cmd; /* command line warning flags */ uint32_t warn_flags; /* actual warning flags */ uint32_t warn_nocmd; /* command line no-warning flags */ @@ -154,7 +164,8 @@ static void usage(void) { fprintf(stderr, - "usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]\n" + "usage: make [-BPQSXeiknpqrstv] [-C directory] [-D variable]\n" + "\t[-b directory]\n" "\t[-d flags] [-E variable] [-f makefile] [-I directory]\n" "\t[-j max_jobs] [-m directory] [-V variable]\n" "\t[variable=value] [target ...]\n"); @@ -459,6 +470,10 @@ rearg: Lst_AtEnd(&envFirstVars, estrdup(optarg)); MFLAGS_append("-E", optarg); break; + case 'b': + Path_AddDir(&bldIncPath, optarg); + MFLAGS_append("-b", optarg); + break; case 'e': checkEnvFirst = TRUE; MFLAGS_append("-e", NULL); @@ -510,6 +525,9 @@ rearg: case 'Q': beQuiet = TRUE; beVerbose = FALSE; +#ifdef MAKE_IS_BUILD + use_meta = FALSE; +#endif MFLAGS_append("-Q", NULL); break; case 'q': @@ -526,7 +544,11 @@ rearg: MFLAGS_append("-S", NULL); break; case 's': +#ifdef MAKE_IS_BUILD + beSilent = FALSE; +#else beSilent = TRUE; +#endif MFLAGS_append("-s", NULL); break; case 't': @@ -572,6 +594,11 @@ rearg: char *ptr = MAKEFLAGS_quote(*argv); char *v = estrdup(*argv); +#ifdef MAKE_IS_BUILD + if (strncmp(v, "MACHINE=", 8) == 0) + default_machine = utsname.machine; +#endif + Var_Append(".MAKEFLAGS", ptr, VAR_GLOBAL); Parse_DoVar(v, VAR_CMD); free(ptr); @@ -671,7 +698,11 @@ static void check_make_level(void) { #ifdef WANT_ENV_MKLVL +#ifdef MAKE_IS_BUILD + char *value = save_mklvl; +#else char *value = getenv(MKLVL_ENVVAR); +#endif int level = (value == NULL) ? 0 : atoi(value); if (level < 0) { @@ -685,6 +716,15 @@ check_make_level(void) sprintf(new_value, "%d", level + 1); setenv(MKLVL_ENVVAR, new_value, 1); } + +#ifdef MAKE_IS_BUILD + /* + * Register a function to call on exit for child build processes so + * that dependency hooks can be activated. + */ + if (level > 0) + atexit(meta_exit); +#endif #endif /* WANT_ENV_MKLVL */ } @@ -833,6 +873,57 @@ Remake_Makefiles(void) } } +#ifdef MAKE_IS_BUILD +static void +make_objdir(char *path) +{ + struct stat fs; + + while (stat(path, &fs) != 0) { + char bufr[MAXPATHLEN]; + char *p; + + strcpy(bufr, path); + + if ((p = strrchr(bufr, '/')) == NULL) + err(1, "Missing '/' in directory path"); + else { + *p = '\0'; + + make_objdir(bufr); + } + + if (mkdir(path, 0775) != 0 && errno != EEXIST) + err(1, "Could not make directory '%s'", path); + } +} + +static void +mk_path_init(char *srctop, size_t ssrctop, const char *p) +{ + char path[MAXPATHLEN]; + const char *mk_path_rel = "/bld"; + size_t len; + size_t len1 = strlen(mk_path_rel); + + if (*srctop != '\0' || ssrctop == 0) + return; + + if (realpath(p, path) == NULL) + return; + + if ((len = strlen(path)) < len1) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun May 24 22:16:14 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B546A106566B; Sun, 24 May 2009 22:16:14 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A21028FC18; Sun, 24 May 2009 22:16:14 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OMGEsc002821; Sun, 24 May 2009 22:16:14 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OMGERa002815; Sun, 24 May 2009 22:16:14 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905242216.n4OMGERa002815@svn.freebsd.org> From: John Birrell Date: Sun, 24 May 2009 22:16:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192702 - in projects/jbuild/usr.bin/jbuild: . filemon X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 22:16:15 -0000 Author: jb Date: Sun May 24 22:16:14 2009 New Revision: 192702 URL: http://svn.freebsd.org/changeset/base/192702 Log: Add jbuild, a modified version of FreeBSD's 'make' with automated dependency handling. filemon is a kernel module that provides a device interface for jbuild to read info that it saves in the meta data file for each target built. Added: projects/jbuild/usr.bin/jbuild/ projects/jbuild/usr.bin/jbuild/Makefile projects/jbuild/usr.bin/jbuild/filemon/ projects/jbuild/usr.bin/jbuild/filemon/Makefile projects/jbuild/usr.bin/jbuild/filemon/filemon.c projects/jbuild/usr.bin/jbuild/filemon/filemon.h projects/jbuild/usr.bin/jbuild/filemon/filemon_lock.c projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c Added: projects/jbuild/usr.bin/jbuild/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/Makefile Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,125 @@ +# $FreeBSD$ + +.PATH : ${.CURDIR}/../make ${.CURDIR}/../jdirdep + +PROG= jbuild +CFLAGS+= -I${.CURDIR}/../make +SRCS= arch.c buf.c cond.c dir.c for.c hash.c hash_tables.c job.c \ + lst.c main.c make.c \ + parse.c proc.c shell.c str.c suff.c targ.c \ + util.c var.c + +BINDIR?= /usr/local/bin +WARNS?= 6 +NO_SHARED?= YES +NO_MAN= +IGNORE_PRAGMA= YES +DEBUG_FLAGS+= -g + +CFLAGS+= -DMAKE_VERSION=\"8000000000\" + +# We're building 'build', not 'make' so the behaviour is different in +# some areas like defaulting to silent. +CFLAGS+= -DMAKE_IS_BUILD -DJBUILD + +.ifdef BUILDMON +SRCS += buildmonreq.c +CFLAGS += -DBUILDMON -I${.CURDIR}/buildmon +.else +CFLAGS += -I${.CURDIR}/filemon +.endif + +.include "${.CURDIR}/../jdirdep/Makefile.common" + +# Make object files which depend on preprocessor symbols defined in +# the Makefile which are not compilation options but rather configuration +# options dependend on the Makefile. main.c needs MAKE_VERSION while +# shell.c uses DEFSHELLNAME. This will cause recompilation in the case +# the definition is changed in the makefile. It will of course not cause +# recompilation if one does 'make MAKE_SHELL=csh'. +main.o shell.o: ${MAKEFILE} + +# Directive and keyword tables. We use hash tables. These hash tables have been +# generated with mph (ports/devel/mph) +# If you change the directives or keywords (adding, deleting, reordering) you +# need to create new tables and hash functions (directive_hash, keyword_hash). +# +# The following changes have been made to the generated code: +# +# o prefix the names of the g, T0 and T1 arrays with 'directive_' +# resp. 'keyword_'. +# +# o make the type of the tables 'const [un]signed char' (if you change +# anything make sure that the numbers fit into a char). +# +# o make the hash function use the length for termination, +# not the trailing '\0', via the -l flag in emitc and some editing +# (only for directive_hash). + +LOCALBASE ?= /usr/local +MPH ?= ${LOCALBASE}/bin/mph +EMITC ?= ${LOCALBASE}/bin/emitc + +.PRECIOUS: hash + +hash: + ( echo '/*' ; \ + echo ' * DO NOT EDIT' ; \ + echo ' * $$''FreeBSD$$' ; \ + echo -n ' * auto-generated from ' ; \ + sed -nEe '/\$$FreeBSD/s/^.*\$$(.*)\$$.*$$/\1/p' \ + ${.CURDIR}/parse.c ; \ + echo ' * DO NOT EDIT' ; \ + echo ' */' ; \ + echo '#include ' ; \ + echo ; \ + echo '#include "hash_tables.h"' ; \ + echo ; \ + cat ${.CURDIR}/parse.c | sed \ + -e '1,/DIRECTIVES-START-TAG/d' \ + -e '/DIRECTIVES-END-TAG/,$$d' \ + -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ + ${MPH} -d2 -m1 | ${EMITC} -l -s | \ + sed \ + -e 's/^static int g\[\]/static const signed char directive_g[]/' \ + -e 's/^static int T0\[\]/static const u_char directive_T0[]/' \ + -e 's/^static int T1\[\]/static const u_char directive_T1[]/' \ + -e '/^#define uchar unsigned char/d' \ + -e 's/uchar/u_char/g' \ + -e 's/^hash(/directive_hash(/' \ + -e 's/; \*kp;/; kp < key + len;/' \ + -e 's/int len)/size_t len)/' \ + -e 's/= T0\[/= directive_T0\[/' \ + -e 's/= T1\[/= directive_T1\[/' \ + -e 's/g\[f/directive_g[f/g' ; \ + cat ${.CURDIR}/parse.c | sed \ + -e '1,/KEYWORD-START-TAG/d' \ + -e '/KEYWORD-END-TAG/,$$d' \ + -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ + ${MPH} -d2 -m1 | ${EMITC} -l -s | \ + sed \ + -e 's/^static int g\[\]/static const signed char keyword_g[]/' \ + -e 's/^static int T0\[\]/static const u_char keyword_T0[]/' \ + -e 's/^static int T1\[\]/static const u_char keyword_T1[]/' \ + -e '/^#define uchar unsigned char/d' \ + -e 's/uchar/u_char/g' \ + -e 's/^hash(/keyword_hash(/' \ + -e 's/int len)/size_t len)/' \ + -e 's/= T0\[/= keyword_T0\[/' \ + -e 's/= T1\[/= keyword_T1\[/' \ + -e 's/g\[f/keyword_g[f/g' \ + ) > ${.CURDIR}/hash_tables.c + +# Set the shell which make(1) uses. Bourne is the default, but a decent +# Korn shell works fine, and much faster. Using the C shell for this +# will almost certainly break everything, but it's Unix tradition to +# allow you to shoot yourself in the foot if you want to :-) + +MAKE_SHELL?= sh +.if ${MAKE_SHELL} == "csh" || ${MAKE_SHELL} == "sh" || ${MAKE_SHELL} == "ksh" +CFLAGS+= -DDEFSHELLNAME=\"${MAKE_SHELL}\" +.else +.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"." +.endif + +.include Added: projects/jbuild/usr.bin/jbuild/filemon/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/filemon/Makefile Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +KMOD = filemon +SRCS = filemon.c +SRCS += vnode_if.h + +.include Added: projects/jbuild/usr.bin/jbuild/filemon/filemon.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/filemon/filemon.c Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,310 @@ +/* $FreeBSD$ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "filemon.h" + +extern struct sysentvec elf32_freebsd_sysvec; + +static d_close_t filemon_close; +static d_ioctl_t filemon_ioctl; +static d_open_t filemon_open; +static int filemon_unload(void); +static void filemon_load(void *); + +static struct cdevsw filemon_cdevsw = { + .d_version = D_VERSION, + .d_close = filemon_close, + .d_ioctl = filemon_ioctl, + .d_open = filemon_open, + .d_name = "filemon", +}; + +MALLOC_DECLARE(M_FILEMON); +MALLOC_DEFINE(M_FILEMON, "filemon", "File access monitor"); + +struct filemon { + pid_t pid; /* The process ID being monitored. */ + char fname1[MAXPATHLEN]; /* Temporary filename buffer. */ + char fname2[MAXPATHLEN]; /* Temporary filename buffer. */ + char msgbufr[1024]; /* Output message buffer. */ + struct file + *fp; /* Output file pointer. */ + struct thread + *locker; /* Ptr to the thread locking this */ + /* filemon.*/ + struct mtx + mtx; /* Lock mutex for this filemon. */ + struct cv + cv; /* Lock condition variable for this */ + /* filemon. */ + TAILQ_ENTRY(filemon) link; /* Link into the in-use list. */ +}; + +static TAILQ_HEAD(, filemon) filemons_inuse = TAILQ_HEAD_INITIALIZER(filemons_inuse); +static int n_readers = 0; +static struct mtx access_mtx; +static struct cv access_cv; +static struct thread *access_owner = NULL; +static struct thread *access_requester = NULL; + +#if __FreeBSD_version < 701000 +static struct clonedevs *filemon_clones; +static eventhandler_tag eh_tag; +#else +static struct cdev *filemon_dev; +#endif + +#include "filemon_lock.c" +#include "filemon_wrapper.c" + +#if __FreeBSD_version < 701000 +static void +filemon_clone(void *arg, struct ucred *cred, char *name, int namelen, + struct cdev **dev) +{ + int u = -1; + size_t len; + + if (*dev != NULL) + return; + + len = strlen(name); + + if (len != 7) + return; + + if (bcmp(name,"filemon",7) != 0) + return; + + /* Clone the device to the new minor number. */ + if (clone_create(&filemon_clones, &filemon_cdevsw, &u, dev, 0) != 0) + /* Create the /dev/filemonNN entry. */ + *dev = make_dev_cred(&filemon_cdevsw, u, cred, UID_ROOT, + GID_WHEEL, 0666, "filemon%d", u); + if (*dev != NULL) { + dev_ref(*dev); + (*dev)->si_flags |= SI_CHEAPCLONE; + } +} +#endif + +static void +filemon_dtr(void *data) +{ + struct filemon *filemon = data; + + if (filemon != NULL) { + /* Get exclusive write access. */ + filemon_lock_write(); + + /* Remove from the in-use list. */ + TAILQ_REMOVE(&filemons_inuse, filemon, link); + + /* Give up write access. */ + filemon_unlock_write(); + + if (filemon->fp != NULL) + fdrop(filemon->fp, curthread); + + mtx_destroy(&filemon->mtx); + cv_destroy(&filemon->cv); + + free(filemon, M_FILEMON); + } +} + +static int +filemon_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag __unused, struct thread *td) +{ + int error = 0; + struct filemon *filemon; + +#if __FreeBSD_version < 701000 + filemon = dev->si_drv1; +#else + devfs_get_cdevpriv((void **) &filemon); +#endif + + switch (cmd) { + /* Set the output file descriptor. */ + case FILEMON_SET_FD: + if ((error = fget_write(td, *((int *) data), + &filemon->fp)) == 0) + /* Write the file header. */ + filemon_comment(filemon); + break; + + /* Set the monitored process ID. */ + case FILEMON_SET_PID: + filemon->pid = *((pid_t *) data); + break; + + default: + error = EINVAL; + break; + } + + return(error); +} + +static int +filemon_open(struct cdev *dev, int oflags __unused, int devtype __unused, + struct thread *td __unused) +{ + struct filemon *filemon; + + filemon = malloc(sizeof(struct filemon), M_FILEMON, M_WAITOK | M_ZERO); + + filemon->pid = curproc->p_pid; + filemon->fp = NULL; + + mtx_init(&filemon->mtx, "filemon", "filemon", MTX_DEF); + cv_init(&filemon->cv, "filemon"); + +#if __FreeBSD_version < 701000 + dev->si_drv1 = filemon; +#else + devfs_set_cdevpriv(filemon, filemon_dtr); +#endif + + /* Get exclusive write access. */ + filemon_lock_write(); + + /* Add to the in-use list. */ + TAILQ_INSERT_TAIL(&filemons_inuse, filemon, link); + + /* Give up write access. */ + filemon_unlock_write(); + + return (0); +} + +static int +filemon_close(struct cdev *dev __unused, int flag __unused, int fmt __unused, + struct thread *td __unused) +{ +#if __FreeBSD_version < 701000 + filemon_dtr(dev->si_drv1); + + dev->si_drv1 = NULL; + + /* Schedule this cloned device to be destroyed. */ + destroy_dev_sched(dev); +#endif + + return (0); +} + +static void +filemon_load(void *dummy __unused) +{ + mtx_init(&access_mtx, "filemon", "filemon", MTX_DEF); + cv_init(&access_cv, "filemon"); + + /* Install the syscall wrappers. */ + filemon_wrapper_install(); + +#if __FreeBSD_version < 701000 + /* Enable device cloning. */ + clone_setup(&filemon_clones); + + /* Setup device cloning events. */ + eh_tag = EVENTHANDLER_REGISTER(dev_clone, filemon_clone, 0, 1000); +#else + filemon_dev = make_dev(&filemon_cdevsw, 0, UID_ROOT, GID_WHEEL, 0666, + "filemon"); +#endif +} + + +static int +filemon_unload(void) +{ + int error = 0; + + /* Get exclusive write access. */ + filemon_lock_write(); + + if (TAILQ_FIRST(&filemons_inuse) != NULL) + error = EBUSY; + else { +#if __FreeBSD_version >= 701000 + destroy_dev(filemon_dev); +#endif + + /* Deinstall the syscall wrappers. */ + filemon_wrapper_deinstall(); + } + + /* Give up write access. */ + filemon_unlock_write(); + + if (error == 0) { +#if __FreeBSD_version < 701000 + /* + * Check if there is still an event handler callback registered. + */ + if (eh_tag != 0) { + /* De-register the device cloning event handler. */ + EVENTHANDLER_DEREGISTER(dev_clone, eh_tag); + eh_tag = 0; + + /* Stop device cloning. */ + clone_cleanup(&filemon_clones); + } +#endif + + mtx_destroy(&access_mtx); + cv_destroy(&access_cv); + } + + return (error); +} + +static int +filemon_modevent(module_t mod __unused, int type, void *data) +{ + int error = 0; + + switch (type) { + case MOD_LOAD: + filemon_load(data); + break; + + case MOD_UNLOAD: + error = filemon_unload(); + break; + + case MOD_SHUTDOWN: + break; + + default: + error = EOPNOTSUPP; + break; + + } + + return (error); +} + +DEV_MODULE(filemon, filemon_modevent, NULL); +MODULE_VERSION(filemon, 1); Added: projects/jbuild/usr.bin/jbuild/filemon/filemon.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/filemon/filemon.h Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,4 @@ +/* $FreeBSD$ */ + +#define FILEMON_SET_FD _IOWR('S', 1, int) +#define FILEMON_SET_PID _IOWR('S', 2, pid_t) Added: projects/jbuild/usr.bin/jbuild/filemon/filemon_lock.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/filemon/filemon_lock.c Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,94 @@ +/* $FreeBSD$ */ + +static void +filemon_filemon_lock(struct filemon *filemon) +{ + mtx_lock(&filemon->mtx); + + while (filemon->locker != NULL && filemon->locker != curthread) + cv_wait(&filemon->cv, &filemon->mtx); + + filemon->locker = curthread; + + mtx_unlock(&filemon->mtx); +} + +static void +filemon_filemon_unlock(struct filemon *filemon) +{ + mtx_lock(&filemon->mtx); + + if (filemon->locker == curthread) + filemon->locker = NULL; + + /* Wake up threads waiting. */ + cv_broadcast(&filemon->cv); + + mtx_unlock(&filemon->mtx); +} + +static void +filemon_lock_read(void) +{ + mtx_lock(&access_mtx); + + while (access_owner != NULL || access_requester != NULL) + cv_wait(&access_cv, &access_mtx); + + n_readers++; + + /* Wake up threads waiting. */ + cv_broadcast(&access_cv); + + mtx_unlock(&access_mtx); +} + +static void +filemon_unlock_read(void) +{ + mtx_lock(&access_mtx); + + if (n_readers > 0) + n_readers--; + + /* Wake up a thread waiting. */ + cv_broadcast(&access_cv); + + mtx_unlock(&access_mtx); +} + +static void +filemon_lock_write(void) +{ + mtx_lock(&access_mtx); + + while (access_owner != curthread) { + if (access_owner == NULL && + (access_requester == NULL || access_requester == curthread)) { + access_owner = curthread; + access_requester = NULL; + } else { + if (access_requester == NULL) + access_requester = curthread; + + cv_wait(&access_cv, &access_mtx); + } + } + + mtx_unlock(&access_mtx); +} + +static void +filemon_unlock_write(void) +{ + mtx_lock(&access_mtx); + + /* Sanity check that the current thread actually has the write lock. */ + if (access_owner == curthread) + access_owner = NULL; + + /* Wake up a thread waiting. */ + cv_broadcast(&access_cv); + + mtx_unlock(&access_mtx); +} Added: projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c Sun May 24 22:16:14 2009 (r192702) @@ -0,0 +1,410 @@ +/* $FreeBSD$ */ + +static void +filemon_output(struct filemon *filemon, char *msg, size_t len) +{ + struct uio auio; + struct iovec aiov; + + if (filemon->fp == NULL) + return; + + aiov.iov_base = msg; + aiov.iov_len = len; + auio.uio_iov = &aiov; + auio.uio_iovcnt = 1; + auio.uio_resid = len; + auio.uio_segflg = UIO_SYSSPACE; + auio.uio_rw = UIO_WRITE; + auio.uio_td = curthread; + auio.uio_offset = (off_t) -1; + + bwillwrite(); + + fo_write(filemon->fp, &auio, curthread->td_ucred, 0, curthread); +} + +static struct filemon * +filemon_pid_check(struct proc *p) +{ + struct filemon *filemon; + + TAILQ_FOREACH(filemon, &filemons_inuse, link) { + if (p->p_pid == filemon->pid) + return(filemon); + } + + if (p->p_pptr == NULL) + return(NULL); + + return (filemon_pid_check(p->p_pptr)); +} + +static void +filemon_comment(struct filemon *filemon) +{ + int len; + + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), + "# buildmon version 2\n# Target pid %d\nV 2\n", curproc->p_pid); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + + /* Release the read lock. */ + filemon_unlock_read(); +} + +static int +filemon_wrapper_chdir(struct thread *td, struct chdir_args *uap) +{ + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + if ((ret = chdir(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + copyinstr(uap->path, filemon->fname1, sizeof(filemon->fname1), &done); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "C %d %s\n", + curproc->p_pid, filemon->fname1); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_execve(struct thread *td, struct execve_args *uap) +{ + char fname[MAXPATHLEN]; + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + copyinstr(uap->fname, fname, sizeof(fname), &done); + + if ((ret = execve(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "E %d %s\n", + curproc->p_pid, fname); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_fork(struct thread *td, struct fork_args *uap) +{ + int ret; + size_t len; + struct filemon *filemon; + + if ((ret = fork(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "F %d %d\n", + curproc->p_pid, curthread->td_retval[0]); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_open(struct thread *td, struct open_args *uap) +{ + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + if ((ret = open(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + copyinstr(uap->path, filemon->fname1, sizeof(filemon->fname1), &done); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "%c %d %s\n", + (uap->flags & O_ACCMODE) ? 'W':'R', curproc->p_pid, filemon->fname1); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_rename(struct thread *td, struct rename_args *uap) +{ + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + if ((ret = rename(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + copyinstr(uap->from, filemon->fname1, sizeof(filemon->fname1), &done); + copyinstr(uap->to, filemon->fname2, sizeof(filemon->fname2), &done); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "M %d '%s' '%s'\n", + curproc->p_pid, filemon->fname1, filemon->fname2); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_stat(struct thread *td, struct stat_args *uap) +{ + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + if ((ret = stat(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + copyinstr(uap->path, filemon->fname1, sizeof(filemon->fname1), &done); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "S %d %s\n", + curproc->p_pid, filemon->fname1); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static void +filemon_wrapper_sys_exit(struct thread *td, struct sys_exit_args *uap) +{ + size_t len; + struct filemon *filemon; + + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "X %d\n", curproc->p_pid); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Check if the monitored process is about to exit. */ + if (filemon->pid == curproc->p_pid) { + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "# Bye bye\n"); + + filemon_output(filemon, filemon->msgbufr, len); + } + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + + sys_exit(td, uap); +} + +static int +filemon_wrapper_unlink(struct thread *td, struct unlink_args *uap) +{ + int ret; + size_t done; + size_t len; + struct filemon *filemon; + + if ((ret = unlink(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + copyinstr(uap->path, filemon->fname1, sizeof(filemon->fname1), &done); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "D %d %s\n", + curproc->p_pid, filemon->fname1); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static int +filemon_wrapper_vfork(struct thread *td, struct vfork_args *uap) +{ + int ret; + size_t len; + struct filemon *filemon; + + if ((ret = vfork(td, uap)) == 0) { + /* Grab a read lock on the filemon inuse list. */ + filemon_lock_read(); + + if ((filemon = filemon_pid_check(curproc)) != NULL) { + /* Lock the found filemon structure. */ + filemon_filemon_lock(filemon); + + len = snprintf(filemon->msgbufr, sizeof(filemon->msgbufr), "F %d %d\n", + curproc->p_pid, curthread->td_retval[0]); + + filemon_output(filemon, filemon->msgbufr, len); + + /* Unlock the found filemon structure. */ + filemon_filemon_unlock(filemon); + } + + /* Release the read lock. */ + filemon_unlock_read(); + } + + return(ret); +} + +static void +filemon_wrapper_install(void) +{ +#if defined(__i386__) + struct sysent *sv_table = elf32_freebsd_sysvec.sv_table; +#elif defined(__amd64__) + struct sysent *sv_table = elf64_freebsd_sysvec.sv_table; +#else +#error Machine type not supported +#endif + + sv_table[SYS_chdir].sy_call = (sy_call_t *) filemon_wrapper_chdir; + sv_table[SYS_exit].sy_call = (sy_call_t *) filemon_wrapper_sys_exit; + sv_table[SYS_execve].sy_call = (sy_call_t *) filemon_wrapper_execve; + sv_table[SYS_fork].sy_call = (sy_call_t *) filemon_wrapper_fork; + sv_table[SYS_open].sy_call = (sy_call_t *) filemon_wrapper_open; + sv_table[SYS_rename].sy_call = (sy_call_t *) filemon_wrapper_rename; + sv_table[SYS_stat].sy_call = (sy_call_t *) filemon_wrapper_stat; + sv_table[SYS_unlink].sy_call = (sy_call_t *) filemon_wrapper_unlink; + sv_table[SYS_vfork].sy_call = (sy_call_t *) filemon_wrapper_vfork; +} + +static void +filemon_wrapper_deinstall(void) +{ +#if defined(__i386__) + struct sysent *sv_table = elf32_freebsd_sysvec.sv_table; +#elif defined(__amd64__) + struct sysent *sv_table = elf64_freebsd_sysvec.sv_table; +#else +#error Machine type not supported +#endif + + sv_table[SYS_chdir].sy_call = (sy_call_t *) chdir; + sv_table[SYS_exit].sy_call = (sy_call_t *) sys_exit; + sv_table[SYS_execve].sy_call = (sy_call_t *) execve; + sv_table[SYS_fork].sy_call = (sy_call_t *) fork; + sv_table[SYS_open].sy_call = (sy_call_t *) open; + sv_table[SYS_rename].sy_call = (sy_call_t *) rename; + sv_table[SYS_stat].sy_call = (sy_call_t *) stat; + sv_table[SYS_unlink].sy_call = (sy_call_t *) unlink; + sv_table[SYS_vfork].sy_call = (sy_call_t *) vfork; +} From owner-svn-src-projects@FreeBSD.ORG Sun May 24 22:18:00 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21E01106566B; Sun, 24 May 2009 22:18:00 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0C76A8FC16; Sun, 24 May 2009 22:18:00 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4OMHxcR002890; Sun, 24 May 2009 22:17:59 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4OMHxQ2002886; Sun, 24 May 2009 22:17:59 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905242217.n4OMHxQ2002886@svn.freebsd.org> From: John Birrell Date: Sun, 24 May 2009 22:17:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192703 - projects/jbuild/usr.bin/jdirdep X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2009 22:18:01 -0000 Author: jb Date: Sun May 24 22:17:59 2009 New Revision: 192703 URL: http://svn.freebsd.org/changeset/base/192703 Log: Add jdirdep, a program to parse the directory dependencies from the meta data files that jbuild creates. Part of jdirdep is built into jbuild itself so that directory dependencies update automatically when you build. Added: projects/jbuild/usr.bin/jdirdep/ projects/jbuild/usr.bin/jdirdep/Makefile projects/jbuild/usr.bin/jdirdep/Makefile.common projects/jbuild/usr.bin/jdirdep/jdirdep.c projects/jbuild/usr.bin/jdirdep/jdirdep.h projects/jbuild/usr.bin/jdirdep/jdirdep_mysql.c projects/jbuild/usr.bin/jdirdep/jdirdep_sqlite3.c projects/jbuild/usr.bin/jdirdep/jgetsrc Added: projects/jbuild/usr.bin/jdirdep/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Makefile Sun May 24 22:17:59 2009 (r192703) @@ -0,0 +1,16 @@ +# $FreeBSD$ + +PROG = jdirdep + +.include "Makefile.common" + +BINDIR?= /usr/local/bin +WARNS= 6 +NO_MAN= +CFLAGS+= -DJDIRDEP_MAIN +CFLAGS+= -DDEBUG +CFLAGS+= -g +STRIP= + + +.include Added: projects/jbuild/usr.bin/jdirdep/Makefile.common ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Makefile.common Sun May 24 22:17:59 2009 (r192703) @@ -0,0 +1,18 @@ +# $FreeBSD$ + +SRCS += jdirdep.c + +CFLAGS += -I${.CURDIR}/../jdirdep -DJDIRDEP + +.if defined(USE_SQLITE3) +CFLAGS += -DUSE_SQLITE3 -pthread +CFLAGS += -I/usr/local/include +SRCS += jdirdep_sqlite3.c +LDADD += /usr/local/lib/libsqlite3.a +.else +SRCS += jdirdep_mysql.c +MYSQL_CFLAGS != mysql_config --cflags +MYSQL_LIBS != mysql_config --libs +CFLAGS += -DUSE_MYSQL ${MYSQL_CFLAGS} +LDADD += ${MYSQL_LIBS} +.endif Added: projects/jbuild/usr.bin/jdirdep/jdirdep.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/jdirdep.c Sun May 24 22:17:59 2009 (r192703) @@ -0,0 +1,1378 @@ +/* $FreeBSD$ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "jdirdep.h" + +#ifdef JDIRDEP +#define MAKEFILE "Buildfile" +#define MAKEFILED "Buildfile.dirdep" +#define MAKEFILEDEP "Buildfile.dep" +#else +#define MAKEFILE "Makefile" +#define MAKEFILED "Makefile.dirdep" +#define MAKEFILEDEP "Makefile.dep" +#endif + +struct dirdep { + char *srcrel; + int subcnt; + TAILQ_ENTRY(dirdep) link; +}; + +struct march { + char *machine; + char *machine_arch; + TAILQ_ENTRY(march) link; +}; + +struct incmk { + char *s; + size_t l; + TAILQ_ENTRY(incmk) link; +}; + +struct file_track { + int64_t *filids; + int max_idx; + int next_idx; +}; + +static TAILQ_HEAD(, dirdep) dirdeps = TAILQ_HEAD_INITIALIZER(dirdeps); +static TAILQ_HEAD(, dirdep) srcdirdeps = TAILQ_HEAD_INITIALIZER(srcdirdeps); +static TAILQ_HEAD(, incmk) incmks = TAILQ_HEAD_INITIALIZER(incmks); +static TAILQ_HEAD(, march) marchs = TAILQ_HEAD_INITIALIZER(marchs); +static int f_db = 0; +static int f_quiet = 1; +static struct file_track read_filids = { NULL, 0, 0 }; +static struct file_track write_filids = { NULL, 0, 0 }; + +static void +file_track_add(struct file_track *ft, int64_t filid) +{ + int i; + + for (i = 0; i < ft->max_idx; i++) + if (ft->filids[i] == filid) + return;; + + if (ft->next_idx == ft->max_idx) { + int max_idx = ft->max_idx + 256; + int64_t *filids; + + if ((filids = realloc(ft->filids, sizeof(int64_t) * max_idx)) == NULL) + errx(1, "Error reallocating memory"); + + ft->filids = filids; + ft->max_idx = max_idx; + } + + ft->filids[ft->next_idx++] = filid; +} + +static void +file_track_reset(void) +{ + read_filids.next_idx = 0; + write_filids.next_idx = 0; +} + +/* + * Clean the directory dependency list ready to process another file. + */ +static void +clean_subdep(void) +{ + struct dirdep *dd; + struct dirdep *dt; + + TAILQ_FOREACH_SAFE(dd, &dirdeps, link, dt) { + TAILQ_REMOVE(&dirdeps, dd, link); + if (dd->srcrel != NULL) + free(dd->srcrel); + free(dd); + } + + TAILQ_FOREACH_SAFE(dd, &srcdirdeps, link, dt) { + TAILQ_REMOVE(&srcdirdeps, dd, link); + if (dd->srcrel != NULL) + free(dd->srcrel); + free(dd); + } +} + +/* + * Check if a source relative directory path is in the list and add it + * if not. Keep the list sorted. + */ +static void +srcdirdep_add(const char *srcrel) +{ + int v = 0; + struct dirdep *dd; + struct dirdep *dn = NULL; + + TAILQ_FOREACH(dd, &srcdirdeps, link) { + if ((v = strcmp(srcrel, dd->srcrel)) == 0) + return; + + if (v < 0 && dn == NULL) { + dn = dd; + break; + } + } + + if ((dd = malloc(sizeof(struct dirdep))) == NULL) + err(1, "Could not allocate memory for struct dirdep"); + + if ((dd->srcrel = strdup(srcrel)) == NULL) + err(1, "Could not duplicate srcrel string"); + + dd->subcnt = 0; + + if (dn == NULL) + TAILQ_INSERT_TAIL(&srcdirdeps, dd, link); + else + TAILQ_INSERT_BEFORE(dn, dd, link); +} + +/* + * Check if a source relative directory path is in the list and add it + * if not. Keep the list sorted. + */ +static void +dirdep_add(const char *srcrel, const char *from __unused, struct march *march) +{ + char *p2; + char s[MAXPATHLEN]; + const char *p1; + int v = 0; + size_t len = 0; + struct dirdep *dd; + struct dirdep *dn = NULL; + + if (march != NULL) + len = strlen(march->machine_arch); + + for (p1 = srcrel, p2 = s; *p1 != '\0'; ) { + if (march != NULL && + strcmp(march->machine_arch, "common") != 0 && + strncmp(p1, march->machine_arch, len) == 0) { + strcpy(p2, "MACHINE_ARCH"); + p1 += len; + p2 += 12; + } else + *p2++ = *p1++; + } + *p2 = '\0'; + + TAILQ_FOREACH(dd, &dirdeps, link) { + if ((v = strcmp(s, dd->srcrel)) == 0) + return; + + if (v < 0 && dn == NULL) { + dn = dd; + break; + } + } + +#ifdef DEBUG + if (!f_quiet) { + printf("%s from %s\n", s, from); + fflush(stdout); + } +#endif + + if ((dd = malloc(sizeof(struct dirdep))) == NULL) + err(1, "Could not allocate memory for struct dirdep"); + + if ((dd->srcrel = strdup(s)) == NULL) + err(1, "Could not duplicate srcrel string"); + + dd->subcnt = 0; + + if (dn == NULL) + TAILQ_INSERT_TAIL(&dirdeps, dd, link); + else + TAILQ_INSERT_BEFORE(dn, dd, link); +} + +static int +recid_lookup(void *thing, int argc __unused, char **argv __unused, char **colname __unused) +{ + int64_t *recid = thing; + + *recid = strtoimax(argv[0], NULL, 10); + + return(0); +} + +static int64_t +reldir_table_add(const char *reldir) +{ + int64_t relid = 0; + + jdirdep_db_command(recid_lookup, &relid, "SELECT relid FROM reldir WHERE name='%s';", reldir); + + if (relid == 0) { + jdirdep_db_command(NULL, NULL, "INSERT INTO reldir ( name ) VALUES ('%s');", reldir); + + relid = jdirdep_db_rowid(); + } + + return(relid); +} + +static int64_t +file_table_add(const char *relname, const char *reldir) +{ + int64_t filid = 0; + int64_t relid = 0; + + if (reldir != NULL && f_db) + relid = reldir_table_add(reldir); + + jdirdep_db_command(recid_lookup, &filid, "SELECT filid FROM file WHERE name='%s';", relname); + + if (filid == 0) { + jdirdep_db_command(NULL, NULL, "INSERT INTO file VALUES (0, '%s', %jd);", relname, relid); + + filid = jdirdep_db_rowid(); + } else if (relid != 0) { + jdirdep_db_command(NULL, NULL, "UPDATE file SET relid=%jd WHERE filid=%jd;", relid, filid); + +#ifdef DOODAD + /* Delete the files_using tuples for this file. */ + jdirdep_db_command(NULL, NULL, "DELETE FROM files_using WHERE filid_used=%jd;", filid); + + /* Now delete the files_used by this file. */ + jdirdep_db_command(NULL, NULL, "DELETE FROM files_used WHERE filid=%jd;", filid); +#endif + } + + return(filid); +} + +static void +file_dep_add(int64_t filid_using, int64_t filid_used) +{ + int64_t filid = 0; + + if (!f_db) + return; + + if (filid_using == filid_used) + return; + + jdirdep_db_command(recid_lookup, &filid, "SELECT filid_used FROM files_using WHERE filid=%jd AND filid_used=%jd;", filid_using, filid_used); + + if (filid == 0) + jdirdep_db_command(NULL, NULL, "INSERT INTO files_using VALUES (%jd, %jd);", filid_using, filid_used); + + filid = 0; + + jdirdep_db_command(recid_lookup, &filid, "SELECT filid_using FROM files_used WHERE filid=%jd AND filid_using=%jd;", filid_used, filid_using); + + if (filid == 0) + jdirdep_db_command(NULL, NULL, "INSERT INTO files_used VALUES (%jd, %jd);", filid_used, filid_using); +} + +static void +meta_dep_add(void) +{ + int i; + int j; + + if (!f_db) + return; + + for (i = 0; i < write_filids.next_idx; i++) { + for (j = 0; j < read_filids.next_idx; j++) { + file_dep_add(write_filids.filids[i], read_filids.filids[j]); + } + } +} + +static void +delete_dep(const char *relname __unused) +{ + /* Don't need this info (yet). */ +} + +static void +move_dep(const char *srcname, const char *dstname, const char *reldir) +{ + int64_t filid_used; + int64_t filid_using; + + if (!f_db) + return; + + filid_using = file_table_add(dstname, reldir); + filid_used = file_table_add(srcname, NULL); + + file_dep_add(filid_using, filid_used); +} + +static void +read_dep(const char *relname) +{ + int64_t filid; + + if (!f_db) + return; + + filid = file_table_add(relname, NULL); + + file_track_add(&read_filids, filid); +} + +static void +write_dep(const char *relname, const char *reldir) +{ + int64_t filid; + + if (!f_db) + return; + + filid = file_table_add(relname, reldir); + + file_track_add(&write_filids, filid); +} + +/* + * Read a meta data file looking for referenced files. For each referenced + * file, open the associated source relative directory file (.srcrel) if + * it exists and read the source relative directory from which the file + * was released. + */ +static void +parse_meta(const char *srctop, const char *thissrcrel, const char *objtop, const char *objroot, + const char *sharedobj, const char *mname, struct march *march) +{ + FILE *fp; + FILE *fp1; + char fname[MAXPATHLEN]; + char srcrel[MAXPATHLEN]; + char tname[MAXPATHLEN]; + char tname1[MAXPATHLEN]; + char tname2[MAXPATHLEN]; + size_t l_objroot; + size_t l_objtop; + size_t l_sharedobj; + size_t l_srctop; + struct stat fs; + + l_objroot = strlen(objroot); + l_objtop = strlen(objtop); + l_sharedobj = strlen(sharedobj); + l_srctop = strlen(srctop); + + if ((fp = fopen(mname, "r")) != NULL) { + char *bufr; + char *p; + char *p1; + char *p2; + int f = 0; + size_t len; + size_t s_bufr = 128 * 1024; + + if ((bufr = malloc(s_bufr)) == NULL) + err(1, "Cannot allocate memory for a read buffer"); + + while (fgets(bufr, s_bufr, fp) != NULL) { + /* Whack the trailing newline. */ + bufr[strlen(bufr) - 1] = '\0'; + + /* Find the start of the build monitor section. */ + if (strncmp(bufr, "-- buildmon", 11) == 0) { + f = 1; + continue; + } + + /* Check for the end of the build monitor section. */ + if (strncmp(bufr, "# Session completed", 19) == 0) { + f = 0; + continue; + } + + /* Delimit the record type. */ + p = bufr; + strsep(&p, " "); + + if (f) { + /* Process according to record type. */ + switch (bufr[0]) { + case 'D': + case 'E': + case 'R': + case 'S': + case 'W': + /* Skip the pid. */ + if (strsep(&p, " ") == NULL) + break; + + if (*p != '/') + snprintf(tname1, sizeof(tname1), "%s/%s/%s", + objtop, thissrcrel, p); + else + strlcpy(tname1, p, sizeof(tname1)); + + if (realpath(tname1, tname) == NULL) + break; + + /* Deleted file: */ + if (bufr[0] == 'D') { + if ((len = strlen(tname)) < l_objroot) + break; + + if (strncmp(tname, objroot, l_objroot) != 0) + break; + + delete_dep(tname + l_objroot - 3); + break; + + /* Written file: */ + } else if (bufr[0] == 'W') { + len = strlen(tname); + + if (strcmp(tname + len - 7, ".srcrel") == 0) + break; + + if ((len = strlen(tname)) < l_objroot) + break; + + if (strncmp(tname, objroot, l_objroot) != 0) + break; + + write_dep(tname + l_objroot - 3, thissrcrel); + break; + } + + if (stat(tname, &fs) == 0 && !S_ISREG(fs.st_mode)) + break; + + /* + * If there is a source relative directory file + * for the referenced file, then read it. + */ + snprintf(fname, sizeof(fname), "%s.srcrel", tname); + + if ((fp1 = fopen(fname, "r")) != NULL) { + if (l_sharedobj > 0 && strncmp(tname, sharedobj, l_sharedobj) == 0) + read_dep(tname + l_sharedobj - 3); + else if (l_objroot > 0 && strncmp(tname, objroot, l_objroot) == 0) + read_dep(tname + l_objroot - 3); + + if (fgets(srcrel, sizeof(srcrel), fp1) != NULL) { + char *sp; + + /* Whack the trailing newline. */ + srcrel[strlen(srcrel) - 1] = '\0'; + + /* Avoid bogus additional slashes. */ + sp = srcrel; + while (*sp == '/' || *sp == '#' || isspace(*sp)) + sp++; + + /* + * Watch out for the current directory + * because that can confuse things! + */ + if (strcmp(sp, thissrcrel) != 0) + dirdep_add(sp, p, march); + } + fclose(fp1); + + /* Check if the file is in the object tree. */ + } else if (strncmp(tname, objtop, l_objtop) == 0) { + char *sp; + + read_dep(tname + l_objroot - 3); + + /* Get the parent directory path. */ + strlcpy(srcrel, dirname(tname), sizeof(srcrel)); + + /* Avoid bogus additional slashes. */ + sp = srcrel + l_objtop + 1; + while (*sp == '/') + sp++; + + /* + * Watch out for the current directory + * because that can confuse things! + */ + if (strcmp(sp, thissrcrel) != 0) + dirdep_add(sp, p, march); + + /* + * Check if the file is in the source tree, but not + * in the current source directory. + */ + } else if (strncmp(tname, srctop, l_srctop) == 0) { + read_dep(tname + l_srctop - 3); + + if (strcmp(dirname(tname + l_srctop + 1), thissrcrel) != 0) + srcdirdep_add(dirname(tname + l_srctop + 1)); + } + break; + + case 'M': + /* Skip the pid. */ + if (strsep(&p, " ") == NULL) + break; + + /* Get the src file name. */ + if (strsep(&p, "'") == NULL) + break; + p1 = p; + if (strsep(&p, "'") == NULL) + break; + if (strsep(&p, " ") == NULL) + break; + + /* Get the dst file name. */ + if (strsep(&p, "'") == NULL) + break; + p2 = p; + if (strsep(&p, "'") == NULL) + break; + + if (*p1 != '/') + snprintf(tname1, sizeof(tname1), "%s/%s/%s", + objtop, thissrcrel, p1); + else + strlcpy(tname1, p1, sizeof(tname1)); + + if (realpath(tname1, tname) == NULL) + break; + + if (*p2 != '/') + snprintf(tname1, sizeof(tname1), "%s/%s/%s", + objtop, thissrcrel, p2); + else + strlcpy(tname1, p2, sizeof(tname1)); + + if (realpath(tname1, tname2) == NULL) + break; + + move_dep(tname + l_objroot - 3, tname2 + l_objroot - 3, thissrcrel); + break; + default: + break; + } + } + } + + free(bufr); + fclose(fp); + } + + meta_dep_add(); + + file_track_reset(); +} + +static char lockf_created[MAXPATHLEN]; +static int lockf_fd = -1; + +static void +lockf_create(const char *curdir) +{ + int i; + + if (lockf_fd >= 0) + return; + + snprintf(lockf_created, sizeof(lockf_created), "%s/.jdirdep_lockf", curdir); + + for (i = 0; i < 300; i++) { + if ((lockf_fd = open(lockf_created, O_CREAT | O_EXCL, 0600)) >= 0) { + return; + } + + if (errno != EEXIST) + err(1, "Could not create lock file '%s'", lockf_created); + + sleep(1); + } + + err(1, "Could not create lock file '%s'", lockf_created); +} + +static void +lockf_delete(void) +{ + if (lockf_fd >= 0) { + close(lockf_fd); + if (unlink(lockf_created) != 0) + err(1, "Could not unlink file '%s'", lockf_created); + lockf_fd = -1; + } + lockf_created[0] = '\0'; +} + +static void +do_dirdep(const char *srctop, const char *curdir, const char *srcrel, const char *objroot, + const char *sharedobj, int options) +{ + DIR *d; + FILE *fp; + FILE *fp1; + char *bufr; + char cmd[MAXPATHLEN]; + char *dirdep = NULL; + char fname[MAXPATHLEN]; + char fname1[MAXPATHLEN]; + char fname2[MAXPATHLEN]; + char mname[MAXPATHLEN]; + char objdir[MAXPATHLEN]; + char objtop[MAXPATHLEN]; + char *s = NULL; + char *s1 = NULL; + char *srcdirdep = NULL; + int f_add = (options & JDIRDEP_OPT_ADD); + int f_dirdep = 1; + int f_doit = 0; + int f_error = 0; + int f_force = (options & JDIRDEP_OPT_FORCE); + int f_rewrite = 0; + int f_src = (options & JDIRDEP_OPT_SOURCE); + int f_update = (options & JDIRDEP_OPT_UPDATE); + int fd; + size_t l; + size_t ss; + size_t ss1; + struct dirdep *dd; + struct dirent *de; + struct march *march; + struct stat fs; + + if (strcmp(srcrel, "stage") != 0) + dirdep_add("stage", "", NULL); + snprintf(fname, sizeof(fname), "%s/%s", curdir, MAKEFILE); + snprintf(fname2, sizeof(fname2), "%s/%s", curdir, MAKEFILEDEP); + + if ((fp = fopen(fname, "r")) == NULL) + return; + + if (fstat(fileno(fp), &fs) != 0) + err(1, "Could not get file status of file '%s'", fname); + + if (f_db) + reldir_table_add(srcrel); + + if ((bufr = malloc(fs.st_size)) == NULL) + err(1, "Could not allocate %zd bytes for the dirdep buffer", (size_t) fs.st_size); + + /* + * Read through the Makefile/Buildfile to look for the .include system makefile + * to determine if this directory needs to have a .dep file. + */ + while (fgets(bufr, fs.st_size, fp) != NULL) { + /* Whack the trailing newline. */ + bufr[strlen(bufr) - 1] = '\0'; + + if (bufr[0] != '#' && strstr(bufr, "") != NULL) { + f_dirdep = 0; + f_rewrite = 0; + break; + } + + if (bufr[0] != '#' && strstr(bufr, "") != NULL) { + f_dirdep = 0; + f_rewrite = 0; + break; + } + + /* + * Check if this file needs to be rewritten to remove the old DIRDEP and/or + * SRCDIRDEP lines. + */ + if (strncmp(bufr, "DIRDEP", 6) == 0 || strncpy(bufr, "SRCDIRDEP", 9) == 0) { + f_rewrite = 1; + f_force = 1; + } + } + + fclose(fp); + + /* + * If this directory needs a .dep file, then try to read the current one. + * This initialises the global lists for DIRDEP and SRCDIRDEP. + */ + if (f_dirdep && (fp = fopen(fname2, "r")) != NULL) { + char *p = NULL; + char *p1; + char *p2; + + /* + * Get the size of the current .dep file to use it as a maximum + * length for the DIRDEP and SRCDIRDEP strings. + */ + if (fstat(fileno(fp), &fs) != 0) + err(1, "Could not get file status of file '%s'", fname2); + + if ((dirdep = malloc(fs.st_size)) == NULL) + err(1, "Could not allocate %zd bytes for the dirdep buffer", (size_t) fs.st_size); + + if ((srcdirdep = malloc(fs.st_size)) == NULL) + err(1, "Could not allocate %zd bytes for the dirdep buffer", (size_t) fs.st_size); + + *dirdep = '\0'; + *srcdirdep = '\0'; + + /* Always add the stage directory since there is nothing in the meta data to + * indicate that it is always needed. The stage directory itself obviously can't + * depend on itself, but this is handled in bsd.dirdep.mk. + */ + dirdep_add("stage", "", NULL); + + /* + * Read through the existing .dep file and add paths to the DIRDEP and + * SRCDIRDEP global lists. + */ + while (fgets(bufr, fs.st_size, fp) != NULL) { + if (bufr[0] == '#' || bufr[0] == '\n') + continue; + else if (strncmp(bufr, "DIRDEP", 6) == 0) + p = dirdep; + else if (strncmp(bufr, "SRCDIRDEP", 9) == 0) + p = srcdirdep; + else if (bufr[0] == '\t' && p != NULL) { + /* + * Found a continution line which should contain a source + * relative directory path. Skip the tab and point to the + * start of the path. + */ + p1 = bufr + 1; + + /* Get the path with always has a space after it. */ + if ((p2 = strsep(&p1, " ")) != NULL) { + if (p == dirdep) { + /* Append to the reference dirdep string. */ + strcat(dirdep, " "); + strcat(dirdep, p2); + + if (f_add) + dirdep_add(p2, "", NULL); + } + + if (p == srcdirdep) { + /* Append to the reference srcdirdep string. */ + strcat(srcdirdep, " "); + strcat(srcdirdep, p2); + + if (f_add) + srcdirdep_add(p2); + } + } + } + } + + fclose(fp); + } + + /* Check if the DIRDEP= isn't needed for this directory. */ + if (!f_force && !f_dirdep) { + if (dirdep != NULL) + free(dirdep); + if (srcdirdep != NULL) + free(srcdirdep); + return; + } else { + /* Loop through the supported machine types... */ + TAILQ_FOREACH(march, &marchs, link) { + /* + * Format the path to the current machine-specific object + * directory: + */ + snprintf(objdir, sizeof(objdir), "%s/%s/%s", + objroot, march->machine, srcrel); + snprintf(objtop, sizeof(objtop), "%s/%s", + objroot, march->machine); + + /* + * Open the object directory and parse all meta data files we + * can find in there. These tell us what was referenced when the + * objects were built. + */ + if ((d = opendir(objdir)) != NULL) { + while((de = readdir(d)) != NULL) { + if ((l = strlen(de->d_name)) < 6) + continue; + + if (strcmp(de->d_name + l - 5, ".meta") != 0) + continue; + + snprintf(mname, sizeof(mname), "%s/%s", objdir, de->d_name); + + /* + * Parse the meta data file and watch out that we don't get + * confused with references to the current directory -- they + * are almost certain to occur if there are include files + * released from here because that happens early in the + * build (so that there are no differences between the + * released headers and the local ones). + */ + parse_meta(srctop, srcrel, objtop, objroot, sharedobj, mname, march); + } + + closedir(d); + } + } + + ss = 1; + TAILQ_FOREACH(dd, &dirdeps, link) { + ss += strlen(dd->srcrel) + 1; + } + + if ((s = malloc(ss)) == NULL) + err(1, "Could not allocate %zd bytes for the dirdep buffer", ss); + + ss1 = 1; + TAILQ_FOREACH(dd, &srcdirdeps, link) { + ss1 += strlen(dd->srcrel) + 1; + } + + if ((s1 = malloc(ss1)) == NULL) + err(1, "Could not allocate %zd bytes for the srcdirdep buffer", ss1); + + l = 0; + *s = '\0'; + + /* + * There are a couple of special cases we have to handle here. If we've + * got source relative directory elements, then we simply report + * that list, but if we have none, then we still have to report that we + * depend on the stage directory (which doesn't have a .srcrel file + * for us to discover). And finally we have to avoid making the 'stage' + * directory depend on itself. + */ + if (!TAILQ_EMPTY(&dirdeps)) { + TAILQ_FOREACH(dd, &dirdeps, link) { + l += snprintf(s + l, ss - l, " %s", dd->srcrel); + } + } else if (strcmp(srcrel, "stage") != 0) + l += snprintf(s + l, ss - l, " stage"); + + l = 0; + *s1 = '\0'; + + TAILQ_FOREACH(dd, &srcdirdeps, link) { + l += snprintf(s1 + l, ss1 - l, " %s", dd->srcrel); + } + + if (f_update && dirdep != NULL && strcmp(s, dirdep) != 0) { + printf("Directory dependencies are being updated:\n"); + printf("%s\n", s); + fflush(stdout); + f_doit = 1; + } + + if (f_update && f_src && srcdirdep != NULL && strcmp(s1, srcdirdep) != 0) { + printf("Source dependencies are being updated:\n"); + printf("%s\n", s1); + fflush(stdout); + f_doit = 1; + } + + if (f_update && dirdep == NULL) { + printf("Directory dependencies are being added:\n"); + printf("%s\n", s); + fflush(stdout); + f_doit = 1; + } + + if (f_update && f_src && srcdirdep == NULL && ss1 > 11) { + printf("Source dependencies are being added:\n"); + printf("%s\n", s1); + fflush(stdout); + f_doit = 1; + } + + if (!f_update && f_src) { + printf("%s\n", s1); + fflush(stdout); + } + + if (f_update && f_doit) { + lockf_create(curdir); + + if (f_rewrite) { + snprintf(fname1, sizeof(fname1), "%s.XXXXXX", fname); + if ((fd = mkstemp(fname1)) < 0) + err(1, "Could not create temporary file '%s'", fname1); + + if ((fp1 = fdopen(fd, "w")) == NULL) + err(1, "Could not open stream for temporary file '%s'", fname1); + + if ((fp = fopen(fname, "r")) == NULL) { + f_error = 1; + warn("Could not open '%s' again", fname); + } else { + while (fgets(bufr, fs.st_size, fp) != NULL) { + /* Whack the trailing newline. */ + bufr[strlen(bufr) - 1] = '\0'; + + /* Ignore lines that start with DIRDEP. */ + if (strncmp(bufr, "DIRDEP", 6) == 0) + continue; + + if (f_src && strncmp(bufr, "SRCDIRDEP", 9) == 0) + continue; + + fprintf(fp1, "%s\n", bufr); + } + + fclose(fp); + } + + fclose(fp1); + + if (f_error) + unlink(fname1); + else { + if (unlink(fname) != 0) + err(1, "Could not delete old file '%s'", fname); + + if (rename(fname1, fname) != 0) + err(1, "Could not rename file '%s' to '%s'", fname1, fname); + + if (chmod(fname, fs.st_mode) != 0) + err(1, "Could not chmod file '%s'", fname); + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon May 25 06:33:11 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CF77106568A; Mon, 25 May 2009 06:33:11 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7BE148FC08; Mon, 25 May 2009 06:33:11 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4P6XBtL013488; Mon, 25 May 2009 06:33:11 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4P6XBDE013487; Mon, 25 May 2009 06:33:11 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905250633.n4P6XBDE013487@svn.freebsd.org> From: John Birrell Date: Mon, 25 May 2009 06:33:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192729 - projects/jbuild/usr.bin/make X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2009 06:33:11 -0000 Author: jb Date: Mon May 25 06:33:11 2009 New Revision: 192729 URL: http://svn.freebsd.org/changeset/base/192729 Log: Flag an arg as unused for the 'make' build. It is used when building as 'jbuild'. Modified: projects/jbuild/usr.bin/make/job.c Modified: projects/jbuild/usr.bin/make/job.c ============================================================================== --- projects/jbuild/usr.bin/make/job.c Mon May 25 06:29:02 2009 (r192728) +++ projects/jbuild/usr.bin/make/job.c Mon May 25 06:33:11 2009 (r192729) @@ -3287,7 +3287,7 @@ shellneed(ArgArray *aa, char *cmd) * The node's 'made' field may be set to ERROR. */ static int -Compat_RunCommand(char *cmd, GNode *gn, FILE *mfp) +Compat_RunCommand(char *cmd, GNode *gn, FILE *mfp __unused) { ArgArray aa; char *cmdStart; /* Start of expanded command */ From owner-svn-src-projects@FreeBSD.ORG Mon May 25 06:36:02 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DAA7710656EC; Mon, 25 May 2009 06:36:02 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C84198FC0C; Mon, 25 May 2009 06:36:02 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4P6a2B7013582; Mon, 25 May 2009 06:36:02 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4P6a21K013578; Mon, 25 May 2009 06:36:02 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905250636.n4P6a21K013578@svn.freebsd.org> From: John Birrell Date: Mon, 25 May 2009 06:36:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192730 - projects/jbuild/usr.bin/tar X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2009 06:36:03 -0000 Author: jb Date: Mon May 25 06:36:02 2009 New Revision: 192730 URL: http://svn.freebsd.org/changeset/base/192730 Log: Rough merge of the manifest file support from p4. The merged code needs to be updated to handle the change which removed write_entry(). Not a big deal. Modified: projects/jbuild/usr.bin/tar/bsdtar.c projects/jbuild/usr.bin/tar/bsdtar.h projects/jbuild/usr.bin/tar/cmdline.c projects/jbuild/usr.bin/tar/write.c Modified: projects/jbuild/usr.bin/tar/bsdtar.c ============================================================================== --- projects/jbuild/usr.bin/tar/bsdtar.c Mon May 25 06:33:11 2009 (r192729) +++ projects/jbuild/usr.bin/tar/bsdtar.c Mon May 25 06:36:02 2009 (r192730) @@ -309,6 +309,13 @@ main(int argc, char **argv) case 'm': /* SUSv2 */ bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_TIME; break; + case OPTION_MANIFEST: + /* The argument is the manifest file name. */ + bsdtar->manifest = optarg; + + /* Specifying a manifest implies creating an archive. */ + set_mode(bsdtar, 'c'); + break; case 'n': /* GNU tar */ bsdtar->option_no_subdirs = 1; break; Modified: projects/jbuild/usr.bin/tar/bsdtar.h ============================================================================== --- projects/jbuild/usr.bin/tar/bsdtar.h Mon May 25 06:33:11 2009 (r192729) +++ projects/jbuild/usr.bin/tar/bsdtar.h Mon May 25 06:36:02 2009 (r192730) @@ -63,6 +63,7 @@ struct bsdtar { const char *option_options; /* --options */ char option_honor_nodump; /* --nodump */ char option_interactive; /* -w */ + const char *manifest; /* --manifest */ char option_no_owner; /* -o */ char option_no_subdirs; /* -n */ char option_null; /* --null */ @@ -116,6 +117,7 @@ enum { OPTION_INCLUDE, OPTION_KEEP_NEWER_FILES, OPTION_LZMA, + OPTION_MANIFEST, OPTION_NEWER_CTIME, OPTION_NEWER_CTIME_THAN, OPTION_NEWER_MTIME, Modified: projects/jbuild/usr.bin/tar/cmdline.c ============================================================================== --- projects/jbuild/usr.bin/tar/cmdline.c Mon May 25 06:33:11 2009 (r192729) +++ projects/jbuild/usr.bin/tar/cmdline.c Mon May 25 06:36:02 2009 (r192730) @@ -94,6 +94,7 @@ static struct option { { "keep-old-files", 0, 'k' }, { "list", 0, 't' }, { "lzma", 0, OPTION_LZMA }, + { "manifest", 1, OPTION_MANIFEST }, { "modification-time", 0, 'm' }, { "newer", 1, OPTION_NEWER_CTIME }, { "newer-ctime", 1, OPTION_NEWER_CTIME }, Modified: projects/jbuild/usr.bin/tar/write.c ============================================================================== --- projects/jbuild/usr.bin/tar/write.c Mon May 25 06:33:11 2009 (r192729) +++ projects/jbuild/usr.bin/tar/write.c Mon May 25 06:36:02 2009 (r192730) @@ -84,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include #endif +#include #include "bsdtar.h" #include "tree.h" @@ -126,6 +127,8 @@ static void archive_names_from_file(st struct archive *a); static int archive_names_from_file_helper(struct bsdtar *bsdtar, const char *line); +static void archive_names_from_manifest(struct bsdtar *bsdtar, + struct archive *a); static int copy_file_data(struct bsdtar *bsdtar, struct archive *a, struct archive *ina); static int new_enough(struct bsdtar *, const char *path, @@ -145,7 +148,8 @@ tar_mode_c(struct bsdtar *bsdtar) struct archive *a; int r; - if (*bsdtar->argv == NULL && bsdtar->names_from_file == NULL) + if (*bsdtar->argv == NULL && bsdtar->names_from_file == NULL && + bsdtar->manifest == NULL) bsdtar_errc(bsdtar, 1, 0, "no files or directories specified"); a = archive_write_new(); @@ -431,6 +435,9 @@ write_archive(struct archive *a, struct if (bsdtar->names_from_file != NULL) archive_names_from_file(bsdtar, a); + if (bsdtar->manifest != NULL) + archive_names_from_manifest(bsdtar, a); + while (*bsdtar->argv) { arg = *bsdtar->argv; if (arg[0] == '-' && arg[1] == 'C') { @@ -518,6 +525,214 @@ archive_names_from_file(struct bsdtar *b "directory expected after -C"); } +/* + * Expand a file name from a manifest file. + */ +static void +manifest_expand_name(struct bsdtar *bsdtar, const char *src, char *dst, + size_t s_dst) +{ + char *pdst = dst; + char *p; + char env[64]; + const char *psrc = src; + size_t len; + + while (*psrc != '\0' && s_dst > 1) { + /* %% expands to % */ + if (*psrc == '%' && *(psrc + 1) == '%') { + *pdst++ = *psrc++; + s_dst--; + psrc++; + + /* %FOO% is an environment variable called FOO */ + } else if (*psrc == '%') { + psrc++; + + /* Expect a trailing % */ + if ((p = strchr(psrc, '%')) == NULL) + bsdtar_errc(bsdtar, 1, 0, + "Unterminated environment variable " + "name in '%s'", src); + + /* Check for overlength environment variable names. */ + if ((len = (size_t)(p - psrc)) > sizeof(env)) + bsdtar_errc(bsdtar, 1, 0, + "Environment variable name is too" + "long in '%s'", src); + + /* Copy the environment variable name and zero terminate it. */ + strncpy(env, psrc, len); + env[len] = '\0'; + psrc = p + 1; + + /* Get the environment variable string. */ + if ((p = getenv(env)) == NULL) + bsdtar_errc(bsdtar, 1, 0, + "Environment variable '%s' is undefined", + env); + + /* Copy the environment variable string into the buffer. */ + while (*p != '\0' && s_dst > 1) { + *pdst++ = *p++; + s_dst--; + } + } else { + /* Copy all other characters as-is. */ + *pdst++ = *psrc++; + s_dst--; + } + } + *pdst = '\0'; + + /* Expect all the source characters to have been consumed. */ + if (*psrc != '\0') + bsdtar_errc(bsdtar, 1, 0, + "Destination string not large enough to expand '%s'", src); +} + +/* + * Read and parse a manifest file. + */ +static void +manifest_read(struct bsdtar *bsdtar, const char *manifest_name) +{ + FILE *f; + char *bp; + char *bufr; + char *p; + long offset; + size_t s_bufr = 1024; + + if ((f = fopen(manifest_name, "r")) == NULL) + bsdtar_errc(bsdtar, 1, errno, "Couldn't open manifest %s", manifest_name); + + if ((bufr = malloc(s_bufr)) == NULL) + bsdtar_errc(bsdtar, 1, errno, "Couldn't allocate memory for manifest buffer"); + + while (1) { + int f_eval = 0; + int f_include = 0; + char *p_arg = NULL; + char *p_gid = NULL; + char *p_mode = NULL; + char *p_store = NULL; + char *p_symlink = NULL; + char *p_uid = NULL; + struct stat fs; + + /* Save the file offset in case we need to reallocate the buffer. */ + if ((offset = ftell(f)) < 0) + bsdtar_errc(bsdtar, 1, errno, "Couldn't get manifest file offset"); + + if (fgets(bufr, s_bufr, f) == NULL) + break; + + /* If there isn't a new line in the buffer, we need to reallocate it. */ + if ((p = strchr(bufr, '\n')) == NULL) { + s_bufr *= 2; + if ((bufr = realloc(bufr, s_bufr)) == NULL) + bsdtar_errc(bsdtar, 1, errno, + "Couldn't allocate memory for manifest buffer"); + + if (fseek(f, offset, SEEK_SET) == -1) + bsdtar_errc(bsdtar, 1, errno, + "Couldn't seek to offset in manifest file"); + continue; + } + + /* Ignore comments. */ + if (*bufr == '#') + continue; + + /* Remove the trailing new line character. */ + *p = '\0'; + bp = bufr; + + while (*bp != '\0' && isspace(*bp)) + bp++; + + /* Ignore empty lines. */ + if (*bufr == '\0') + continue; + + /* Parse the buffer into white-space separated fields. */ + while ((p = strsep(&bp, " \t")) != NULL) { + if (strcmp(p, "%EVAL%") == 0) { + /* XXX */ + f_eval = 1; + break; + } else if (strcmp(p, "%INCLUDE%") == 0) + f_include = 1; + else if (strncmp(p, "gid=", 4) == 0) + p_gid = p + 4; + else if (strncmp(p, "mode=", 5) == 0) + p_mode = p + 5; + else if (strncmp(p, "store=", 6) == 0) + p_store = p + 6; + else if (strncmp(p, "symlink=", 8) == 0) + p_symlink = p + 8; + else if (strncmp(p, "uid=", 4) == 0) + p_uid = p + 4; + else if (strncmp(p, "no_", 3) == 0) + printf("No code for: %s\n", p); + else + p_arg = p; + } + + if (f_eval) + ; /* XXX EVAL is not supported */ + else if (f_include) + manifest_read(bsdtar, p_arg); + else if (p_store != NULL) { + char fname[MAXNAMLEN]; + + manifest_expand_name(bsdtar, p_arg, fname, sizeof(fname)); + + if (stat(fname, &fs) != 0) + bsdtar_errc(bsdtar, 1, errno, + "Couldn't get file status of '%s'", fname); + + /* Reset the user/group by default. */ + fs.st_uid = 0; + fs.st_gid = 0; + + if (p_gid != NULL) + fs.st_gid = atoi(p_gid); + + if (p_uid != NULL) + fs.st_uid = atoi(p_uid); + + if (p_mode != NULL) { + fs.st_mode &= ~0777; + fs.st_mode |= strtol(p_mode, NULL, 8); + } + + /* write_entry_backend(bsdtar, bsdtar->archive, &fs, p_store, fname); */ + } else if (p_symlink != NULL) + printf("Symlink: %s\n", p_symlink); + else { + printf("Dunno: %s\n", p_arg); + } + } + + free(bufr); + + fclose(f); +} + +/* + * Archive names specified in a manifest file. + */ +static void +archive_names_from_manifest(struct bsdtar *bsdtar, struct archive *a) +{ + bsdtar->archive = a; + + /* Read and parse the top-level manifest file. */ + manifest_read(bsdtar, bsdtar->manifest); +} + static int archive_names_from_file_helper(struct bsdtar *bsdtar, const char *line) { From owner-svn-src-projects@FreeBSD.ORG Tue May 26 00:11:12 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 600EF106566B; Tue, 26 May 2009 00:11:12 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 34AE28FC16; Tue, 26 May 2009 00:11:12 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q0BC2Z040577; Tue, 26 May 2009 00:11:12 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q0BBgI040573; Tue, 26 May 2009 00:11:11 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905260011.n4Q0BBgI040573@svn.freebsd.org> From: John Birrell Date: Tue, 26 May 2009 00:11:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192777 - projects/jbuild/usr.bin/jbuild/port X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 00:11:13 -0000 Author: jb Date: Tue May 26 00:11:11 2009 New Revision: 192777 URL: http://svn.freebsd.org/changeset/base/192777 Log: Move the jbuild-port from p4. The handling of the filemon kernel module needs to be updated now that buildmon isn't being used Added: projects/jbuild/usr.bin/jbuild/port/ projects/jbuild/usr.bin/jbuild/port/Makefile projects/jbuild/usr.bin/jbuild/port/Makefile.port projects/jbuild/usr.bin/jbuild/port/pkg-descr projects/jbuild/usr.bin/jbuild/port/pkg-plist Added: projects/jbuild/usr.bin/jbuild/port/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/port/Makefile Tue May 26 00:11:11 2009 (r192777) @@ -0,0 +1,34 @@ +# Whom: rodrigc +# +# $FreeBSD$ +# + +PORTNAME= jbuild +PORTVERSION= 10 +CATEGORIES= devel + +MAINTAINER= rodrigc@FreeBSD.org +COMMENT= Utility for building software and tracking build dependencies. + +do-fetch: + ${DO_NADA} + +do-extract: + mkdir -p ${WRKSRC} + ( cd ${WRKSRC} ; ln -s ../../../* . ) + cp Makefile.port ${WRKSRC}/Makefile + +do-install: + ( cd ${WRKSRC}/filemon.ko; ${MAKE} install BINDIR=${PREFIX}/sbin ) + ( cd ${WRKSRC}/jbuild; ${MAKE} install BINDIR=${PREFIX}/bin ) + ( cd ${WRKSRC}/jdirdep; ${MAKE} install BINDIR=${PREFIX}/bin ) + cp ${WRKSRC}/jdirdep/jgetsrc ${PREFIX}/bin + +do-clean: + ( cd ${WRKSRC}/filemon; ${MAKE} clean ) + ( cd ${WRKSRC}/jbuild; ${MAKE} clean ) + ( cd ${WRKSRC}/jdirdep; ${MAKE} clean ) + rm -f ${WRKDIR}/\.[a-z]* + rm -fr ${WRKDIR} + +.include Added: projects/jbuild/usr.bin/jbuild/port/Makefile.port ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/port/Makefile.port Tue May 26 00:11:11 2009 (r192777) @@ -0,0 +1,6 @@ +SUBDIR = \ + filemon \ + jbuild \ + jdirdep + +.include Added: projects/jbuild/usr.bin/jbuild/port/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/port/pkg-descr Tue May 26 00:11:11 2009 (r192777) @@ -0,0 +1 @@ +Utility for building software and tracking build dependencies. Added: projects/jbuild/usr.bin/jbuild/port/pkg-plist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/port/pkg-plist Tue May 26 00:11:11 2009 (r192777) @@ -0,0 +1,4 @@ +bin/jbuild +bin/jdirdep +bin/jgetsrc +sbin/filemon.ko From owner-svn-src-projects@FreeBSD.ORG Tue May 26 00:16:17 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3F421106566B; Tue, 26 May 2009 00:16:17 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F1298FC1E; Tue, 26 May 2009 00:16:17 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q0GHOt040705; Tue, 26 May 2009 00:16:17 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q0GHSI040703; Tue, 26 May 2009 00:16:17 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905260016.n4Q0GHSI040703@svn.freebsd.org> From: John Birrell Date: Tue, 26 May 2009 00:16:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192778 - projects/jbuild/usr.bin/jbuild/port X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 00:16:17 -0000 Author: jb Date: Tue May 26 00:16:16 2009 New Revision: 192778 URL: http://svn.freebsd.org/changeset/base/192778 Log: Update the install dir for the filemon kernel module Modified: projects/jbuild/usr.bin/jbuild/port/Makefile projects/jbuild/usr.bin/jbuild/port/pkg-plist Modified: projects/jbuild/usr.bin/jbuild/port/Makefile ============================================================================== --- projects/jbuild/usr.bin/jbuild/port/Makefile Tue May 26 00:11:11 2009 (r192777) +++ projects/jbuild/usr.bin/jbuild/port/Makefile Tue May 26 00:16:16 2009 (r192778) @@ -19,7 +19,7 @@ do-extract: cp Makefile.port ${WRKSRC}/Makefile do-install: - ( cd ${WRKSRC}/filemon.ko; ${MAKE} install BINDIR=${PREFIX}/sbin ) + ( cd ${WRKSRC}/filemon.ko; ${MAKE} install BINDIR=/boot/modules ) ( cd ${WRKSRC}/jbuild; ${MAKE} install BINDIR=${PREFIX}/bin ) ( cd ${WRKSRC}/jdirdep; ${MAKE} install BINDIR=${PREFIX}/bin ) cp ${WRKSRC}/jdirdep/jgetsrc ${PREFIX}/bin Modified: projects/jbuild/usr.bin/jbuild/port/pkg-plist ============================================================================== --- projects/jbuild/usr.bin/jbuild/port/pkg-plist Tue May 26 00:11:11 2009 (r192777) +++ projects/jbuild/usr.bin/jbuild/port/pkg-plist Tue May 26 00:16:16 2009 (r192778) @@ -1,4 +1,5 @@ bin/jbuild bin/jdirdep bin/jgetsrc -sbin/filemon.ko +@cwd /boot/modules +filemon.ko From owner-svn-src-projects@FreeBSD.ORG Tue May 26 03:45:58 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F400106564A; Tue, 26 May 2009 03:45:58 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CD088FC17; Tue, 26 May 2009 03:45:58 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q3jw6Q045241; Tue, 26 May 2009 03:45:58 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q3jwtQ045239; Tue, 26 May 2009 03:45:58 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260345.n4Q3jwtQ045239@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 03:45:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192783 - projects/mips/sys/mips/atheros X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 03:45:58 -0000 Author: gonzo Date: Tue May 26 03:45:58 2009 New Revision: 192783 URL: http://svn.freebsd.org/changeset/base/192783 Log: - Add polling support - Get rid of arge_fix_chain, use m_defrag like if_vr - Rework interrupt handling routine to avoid race that lead to disabling RX interrupts - Enable full duplex if requested - Properly set station MAC address - Slightly optimize RX loop - Initialize FILTERMATCH and FILTERMASK registers as linux driver does Modified: projects/mips/sys/mips/atheros/ar71xxreg.h projects/mips/sys/mips/atheros/if_arge.c Modified: projects/mips/sys/mips/atheros/ar71xxreg.h ============================================================================== --- projects/mips/sys/mips/atheros/ar71xxreg.h Tue May 26 01:47:37 2009 (r192782) +++ projects/mips/sys/mips/atheros/ar71xxreg.h Tue May 26 03:45:58 2009 (r192783) @@ -281,33 +281,92 @@ #define AR71XX_MAC_FIFO_CFG2 0x50 #define AR71XX_MAC_FIFO_TX_THRESHOLD 0x54 #define AR71XX_MAC_FIFO_RX_FILTMATCH 0x58 -#define FIFO_RX_FILTMATCH_ALL ((1 << 18) - 1) -#define AR71XX_MAC_FIFO_RX_FILTMASK 0x5C -#define FIFO_RX_FILTMASK_BYTE_MODE (1 << 19) -#define FIFO_RX_FILTMASK_NO_SHORT_FRAME (1 << 18) -#define FIFO_RX_FILTMASK_ALL ((1 << 20) - 1) /* * These flags applicable both to AR71XX_MAC_FIFO_RX_FILTMASK and * to AR71XX_MAC_FIFO_RX_FILTMATCH */ -#define FIFO_RX_FILT_UNICAST (1 << 17) -#define FIFO_RX_FILT_TRUNC_FRAME (1 << 16) -#define FIFO_RX_FILT_VLAN_TAG (1 << 15) -#define FIFO_RX_FILT_UNSUP_OPCODE (1 << 14) -#define FIFO_RX_FILT_PAUSE_FRAME (1 << 13) -#define FIFO_RX_FILT_CTRL_FRAME (1 << 12) -#define FIFO_RX_FILT_LONG_EVENT (1 << 11) -#define FIFO_RX_FILT_DRIBBLE_NIBBLE (1 << 10) -#define FIFO_RX_FILT_BCAST (1 << 9) -#define FIFO_RX_FILT_MCAST (1 << 8) -#define FIFO_RX_FILT_OK (1 << 7) -#define FIFO_RX_FILT_OORANGE (1 << 6) -#define FIFO_RX_FILT_LEN_MSMTCH (1 << 5) -#define FIFO_RX_FILT_CRC_ERROR (1 << 4) -#define FIFO_RX_FILT_CODE_ERROR (1 << 3) -#define FIFO_RX_FILT_FALSE_CARRIER (1 << 2) -#define FIFO_RX_FILT_RX_DV_EVENT (1 << 1) -#define FIFO_RX_FILT_DROP_EVENT (1 << 0) +#define FIFO_RX_MATCH_UNICAST (1 << 17) +#define FIFO_RX_MATCH_TRUNC_FRAME (1 << 16) +#define FIFO_RX_MATCH_VLAN_TAG (1 << 15) +#define FIFO_RX_MATCH_UNSUP_OPCODE (1 << 14) +#define FIFO_RX_MATCH_PAUSE_FRAME (1 << 13) +#define FIFO_RX_MATCH_CTRL_FRAME (1 << 12) +#define FIFO_RX_MATCH_LONG_EVENT (1 << 11) +#define FIFO_RX_MATCH_DRIBBLE_NIBBLE (1 << 10) +#define FIFO_RX_MATCH_BCAST (1 << 9) +#define FIFO_RX_MATCH_MCAST (1 << 8) +#define FIFO_RX_MATCH_OK (1 << 7) +#define FIFO_RX_MATCH_OORANGE (1 << 6) +#define FIFO_RX_MATCH_LEN_MSMTCH (1 << 5) +#define FIFO_RX_MATCH_CRC_ERROR (1 << 4) +#define FIFO_RX_MATCH_CODE_ERROR (1 << 3) +#define FIFO_RX_MATCH_FALSE_CARRIER (1 << 2) +#define FIFO_RX_MATCH_RX_DV_EVENT (1 << 1) +#define FIFO_RX_MATCH_DROP_EVENT (1 << 0) +/* + * Exclude unicast and truncated frames from matching + */ +#define FIFO_RX_FILTMATCH_DEFAULT \ + (FIFO_RX_MATCH_VLAN_TAG | \ + FIFO_RX_MATCH_UNSUP_OPCODE | \ + FIFO_RX_MATCH_PAUSE_FRAME | \ + FIFO_RX_MATCH_CTRL_FRAME | \ + FIFO_RX_MATCH_LONG_EVENT | \ + FIFO_RX_MATCH_DRIBBLE_NIBBLE | \ + FIFO_RX_MATCH_BCAST | \ + FIFO_RX_MATCH_MCAST | \ + FIFO_RX_MATCH_OK | \ + FIFO_RX_MATCH_OORANGE | \ + FIFO_RX_MATCH_LEN_MSMTCH | \ + FIFO_RX_MATCH_CRC_ERROR | \ + FIFO_RX_MATCH_CODE_ERROR | \ + FIFO_RX_MATCH_FALSE_CARRIER | \ + FIFO_RX_MATCH_RX_DV_EVENT | \ + FIFO_RX_MATCH_DROP_EVENT) +#define AR71XX_MAC_FIFO_RX_FILTMASK 0x5C +#define FIFO_RX_MASK_BYTE_MODE (1 << 19) +#define FIFO_RX_MASK_NO_SHORT_FRAME (1 << 18) +#define FIFO_RX_MASK_BIT17 (1 << 17) +#define FIFO_RX_MASK_BIT16 (1 << 16) +#define FIFO_RX_MASK_TRUNC_FRAME (1 << 15) +#define FIFO_RX_MASK_LONG_EVENT (1 << 14) +#define FIFO_RX_MASK_VLAN_TAG (1 << 13) +#define FIFO_RX_MASK_UNSUP_OPCODE (1 << 12) +#define FIFO_RX_MASK_PAUSE_FRAME (1 << 11) +#define FIFO_RX_MASK_CTRL_FRAME (1 << 10) +#define FIFO_RX_MASK_DRIBBLE_NIBBLE (1 << 9) +#define FIFO_RX_MASK_BCAST (1 << 8) +#define FIFO_RX_MASK_MCAST (1 << 7) +#define FIFO_RX_MASK_OK (1 << 6) +#define FIFO_RX_MASK_OORANGE (1 << 5) +#define FIFO_RX_MASK_LEN_MSMTCH (1 << 4) +#define FIFO_RX_MASK_CODE_ERROR (1 << 3) +#define FIFO_RX_MASK_FALSE_CARRIER (1 << 2) +#define FIFO_RX_MASK_RX_DV_EVENT (1 << 1) +#define FIFO_RX_MASK_DROP_EVENT (1 << 0) + +/* + * Len. mismatch, unsup. opcode and short frmae bits excluded + */ +#define FIFO_RX_FILTMASK_DEFAULT \ + (FIFO_RX_MASK_NO_SHORT_FRAME | \ + FIFO_RX_MASK_BIT17 | \ + FIFO_RX_MASK_BIT16 | \ + FIFO_RX_MASK_TRUNC_FRAME | \ + FIFO_RX_MASK_LONG_EVENT | \ + FIFO_RX_MASK_VLAN_TAG | \ + FIFO_RX_MASK_PAUSE_FRAME | \ + FIFO_RX_MASK_CTRL_FRAME | \ + FIFO_RX_MASK_DRIBBLE_NIBBLE | \ + FIFO_RX_MASK_BCAST | \ + FIFO_RX_MASK_MCAST | \ + FIFO_RX_MASK_OK | \ + FIFO_RX_MASK_OORANGE | \ + FIFO_RX_MASK_CODE_ERROR | \ + FIFO_RX_MASK_FALSE_CARRIER | \ + FIFO_RX_MASK_RX_DV_EVENT | \ + FIFO_RX_MASK_DROP_EVENT) + #define AR71XX_MAC_FIFO_RAM0 0x60 #define AR71XX_MAC_FIFO_RAM1 0x64 #define AR71XX_MAC_FIFO_RAM2 0x68 Modified: projects/mips/sys/mips/atheros/if_arge.c ============================================================================== --- projects/mips/sys/mips/atheros/if_arge.c Tue May 26 01:47:37 2009 (r192782) +++ projects/mips/sys/mips/atheros/if_arge.c Tue May 26 03:45:58 2009 (r192783) @@ -31,6 +31,10 @@ __FBSDID("$FreeBSD$"); /* * AR71XX gigabit ethernet driver */ +#ifdef HAVE_KERNEL_OPTION_HEADERS +#include "opt_device_polling.h" +#endif + #include #include #include @@ -84,7 +88,6 @@ MODULE_DEPEND(arge, miibus, 1, 1, 1); static int arge_attach(device_t); static int arge_detach(device_t); -static int arge_fix_chain(struct mbuf **mp); static void arge_flush_ddr(struct arge_softc *); static int arge_ifmedia_upd(struct ifnet *); static void arge_ifmedia_sts(struct ifnet *, struct ifmediareq *); @@ -100,6 +103,7 @@ static void arge_reset_dma(struct arge_s static int arge_resume(device_t); static int arge_rx_ring_init(struct arge_softc *); static int arge_tx_ring_init(struct arge_softc *); +static void arge_poll(struct ifnet *, enum poll_cmd, int); static void arge_shutdown(device_t); static void arge_start(struct ifnet *); static void arge_start_locked(struct ifnet *); @@ -110,8 +114,6 @@ static void arge_rx_locked(struct arge_s static void arge_tx_locked(struct arge_softc *); static void arge_intr(void *); static int arge_intr_filter(void *); -static void arge_tx_intr(struct arge_softc *, uint32_t); -static void arge_rx_intr(struct arge_softc *, uint32_t); static void arge_tick(void *); static void arge_dmamap_cb(void *, bus_dma_segment_t *, int, int); @@ -271,11 +273,14 @@ arge_attach(device_t dev) ifp->if_init = arge_init; /* XXX: add real size */ - IFQ_SET_MAXLEN(&ifp->if_snd, 9); - ifp->if_snd.ifq_maxlen = 9; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_maxlen = IFQ_MAXLEN; IFQ_SET_READY(&ifp->if_snd); ifp->if_capenable = ifp->if_capabilities; +#ifdef DEVICE_POLLING + ifp->if_capabilities |= IFCAP_POLLING; +#endif is_base_mac_empty = 1; for (i = 0; i < ETHER_ADDR_LEN; i++) { @@ -348,20 +353,20 @@ arge_attach(device_t dev) * Set all Ethernet address registers to the same initial values * set all four addresses to 66-88-aa-cc-dd-ee */ - ARGE_WRITE(sc, AR71XX_MAC_STA_ADDR1, 0x6dc1282e); - ARGE_WRITE(sc, AR71XX_MAC_STA_ADDR2, 0x00000015); + ARGE_WRITE(sc, AR71XX_MAC_STA_ADDR1, + (eaddr[2] << 24) | (eaddr[3] << 16) | (eaddr[4] << 8) | eaddr[5]); + ARGE_WRITE(sc, AR71XX_MAC_STA_ADDR2, (eaddr[0] << 8) | eaddr[1]); ARGE_WRITE(sc, AR71XX_MAC_FIFO_CFG0, FIFO_CFG0_ALL << FIFO_CFG0_ENABLE_SHIFT); ARGE_WRITE(sc, AR71XX_MAC_FIFO_CFG1, 0x0fff0000); ARGE_WRITE(sc, AR71XX_MAC_FIFO_CFG2, 0x00001fff); - reg = FIFO_RX_FILTMATCH_ALL; - ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMATCH, reg); + ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMATCH, + FIFO_RX_FILTMATCH_DEFAULT); - reg = FIFO_RX_FILTMASK_ALL; - reg &= ~FIFO_RX_FILTMASK_BYTE_MODE; - ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMASK, reg); + ARGE_WRITE(sc, AR71XX_MAC_FIFO_RX_FILTMASK, + FIFO_RX_FILTMASK_DEFAULT); /* Do MII setup. */ if (mii_phy_probe(dev, &sc->arge_miibus, @@ -394,7 +399,7 @@ fail: static int arge_detach(device_t dev) { - struct arge_softc *sc = device_get_softc(dev); + struct arge_softc *sc = device_get_softc(dev); struct ifnet *ifp = sc->arge_ifp; KASSERT(mtx_initialized(&sc->arge_mtx), ("arge mutex not initialized")); @@ -403,6 +408,11 @@ arge_detach(device_t dev) if (device_is_attached(dev)) { ARGE_LOCK(sc); sc->arge_detach = 1; +#ifdef DEVICE_POLLING + if (ifp->if_capenable & IFCAP_POLLING) + ether_poll_deregister(ifp); +#endif + arge_stop(sc); ARGE_UNLOCK(sc); taskqueue_drain(taskqueue_swi, &sc->arge_link_task); @@ -558,15 +568,18 @@ arge_link_task(void *arg, int pending) sc->arge_link_status = 1; cfg = ARGE_READ(sc, AR71XX_MAC_CFG2); - ifcontrol = ARGE_READ(sc, AR71XX_MAC_IFCONTROL); - rx_filtmask = - ARGE_READ(sc, AR71XX_MAC_FIFO_RX_FILTMASK); - cfg &= ~(MAC_CFG2_IFACE_MODE_1000 | MAC_CFG2_IFACE_MODE_10_100 | MAC_CFG2_FULL_DUPLEX); + + if ((mii->mii_media_active & IFM_GMASK) == IFM_FDX) + cfg |= MAC_CFG2_FULL_DUPLEX; + + ifcontrol = ARGE_READ(sc, AR71XX_MAC_IFCONTROL); ifcontrol &= ~MAC_IFCONTROL_SPEED; - rx_filtmask &= ~FIFO_RX_FILTMASK_BYTE_MODE; + rx_filtmask = + ARGE_READ(sc, AR71XX_MAC_FIFO_RX_FILTMASK); + rx_filtmask &= ~FIFO_RX_MASK_BYTE_MODE; switch(media) { case IFM_10_T: @@ -581,7 +594,7 @@ arge_link_task(void *arg, int pending) case IFM_1000_T: case IFM_1000_SX: cfg |= MAC_CFG2_IFACE_MODE_1000; - rx_filtmask |= FIFO_RX_FILTMASK_BYTE_MODE; + rx_filtmask |= FIFO_RX_MASK_BYTE_MODE; pll = PLL_ETH_INT_CLK_1000; break; default: @@ -694,6 +707,7 @@ arge_init_locked(struct arge_softc *sc) ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; callout_reset(&sc->arge_stat_callout, hz, arge_tick, sc); + ARGE_WRITE(sc, AR71XX_DMA_TX_DESC, ARGE_TX_RING_ADDR(sc, 0)); ARGE_WRITE(sc, AR71XX_DMA_RX_DESC, ARGE_RX_RING_ADDR(sc, 0)); @@ -715,9 +729,24 @@ arge_encap(struct arge_softc *sc, struct struct arge_desc *desc, *prev_desc; bus_dma_segment_t txsegs[ARGE_MAXFRAGS]; int error, i, nsegs, prod, prev_prod; + struct mbuf *m; ARGE_LOCK_ASSERT(sc); + /* + * Fix mbuf chain, all fragments should be 4 bytes aligned and + * even 4 bytes + */ + m = *m_head; + if((mtod(m, intptr_t) & 3) != 0) { + m = m_defrag(*m_head, M_DONTWAIT); + if (m == NULL) { + *m_head = NULL; + return (ENOBUFS); + } + *m_head = m; + } + prod = sc->arge_cdata.arge_tx_prod; txd = &sc->arge_cdata.arge_txdesc[prod]; error = bus_dmamap_load_mbuf_sg(sc->arge_cdata.arge_tx_tag, @@ -754,7 +783,11 @@ arge_encap(struct arge_softc *sc, struct desc = &sc->arge_rdata.arge_tx_ring[prod]; desc->packet_ctrl = ARGE_DMASIZE(txsegs[i].ds_len); + if (txsegs[i].ds_addr & 3) + panic("TX packet address unaligned\n"); + desc->packet_addr = txsegs[i].ds_addr; + /* link with previous descriptor */ if (prev_desc) prev_desc->packet_ctrl |= ARGE_DESC_MORE; @@ -812,15 +845,6 @@ arge_start_locked(struct ifnet *ifp) if (m_head == NULL) break; - /* - * Fix mbuf chain, all fragments should be 4 bytes aligned and - * even 4 bytes - */ - arge_fix_chain(&m_head); - - if (m_head == NULL) { - dprintf("failed to adjust mbuf chain\n"); - } /* * Pack the data into the transmit ring. @@ -867,6 +891,9 @@ arge_ioctl(struct ifnet *ifp, u_long com struct ifreq *ifr = (struct ifreq *) data; struct mii_data *mii; int error; +#ifdef DEVICE_POLLING + int mask; +#endif switch (command) { case SIOCSIFFLAGS: @@ -884,11 +911,30 @@ arge_ioctl(struct ifnet *ifp, u_long com mii = device_get_softc(sc->arge_miibus); error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command); break; - case SIOCSIFCAP: - error = 0; - ifp->if_hwassist = 0; + case SIOCSIFCAP: printf("Implement me: SIOCSIFCAP\n"); - break; +#ifdef DEVICE_POLLING + mask = ifp->if_capenable ^ ifr->ifr_reqcap; + error = 0; + if (mask & IFCAP_POLLING) { + if (ifr->ifr_reqcap & IFCAP_POLLING) { + ARGE_WRITE(sc, AR71XX_DMA_INTR, 0); + error = ether_poll_register(arge_poll, ifp); + if (error) + return error; + ARGE_LOCK(sc); + ifp->if_capenable |= IFCAP_POLLING; + ARGE_UNLOCK(sc); + } else { + ARGE_WRITE(sc, AR71XX_DMA_INTR, DMA_INTR_ALL); + error = ether_poll_deregister(ifp); + ARGE_LOCK(sc); + ifp->if_capenable &= ~IFCAP_POLLING; + ARGE_UNLOCK(sc); + } + } + break; +#endif default: error = ether_ioctl(ifp, command, data); break; @@ -1040,7 +1086,7 @@ arge_dma_alloc(struct arge_softc *sc) BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ MCLBYTES, /* maxsize */ - 1, /* nsegments */ + BUS_SPACE_UNRESTRICTED, /* nsegments */ MCLBYTES, /* maxsegsize */ 0, /* flags */ NULL, NULL, /* lockfunc, lockarg */ @@ -1265,10 +1311,10 @@ arge_rx_ring_init(struct arge_softc *sc) addr = ARGE_RX_RING_ADDR(sc, 0); else addr = ARGE_RX_RING_ADDR(sc, i + 1); - rd->arge_rx_ring[i].packet_ctrl = ARGE_DESC_EMPTY; rd->arge_rx_ring[i].next_desc = addr; - if (arge_newbuf(sc, i) != 0) + if (arge_newbuf(sc, i) != 0) { return (ENOBUFS); + } } bus_dmamap_sync(sc->arge_cdata.arge_rx_ring_tag, @@ -1313,13 +1359,12 @@ arge_newbuf(struct arge_softc *sc, int i map = rxd->rx_dmamap; rxd->rx_dmamap = sc->arge_cdata.arge_rx_sparemap; sc->arge_cdata.arge_rx_sparemap = map; - bus_dmamap_sync(sc->arge_cdata.arge_rx_tag, rxd->rx_dmamap, - BUS_DMASYNC_PREREAD); rxd->rx_m = m; desc = rxd->desc; + if (segs[0].ds_addr & 3) + panic("RX packet address unaligned"); desc->packet_addr = segs[0].ds_addr; - desc->packet_ctrl = (desc->packet_ctrl & ~ARGE_DESC_SIZE_MASK) - | ARGE_DMASIZE(segs[0].ds_len); + desc->packet_ctrl = ARGE_DESC_EMPTY | ARGE_DMASIZE(segs[0].ds_len); return (0); } @@ -1339,6 +1384,21 @@ arge_fixup_rx(struct mbuf *m) m->m_data -= ETHER_ALIGN; } +#ifdef DEVICE_POLLING +static void +arge_poll(struct ifnet *ifp, enum poll_cmd cmd, int count) +{ + struct arge_softc *sc = ifp->if_softc; + + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + ARGE_LOCK(sc); + arge_tx_locked(sc); + arge_rx_locked(sc); + ARGE_UNLOCK(sc); + } +} +#endif /* DEVICE_POLLING */ + static void arge_tx_locked(struct arge_softc *sc) @@ -1406,7 +1466,7 @@ arge_rx_locked(struct arge_softc *sc) { struct arge_rxdesc *rxd; struct ifnet *ifp = sc->arge_ifp; - int cons, prog, packet_len; + int cons, prog, packet_len, i; struct arge_desc *cur_rx; struct mbuf *m; @@ -1445,23 +1505,26 @@ arge_rx_locked(struct arge_softc *sc) ARGE_UNLOCK(sc); (*ifp->if_input)(ifp, m); ARGE_LOCK(sc); - - /* Reinit descriptor */ - cur_rx->packet_ctrl = ARGE_DESC_EMPTY; cur_rx->packet_addr = 0; - if (arge_newbuf(sc, cons) != 0) { - device_printf(sc->arge_dev, - "Failed to allocate buffer\n"); - break; + } + + if (prog > 0) { + + i = sc->arge_cdata.arge_rx_cons; + for (; prog > 0 ; prog--) { + if (arge_newbuf(sc, i) != 0) { + device_printf(sc->arge_dev, + "Failed to allocate buffer\n"); + break; + } + ARGE_INC(i, ARGE_RX_RING_COUNT); } bus_dmamap_sync(sc->arge_cdata.arge_rx_ring_tag, sc->arge_cdata.arge_rx_ring_map, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); - } - if (prog > 0) { sc->arge_cdata.arge_rx_cons = cons; bus_dmamap_sync(sc->arge_cdata.arge_rx_ring_tag, @@ -1470,27 +1533,6 @@ arge_rx_locked(struct arge_softc *sc) } } -static void -arge_rx_intr(struct arge_softc *sc, uint32_t status) -{ - - ARGE_LOCK(sc); - /* interrupts are masked by filter */ - arge_rx_locked(sc); - - /* RX overrun disables the receiver. Clear indication and - re-enable rx. */ - if ( status & DMA_INTR_RX_OVERFLOW) { - ARGE_WRITE(sc, AR71XX_DMA_RX_STATUS, DMA_RX_STATUS_OVERFLOW); - ARGE_WRITE(sc, AR71XX_DMA_RX_CONTROL, DMA_RX_CONTROL_EN); - } - - /* unmask interrupts */ - ARGE_SET_BITS(sc, - AR71XX_DMA_INTR, DMA_INTR_RX_OVERFLOW | DMA_INTR_RX_PKT_RCVD); - ARGE_UNLOCK(sc); -} - static int arge_intr_filter(void *arg) { @@ -1510,17 +1552,10 @@ arge_intr_filter(void *arg) #endif if (status & DMA_INTR_ALL) { - if (status & (DMA_INTR_RX_PKT_RCVD | DMA_INTR_RX_OVERFLOW)) - ARGE_CLEAR_BITS(sc, AR71XX_DMA_INTR, - DMA_INTR_RX_OVERFLOW | DMA_INTR_RX_PKT_RCVD); - - if (status & (DMA_INTR_TX_PKT_SENT | DMA_INTR_TX_UNDERRUN)) - ARGE_CLEAR_BITS(sc, AR71XX_DMA_INTR, - DMA_INTR_TX_UNDERRUN | DMA_INTR_TX_PKT_SENT); - sc->arge_intr_status |= status; + ARGE_WRITE(sc, AR71XX_DMA_INTR, 0); return (FILTER_SCHEDULE_THREAD); - } + } sc->arge_intr_status = 0; return (FILTER_STRAY); @@ -1532,8 +1567,8 @@ arge_intr(void *arg) struct arge_softc *sc = arg; uint32_t status; - status = sc->arge_intr_status; - sc->arge_intr_status = 0; + status = ARGE_READ(sc, AR71XX_DMA_INTR_STATUS); + status |= sc->arge_intr_status; #if 0 dprintf("int status(intr) = %b\n", status, @@ -1559,37 +1594,42 @@ arge_intr(void *arg) return; } - if (status & (DMA_INTR_RX_PKT_RCVD | DMA_INTR_RX_OVERFLOW)) - arge_rx_intr(sc, status); - - if (status & (DMA_INTR_TX_PKT_SENT | DMA_INTR_TX_UNDERRUN)) - arge_tx_intr(sc, status); -} - -static void -arge_tx_intr(struct arge_softc *sc, uint32_t status) -{ ARGE_LOCK(sc); - /* Interrupts are masked by filter */ - arge_tx_locked(sc); + if (status & DMA_INTR_RX_PKT_RCVD) + arge_rx_locked(sc); + + /* + * RX overrun disables the receiver. + * Clear indication and re-enable rx. + */ + if ( status & DMA_INTR_RX_OVERFLOW) { + ARGE_WRITE(sc, AR71XX_DMA_RX_STATUS, DMA_RX_STATUS_OVERFLOW); + ARGE_WRITE(sc, AR71XX_DMA_RX_CONTROL, DMA_RX_CONTROL_EN); + } - /* Underrun turns off TX. Clear underrun indication. - If there's anything left in the ring, reactivate the tx. */ + if (status & DMA_INTR_TX_PKT_SENT) + arge_tx_locked(sc); + /* + * Underrun turns off TX. Clear underrun indication. + * If there's anything left in the ring, reactivate the tx. + */ if (status & DMA_INTR_TX_UNDERRUN) { ARGE_WRITE(sc, AR71XX_DMA_TX_STATUS, DMA_TX_STATUS_UNDERRUN); - if (sc->arge_cdata.arge_tx_pkts > 0 ) { - ARGE_WRITE(sc, AR71XX_DMA_TX_CONTROL, DMA_TX_CONTROL_EN); - } + if (sc->arge_cdata.arge_tx_pkts > 0 ) { + ARGE_WRITE(sc, AR71XX_DMA_TX_CONTROL, + DMA_TX_CONTROL_EN); + } } - /* unmask interrupts */ - ARGE_SET_BITS(sc, - AR71XX_DMA_INTR, DMA_INTR_TX_UNDERRUN | DMA_INTR_TX_PKT_SENT); - ARGE_UNLOCK(sc); + /* + * re-enable all interrupts + */ + ARGE_WRITE(sc, AR71XX_DMA_INTR, DMA_INTR_ALL); } + static void arge_tick(void *xsc) { @@ -1602,117 +1642,3 @@ arge_tick(void *xsc) mii_tick(mii); callout_reset(&sc->arge_stat_callout, hz, arge_tick, sc); } - -/* - * Create a copy of a single mbuf. It can have either internal or - * external data, it may have a packet header. External data is really - * copied, so the new buffer is writeable. - */ -static struct mbuf * -copy_mbuf(struct mbuf *m) -{ - struct mbuf *new; - - MGET(new, M_DONTWAIT, MT_DATA); - if (new == NULL) - return (NULL); - - if (m->m_flags & M_PKTHDR) { - M_MOVE_PKTHDR(new, m); - if (m->m_len > MHLEN) - MCLGET(new, M_WAIT); - } else { - if (m->m_len > MLEN) - MCLGET(new, M_WAIT); - } - - bcopy(m->m_data, new->m_data, m->m_len); - new->m_len = m->m_len; - new->m_flags &= ~M_RDONLY; - - return (new); -} - - - -static int -arge_fix_chain(struct mbuf **mp) -{ - struct mbuf *m = *mp, *prev = NULL, *next, *new; - u_int mlen = 0, fill = 0; - int first, off; - u_char *d, *cp; - - do { - next = m->m_next; - - if ((uintptr_t)mtod(m, void *) % 4 != 0 || - (m->m_len % 4 != 0 && next)) { - /* - * Needs fixing - */ - first = (m == *mp); - - d = mtod(m, u_char *); - if ((off = (uintptr_t)(void *)d % 4) != 0) { - if (M_WRITABLE(m)) { - bcopy(d, d - off, m->m_len); - m->m_data = (caddr_t)(d - off); - } else { - if ((new = copy_mbuf(m)) == NULL) { - goto fail; - } - if (prev) - prev->m_next = new; - new->m_next = next; - m_free(m); - m = new; - } - } - - if ((off = m->m_len % 4) != 0) { - if (!M_WRITABLE(m)) { - if ((new = copy_mbuf(m)) == NULL) { - goto fail; - } - if (prev) - prev->m_next = new; - new->m_next = next; - m_free(m); - m = new; - } - d = mtod(m, u_char *) + m->m_len; - off = 4 - off; - while (off) { - if (next == NULL) { - *d++ = 0; - fill++; - } else if (next->m_len == 0) { - next = m_free(next); - continue; - } else { - cp = mtod(next, u_char *); - *d++ = *cp++; - next->m_len--; - next->m_data = (caddr_t)cp; - } - off--; - m->m_len++; - } - } - - if (first) - *mp = m; - } - - mlen += m->m_len; - prev = m; - } while ((m = next) != NULL); - - return (mlen - fill); - - fail: - m_freem(*mp); - *mp = NULL; - return (0); -} From owner-svn-src-projects@FreeBSD.ORG Tue May 26 04:51:57 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 12F02106566B; Tue, 26 May 2009 04:51:57 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 00CC68FC0A; Tue, 26 May 2009 04:51:57 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q4pue7046696; Tue, 26 May 2009 04:51:56 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q4puDT046695; Tue, 26 May 2009 04:51:56 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260451.n4Q4puDT046695@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 04:51:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192788 - projects/mips/sys/mips/malta X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 04:51:57 -0000 Author: gonzo Date: Tue May 26 04:51:56 2009 New Revision: 192788 URL: http://svn.freebsd.org/changeset/base/192788 Log: - Provide proper pre_thread/post_ithread functions for GT PCI controller. Modified: projects/mips/sys/mips/malta/gt_pci.c Modified: projects/mips/sys/mips/malta/gt_pci.c ============================================================================== --- projects/mips/sys/mips/malta/gt_pci.c Tue May 26 04:42:31 2009 (r192787) +++ projects/mips/sys/mips/malta/gt_pci.c Tue May 26 04:51:56 2009 (r192788) @@ -91,6 +91,13 @@ __FBSDID("$FreeBSD$"); #define OCW3_POLL_IRQ(x) ((x) & 0x7f) #define OCW3_POLL_PENDING (1U << 7) +struct gt_pci_softc; + +struct gt_pci_intr_cookie { + int irq; + struct gt_pci_softc *sc; +}; + struct gt_pci_softc { device_t sc_dev; bus_space_tag_t sc_st; @@ -107,6 +114,7 @@ struct gt_pci_softc { struct resource *sc_irq; struct intr_event *sc_eventstab[ICU_LEN]; + struct gt_pci_intr_cookie sc_intr_cookies[ICU_LEN]; uint16_t sc_imask; uint16_t sc_elcr; @@ -115,6 +123,51 @@ struct gt_pci_softc { void *sc_ih; }; +static void gt_pci_set_icus(struct gt_pci_softc *); +static int gt_pci_intr(void *v); +static int gt_pci_probe(device_t); +static int gt_pci_attach(device_t); +static int gt_pci_activate_resource(device_t, device_t, int, int, + struct resource *); +static int gt_pci_setup_intr(device_t, device_t, struct resource *, + int, driver_filter_t *, driver_intr_t *, void *, void **); +static int gt_pci_teardown_intr(device_t, device_t, struct resource *, void*); +static int gt_pci_maxslots(device_t ); +static int gt_pci_conf_setup(struct gt_pci_softc *, int, int, int, int, + uint32_t *); +static uint32_t gt_pci_read_config(device_t, int, int, int, int, int); +static void gt_pci_write_config(device_t, int, int, int, int, uint32_t, int); +static int gt_pci_route_interrupt(device_t pcib, device_t dev, int pin); +static struct resource * gt_pci_alloc_resource(device_t, device_t, int, + int *, u_long, u_long, u_long, u_int); + +static void +gt_pci_mask_irq(void *source) +{ + struct gt_pci_intr_cookie *cookie = source; + struct gt_pci_softc *sc = cookie->sc; + int irq = cookie->irq; + + sc->sc_imask |= (1 << irq); + sc->sc_elcr |= (1 << irq); + + gt_pci_set_icus(sc); +} + +static void +gt_pci_unmask_irq(void *source) +{ + struct gt_pci_intr_cookie *cookie = source; + struct gt_pci_softc *sc = cookie->sc; + int irq = cookie->irq; + + /* Enable it, set trigger mode. */ + sc->sc_imask &= ~(1 << irq); + sc->sc_elcr &= ~(1 << irq); + + gt_pci_set_icus(sc); +} + static void gt_pci_set_icus(struct gt_pci_softc *sc) { @@ -629,10 +682,13 @@ gt_pci_setup_intr(device_t dev, device_t panic("%s: bad irq or type", __func__); event = sc->sc_eventstab[irq]; + sc->sc_intr_cookies[irq].irq = irq; + sc->sc_intr_cookies[irq].sc = sc; if (event == NULL) { - error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)mips_mask_irq, (mask_fn)mips_unmask_irq, - (mask_fn)mips_unmask_irq, NULL, "gt_pci intr%d:", irq); + error = intr_event_create(&event, + (void *)&sc->sc_intr_cookies[irq], 0, irq, + gt_pci_mask_irq, gt_pci_unmask_irq, + NULL, NULL, "gt_pci intr%d:", irq); if (error) return 0; sc->sc_eventstab[irq] = event; @@ -641,12 +697,7 @@ gt_pci_setup_intr(device_t dev, device_t intr_event_add_handler(event, device_get_nameunit(child), filt, handler, arg, intr_priority(flags), flags, cookiep); - /* Enable it, set trigger mode. */ - sc->sc_imask &= ~(1 << irq); - sc->sc_elcr &= ~(1 << irq); - - gt_pci_set_icus(sc); - + gt_pci_unmask_irq((void *)&sc->sc_intr_cookies[irq]); return 0; } @@ -654,6 +705,12 @@ static int gt_pci_teardown_intr(device_t dev, device_t child, struct resource *res, void *cookie) { + struct gt_pci_softc *sc = device_get_softc(dev); + int irq; + + irq = rman_get_start(res); + gt_pci_mask_irq((void *)&sc->sc_intr_cookies[irq]); + return (intr_event_remove_handler(cookie)); } From owner-svn-src-projects@FreeBSD.ORG Tue May 26 05:52:24 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75AF41065677; Tue, 26 May 2009 05:52:24 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 639938FC15; Tue, 26 May 2009 05:52:24 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q5qOSY047913; Tue, 26 May 2009 05:52:24 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q5qOZ6047912; Tue, 26 May 2009 05:52:24 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260552.n4Q5qOZ6047912@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 05:52:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192790 - projects/mips/sys/mips/adm5120 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 05:52:24 -0000 Author: gonzo Date: Tue May 26 05:52:24 2009 New Revision: 192790 URL: http://svn.freebsd.org/changeset/base/192790 Log: - Provide proper pre_ithread/post_ithread functions Modified: projects/mips/sys/mips/adm5120/obio.c Modified: projects/mips/sys/mips/adm5120/obio.c ============================================================================== --- projects/mips/sys/mips/adm5120/obio.c Tue May 26 05:30:21 2009 (r192789) +++ projects/mips/sys/mips/adm5120/obio.c Tue May 26 05:52:24 2009 (r192790) @@ -120,6 +120,39 @@ static int obio_setup_intr(device_t, dev static int obio_teardown_intr(device_t, device_t, struct resource *, void *); + +static void +obio_mask_irq(void *source) +{ + int irq; + uint32_t irqmask; + uint32_t reg; + + irq = (int)source; + irqmask = 1 << irq; + + /* disable IRQ */ + reg = REG_READ(ICU_DISABLE_REG); + REG_WRITE(ICU_DISABLE_REG, (reg | irqmask)); +} + +static void +obio_unmask_irq(void *source) +{ + int irq; + uint32_t irqmask; + uint32_t reg; + + irq = (int)source; + irqmask = 1 << irq; + + /* disable IRQ */ + reg = REG_READ(ICU_DISABLE_REG); + REG_WRITE(ICU_DISABLE_REG, (reg & ~irqmask)); + +} + + static int obio_probe(device_t dev) { @@ -321,7 +354,7 @@ obio_setup_intr(device_t dev, device_t c event = sc->sc_eventstab[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)mips_mask_irq, (mask_fn)mips_unmask_irq, + obio_mask_irq, obio_unmask_irq, NULL, NULL, "obio intr%d:", irq); sc->sc_eventstab[irq] = event; @@ -343,6 +376,8 @@ obio_setup_intr(device_t dev, device_t c /* enable */ REG_WRITE(ICU_ENABLE_REG, irqmask); + obio_unmask_irq((void*)irq); + return (0); } @@ -351,7 +386,7 @@ obio_teardown_intr(device_t dev, device_ void *cookie) { struct obio_softc *sc = device_get_softc(dev); - int irq, result; + int irq, result, priority; uint32_t irqmask; irq = rman_get_start(ires); @@ -361,10 +396,18 @@ obio_teardown_intr(device_t dev, device_ if (sc->sc_eventstab[irq] == NULL) panic("Trying to teardown unoccupied IRQ"); - irqmask = 1 << irq; /* only used as a mask from here on */ + irqmask = (1 << irq); + priority = irq_priorities[irq]; - /* disable this irq in HW */ - REG_WRITE(ICU_DISABLE_REG, irqmask); + if (priority == INTR_FIQ) + REG_WRITE(ICU_MODE_REG, REG_READ(ICU_MODE_REG) & ~irqmask); + else + REG_WRITE(ICU_MODE_REG, REG_READ(ICU_MODE_REG) | irqmask); + + /* disable */ + irqmask = REG_READ(ICU_ENABLE_REG); + irqmask &= ~(1 << irq); + REG_WRITE(ICU_ENABLE_REG, irqmask); result = intr_event_remove_handler(cookie); if (!result) { From owner-svn-src-projects@FreeBSD.ORG Tue May 26 05:59:05 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0325106564A; Tue, 26 May 2009 05:59:05 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CD7CB8FC08; Tue, 26 May 2009 05:59:05 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q5x5iJ048078; Tue, 26 May 2009 05:59:05 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q5x5Au048077; Tue, 26 May 2009 05:59:05 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260559.n4Q5x5Au048077@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 05:59:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192791 - projects/mips/sys/mips/mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 05:59:06 -0000 Author: gonzo Date: Tue May 26 05:59:05 2009 New Revision: 192791 URL: http://svn.freebsd.org/changeset/base/192791 Log: - Provide proper pre_ithread/post_ithread functions for both hard and soft interrupts - Do not handle masked interrupts - Do not write Cause register because most bytes are read-only and writing the same byte to RW fields are pointless. And in case of software interrupt utterly wrong Modified: projects/mips/sys/mips/mips/intr_machdep.c Modified: projects/mips/sys/mips/mips/intr_machdep.c ============================================================================== --- projects/mips/sys/mips/mips/intr_machdep.c Tue May 26 05:52:24 2009 (r192790) +++ projects/mips/sys/mips/mips/intr_machdep.c Tue May 26 05:59:05 2009 (r192791) @@ -53,18 +53,39 @@ static int intrcnt_index = 0; static int last_printed = 0; #endif -void -mips_mask_irq(void) +static void +mips_mask_hard_irq(void *source) { + int irq = (int)source; + mips_wr_status(mips_rd_status() & ~(((1 << irq) << 8) << 2)); } -void -mips_unmask_irq(void) +static void +mips_unmask_hard_irq(void *source) { + int irq = (int)source; + mips_wr_status(mips_rd_status() | (((1 << irq) << 8) << 2)); } +static void +mips_mask_soft_irq(void *source) +{ + int irq = (int)source; + + mips_wr_status(mips_rd_status() & ~((1 << irq) << 8)); +} + +static void +mips_unmask_soft_irq(void *source) +{ + int irq = (int)source; + + mips_wr_status(mips_rd_status() | ((1 << irq) << 8)); +} + + void cpu_establish_hardintr(const char *name, driver_filter_t *filt, void (*handler)(void*), void *arg, int irq, int flags, void **cookiep) @@ -72,8 +93,10 @@ cpu_establish_hardintr(const char *name, struct intr_event *event; int error; +#if 0 printf("Establish HARD IRQ %d: filt %p handler %p arg %p\n", irq, filt, handler, arg); +#endif /* * We have 6 levels, but thats 0 - 5 (not including 6) */ @@ -83,7 +106,7 @@ cpu_establish_hardintr(const char *name, event = hardintr_events[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)mips_mask_irq, (mask_fn)mips_unmask_irq, + mips_mask_hard_irq, mips_unmask_hard_irq, NULL, NULL, "hard intr%d:", irq); if (error) return; @@ -101,7 +124,7 @@ cpu_establish_hardintr(const char *name, intr_event_add_handler(event, name, filt, handler, arg, intr_priority(flags), flags, cookiep); - mips_wr_status(mips_rd_status() | (((1 << irq) << 8) << 2)); + mips_unmask_hard_irq((void*)irq); } void @@ -112,15 +135,17 @@ cpu_establish_softintr(const char *name, struct intr_event *event; int error; +#if 0 printf("Establish SOFT IRQ %d: filt %p handler %p arg %p\n", irq, filt, handler, arg); +#endif if (irq < 0 || irq > NSOFT_IRQS) panic("%s called for unknown hard intr %d", __func__, irq); event = softintr_events[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)mips_mask_irq, (mask_fn)mips_unmask_irq, + mips_mask_soft_irq, mips_unmask_soft_irq, NULL, NULL, "intr%d:", irq); if (error) return; @@ -130,22 +155,27 @@ cpu_establish_softintr(const char *name, intr_event_add_handler(event, name, filt, handler, arg, intr_priority(flags), flags, cookiep); - mips_wr_status(mips_rd_status() | (((1<< irq) << 8))); + mips_unmask_soft_irq((void*)irq); } void cpu_intr(struct trapframe *tf) { struct intr_event *event; - register_t cause; + register_t cause, status; int hard, i, intr; critical_enter(); cause = mips_rd_cause(); + status = mips_rd_status(); intr = (cause & MIPS_INT_MASK) >> 8; - cause &= ~MIPS_INT_MASK; - mips_wr_cause(cause); + /* + * Do not handle masked interrupts. They were masked by + * pre_ithread function (mips_mask_XXX_intr) and will be + * unmasked once ithread is through with handler + */ + intr &= (status & MIPS_INT_MASK) >> 8; while ((i = fls(intr)) != 0) { intr &= ~(1 << (i - 1)); switch (i) { From owner-svn-src-projects@FreeBSD.ORG Tue May 26 06:01:17 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C0E761065673; Tue, 26 May 2009 06:01:17 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEF1C8FC16; Tue, 26 May 2009 06:01:17 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q61Hhr048184; Tue, 26 May 2009 06:01:17 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q61Htj048182; Tue, 26 May 2009 06:01:17 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260601.n4Q61Htj048182@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 06:01:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192792 - in projects/mips/sys/mips: include mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 06:01:18 -0000 Author: gonzo Date: Tue May 26 06:01:17 2009 New Revision: 192792 URL: http://svn.freebsd.org/changeset/base/192792 Log: - Remove now unused NetBSDism intr.h Deleted: projects/mips/sys/mips/include/intr.h Modified: projects/mips/sys/mips/include/psl.h projects/mips/sys/mips/mips/trap.c Modified: projects/mips/sys/mips/include/psl.h ============================================================================== --- projects/mips/sys/mips/include/psl.h Tue May 26 05:59:05 2009 (r192791) +++ projects/mips/sys/mips/include/psl.h Tue May 26 06:01:17 2009 (r192792) @@ -47,8 +47,4 @@ #define USERMODE(ps) (((ps) & SR_KSU_MASK) == SR_KSU_USER) #define BASEPRI(ps) (((ps) & (INT_MASK | SR_INT_ENA_PREV)) \ == (INT_MASK | SR_INT_ENA_PREV)) - -#ifdef _KERNEL -#include -#endif #endif /* _MACHINE_PSL_H_ */ Modified: projects/mips/sys/mips/mips/trap.c ============================================================================== --- projects/mips/sys/mips/mips/trap.c Tue May 26 05:59:05 2009 (r192791) +++ projects/mips/sys/mips/mips/trap.c Tue May 26 06:01:17 2009 (r192792) @@ -76,7 +76,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include From owner-svn-src-projects@FreeBSD.ORG Tue May 26 06:02:39 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17298106564A; Tue, 26 May 2009 06:02:39 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 057A98FC16; Tue, 26 May 2009 06:02:39 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q62c6o048246; Tue, 26 May 2009 06:02:38 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q62cGk048245; Tue, 26 May 2009 06:02:38 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260602.n4Q62cGk048245@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 06:02:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192793 - projects/mips/sys/mips/mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 06:02:39 -0000 Author: gonzo Date: Tue May 26 06:02:38 2009 New Revision: 192793 URL: http://svn.freebsd.org/changeset/base/192793 Log: - Remove erroneus "break" instruction, it was meant for debug Modified: projects/mips/sys/mips/mips/exception.S Modified: projects/mips/sys/mips/mips/exception.S ============================================================================== --- projects/mips/sys/mips/mips/exception.S Tue May 26 06:01:17 2009 (r192792) +++ projects/mips/sys/mips/mips/exception.S Tue May 26 06:02:38 2009 (r192793) @@ -689,7 +689,6 @@ NNON_LEAF(MipsUserIntr, STAND_FRAME_SIZE /* * Call the interrupt handler. */ - break la k0, _C_LABEL(cpu_intr) jalr k0 sw a3, STAND_RA_OFFSET(sp) # for debugging From owner-svn-src-projects@FreeBSD.ORG Tue May 26 06:20:50 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D862A1065675; Tue, 26 May 2009 06:20:50 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C61AB8FC15; Tue, 26 May 2009 06:20:50 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4Q6KoDm048656; Tue, 26 May 2009 06:20:50 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4Q6KoWH048651; Tue, 26 May 2009 06:20:50 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905260620.n4Q6KoWH048651@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 06:20:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192794 - projects/mips/sys/mips/mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 06:20:51 -0000 Author: gonzo Date: Tue May 26 06:20:50 2009 New Revision: 192794 URL: http://svn.freebsd.org/changeset/base/192794 Log: - Preserve INT_MASK fields in Status register across context switches. They should be modified only by interrupt setup/teardown and pre_ithread/post_ithread functions Modified: projects/mips/sys/mips/mips/exception.S projects/mips/sys/mips/mips/pm_machdep.c projects/mips/sys/mips/mips/swtch.S projects/mips/sys/mips/mips/vm_machdep.c Modified: projects/mips/sys/mips/mips/exception.S ============================================================================== --- projects/mips/sys/mips/mips/exception.S Tue May 26 06:02:38 2009 (r192793) +++ projects/mips/sys/mips/mips/exception.S Tue May 26 06:20:50 2009 (r192794) @@ -593,6 +593,19 @@ NNON_LEAF(MipsKernIntr, KERN_EXC_FRAME_S jalr k0 sw a3, STAND_RA_OFFSET + KERN_REG_SIZE(sp) /* Why no AST processing here? */ + + /* + * Update interrupt mask in saved status register + * Some of interrupts could be disabled by + * intr filters + */ + mfc0 a0, COP_0_STATUS_REG + and a0, a0, SR_INT_MASK + RESTORE_REG(a1, SR, sp) + and a1, a1, ~SR_INT_MASK + or a1, a1, a0 + SAVE_REG(a1, SR, sp) + /* * Restore registers and return from the interrupt. */ Modified: projects/mips/sys/mips/mips/pm_machdep.c ============================================================================== --- projects/mips/sys/mips/mips/pm_machdep.c Tue May 26 06:02:38 2009 (r192793) +++ projects/mips/sys/mips/mips/pm_machdep.c Tue May 26 06:20:50 2009 (r192794) @@ -482,7 +482,8 @@ exec_setregs(struct thread *td, u_long e // td->td_frame->sr = SR_KSU_USER | SR_EXL | SR_INT_ENAB; //? td->td_frame->sr |= idle_mask & ALL_INT_MASK; #else - td->td_frame->sr = SR_KSU_USER | SR_EXL;// mips2 also did COP_0_BIT + td->td_frame->sr = SR_KSU_USER | SR_EXL | SR_INT_ENAB | + (mips_rd_status() & ALL_INT_MASK); #endif #ifdef TARGET_OCTEON td->td_frame->sr |= MIPS_SR_COP_2_BIT | MIPS32_SR_PX | MIPS_SR_UX | Modified: projects/mips/sys/mips/mips/swtch.S ============================================================================== --- projects/mips/sys/mips/mips/swtch.S Tue May 26 06:02:38 2009 (r192793) +++ projects/mips/sys/mips/mips/swtch.S Tue May 26 06:20:50 2009 (r192794) @@ -224,6 +224,11 @@ LEAF(fork_trampoline) RESTORE_U_PCB_REG(s8, S8, k1) RESTORE_U_PCB_REG(ra, RA, k1) RESTORE_U_PCB_REG(sp, SP, k1) + li k1, ~SR_INT_MASK + and k0, k0, k1 + mfc0 k1, COP_0_STATUS_REG + and k1, k1, SR_INT_MASK + or k0, k0, k1 mtc0 k0, COP_0_STATUS_REG # switch to user mode (when eret...) HAZARD_DELAY sync @@ -410,6 +415,10 @@ sw2: * In case there are CPU-specific registers that need * to be restored with the other registers do so here. */ + mfc0 t0, COP_0_STATUS_REG + and t0, t0, SR_INT_MASK + and v0, v0, ~SR_INT_MASK + or v0, v0, t0 mtc0 v0, COP_0_STATUS_REG ITLBNOPFIX Modified: projects/mips/sys/mips/mips/vm_machdep.c ============================================================================== --- projects/mips/sys/mips/mips/vm_machdep.c Tue May 26 06:02:38 2009 (r192793) +++ projects/mips/sys/mips/mips/vm_machdep.c Tue May 26 06:20:50 2009 (r192794) @@ -148,7 +148,7 @@ cpu_fork(register struct thread *td1,reg pcb2->pcb_context.val[PCB_REG_S0] = (register_t)fork_return; pcb2->pcb_context.val[PCB_REG_S1] = (register_t)td2; pcb2->pcb_context.val[PCB_REG_S2] = (register_t)td2->td_frame; - pcb2->pcb_context.val[PCB_REG_SR] = SR_INT_MASK; + pcb2->pcb_context.val[PCB_REG_SR] = SR_INT_MASK & mips_rd_status(); /* * FREEBSD_DEVELOPERS_FIXME: * Setup any other CPU-Specific registers (Not MIPS Standard) @@ -298,11 +298,9 @@ cpu_set_upcall(struct thread *td, struct pcb2->pcb_context.val[PCB_REG_S0] = (register_t)fork_return; pcb2->pcb_context.val[PCB_REG_S1] = (register_t)td; pcb2->pcb_context.val[PCB_REG_S2] = (register_t)td->td_frame; - - /* Dont set IE bit in SR. sched lock release will take care of it */ -/* idle_mask is jmips pcb2->pcb_context.val[11] = (ALL_INT_MASK & idle_mask); */ - pcb2->pcb_context.val[PCB_REG_SR] = SR_INT_MASK; + pcb2->pcb_context.val[PCB_REG_SR] = SR_INT_MASK & mips_rd_status(); + #ifdef TARGET_OCTEON pcb2->pcb_context.val[PCB_REG_SR] |= MIPS_SR_COP_2_BIT | MIPS_SR_COP_0_BIT | MIPS32_SR_PX | MIPS_SR_UX | MIPS_SR_KX | MIPS_SR_SX; From owner-svn-src-projects@FreeBSD.ORG Tue May 26 14:43:13 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 058BD1065673; Tue, 26 May 2009 14:43:13 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E7AF48FC15; Tue, 26 May 2009 14:43:12 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QEhCDO061123; Tue, 26 May 2009 14:43:12 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QEhCXG061122; Tue, 26 May 2009 14:43:12 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905261443.n4QEhCXG061122@svn.freebsd.org> From: Robert Watson Date: Tue, 26 May 2009 14:43:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192809 - projects/pnet/sys/i386/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 14:43:13 -0000 Author: rwatson Date: Tue May 26 14:43:12 2009 New Revision: 192809 URL: http://svn.freebsd.org/changeset/base/192809 Log: Re-remove NETISR2 from GENERIC in the netisr2 branch. Modified: projects/pnet/sys/i386/conf/GENERIC Modified: projects/pnet/sys/i386/conf/GENERIC ============================================================================== --- projects/pnet/sys/i386/conf/GENERIC Tue May 26 14:15:06 2009 (r192808) +++ projects/pnet/sys/i386/conf/GENERIC Tue May 26 14:43:12 2009 (r192809) @@ -38,7 +38,6 @@ options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols -options NETISR2 # Parallel netisrs options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support From owner-svn-src-projects@FreeBSD.ORG Tue May 26 14:43:44 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98DF71065670; Tue, 26 May 2009 14:43:44 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6C39E8FC22; Tue, 26 May 2009 14:43:44 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QEhisg061166; Tue, 26 May 2009 14:43:44 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QEhiXa061165; Tue, 26 May 2009 14:43:44 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905261443.n4QEhiXa061165@svn.freebsd.org> From: Robert Watson Date: Tue, 26 May 2009 14:43:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192810 - projects/pnet/sys/i386/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 14:43:45 -0000 Author: rwatson Date: Tue May 26 14:43:44 2009 New Revision: 192810 URL: http://svn.freebsd.org/changeset/base/192810 Log: Add a specific NETISR2 config file for side-by-side testing purposes. Added: projects/pnet/sys/i386/conf/NETISR2 Added: projects/pnet/sys/i386/conf/NETISR2 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/pnet/sys/i386/conf/NETISR2 Tue May 26 14:43:44 2009 (r192810) @@ -0,0 +1,3 @@ +include GENERIC +ident NETISR2 +options NETISR2 From owner-svn-src-projects@FreeBSD.ORG Tue May 26 15:49:09 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B357A1065673; Tue, 26 May 2009 15:49:09 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 880E98FC16; Tue, 26 May 2009 15:49:09 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QFn9dF062844; Tue, 26 May 2009 15:49:09 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QFn98r062843; Tue, 26 May 2009 15:49:09 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905261549.n4QFn98r062843@svn.freebsd.org> From: Rui Paulo Date: Tue, 26 May 2009 15:49:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192814 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 15:49:10 -0000 Author: rpaulo Date: Tue May 26 15:49:09 2009 New Revision: 192814 URL: http://svn.freebsd.org/changeset/base/192814 Log: Code cleanup in preparation for the first try at implemeting HWMP. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue May 26 15:33:34 2009 (r192813) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue May 26 15:49:09 2009 (r192814) @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); /* * IEEE 802.11s Hybrid Wireless Mesh Protocol. + * + * Based on March 2009, D3.0 802.11s draft spec. */ #include "opt_inet.h" #include "opt_wlan.h" @@ -91,6 +93,12 @@ SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, roo &ieee80211_hwmp_rootmode, 0, "Root Mesh Point Node"); #endif +static void hwmp_recv_preq(struct ieee80211vap *, + const struct ieee80211_meshpreq_ie *); +static void hwmp_recv_prep(struct ieee80211vap *, + const struct ieee80211_meshprep_ie *); +static void hwmp_recv_perr(struct ieee80211vap *, + const struct ieee80211_meshperr_ie *); void ieee80211_hwmp_recv_action(struct ieee80211vap *vap, struct ieee80211_node *ni, @@ -152,6 +160,7 @@ ieee80211_hwmp_recv_action(struct ieee80 vap->iv_stats.is_rx_mgtdiscard++; return; } + hwmp_recv_preq(vap, meshpreq); /* * Is the peer trying to find us? */ @@ -180,8 +189,10 @@ ieee80211_hwmp_recv_action(struct ieee80 } break; case IEEE80211_ACTION_MESHPATH_REP: + hwmp_recv_prep(vap, meshprep); break; case IEEE80211_ACTION_MESHPATH_ERR: + hwmp_recv_perr(vap, meshperr); break; default: IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_MESH, @@ -203,7 +214,7 @@ ieee80211_hwmp_recv_action(struct ieee80 * Add a Mesh Path Reply IE to a frame. */ uint8_t * -ieee80211_add_meshprep(uint8_t *frm, struct ieee80211_meshprep_ie *prep) +ieee80211_add_meshprep(uint8_t *frm, const struct ieee80211_meshprep_ie *prep) { *frm++ = IEEE80211_ELEMID_MESHPREP; @@ -222,3 +233,22 @@ ieee80211_add_meshprep(uint8_t *frm, str return frm; } + +static void +hwmp_recv_preq(struct ieee80211vap *vap, + const struct ieee80211_meshpreq_ie *preq) +{ +} + +static void +hwmp_recv_prep(struct ieee80211vap *vap, + const struct ieee80211_meshprep_ie *prep) +{ + +} +static void +hwmp_recv_perr(struct ieee80211vap *vap, + const struct ieee80211_meshprep_ie *perr) +{ + +} From owner-svn-src-projects@FreeBSD.ORG Tue May 26 16:29:36 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2266F1065675; Tue, 26 May 2009 16:29:36 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EA6498FC2F; Tue, 26 May 2009 16:29:35 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QGTZLZ065382; Tue, 26 May 2009 16:29:35 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QGTZkM065381; Tue, 26 May 2009 16:29:35 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905261629.n4QGTZkM065381@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 16:29:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192816 - projects/mips/sys/mips/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 16:29:36 -0000 Author: gonzo Date: Tue May 26 16:29:35 2009 New Revision: 192816 URL: http://svn.freebsd.org/changeset/base/192816 Log: - Add UFS support - Enable PCI - Add bpf and random devices for wpa_supplicant - Disable USB - Add SPI bus and MX25L support Modified: projects/mips/sys/mips/conf/AR71XX Modified: projects/mips/sys/mips/conf/AR71XX ============================================================================== --- projects/mips/sys/mips/conf/AR71XX Tue May 26 16:01:50 2009 (r192815) +++ projects/mips/sys/mips/conf/AR71XX Tue May 26 16:29:35 2009 (r192816) @@ -8,6 +8,7 @@ options CPU_NOFPU options ISA_MIPS32 makeoptions TARGET_BIG_ENDIAN makeoptions KERNLOADADDR=0x80050000 +options HZ=1000 files "../atheros/files.ar71xx" hints "AR71XX.hints" @@ -27,8 +28,15 @@ options _KPOSIX_PRIORITY_SCHEDULING #Po options NFS_LEGACYRPC # Debugging for use in -current -options INVARIANTS -options INVARIANT_SUPPORT +# options INVARIANTS +# options INVARIANT_SUPPORT +# options WITNESS +# options WITNESS_SKIPSPIN +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 BOOTP options BOOTP_NFSROOT @@ -37,29 +45,40 @@ options BOOTP_WIRED_TO=arge0 options BOOTP_COMPAT options ROOTDEVNAME=\"nfs:192.168.10.1:/mnt/bsd\" -# device pci +device pci + # Wireless NIC cards -# device wlan # 802.11 support -# device wlan_wep # 802.11 WEP support -# device wlan_ccmp # 802.11 CCMP support -# device wlan_tkip # 802.11 TKIP support - -# device ath # Atheros pci/cardbus NIC's -# option AH_SUPPORT_AR5416 -# device ath_hal -# device ath_ar5212 # Atheros HAL (Hardware Access Layer) -# device ath_rate_sample +options IEEE80211_DEBUG +options IEEE80211_SUPPORT_TDMA +device wlan # 802.11 support +device wlan_wep # 802.11 WEP support +device wlan_ccmp # 802.11 CCMP support +device wlan_tkip # 802.11 TKIP support + +device ath # Atheros pci/cardbus NIC's +options ATH_DEBUG +option AH_SUPPORT_AR5416 +device ath_hal +device ath_ar5212 # Atheros HAL (Hardware Access Layer) +device ath_rate_sample device mii device arge -device uart +# device usb +# options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order +# options USB_DEBUG +# device ehci + +device spibus +device ar71xx_spi +device mx25l +# device geom_redboot -device usb -options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order -options USB_DEBUG -device ehci +device uart device loop device ether device md +device bpf +device random From owner-svn-src-projects@FreeBSD.ORG Tue May 26 16:35:05 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ABB7F106564A; Tue, 26 May 2009 16:35:05 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 99FC58FC25; Tue, 26 May 2009 16:35:05 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QGZ59r065534; Tue, 26 May 2009 16:35:05 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QGZ54b065533; Tue, 26 May 2009 16:35:05 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905261635.n4QGZ54b065533@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 16:35:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192817 - projects/mips/sys/mips/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 16:35:06 -0000 Author: gonzo Date: Tue May 26 16:35:05 2009 New Revision: 192817 URL: http://svn.freebsd.org/changeset/base/192817 Log: - Add type cast for atomic_cmpset_acq_ptr arguments Modified: projects/mips/sys/mips/include/atomic.h Modified: projects/mips/sys/mips/include/atomic.h ============================================================================== --- projects/mips/sys/mips/include/atomic.h Tue May 26 16:29:35 2009 (r192816) +++ projects/mips/sys/mips/include/atomic.h Tue May 26 16:35:05 2009 (r192817) @@ -435,7 +435,9 @@ atomic_fetchadd_32(__volatile uint32_t * #define atomic_subtract_acq_ptr atomic_subtract_acq_32 #define atomic_subtract_rel_ptr atomic_subtract_rel_32 #define atomic_cmpset_ptr atomic_cmpset_32 -#define atomic_cmpset_acq_ptr atomic_cmpset_acq_32 +#define atomic_cmpset_acq_ptr(dst, old, new) \ + atomic_cmpset_acq_32((volatile u_int *)(dst), \ + (u_int)(old), (u_int)(new)) #define atomic_cmpset_rel_ptr atomic_cmpset_rel_32 #define atomic_load_acq_ptr atomic_load_acq_32 #define atomic_store_rel_ptr atomic_store_rel_32 From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:01:15 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 65554106598D; Tue, 26 May 2009 17:01:15 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E8238FC2A; Tue, 26 May 2009 17:01:15 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QH1F79066220; Tue, 26 May 2009 17:01:15 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QH1Dau066187; Tue, 26 May 2009 17:01:13 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905261701.n4QH1Dau066187@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 17:01:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192819 - in projects/mips: . bin/chflags bin/cp bin/pkill bin/ps cddl/contrib/opensolaris/lib/libzpool/common/sys cddl/lib/libzpool contrib/bind9 contrib/cpio contrib/csup contrib/file... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:01:15 -0000 Author: gonzo Date: Tue May 26 17:01:12 2009 New Revision: 192819 URL: http://svn.freebsd.org/changeset/base/192819 Log: Merge from HEAD Added: projects/mips/contrib/file/Magdir/kml - copied unchanged from r192817, head/contrib/file/Magdir/kml projects/mips/contrib/file/strlcat.c - copied unchanged from r192817, head/contrib/file/strlcat.c projects/mips/contrib/file/strlcpy.c - copied unchanged from r192817, head/contrib/file/strlcpy.c projects/mips/crypto/openssh/auth2-jpake.c - copied unchanged from r192817, head/crypto/openssh/auth2-jpake.c projects/mips/crypto/openssh/jpake.c - copied unchanged from r192817, head/crypto/openssh/jpake.c projects/mips/crypto/openssh/jpake.h - copied unchanged from r192817, head/crypto/openssh/jpake.h projects/mips/crypto/openssh/schnorr.c - copied unchanged from r192817, head/crypto/openssh/schnorr.c projects/mips/lib/libc/gen/tcsetsid.3 - copied unchanged from r192817, head/lib/libc/gen/tcsetsid.3 projects/mips/lib/libc/posix1e/acl_compat.c - copied unchanged from r192817, head/lib/libc/posix1e/acl_compat.c projects/mips/share/man/man4/bwi.4 - copied unchanged from r192817, head/share/man/man4/bwi.4 projects/mips/share/man/man4/iwnfw.4 - copied unchanged from r192817, head/share/man/man4/iwnfw.4 projects/mips/sys/amd64/amd64/mca.c - copied unchanged from r192817, head/sys/amd64/amd64/mca.c projects/mips/sys/amd64/include/mca.h - copied unchanged from r192817, head/sys/amd64/include/mca.h projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c - copied unchanged from r192817, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c projects/mips/sys/cddl/compat/opensolaris/sys/acl.h - copied unchanged from r192817, head/sys/cddl/compat/opensolaris/sys/acl.h projects/mips/sys/cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr.c - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_array.c - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_array.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_mem.c - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_mem.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c - copied unchanged from r192817, head/sys/cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c projects/mips/sys/contrib/dev/iwi/Makefile - copied unchanged from r192817, head/sys/contrib/dev/iwi/Makefile projects/mips/sys/dev/usb/controller/avr32dci.c - copied unchanged from r192817, head/sys/dev/usb/controller/avr32dci.c projects/mips/sys/dev/usb/controller/avr32dci.h - copied unchanged from r192817, head/sys/dev/usb/controller/avr32dci.h projects/mips/sys/dev/usb/wlan/if_upgt.c - copied unchanged from r192817, head/sys/dev/usb/wlan/if_upgt.c projects/mips/sys/dev/usb/wlan/if_upgtvar.h - copied unchanged from r192817, head/sys/dev/usb/wlan/if_upgtvar.h projects/mips/sys/i386/i386/mca.c - copied unchanged from r192817, head/sys/i386/i386/mca.c projects/mips/sys/i386/include/mca.h - copied unchanged from r192817, head/sys/i386/include/mca.h projects/mips/sys/modules/usb/upgt/ - copied from r192817, head/sys/modules/usb/upgt/ projects/mips/sys/net80211/ieee80211_radiotap.c - copied unchanged from r192817, head/sys/net80211/ieee80211_radiotap.c projects/mips/sys/netipx/spx_reass.c - copied unchanged from r192817, head/sys/netipx/spx_reass.c projects/mips/sys/pc98/include/mca.h - copied unchanged from r192817, head/sys/pc98/include/mca.h projects/mips/sys/powerpc/aim/platform_chrp.c - copied unchanged from r192817, head/sys/powerpc/aim/platform_chrp.c projects/mips/sys/powerpc/booke/mp_cpudep.c - copied unchanged from r192817, head/sys/powerpc/booke/mp_cpudep.c projects/mips/sys/powerpc/booke/platform_bare.c - copied unchanged from r192817, head/sys/powerpc/booke/platform_bare.c projects/mips/sys/powerpc/include/platform.h - copied unchanged from r192817, head/sys/powerpc/include/platform.h projects/mips/sys/powerpc/include/platformvar.h - copied unchanged from r192817, head/sys/powerpc/include/platformvar.h projects/mips/sys/powerpc/powerpc/platform.c - copied unchanged from r192817, head/sys/powerpc/powerpc/platform.c projects/mips/sys/powerpc/powerpc/platform_if.m - copied unchanged from r192817, head/sys/powerpc/powerpc/platform_if.m projects/mips/tools/regression/bin/date/ - copied from r192817, head/tools/regression/bin/date/ projects/mips/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 - copied unchanged from r192817, head/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 projects/mips/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 - copied unchanged from r192817, head/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 projects/mips/tools/tools/iso/ - copied from r192817, head/tools/tools/iso/ projects/mips/tools/tools/npe/ - copied from r192817, head/tools/tools/npe/ projects/mips/usr.bin/perror/ - copied from r192817, head/usr.bin/perror/ projects/mips/usr.sbin/nfscbd/ - copied from r192817, head/usr.sbin/nfscbd/ projects/mips/usr.sbin/nfsd/nfsv4.4 - copied unchanged from r192817, head/usr.sbin/nfsd/nfsv4.4 projects/mips/usr.sbin/nfsd/stablerestart.5 - copied unchanged from r192817, head/usr.sbin/nfsd/stablerestart.5 projects/mips/usr.sbin/nfsdumpstate/ - copied from r192817, head/usr.sbin/nfsdumpstate/ projects/mips/usr.sbin/nfsrevoke/ - copied from r192817, head/usr.sbin/nfsrevoke/ projects/mips/usr.sbin/nfsuserd/ - copied from r192817, head/usr.sbin/nfsuserd/ Deleted: projects/mips/contrib/file/config.guess projects/mips/contrib/file/config.sub projects/mips/etc/rc.d/idmapd projects/mips/libexec/makekey/ projects/mips/sbin/idmapd/ projects/mips/share/man/man4/usb2_core.4 projects/mips/sys/cddl/contrib/opensolaris/common/atomic/amd64/atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/i386/atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/ia64/atomic.S projects/mips/sys/cddl/contrib/opensolaris/common/atomic/sparc64/atomic.S projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_array.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_mem.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/zmod/crc32.c projects/mips/sys/compat/svr4/svr4_ttold.c projects/mips/sys/compat/svr4/svr4_ttold.h projects/mips/sys/dev/usb/README.TXT projects/mips/sys/gnu/fs/xfs/FreeBSD/xfsdmapistubs.c projects/mips/sys/gnu/fs/xfs/FreeBSD/xfsquotasstubs.c projects/mips/sys/gnu/fs/xfs/FreeBSD/xfsrtstubs.c projects/mips/sys/legacy/dev/usb/if_upgt.c projects/mips/sys/legacy/dev/usb/if_upgtvar.h projects/mips/sys/legacy/dev/usb/usb_ethersubr.c projects/mips/sys/legacy/dev/usb/usb_ethersubr.h projects/mips/sys/modules/nfs4client/ projects/mips/sys/nfs4client/ projects/mips/sys/powerpc/include/powerpc.h projects/mips/sys/rpc/rpcclnt.c projects/mips/sys/rpc/rpcclnt.h projects/mips/usr.sbin/zic/Arts.htm projects/mips/usr.sbin/zic/tz-art.htm projects/mips/usr.sbin/zic/tz-link.htm Modified: projects/mips/ (props changed) projects/mips/ObsoleteFiles.inc projects/mips/UPDATING projects/mips/bin/chflags/chflags.c projects/mips/bin/cp/Makefile projects/mips/bin/pkill/pkill.1 projects/mips/bin/pkill/pkill.c projects/mips/bin/ps/print.c projects/mips/bin/ps/ps.1 projects/mips/bin/ps/ps.c projects/mips/bin/ps/ps.h projects/mips/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/mips/cddl/lib/libzpool/Makefile projects/mips/contrib/bind9/ (props changed) projects/mips/contrib/cpio/ (props changed) projects/mips/contrib/csup/ (props changed) projects/mips/contrib/csup/rcstokenizer.l (props changed) projects/mips/contrib/file/ (props changed) projects/mips/contrib/file/ChangeLog projects/mips/contrib/file/Magdir/cafebabe projects/mips/contrib/file/Magdir/compress projects/mips/contrib/file/Magdir/database projects/mips/contrib/file/Magdir/erlang projects/mips/contrib/file/Magdir/filesystems projects/mips/contrib/file/Magdir/fonts projects/mips/contrib/file/Magdir/fortran projects/mips/contrib/file/Magdir/linux projects/mips/contrib/file/Magdir/lisp projects/mips/contrib/file/Magdir/python projects/mips/contrib/file/Magdir/troff projects/mips/contrib/file/Magdir/windows projects/mips/contrib/file/Makefile.am projects/mips/contrib/file/Makefile.in projects/mips/contrib/file/README projects/mips/contrib/file/acinclude.m4 projects/mips/contrib/file/aclocal.m4 projects/mips/contrib/file/apprentice.c projects/mips/contrib/file/apptype.c projects/mips/contrib/file/cdf.c projects/mips/contrib/file/cdf.h projects/mips/contrib/file/cdf_time.c projects/mips/contrib/file/compress.c projects/mips/contrib/file/config.h.in projects/mips/contrib/file/configure projects/mips/contrib/file/configure.ac projects/mips/contrib/file/file.c projects/mips/contrib/file/file.h projects/mips/contrib/file/funcs.c projects/mips/contrib/file/getopt_long.c projects/mips/contrib/file/magic.c projects/mips/contrib/file/patchlevel.h projects/mips/contrib/file/readcdf.c projects/mips/contrib/file/softmagic.c projects/mips/contrib/file/tests/Makefile.in projects/mips/contrib/gcc/config/mips/freebsd.h (props changed) projects/mips/contrib/gdb/ (props changed) projects/mips/contrib/gdtoa/ (props changed) projects/mips/contrib/groff/font/devutf8/R.proto projects/mips/contrib/less/ (props changed) projects/mips/contrib/less/COPYING projects/mips/contrib/less/FREEBSD-upgrade projects/mips/contrib/less/LICENSE projects/mips/contrib/less/Makefile.in projects/mips/contrib/less/NEWS projects/mips/contrib/less/README projects/mips/contrib/less/brac.c projects/mips/contrib/less/ch.c projects/mips/contrib/less/charset.c projects/mips/contrib/less/charset.h projects/mips/contrib/less/cmd.h projects/mips/contrib/less/cmdbuf.c projects/mips/contrib/less/command.c projects/mips/contrib/less/configure projects/mips/contrib/less/configure.ac projects/mips/contrib/less/decode.c projects/mips/contrib/less/defines.ds projects/mips/contrib/less/defines.o2 projects/mips/contrib/less/defines.o9 projects/mips/contrib/less/defines.wn projects/mips/contrib/less/edit.c projects/mips/contrib/less/filename.c projects/mips/contrib/less/forwback.c projects/mips/contrib/less/funcs.h projects/mips/contrib/less/help.c projects/mips/contrib/less/ifile.c projects/mips/contrib/less/input.c projects/mips/contrib/less/install.sh projects/mips/contrib/less/jump.c projects/mips/contrib/less/less.h projects/mips/contrib/less/less.hlp projects/mips/contrib/less/less.man projects/mips/contrib/less/less.nro projects/mips/contrib/less/lessecho.c projects/mips/contrib/less/lessecho.man projects/mips/contrib/less/lessecho.nro projects/mips/contrib/less/lesskey.c projects/mips/contrib/less/lesskey.h projects/mips/contrib/less/lesskey.man projects/mips/contrib/less/lesskey.nro projects/mips/contrib/less/lglob.h projects/mips/contrib/less/line.c projects/mips/contrib/less/linenum.c projects/mips/contrib/less/lsystem.c projects/mips/contrib/less/main.c projects/mips/contrib/less/mark.c projects/mips/contrib/less/mkhelp.c projects/mips/contrib/less/optfunc.c projects/mips/contrib/less/option.c projects/mips/contrib/less/option.h projects/mips/contrib/less/opttbl.c projects/mips/contrib/less/os.c projects/mips/contrib/less/output.c projects/mips/contrib/less/pckeys.h projects/mips/contrib/less/position.c projects/mips/contrib/less/position.h projects/mips/contrib/less/prompt.c projects/mips/contrib/less/screen.c projects/mips/contrib/less/scrsize.c projects/mips/contrib/less/search.c projects/mips/contrib/less/signal.c projects/mips/contrib/less/tags.c projects/mips/contrib/less/ttyin.c projects/mips/contrib/less/version.c projects/mips/contrib/libpcap/ (props changed) projects/mips/contrib/libpcap/FREEBSD-Xlist (props changed) projects/mips/contrib/ncurses/ (props changed) projects/mips/contrib/netcat/ (props changed) projects/mips/contrib/ntp/ (props changed) projects/mips/contrib/openbsm/ (props changed) projects/mips/contrib/openpam/ (props changed) projects/mips/contrib/pf/ (props changed) projects/mips/contrib/sendmail/ (props changed) projects/mips/contrib/tcpdump/ (props changed) projects/mips/contrib/tcpdump/FREEBSD-Xlist (props changed) projects/mips/contrib/top/ (props changed) projects/mips/contrib/top/install-sh (props changed) projects/mips/crypto/openssh/ (props changed) projects/mips/crypto/openssh/ChangeLog projects/mips/crypto/openssh/PROTOCOL projects/mips/crypto/openssh/README projects/mips/crypto/openssh/addrmatch.c projects/mips/crypto/openssh/auth-options.c projects/mips/crypto/openssh/auth-pam.c (contents, props changed) projects/mips/crypto/openssh/auth.c projects/mips/crypto/openssh/auth.h projects/mips/crypto/openssh/auth2-chall.c projects/mips/crypto/openssh/auth2.c projects/mips/crypto/openssh/canohost.c projects/mips/crypto/openssh/canohost.h projects/mips/crypto/openssh/channels.c projects/mips/crypto/openssh/channels.h projects/mips/crypto/openssh/cipher.c projects/mips/crypto/openssh/cipher.h projects/mips/crypto/openssh/clientloop.c projects/mips/crypto/openssh/compat.c projects/mips/crypto/openssh/compat.h projects/mips/crypto/openssh/config.guess projects/mips/crypto/openssh/config.h projects/mips/crypto/openssh/config.h.in projects/mips/crypto/openssh/defines.h projects/mips/crypto/openssh/dispatch.c projects/mips/crypto/openssh/kex.c projects/mips/crypto/openssh/kexgexs.c projects/mips/crypto/openssh/key.c projects/mips/crypto/openssh/loginrec.c projects/mips/crypto/openssh/misc.c projects/mips/crypto/openssh/monitor.c projects/mips/crypto/openssh/monitor.h projects/mips/crypto/openssh/monitor_fdpass.c projects/mips/crypto/openssh/monitor_wrap.c projects/mips/crypto/openssh/monitor_wrap.h projects/mips/crypto/openssh/myproposal.h projects/mips/crypto/openssh/nchan.c projects/mips/crypto/openssh/openbsd-compat/bsd-poll.c projects/mips/crypto/openssh/openbsd-compat/port-uw.c projects/mips/crypto/openssh/openbsd-compat/xcrypt.c projects/mips/crypto/openssh/openbsd-compat/xmmap.c projects/mips/crypto/openssh/packet.c projects/mips/crypto/openssh/pathnames.h projects/mips/crypto/openssh/readconf.c projects/mips/crypto/openssh/readconf.h projects/mips/crypto/openssh/scp.c projects/mips/crypto/openssh/servconf.c projects/mips/crypto/openssh/servconf.h projects/mips/crypto/openssh/serverloop.c projects/mips/crypto/openssh/session.c projects/mips/crypto/openssh/sftp-server-main.c projects/mips/crypto/openssh/sftp.1 (contents, props changed) projects/mips/crypto/openssh/sftp.c projects/mips/crypto/openssh/ssh-keygen.1 (contents, props changed) projects/mips/crypto/openssh/ssh-keygen.c projects/mips/crypto/openssh/ssh-keyscan.1 (contents, props changed) projects/mips/crypto/openssh/ssh-keyscan.c projects/mips/crypto/openssh/ssh.1 projects/mips/crypto/openssh/ssh.c projects/mips/crypto/openssh/ssh2.h projects/mips/crypto/openssh/ssh_config projects/mips/crypto/openssh/ssh_config.5 projects/mips/crypto/openssh/ssh_namespace.h projects/mips/crypto/openssh/sshconnect.c projects/mips/crypto/openssh/sshconnect2.c projects/mips/crypto/openssh/sshd.8 projects/mips/crypto/openssh/sshd.c projects/mips/crypto/openssh/sshd_config projects/mips/crypto/openssh/sshd_config.5 projects/mips/crypto/openssh/sshpty.c projects/mips/crypto/openssh/ttymodes.c projects/mips/crypto/openssh/uidswap.c projects/mips/crypto/openssh/version.h projects/mips/crypto/openssl/ (props changed) projects/mips/etc/defaults/rc.conf projects/mips/etc/devd.conf projects/mips/etc/mtree/BSD.include.dist projects/mips/etc/namedb/named.conf projects/mips/etc/rc.d/Makefile projects/mips/etc/rc.d/named projects/mips/etc/rc.d/tmp projects/mips/gnu/usr.bin/patch/common.h projects/mips/gnu/usr.bin/patch/inp.c projects/mips/gnu/usr.bin/patch/patch.c projects/mips/gnu/usr.bin/patch/pch.c projects/mips/gnu/usr.bin/patch/pch.h projects/mips/gnu/usr.bin/patch/util.c projects/mips/include/Makefile projects/mips/lib/libarchive/archive_read_disk_entry_from_file.c projects/mips/lib/libarchive/archive_read_open_filename.c projects/mips/lib/libarchive/archive_read_support_compression_gzip.c projects/mips/lib/libbluetooth/hci.c projects/mips/lib/libc/ (props changed) projects/mips/lib/libc/gen/Makefile.inc projects/mips/lib/libc/gen/Symbol.map projects/mips/lib/libc/gen/getcap.c projects/mips/lib/libc/gen/tcgetsid.3 projects/mips/lib/libc/gen/termios.c projects/mips/lib/libc/gen/ttyname.3 projects/mips/lib/libc/nls/be_BY.UTF-8.msg (props changed) projects/mips/lib/libc/nls/el_GR.ISO8859-7.msg (props changed) projects/mips/lib/libc/nls/mn_MN.UTF-8.msg (props changed) projects/mips/lib/libc/nls/ru_RU.KOI8-R.msg (props changed) projects/mips/lib/libc/nls/uk_UA.UTF-8.msg (props changed) projects/mips/lib/libc/posix1e/Makefile.inc projects/mips/lib/libc/posix1e/Symbol.map projects/mips/lib/libc/posix1e/acl.3 projects/mips/lib/libc/posix1e/acl_add_perm.3 projects/mips/lib/libc/posix1e/acl_delete.c projects/mips/lib/libc/posix1e/acl_entry.c projects/mips/lib/libc/posix1e/acl_get.3 projects/mips/lib/libc/posix1e/acl_get.c projects/mips/lib/libc/posix1e/acl_init.c projects/mips/lib/libc/posix1e/acl_set.3 projects/mips/lib/libc/posix1e/acl_set.c projects/mips/lib/libc/posix1e/acl_set_tag_type.3 projects/mips/lib/libc/posix1e/acl_support.c projects/mips/lib/libc/posix1e/acl_support.h projects/mips/lib/libc/posix1e/acl_valid.c projects/mips/lib/libc/posix1e/posix1e.3 projects/mips/lib/libc/stdio/asprintf.c (props changed) projects/mips/lib/libc/stdtime/ (props changed) projects/mips/lib/libc/stdtime/asctime.c projects/mips/lib/libc/stdtime/difftime.c projects/mips/lib/libc/stdtime/localtime.c projects/mips/lib/libc/stdtime/private.h projects/mips/lib/libc/stdtime/strftime.c projects/mips/lib/libc/stdtime/time2posix.3 projects/mips/lib/libc/stdtime/tzfile.5 projects/mips/lib/libc/stdtime/tzfile.h projects/mips/lib/libc/string/ffsll.c (props changed) projects/mips/lib/libc/string/flsll.c (props changed) projects/mips/lib/libc/string/wcpcpy.c (props changed) projects/mips/lib/libc_r/arch/amd64/_atomic_lock.S projects/mips/lib/libc_r/arch/i386/_atomic_lock.S projects/mips/lib/libdisk/open_ia64_disk.c projects/mips/lib/libgeom/Makefile projects/mips/lib/libmemstat/memstat_malloc.c projects/mips/lib/libstand/i386/_setjmp.S projects/mips/lib/libstand/stand.h projects/mips/lib/libthr/thread/thr_fork.c projects/mips/lib/libusb/ (props changed) projects/mips/lib/libusb/libusb.3 projects/mips/lib/libusb/usb.h (props changed) projects/mips/lib/libutil/ (props changed) projects/mips/lib/libutil/login_tty.c projects/mips/lib/msun/amd64/e_sqrt.S projects/mips/lib/msun/amd64/e_sqrtf.S projects/mips/lib/msun/amd64/s_lrint.S projects/mips/lib/msun/amd64/s_lrintf.S projects/mips/lib/msun/amd64/s_remquo.S projects/mips/lib/msun/amd64/s_remquof.S projects/mips/lib/msun/amd64/s_scalbn.S projects/mips/lib/msun/amd64/s_scalbnf.S projects/mips/lib/msun/amd64/s_scalbnl.S projects/mips/lib/msun/i387/e_exp.S projects/mips/lib/msun/i387/e_fmod.S projects/mips/lib/msun/i387/e_log.S projects/mips/lib/msun/i387/e_log10.S projects/mips/lib/msun/i387/e_log10f.S projects/mips/lib/msun/i387/e_remainder.S projects/mips/lib/msun/i387/e_remainderf.S projects/mips/lib/msun/i387/e_sqrt.S projects/mips/lib/msun/i387/e_sqrtf.S projects/mips/lib/msun/i387/s_ceil.S projects/mips/lib/msun/i387/s_ceilf.S projects/mips/lib/msun/i387/s_ceill.S projects/mips/lib/msun/i387/s_copysign.S projects/mips/lib/msun/i387/s_copysignf.S projects/mips/lib/msun/i387/s_copysignl.S projects/mips/lib/msun/i387/s_cos.S projects/mips/lib/msun/i387/s_finite.S projects/mips/lib/msun/i387/s_floor.S projects/mips/lib/msun/i387/s_floorf.S projects/mips/lib/msun/i387/s_floorl.S projects/mips/lib/msun/i387/s_llrint.S projects/mips/lib/msun/i387/s_llrintf.S projects/mips/lib/msun/i387/s_logb.S projects/mips/lib/msun/i387/s_logbf.S projects/mips/lib/msun/i387/s_lrint.S projects/mips/lib/msun/i387/s_lrintf.S projects/mips/lib/msun/i387/s_remquo.S projects/mips/lib/msun/i387/s_remquof.S projects/mips/lib/msun/i387/s_rint.S projects/mips/lib/msun/i387/s_rintf.S projects/mips/lib/msun/i387/s_scalbn.S projects/mips/lib/msun/i387/s_scalbnf.S projects/mips/lib/msun/i387/s_scalbnl.S projects/mips/lib/msun/i387/s_significand.S projects/mips/lib/msun/i387/s_significandf.S projects/mips/lib/msun/i387/s_sin.S projects/mips/lib/msun/i387/s_tan.S projects/mips/lib/msun/i387/s_trunc.S projects/mips/lib/msun/i387/s_truncf.S projects/mips/lib/msun/i387/s_truncl.S projects/mips/lib/msun/ia64/s_fma.S projects/mips/lib/msun/ia64/s_fmaf.S projects/mips/lib/msun/ia64/s_fmal.S projects/mips/libexec/Makefile projects/mips/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/mips/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/mips/release/doc/share/misc/dev.archlist.txt projects/mips/rescue/rescue/Makefile projects/mips/sbin/ (props changed) projects/mips/sbin/Makefile projects/mips/sbin/fdisk/fdisk.8 projects/mips/sbin/fdisk/fdisk.c projects/mips/sbin/geom/class/journal/gjournal.8 projects/mips/sbin/geom/core/geom.8 projects/mips/sbin/ipfw/ (props changed) projects/mips/sbin/mount_nfs/Makefile projects/mips/sbin/mount_nfs/mount_nfs.8 projects/mips/sbin/mount_nfs/mount_nfs.c projects/mips/sbin/restore/Makefile projects/mips/secure/lib/libssh/Makefile projects/mips/secure/usr.sbin/sshd/Makefile projects/mips/share/examples/ppp/ppp.linkup.sample projects/mips/share/man/man4/Makefile projects/mips/share/man/man4/altq.4 projects/mips/share/man/man4/ath.4 projects/mips/share/man/man4/bge.4 projects/mips/share/man/man4/geom.4 projects/mips/share/man/man4/hifn.4 projects/mips/share/man/man4/if_bridge.4 projects/mips/share/man/man4/ipsec.4 projects/mips/share/man/man4/md.4 projects/mips/share/man/man4/msk.4 projects/mips/share/man/man4/nge.4 projects/mips/share/man/man4/smp.4 projects/mips/share/man/man4/ubsec.4 projects/mips/share/man/man4/uchcom.4 projects/mips/share/man/man4/urtw.4 projects/mips/share/man/man4/usb.4 projects/mips/share/man/man4/wlan.4 projects/mips/share/man/man5/fstab.5 projects/mips/share/man/man5/rc.conf.5 projects/mips/share/man/man9/VFS_MOUNT.9 projects/mips/share/man/man9/VFS_QUOTACTL.9 projects/mips/share/man/man9/VFS_ROOT.9 projects/mips/share/man/man9/VFS_STATFS.9 projects/mips/share/man/man9/VFS_SYNC.9 projects/mips/share/man/man9/VFS_UNMOUNT.9 projects/mips/share/man/man9/acl.9 projects/mips/share/man/man9/atomic.9 projects/mips/share/man/man9/bus_dma.9 projects/mips/share/man/man9/sbuf.9 projects/mips/share/misc/committers-ports.dot projects/mips/share/misc/committers-src.dot projects/mips/share/misc/iso639 projects/mips/share/syscons/keymaps/uk.iso-ctrl.kbd projects/mips/share/zoneinfo/ (props changed) projects/mips/sys/ (props changed) projects/mips/sys/Makefile projects/mips/sys/amd64/amd64/machdep.c projects/mips/sys/amd64/amd64/mp_machdep.c projects/mips/sys/amd64/amd64/pmap.c projects/mips/sys/amd64/amd64/trap.c projects/mips/sys/amd64/conf/DEFAULTS projects/mips/sys/amd64/conf/GENERIC projects/mips/sys/amd64/conf/GENERIC.hints projects/mips/sys/amd64/conf/NOTES projects/mips/sys/amd64/conf/XENHVM projects/mips/sys/amd64/include/param.h projects/mips/sys/amd64/include/smp.h projects/mips/sys/amd64/include/specialreg.h projects/mips/sys/amd64/include/vmparam.h projects/mips/sys/amd64/include/xen/ (props changed) projects/mips/sys/amd64/linux32/linux.h projects/mips/sys/amd64/linux32/linux32_sysvec.c projects/mips/sys/amd64/pci/pci_cfgreg.c projects/mips/sys/arm/arm/machdep.c projects/mips/sys/arm/arm/pmap.c projects/mips/sys/arm/at91/at91_cfata.c projects/mips/sys/arm/at91/if_ate.c projects/mips/sys/arm/conf/AVILA projects/mips/sys/arm/conf/BWCT projects/mips/sys/arm/conf/CAMBRIA projects/mips/sys/arm/conf/CRB projects/mips/sys/arm/conf/DB-78XXX projects/mips/sys/arm/conf/DB-88F5XXX projects/mips/sys/arm/conf/DB-88F6XXX projects/mips/sys/arm/conf/EP80219 projects/mips/sys/arm/conf/GUMSTIX projects/mips/sys/arm/conf/HL200 projects/mips/sys/arm/conf/IQ31244 projects/mips/sys/arm/conf/KB920X projects/mips/sys/arm/conf/NSLU projects/mips/sys/arm/conf/SIMICS projects/mips/sys/arm/conf/SKYEYE projects/mips/sys/arm/include/pmap.h projects/mips/sys/arm/xscale/ixp425/if_npe.c projects/mips/sys/arm/xscale/ixp425/std.ixp435 (props changed) projects/mips/sys/boot/forth/loader.conf projects/mips/sys/boot/i386/zfsboot/zfsboot.c projects/mips/sys/boot/zfs/zfsimpl.c projects/mips/sys/cam/cam_periph.c projects/mips/sys/cam/scsi/scsi_pass.c projects/mips/sys/cam/scsi/scsi_sg.c projects/mips/sys/cddl/boot/zfs/README projects/mips/sys/cddl/boot/zfs/zfsimpl.h projects/mips/sys/cddl/boot/zfs/zfssubr.c projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris.c projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/mips/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c projects/mips/sys/cddl/compat/opensolaris/sys/mutex.h projects/mips/sys/cddl/compat/opensolaris/sys/rwlock.h projects/mips/sys/cddl/compat/opensolaris/sys/vnode.h projects/mips/sys/cddl/contrib/opensolaris/common/acl/acl_common.c projects/mips/sys/cddl/contrib/opensolaris/common/acl/acl_common.h projects/mips/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/mips/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h projects/mips/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h projects/mips/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/mips/sys/compat/linux/linux_futex.c projects/mips/sys/compat/linux/linux_ioctl.c projects/mips/sys/compat/linux/linux_mib.c projects/mips/sys/compat/linux/linux_mib.h projects/mips/sys/compat/linux/linux_misc.c projects/mips/sys/compat/linux/linux_misc.h projects/mips/sys/compat/linux/linux_socket.c projects/mips/sys/compat/linux/linux_socket.h projects/mips/sys/compat/linux/linux_stats.c projects/mips/sys/compat/linux/linux_util.h projects/mips/sys/compat/ndis/kern_ndis.c projects/mips/sys/compat/ndis/kern_windrv.c projects/mips/sys/compat/ndis/subr_ndis.c projects/mips/sys/compat/svr4/svr4_ioctl.c projects/mips/sys/compat/svr4/svr4_ioctl.h projects/mips/sys/compat/svr4/svr4_misc.c projects/mips/sys/compat/svr4/svr4_proto.h projects/mips/sys/compat/svr4/svr4_stat.c projects/mips/sys/compat/svr4/svr4_syscall.h projects/mips/sys/compat/svr4/svr4_syscallnames.c projects/mips/sys/compat/svr4/svr4_sysent.c projects/mips/sys/conf/NOTES projects/mips/sys/conf/files projects/mips/sys/conf/files.amd64 projects/mips/sys/conf/files.i386 projects/mips/sys/conf/files.pc98 projects/mips/sys/conf/files.powerpc projects/mips/sys/conf/options projects/mips/sys/contrib/altq/altq/altq_subr.c projects/mips/sys/contrib/dev/acpica/ (props changed) projects/mips/sys/contrib/dev/iwi/ipw2200-bss.fw.uu projects/mips/sys/contrib/dev/iwi/ipw2200-ibss.fw.uu projects/mips/sys/contrib/dev/iwi/ipw2200-sniffer.fw.uu projects/mips/sys/contrib/pf/ (props changed) projects/mips/sys/dev/aac/aac.c projects/mips/sys/dev/acpi_support/acpi_ibm.c projects/mips/sys/dev/acpi_support/acpi_sony.c projects/mips/sys/dev/acpica/acpi.c projects/mips/sys/dev/age/if_age.c projects/mips/sys/dev/aic/aic.c projects/mips/sys/dev/amr/amr.c projects/mips/sys/dev/amr/amr_linux.c projects/mips/sys/dev/arcmsr/arcmsr.c projects/mips/sys/dev/asr/asr.c projects/mips/sys/dev/ata/ata-pci.h projects/mips/sys/dev/ata/ata-usb.c (contents, props changed) projects/mips/sys/dev/ata/atapi-cam.c projects/mips/sys/dev/ata/chipsets/ata-acard.c projects/mips/sys/dev/ata/chipsets/ata-promise.c projects/mips/sys/dev/ata/chipsets/ata-siliconimage.c projects/mips/sys/dev/ath/ah_osdep.c projects/mips/sys/dev/ath/ah_osdep.h projects/mips/sys/dev/ath/ath_hal/ah.c projects/mips/sys/dev/ath/ath_hal/ah.h projects/mips/sys/dev/ath/ath_hal/ah_internal.h projects/mips/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c projects/mips/sys/dev/ath/ath_hal/ar5210/ar5210_interrupts.c projects/mips/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c projects/mips/sys/dev/ath/ath_hal/ar5211/ar5211_interrupts.c projects/mips/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/mips/sys/dev/ath/ath_hal/ar5212/ar5212_interrupts.c projects/mips/sys/dev/ath/ath_hal/ar5212/ar5212reg.h projects/mips/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/mips/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/mips/sys/dev/ath/if_ath.c projects/mips/sys/dev/ath/if_ath_pci.c projects/mips/sys/dev/ath/if_athvar.h projects/mips/sys/dev/bce/if_bce.c projects/mips/sys/dev/bce/if_bcereg.h projects/mips/sys/dev/bge/if_bge.c projects/mips/sys/dev/bktr/bktr_os.c projects/mips/sys/dev/bwi/bwimac.c projects/mips/sys/dev/bwi/bwiphy.c projects/mips/sys/dev/bwi/if_bwi.c projects/mips/sys/dev/bwi/if_bwi_pci.c projects/mips/sys/dev/bwi/if_bwireg.h projects/mips/sys/dev/bwi/if_bwivar.h projects/mips/sys/dev/ciss/ciss.c projects/mips/sys/dev/cxgb/ (props changed) projects/mips/sys/dev/cxgb/common/cxgb_ael1002.c projects/mips/sys/dev/cxgb/common/cxgb_common.h projects/mips/sys/dev/cxgb/common/cxgb_t3_hw.c projects/mips/sys/dev/cxgb/cxgb_adapter.h projects/mips/sys/dev/cxgb/cxgb_main.c projects/mips/sys/dev/cxgb/cxgb_multiq.c projects/mips/sys/dev/cxgb/cxgb_sge.c projects/mips/sys/dev/e1000/if_em.c projects/mips/sys/dev/ed/if_ed.c projects/mips/sys/dev/ep/if_ep.c projects/mips/sys/dev/flash/at45d.c projects/mips/sys/dev/if_ndis/if_ndis.c projects/mips/sys/dev/if_ndis/if_ndis_usb.c projects/mips/sys/dev/iir/iir_ctrl.c projects/mips/sys/dev/iir/iir_pci.c projects/mips/sys/dev/ipw/if_ipw.c projects/mips/sys/dev/ipw/if_ipwvar.h projects/mips/sys/dev/isp/isp_freebsd.c projects/mips/sys/dev/iwi/if_iwi.c projects/mips/sys/dev/iwi/if_iwivar.h projects/mips/sys/dev/iwn/if_iwn.c projects/mips/sys/dev/iwn/if_iwnvar.h projects/mips/sys/dev/ixgb/if_ixgb.c projects/mips/sys/dev/lge/if_lge.c projects/mips/sys/dev/lmc/if_lmc.c projects/mips/sys/dev/malo/if_malo.c projects/mips/sys/dev/malo/if_malo.h projects/mips/sys/dev/malo/if_malo_pci.c projects/mips/sys/dev/md/md.c projects/mips/sys/dev/mfi/mfi.c projects/mips/sys/dev/mfi/mfi_linux.c projects/mips/sys/dev/mii/e1000phy.c projects/mips/sys/dev/mii/e1000phyreg.h projects/mips/sys/dev/mii/miidevs projects/mips/sys/dev/mpt/mpt_raid.c projects/mips/sys/dev/mpt/mpt_user.c projects/mips/sys/dev/msk/if_msk.c projects/mips/sys/dev/msk/if_mskreg.h projects/mips/sys/dev/nfe/if_nfe.c projects/mips/sys/dev/nge/if_nge.c projects/mips/sys/dev/nge/if_ngereg.h projects/mips/sys/dev/ral/rt2560.c projects/mips/sys/dev/ral/rt2560var.h projects/mips/sys/dev/ral/rt2661.c projects/mips/sys/dev/ral/rt2661var.h projects/mips/sys/dev/random/nehemiah.c projects/mips/sys/dev/random/randomdev_soft.c projects/mips/sys/dev/snp/snp.c projects/mips/sys/dev/sound/midi/midi.c projects/mips/sys/dev/sound/pci/emu10kx-midi.c projects/mips/sys/dev/sound/pci/ich.c projects/mips/sys/dev/sound/pci/via82c686.h projects/mips/sys/dev/sound/sbus/cs4231.h projects/mips/sys/dev/sound/usb/uaudio.c (contents, props changed) projects/mips/sys/dev/sound/usb/uaudio.h (props changed) projects/mips/sys/dev/sound/usb/uaudio_pcm.c (props changed) projects/mips/sys/dev/sound/usb/uaudioreg.h (contents, props changed) projects/mips/sys/dev/syscons/syscons.c projects/mips/sys/dev/twa/tw_osl_freebsd.c projects/mips/sys/dev/twe/twe_freebsd.c projects/mips/sys/dev/ubsec/ubsec.c projects/mips/sys/dev/ubsec/ubsecreg.h projects/mips/sys/dev/usb/bluetooth/TODO.TXT (props changed) projects/mips/sys/dev/usb/bluetooth/ng_ubt.c (contents, props changed) projects/mips/sys/dev/usb/bluetooth/ng_ubt_var.h (props changed) projects/mips/sys/dev/usb/bluetooth/ubtbcmfw.c (contents, props changed) projects/mips/sys/dev/usb/controller/at91dci.c (contents, props changed) projects/mips/sys/dev/usb/controller/at91dci.h (contents, props changed) projects/mips/sys/dev/usb/controller/at91dci_atmelarm.c (props changed) projects/mips/sys/dev/usb/controller/atmegadci.c projects/mips/sys/dev/usb/controller/atmegadci.h projects/mips/sys/dev/usb/controller/ehci.c (contents, props changed) projects/mips/sys/dev/usb/controller/ehci.h (props changed) projects/mips/sys/dev/usb/controller/ehci_pci.c (props changed) projects/mips/sys/dev/usb/controller/musb_otg.c (contents, props changed) projects/mips/sys/dev/usb/controller/musb_otg.h (contents, props changed) projects/mips/sys/dev/usb/controller/musb_otg_atmelarm.c (props changed) projects/mips/sys/dev/usb/controller/ohci.c (contents, props changed) projects/mips/sys/dev/usb/controller/ohci.h (props changed) projects/mips/sys/dev/usb/controller/ohci_atmelarm.c (props changed) projects/mips/sys/dev/usb/controller/ohci_pci.c (props changed) projects/mips/sys/dev/usb/controller/uhci.c (contents, props changed) projects/mips/sys/dev/usb/controller/uhci.h (props changed) projects/mips/sys/dev/usb/controller/uhci_pci.c (props changed) projects/mips/sys/dev/usb/controller/usb_controller.c (contents, props changed) projects/mips/sys/dev/usb/controller/uss820dci.c (contents, props changed) projects/mips/sys/dev/usb/controller/uss820dci.h (contents, props changed) projects/mips/sys/dev/usb/controller/uss820dci_atmelarm.c (contents, props changed) projects/mips/sys/dev/usb/input/uhid.c (contents, props changed) projects/mips/sys/dev/usb/input/ukbd.c (contents, props changed) projects/mips/sys/dev/usb/input/ums.c (contents, props changed) projects/mips/sys/dev/usb/input/usb_rdesc.h (props changed) projects/mips/sys/dev/usb/misc/udbp.c (contents, props changed) projects/mips/sys/dev/usb/misc/udbp.h (props changed) projects/mips/sys/dev/usb/misc/ufm.c (contents, props changed) projects/mips/sys/dev/usb/net/if_aue.c (contents, props changed) projects/mips/sys/dev/usb/net/if_auereg.h (props changed) projects/mips/sys/dev/usb/net/if_axe.c (contents, props changed) projects/mips/sys/dev/usb/net/if_axereg.h (props changed) projects/mips/sys/dev/usb/net/if_cdce.c (contents, props changed) projects/mips/sys/dev/usb/net/if_cdcereg.h (props changed) projects/mips/sys/dev/usb/net/if_cue.c (contents, props changed) projects/mips/sys/dev/usb/net/if_cuereg.h (props changed) projects/mips/sys/dev/usb/net/if_kue.c (contents, props changed) projects/mips/sys/dev/usb/net/if_kuefw.h (props changed) projects/mips/sys/dev/usb/net/if_kuereg.h (props changed) projects/mips/sys/dev/usb/net/if_rue.c (contents, props changed) projects/mips/sys/dev/usb/net/if_ruereg.h (props changed) projects/mips/sys/dev/usb/net/if_udav.c (contents, props changed) projects/mips/sys/dev/usb/net/if_udavreg.h (props changed) projects/mips/sys/dev/usb/net/usb_ethernet.c (props changed) projects/mips/sys/dev/usb/net/usb_ethernet.h (props changed) projects/mips/sys/dev/usb/quirk/usb_quirk.c (props changed) projects/mips/sys/dev/usb/quirk/usb_quirk.h (props changed) projects/mips/sys/dev/usb/serial/u3g.c (contents, props changed) projects/mips/sys/dev/usb/serial/uark.c (contents, props changed) projects/mips/sys/dev/usb/serial/ubsa.c (contents, props changed) projects/mips/sys/dev/usb/serial/ubser.c (contents, props changed) projects/mips/sys/dev/usb/serial/uchcom.c (contents, props changed) projects/mips/sys/dev/usb/serial/ucycom.c (contents, props changed) projects/mips/sys/dev/usb/serial/ufoma.c (contents, props changed) projects/mips/sys/dev/usb/serial/uftdi.c (contents, props changed) projects/mips/sys/dev/usb/serial/uftdi_reg.h (props changed) projects/mips/sys/dev/usb/serial/ugensa.c (contents, props changed) projects/mips/sys/dev/usb/serial/uipaq.c (contents, props changed) projects/mips/sys/dev/usb/serial/ulpt.c (contents, props changed) projects/mips/sys/dev/usb/serial/umct.c (contents, props changed) projects/mips/sys/dev/usb/serial/umodem.c (contents, props changed) projects/mips/sys/dev/usb/serial/umoscom.c (contents, props changed) projects/mips/sys/dev/usb/serial/uplcom.c (contents, props changed) projects/mips/sys/dev/usb/serial/usb_serial.c (contents, props changed) projects/mips/sys/dev/usb/serial/usb_serial.h (props changed) projects/mips/sys/dev/usb/serial/uslcom.c projects/mips/sys/dev/usb/serial/uvisor.c (contents, props changed) projects/mips/sys/dev/usb/serial/uvscom.c (contents, props changed) projects/mips/sys/dev/usb/storage/rio500_usb.h (props changed) projects/mips/sys/dev/usb/storage/umass.c (contents, props changed) projects/mips/sys/dev/usb/storage/urio.c (contents, props changed) projects/mips/sys/dev/usb/storage/ustorage_fs.c (contents, props changed) projects/mips/sys/dev/usb/template/usb_template.c (contents, props changed) projects/mips/sys/dev/usb/template/usb_template.h (props changed) projects/mips/sys/dev/usb/template/usb_template_cdce.c (props changed) projects/mips/sys/dev/usb/template/usb_template_msc.c (props changed) projects/mips/sys/dev/usb/template/usb_template_mtp.c (props changed) projects/mips/sys/dev/usb/ufm_ioctl.h (props changed) projects/mips/sys/dev/usb/usb.h (props changed) projects/mips/sys/dev/usb/usb_bus.h (contents, props changed) projects/mips/sys/dev/usb/usb_busdma.c (contents, props changed) projects/mips/sys/dev/usb/usb_busdma.h (props changed) projects/mips/sys/dev/usb/usb_cdc.h (props changed) projects/mips/sys/dev/usb/usb_compat_linux.c (contents, props changed) projects/mips/sys/dev/usb/usb_compat_linux.h (contents, props changed) projects/mips/sys/dev/usb/usb_controller.h (contents, props changed) projects/mips/sys/dev/usb/usb_core.c (props changed) projects/mips/sys/dev/usb/usb_core.h (contents, props changed) projects/mips/sys/dev/usb/usb_debug.c (contents, props changed) projects/mips/sys/dev/usb/usb_debug.h (contents, props changed) projects/mips/sys/dev/usb/usb_defs.h (props changed) projects/mips/sys/dev/usb/usb_dev.c (contents, props changed) projects/mips/sys/dev/usb/usb_dev.h (props changed) projects/mips/sys/dev/usb/usb_device.c (contents, props changed) projects/mips/sys/dev/usb/usb_device.h (contents, props changed) projects/mips/sys/dev/usb/usb_dynamic.c (props changed) projects/mips/sys/dev/usb/usb_dynamic.h (props changed) projects/mips/sys/dev/usb/usb_endian.h (props changed) projects/mips/sys/dev/usb/usb_error.c (props changed) projects/mips/sys/dev/usb/usb_error.h (props changed) projects/mips/sys/dev/usb/usb_generic.c (contents, props changed) projects/mips/sys/dev/usb/usb_generic.h (props changed) projects/mips/sys/dev/usb/usb_handle_request.c (props changed) projects/mips/sys/dev/usb/usb_handle_request.h (props changed) projects/mips/sys/dev/usb/usb_hid.c (contents, props changed) projects/mips/sys/dev/usb/usb_hid.h (props changed) projects/mips/sys/dev/usb/usb_hub.c (contents, props changed) projects/mips/sys/dev/usb/usb_hub.h (contents, props changed) projects/mips/sys/dev/usb/usb_if.m (props changed) projects/mips/sys/dev/usb/usb_ioctl.h (props changed) projects/mips/sys/dev/usb/usb_lookup.c (props changed) projects/mips/sys/dev/usb/usb_lookup.h (props changed) projects/mips/sys/dev/usb/usb_mbuf.c (props changed) projects/mips/sys/dev/usb/usb_mbuf.h (props changed) projects/mips/sys/dev/usb/usb_mfunc.h (props changed) projects/mips/sys/dev/usb/usb_msctest.c (props changed) projects/mips/sys/dev/usb/usb_msctest.h (props changed) projects/mips/sys/dev/usb/usb_parse.c (props changed) projects/mips/sys/dev/usb/usb_parse.h (props changed) projects/mips/sys/dev/usb/usb_pci.h (props changed) projects/mips/sys/dev/usb/usb_process.c (contents, props changed) projects/mips/sys/dev/usb/usb_process.h (props changed) projects/mips/sys/dev/usb/usb_request.c (contents, props changed) projects/mips/sys/dev/usb/usb_request.h (props changed) projects/mips/sys/dev/usb/usb_revision.h (contents, props changed) projects/mips/sys/dev/usb/usb_transfer.c (contents, props changed) projects/mips/sys/dev/usb/usb_transfer.h (contents, props changed) projects/mips/sys/dev/usb/usb_util.c (props changed) projects/mips/sys/dev/usb/usb_util.h (props changed) projects/mips/sys/dev/usb/usbdevs (contents, props changed) projects/mips/sys/dev/usb/usbhid.h (props changed) projects/mips/sys/dev/usb/wlan/if_rum.c (contents, props changed) projects/mips/sys/dev/usb/wlan/if_rumfw.h (props changed) projects/mips/sys/dev/usb/wlan/if_rumreg.h (props changed) projects/mips/sys/dev/usb/wlan/if_rumvar.h (contents, props changed) projects/mips/sys/dev/usb/wlan/if_uath.c projects/mips/sys/dev/usb/wlan/if_uathvar.h projects/mips/sys/dev/usb/wlan/if_ural.c (contents, props changed) projects/mips/sys/dev/usb/wlan/if_uralreg.h (props changed) projects/mips/sys/dev/usb/wlan/if_uralvar.h (contents, props changed) projects/mips/sys/dev/usb/wlan/if_zyd.c (contents, props changed) projects/mips/sys/dev/usb/wlan/if_zydfw.h (props changed) projects/mips/sys/dev/usb/wlan/if_zydreg.h (props changed) projects/mips/sys/dev/vge/if_vge.c projects/mips/sys/dev/wi/if_wi.c projects/mips/sys/dev/wi/if_wireg.h projects/mips/sys/dev/wi/if_wivar.h projects/mips/sys/dev/wpi/if_wpi.c projects/mips/sys/dev/wpi/if_wpivar.h projects/mips/sys/dev/xen/console/console.c projects/mips/sys/dev/xen/console/xencons_ring.c projects/mips/sys/dev/xen/console/xencons_ring.h projects/mips/sys/dev/xen/netfront/ (props changed) projects/mips/sys/dev/xen/netfront/netfront.c projects/mips/sys/dev/xen/xenpci/ (props changed) projects/mips/sys/fs/cd9660/cd9660_vfsops.c projects/mips/sys/fs/coda/coda_vfsops.c projects/mips/sys/fs/devfs/devfs.h projects/mips/sys/fs/devfs/devfs_vfsops.c projects/mips/sys/fs/devfs/devfs_vnops.c projects/mips/sys/fs/fdescfs/fdesc.h projects/mips/sys/fs/fdescfs/fdesc_vfsops.c projects/mips/sys/fs/fdescfs/fdesc_vnops.c projects/mips/sys/fs/hpfs/hpfs_vfsops.c projects/mips/sys/fs/msdosfs/msdosfs_vfsops.c projects/mips/sys/fs/nfs/nfs.h projects/mips/sys/fs/nfs/nfs_commonkrpc.c projects/mips/sys/fs/nfs/nfs_commonport.c projects/mips/sys/fs/nfs/nfs_commonsubs.c projects/mips/sys/fs/nfs/nfs_var.h projects/mips/sys/fs/nfs/nfsdport.h projects/mips/sys/fs/nfs/nfsport.h projects/mips/sys/fs/nfs/nfsproto.h projects/mips/sys/fs/nfsclient/nfs.h projects/mips/sys/fs/nfsclient/nfs_clbio.c projects/mips/sys/fs/nfsclient/nfs_clkrpc.c projects/mips/sys/fs/nfsclient/nfs_clnode.c projects/mips/sys/fs/nfsclient/nfs_clport.c projects/mips/sys/fs/nfsclient/nfs_clrpcops.c projects/mips/sys/fs/nfsclient/nfs_clstate.c projects/mips/sys/fs/nfsclient/nfs_clvfsops.c projects/mips/sys/fs/nfsclient/nfs_clvnops.c projects/mips/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/mips/sys/fs/nfsserver/nfs_nfsdport.c projects/mips/sys/fs/nfsserver/nfs_nfsdserv.c projects/mips/sys/fs/nfsserver/nfs_nfsdsocket.c projects/mips/sys/fs/nfsserver/nfs_nfsdstate.c projects/mips/sys/fs/nfsserver/nfs_nfsdsubs.c projects/mips/sys/fs/ntfs/ntfs_vfsops.c projects/mips/sys/fs/nullfs/null_vfsops.c projects/mips/sys/fs/nwfs/nwfs_io.c projects/mips/sys/fs/nwfs/nwfs_vfsops.c projects/mips/sys/fs/portalfs/portal_vfsops.c projects/mips/sys/fs/pseudofs/pseudofs.c projects/mips/sys/fs/pseudofs/pseudofs.h projects/mips/sys/fs/smbfs/smbfs_io.c projects/mips/sys/fs/smbfs/smbfs_vfsops.c projects/mips/sys/fs/tmpfs/tmpfs.h projects/mips/sys/fs/tmpfs/tmpfs_subr.c projects/mips/sys/fs/tmpfs/tmpfs_vfsops.c projects/mips/sys/fs/tmpfs/tmpfs_vnops.c projects/mips/sys/fs/udf/udf_vfsops.c projects/mips/sys/fs/unionfs/union_vfsops.c projects/mips/sys/geom/concat/g_concat.c projects/mips/sys/geom/geom_subr.c projects/mips/sys/geom/journal/g_journal.c projects/mips/sys/gnu/fs/ext2fs/ext2_vfsops.c projects/mips/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/mips/sys/gnu/fs/xfs/FreeBSD/support/debug.h projects/mips/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c projects/mips/sys/i386/acpica/acpi_machdep.c projects/mips/sys/i386/bios/smapi.c projects/mips/sys/i386/conf/DEFAULTS projects/mips/sys/i386/conf/GENERIC projects/mips/sys/i386/conf/GENERIC.hints projects/mips/sys/i386/conf/NOTES projects/mips/sys/i386/conf/PAE projects/mips/sys/i386/conf/XBOX projects/mips/sys/i386/conf/XEN projects/mips/sys/i386/cpufreq/hwpstate.c projects/mips/sys/i386/i386/machdep.c projects/mips/sys/i386/i386/mp_machdep.c projects/mips/sys/i386/i386/pmap.c projects/mips/sys/i386/i386/trap.c projects/mips/sys/i386/ibcs2/ibcs2_ioctl.c projects/mips/sys/i386/ibcs2/ibcs2_isc_syscall.h projects/mips/sys/i386/ibcs2/ibcs2_isc_sysent.c projects/mips/sys/i386/ibcs2/ibcs2_proto.h projects/mips/sys/i386/ibcs2/ibcs2_socksys.c projects/mips/sys/i386/ibcs2/ibcs2_syscall.h projects/mips/sys/i386/ibcs2/ibcs2_sysent.c projects/mips/sys/i386/ibcs2/ibcs2_xenix.h projects/mips/sys/i386/ibcs2/ibcs2_xenix_syscall.h projects/mips/sys/i386/ibcs2/ibcs2_xenix_sysent.c projects/mips/sys/i386/ibcs2/syscalls.master projects/mips/sys/i386/include/param.h projects/mips/sys/i386/include/smp.h projects/mips/sys/i386/include/specialreg.h projects/mips/sys/i386/linux/linux.h projects/mips/sys/i386/linux/linux_sysvec.c projects/mips/sys/i386/pci/pci_cfgreg.c projects/mips/sys/i386/xen/mp_machdep.c projects/mips/sys/ia64/conf/DEFAULTS projects/mips/sys/ia64/conf/NOTES projects/mips/sys/ia64/ia64/elf_machdep.c projects/mips/sys/ia64/ia64/machdep.c projects/mips/sys/ia64/ia64/pmap.c projects/mips/sys/ia64/include/md_var.h projects/mips/sys/kern/init_main.c projects/mips/sys/kern/kern_acct.c projects/mips/sys/kern/kern_clock.c projects/mips/sys/kern/kern_conf.c projects/mips/sys/kern/kern_descrip.c projects/mips/sys/kern/kern_exit.c projects/mips/sys/kern/kern_fork.c projects/mips/sys/kern/kern_intr.c projects/mips/sys/kern/kern_jail.c projects/mips/sys/kern/kern_linker.c projects/mips/sys/kern/kern_lock.c projects/mips/sys/kern/kern_lockf.c projects/mips/sys/kern/kern_malloc.c projects/mips/sys/kern/kern_mib.c projects/mips/sys/kern/kern_mutex.c projects/mips/sys/kern/kern_poll.c projects/mips/sys/kern/kern_prot.c projects/mips/sys/kern/kern_sysctl.c projects/mips/sys/kern/kern_vimage.c projects/mips/sys/kern/subr_acl_posix1e.c projects/mips/sys/kern/subr_bus.c projects/mips/sys/kern/subr_kdb.c projects/mips/sys/kern/subr_rman.c projects/mips/sys/kern/subr_witness.c projects/mips/sys/kern/sys_generic.c projects/mips/sys/kern/tty.c projects/mips/sys/kern/tty_info.c projects/mips/sys/kern/tty_inq.c projects/mips/sys/kern/tty_ttydisc.c projects/mips/sys/kern/uipc_debug.c projects/mips/sys/kern/uipc_mqueue.c projects/mips/sys/kern/uipc_socket.c projects/mips/sys/kern/uipc_syscalls.c projects/mips/sys/kern/vfs_acl.c projects/mips/sys/kern/vfs_bio.c projects/mips/sys/kern/vfs_default.c projects/mips/sys/kern/vfs_export.c projects/mips/sys/kern/vfs_extattr.c projects/mips/sys/kern/vfs_lookup.c projects/mips/sys/kern/vfs_mount.c projects/mips/sys/kern/vfs_subr.c projects/mips/sys/kern/vfs_syscalls.c projects/mips/sys/kern/vfs_vnops.c projects/mips/sys/kgssapi/gsstest.c projects/mips/sys/legacy/dev/ata/ata-usb.c (props changed) projects/mips/sys/legacy/dev/sound/usb/uaudio.c (props changed) projects/mips/sys/legacy/dev/sound/usb/uaudio.h (props changed) projects/mips/sys/legacy/dev/sound/usb/uaudio_pcm.c (props changed) projects/mips/sys/legacy/dev/sound/usb/uaudioreg.h (props changed) projects/mips/sys/legacy/dev/usb/ (props changed) projects/mips/sys/legacy/dev/usb/ehci_ixp4xx.c (props changed) projects/mips/sys/mips/conf/ADM5120 projects/mips/sys/mips/conf/IDT projects/mips/sys/mips/conf/MALTA projects/mips/sys/mips/conf/QEMU projects/mips/sys/mips/mips/machdep.c projects/mips/sys/mips/mips/pm_machdep.c projects/mips/sys/mips/mips/pmap.c projects/mips/sys/modules/dtrace/dtnfsclient/ (props changed) projects/mips/sys/modules/ip6_mroute_mod/ (props changed) projects/mips/sys/modules/ipmi/ipmi_linux/ (props changed) projects/mips/sys/modules/linux/Makefile projects/mips/sys/modules/nfsclient/Makefile projects/mips/sys/modules/opensolaris/Makefile projects/mips/sys/modules/sound/sound/Makefile projects/mips/sys/modules/svr4/Makefile projects/mips/sys/modules/usb/Makefile projects/mips/sys/modules/wlan/Makefile projects/mips/sys/modules/xfs/Makefile projects/mips/sys/modules/zfs/Makefile projects/mips/sys/net/bpf.c projects/mips/sys/net/if.c projects/mips/sys/net/if_clone.c projects/mips/sys/net/if_llatbl.c projects/mips/sys/net/if_llatbl.h projects/mips/sys/net/if_loop.c projects/mips/sys/net/if_var.h projects/mips/sys/net/netisr.c projects/mips/sys/net/netisr.h projects/mips/sys/net/vnet.h projects/mips/sys/net80211/ieee80211.c projects/mips/sys/net80211/ieee80211.h projects/mips/sys/net80211/ieee80211_adhoc.c projects/mips/sys/net80211/ieee80211_ddb.c projects/mips/sys/net80211/ieee80211_freebsd.c projects/mips/sys/net80211/ieee80211_freebsd.h projects/mips/sys/net80211/ieee80211_hostap.c projects/mips/sys/net80211/ieee80211_ht.c projects/mips/sys/net80211/ieee80211_input.c projects/mips/sys/net80211/ieee80211_monitor.c projects/mips/sys/net80211/ieee80211_node.c projects/mips/sys/net80211/ieee80211_node.h projects/mips/sys/net80211/ieee80211_output.c projects/mips/sys/net80211/ieee80211_proto.c projects/mips/sys/net80211/ieee80211_proto.h projects/mips/sys/net80211/ieee80211_scan.c projects/mips/sys/net80211/ieee80211_scan.h projects/mips/sys/net80211/ieee80211_scan_sta.c projects/mips/sys/net80211/ieee80211_sta.c projects/mips/sys/net80211/ieee80211_superg.c projects/mips/sys/net80211/ieee80211_tdma.c projects/mips/sys/net80211/ieee80211_tdma.h projects/mips/sys/net80211/ieee80211_var.h projects/mips/sys/net80211/ieee80211_wds.c projects/mips/sys/netgraph/netflow/ng_netflow.c projects/mips/sys/netinet/igmp.c projects/mips/sys/netinet/in.c projects/mips/sys/netinet/in_pcb.c projects/mips/sys/netinet/in_pcb.h projects/mips/sys/netinet/in_var.h projects/mips/sys/netinet/ip_fw2.c projects/mips/sys/netinet/ip_ipsec.c projects/mips/sys/netinet/ip_output.c projects/mips/sys/netinet/sctp_crc32.c projects/mips/sys/netinet/sctp_uio.h projects/mips/sys/netinet/tcp_hostcache.c projects/mips/sys/netinet/tcp_reass.c projects/mips/sys/netinet/tcp_subr.c projects/mips/sys/netinet/udp_usrreq.c projects/mips/sys/netinet/udp_var.h projects/mips/sys/netinet/vinet.h projects/mips/sys/netinet6/in6.c projects/mips/sys/netinet6/ip6_ipsec.c projects/mips/sys/netinet6/ip6_mroute.c projects/mips/sys/netinet6/ip6_output.c projects/mips/sys/netinet6/mld6.c projects/mips/sys/netinet6/route6.c projects/mips/sys/netinet6/udp6_usrreq.c projects/mips/sys/netipsec/ipsec.c projects/mips/sys/netipsec/ipsec.h projects/mips/sys/netipsec/ipsec6.h projects/mips/sys/netipsec/vipsec.h projects/mips/sys/netipx/spx.h projects/mips/sys/netipx/spx_usrreq.c projects/mips/sys/netipx/spx_var.h projects/mips/sys/netnatm/natm.c projects/mips/sys/nfs/nfs_common.c projects/mips/sys/nfsclient/bootp_subr.c projects/mips/sys/nfsclient/krpc_subr.c projects/mips/sys/nfsclient/nfs.h projects/mips/sys/nfsclient/nfs_bio.c projects/mips/sys/nfsclient/nfs_diskless.c projects/mips/sys/nfsclient/nfs_krpc.c projects/mips/sys/nfsclient/nfs_lock.c projects/mips/sys/nfsclient/nfs_nfsiod.c projects/mips/sys/nfsclient/nfs_node.c projects/mips/sys/nfsclient/nfs_socket.c projects/mips/sys/nfsclient/nfs_subs.c projects/mips/sys/nfsclient/nfs_vfsops.c projects/mips/sys/nfsclient/nfs_vnops.c projects/mips/sys/nfsclient/nfsm_subs.h projects/mips/sys/nfsclient/nfsmount.h projects/mips/sys/nfsclient/nfsnode.h projects/mips/sys/nfsserver/nfs_serv.c projects/mips/sys/nfsserver/nfs_srvkrpc.c projects/mips/sys/nfsserver/nfs_srvsubs.c projects/mips/sys/nlm/nlm.h projects/mips/sys/nlm/nlm_advlock.c projects/mips/sys/nlm/nlm_prot_impl.c projects/mips/sys/opencrypto/cryptodev.c projects/mips/sys/pc98/conf/DEFAULTS projects/mips/sys/pc98/conf/NOTES projects/mips/sys/pc98/pc98/machdep.c projects/mips/sys/powerpc/aim/clock.c projects/mips/sys/powerpc/aim/machdep.c projects/mips/sys/powerpc/aim/mmu_oea.c projects/mips/sys/powerpc/aim/mmu_oea64.c projects/mips/sys/powerpc/aim/mp_cpudep.c projects/mips/sys/powerpc/aim/ofw_machdep.c projects/mips/sys/powerpc/aim/vm_machdep.c projects/mips/sys/powerpc/booke/clock.c projects/mips/sys/powerpc/booke/locore.S projects/mips/sys/powerpc/booke/machdep.c projects/mips/sys/powerpc/booke/pmap.c projects/mips/sys/powerpc/booke/trap_subr.S projects/mips/sys/powerpc/booke/vm_machdep.c projects/mips/sys/powerpc/conf/GENERIC projects/mips/sys/powerpc/conf/MPC85XX projects/mips/sys/powerpc/conf/NOTES projects/mips/sys/powerpc/include/cpufunc.h projects/mips/sys/powerpc/include/md_var.h projects/mips/sys/powerpc/include/mutex.h projects/mips/sys/powerpc/include/ofw_machdep.h projects/mips/sys/powerpc/include/pcpu.h projects/mips/sys/powerpc/include/pmap.h projects/mips/sys/powerpc/include/smp.h projects/mips/sys/powerpc/include/spr.h projects/mips/sys/powerpc/mpc85xx/ocpbus.c projects/mips/sys/powerpc/mpc85xx/ocpbus.h projects/mips/sys/powerpc/powerpc/busdma_machdep.c projects/mips/sys/powerpc/powerpc/genassym.c projects/mips/sys/powerpc/powerpc/mp_machdep.c projects/mips/sys/powerpc/powerpc/openpic.c projects/mips/sys/powerpc/powerpc/pmap_dispatch.c projects/mips/sys/security/audit/audit_worker.c projects/mips/sys/sparc64/conf/GENERIC projects/mips/sys/sparc64/sparc64/machdep.c projects/mips/sys/sparc64/sparc64/vm_machdep.c projects/mips/sys/sun4v/sun4v/machdep.c projects/mips/sys/sys/_null.h projects/mips/sys/sys/acl.h projects/mips/sys/sys/buf.h projects/mips/sys/sys/buf_ring.h projects/mips/sys/sys/eventhandler.h projects/mips/sys/sys/filedesc.h projects/mips/sys/sys/interrupt.h projects/mips/sys/sys/ioctl.h projects/mips/sys/sys/ioctl_compat.h projects/mips/sys/sys/jail.h projects/mips/sys/sys/kernel.h projects/mips/sys/sys/lockf.h projects/mips/sys/sys/mount.h projects/mips/sys/sys/param.h projects/mips/sys/sys/priv.h projects/mips/sys/sys/proc.h projects/mips/sys/sys/sysctl.h projects/mips/sys/sys/systm.h projects/mips/sys/sys/termios.h projects/mips/sys/sys/ucred.h projects/mips/sys/sys/vimage.h projects/mips/sys/ufs/ffs/ffs_alloc.c projects/mips/sys/ufs/ffs/ffs_vfsops.c projects/mips/sys/ufs/ufs/extattr.h projects/mips/sys/ufs/ufs/ufs_acl.c projects/mips/sys/ufs/ufs/ufs_extattr.c projects/mips/sys/ufs/ufs/ufs_extern.h projects/mips/sys/ufs/ufs/ufs_vfsops.c projects/mips/sys/vm/vm_fault.c projects/mips/sys/vm/vm_page.c projects/mips/sys/vm/vm_page.h projects/mips/sys/vm/vm_pageout.c projects/mips/sys/vm/vnode_pager.c projects/mips/sys/xen/evtchn.h (props changed) projects/mips/sys/xen/hypervisor.h (props changed) projects/mips/sys/xen/xen_intr.h (props changed) projects/mips/sys/xen/xenbus/init.txt (props changed) projects/mips/tools/KSE/ksetest/kse_asm.S projects/mips/tools/KSE/rr/kse_asm.S projects/mips/tools/regression/lib/msun/test-conj.t (props changed) projects/mips/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) projects/mips/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) projects/mips/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) projects/mips/tools/regression/usr.bin/sed/multitest.t projects/mips/tools/tools/README projects/mips/tools/tools/ath/common/dumpregs.h (props changed) projects/mips/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/mips/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/mips/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/mips/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/mips/tools/tools/nanobsd/gateworks/common projects/mips/tools/tools/net80211/scripts/setup.tdma-slave projects/mips/usr.bin/Makefile projects/mips/usr.bin/calendar/calendars/calendar.freebsd projects/mips/usr.bin/csup/ (props changed) projects/mips/usr.bin/find/function.c projects/mips/usr.bin/kdump/mkioctls projects/mips/usr.bin/nfsstat/nfsstat.1 projects/mips/usr.bin/nfsstat/nfsstat.c projects/mips/usr.bin/procstat/ (props changed) projects/mips/usr.bin/sed/compile.c projects/mips/usr.bin/sed/defs.h projects/mips/usr.bin/sed/process.c projects/mips/usr.bin/sed/sed.1 projects/mips/usr.bin/truss/amd64-fbsd.c projects/mips/usr.bin/truss/amd64-fbsd32.c projects/mips/usr.bin/truss/amd64-linux32.c projects/mips/usr.bin/truss/i386-fbsd.c projects/mips/usr.bin/truss/i386-linux.c projects/mips/usr.bin/truss/ia64-fbsd.c projects/mips/usr.bin/truss/main.c projects/mips/usr.bin/truss/mips-fbsd.c projects/mips/usr.bin/truss/powerpc-fbsd.c projects/mips/usr.bin/truss/sparc64-fbsd.c projects/mips/usr.bin/truss/syscall.h projects/mips/usr.bin/truss/syscalls.c projects/mips/usr.bin/truss/truss.1 projects/mips/usr.bin/truss/truss.h projects/mips/usr.sbin/Makefile projects/mips/usr.sbin/bluetooth/btpand/btpand.c projects/mips/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c projects/mips/usr.sbin/dumpcis/cardinfo.h (props changed) projects/mips/usr.sbin/dumpcis/cis.h (props changed) projects/mips/usr.sbin/iostat/iostat.c projects/mips/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/mips/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/mips/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/mips/usr.sbin/makefs/getid.c (props changed) projects/mips/usr.sbin/mergemaster/mergemaster.sh projects/mips/usr.sbin/nfsd/Makefile projects/mips/usr.sbin/nfsd/nfsd.8 projects/mips/usr.sbin/nfsd/nfsd.c projects/mips/usr.sbin/pkg_install/lib/lib.h projects/mips/usr.sbin/pkg_install/lib/plist.c projects/mips/usr.sbin/ppp/timer.c projects/mips/usr.sbin/pwd_mkdb/pwd_mkdb.c projects/mips/usr.sbin/sysinstall/tcpip.c projects/mips/usr.sbin/zic/ (props changed) projects/mips/usr.sbin/zic/README projects/mips/usr.sbin/zic/Theory projects/mips/usr.sbin/zic/ialloc.c projects/mips/usr.sbin/zic/private.h projects/mips/usr.sbin/zic/scheck.c projects/mips/usr.sbin/zic/zdump.8 projects/mips/usr.sbin/zic/zdump.c projects/mips/usr.sbin/zic/zic.8 projects/mips/usr.sbin/zic/zic.c Modified: projects/mips/ObsoleteFiles.inc ============================================================================== --- projects/mips/ObsoleteFiles.inc Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/ObsoleteFiles.inc Tue May 26 17:01:12 2009 (r192819) @@ -14,6 +14,15 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090522: removal of University of Michigan NFSv4 client +OLD_FILES+=etc/rc.d/idmapd +OLD_FILES+=sbin/idmapd +OLD_FILES+=sbin/mount_nfs4 +OLD_FILES+=usr/share/man/man8/idmapd.8.gz +OLD_FILES+=usr/share/man/man8/mount_nfs4.8.gz +# 20090513: removal of legacy versions of USB network interface drivers +OLD_FILES+=usr/include/legacy/dev/usb/if_upgtvar.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_ethersubr.h # 20090417: removal of legacy versions of USB network interface drivers OLD_FILES+=usr/include/legacy/dev/usb/if_auereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_axereg.h Modified: projects/mips/UPDATING ============================================================================== --- projects/mips/UPDATING Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/UPDATING Tue May 26 17:01:12 2009 (r192819) @@ -22,6 +22,28 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090523: + The layout of struct vnet_net has changed, therefore modules + need to be rebuilt. + Bump __FreeBSD_version to 800090. + +20090523: + The newly imported zic(8) produces a new format in the + output. Please run tzsetup(8) to install the newly created + data to /etc/localtime. + +20090520: + The sysctl tree for the usb stack has renamed from hw.usb2.* to + hw.usb.* and is now consistent again with previous releases. + +20090520: + 802.11 monitor mode support was revised and driver api's + were changed. Drivers dependent on net80211 now support + DLT_IEEE802_11_RADIO instead of DLT_IEEE802_11. No + user-visible data structures were changed but applications + that use DLT_IEEE802_11 may require changes. + Bump __FreeBSD_version to 800088. + 20090430: The layout of the following structs has changed: sysctl_oid, socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, @@ -262,7 +284,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. memory segment of size > 2 GB on the 64-bit architectures. Due to a limitation of the existing ABI, the shm_segsz member of the struct shmid_ds, returned by shmctl(IPC_STAT) call is - wrong for large segments. Note that limits must be explicitely + wrong for large segments. Note that limits must be explicitly raised to allow such segments to be created. 20090301: Modified: projects/mips/bin/chflags/chflags.c ============================================================================== --- projects/mips/bin/chflags/chflags.c Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/chflags/chflags.c Tue May 26 17:01:12 2009 (r192819) @@ -115,7 +115,7 @@ main(int argc, char *argv[]) fts_options |= FTS_LOGICAL; } } else - fts_options = FTS_LOGICAL; + fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL; /* XXX: Why don't chflags and lchflags have compatible prototypes? */ if (hflag) Modified: projects/mips/bin/cp/Makefile ============================================================================== --- projects/mips/bin/cp/Makefile Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/cp/Makefile Tue May 26 17:01:12 2009 (r192819) @@ -3,6 +3,6 @@ PROG= cp SRCS= cp.c utils.c -CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED +CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED -D_ACL_PRIVATE .include Modified: projects/mips/bin/pkill/pkill.1 ============================================================================== --- projects/mips/bin/pkill/pkill.1 Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/pkill/pkill.1 Tue May 26 17:01:12 2009 (r192819) @@ -36,7 +36,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd November 23, 2006 +.Dd May 16, 2009 .Dt PKILL 1 .Os .Sh NAME @@ -44,7 +44,7 @@ .Nd find or signal processes by name .Sh SYNOPSIS .Nm pgrep -.Op Fl LSfilnovx +.Op Fl LSafilnovx .Op Fl F Ar pidfile .Op Fl G Ar gid .Op Fl M Ar core @@ -60,7 +60,7 @@ .Ar pattern ... .Nm pkill .Op Fl Ar signal -.Op Fl ILfinovx +.Op Fl ILafinovx .Op Fl F Ar pidfile .Op Fl G Ar gid .Op Fl M Ar core @@ -128,6 +128,15 @@ The default is a newline. This option can only be used with the .Nm pgrep command. +.It Fl a +Include process ancestors in the match list. +By default, the current +.Nm pgrep +or +.Nm pkill +process and all of its ancestors are excluded (unless +.Fl v +is used). .It Fl f Match against full argument lists. The default is to match against process names. Modified: projects/mips/bin/pkill/pkill.c ============================================================================== --- projects/mips/bin/pkill/pkill.c Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/pkill/pkill.c Tue May 26 17:01:12 2009 (r192819) @@ -133,7 +133,7 @@ main(int argc, char **argv) { char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q, *pidfile; const char *execf, *coref; - int debug_opt; + int ancestors, debug_opt; int i, ch, bestidx, rv, criteria, pidfromfile, pidfilelock; size_t jsz; int (*action)(const struct kinfo_proc *); @@ -142,6 +142,7 @@ main(int argc, char **argv) struct timeval best_tval; regex_t reg; regmatch_t regmatch; + pid_t pid; setlocale(LC_ALL, ""); @@ -174,13 +175,14 @@ main(int argc, char **argv) } } + ancestors = 0; criteria = 0; debug_opt = 0; pidfile = NULL; pidfilelock = 0; execf = coref = _PATH_DEVNULL; - while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:d:fg:ij:lnos:t:u:vx")) != -1) + while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnos:t:u:vx")) != -1) switch (ch) { case 'D': debug_opt++; @@ -220,6 +222,9 @@ main(int argc, char **argv) makelist(&ruidlist, LT_USER, optarg); criteria = 1; break; + case 'a': + ancestors++; + break; case 'd': if (!pgrep) usage(); @@ -468,6 +473,27 @@ main(int argc, char **argv) selected[i] = 1; } + if (!ancestors) { + pid = mypid; + while (pid) { + for (i = 0, kp = plist; i < nproc; i++, kp++) { + if (PSKIP(kp)) + continue; + if (kp->ki_pid == pid) { + selected[i] = 0; + pid = kp->ki_ppid; + break; + } + } + if (i == nproc) { + if (pid == mypid) + pid = getppid(); + else + break; /* Maybe we're in a jail ? */ + } + } + } + if (newest || oldest) { best_tval.tv_sec = 0; best_tval.tv_usec = 0; Modified: projects/mips/bin/ps/print.c ============================================================================== --- projects/mips/bin/ps/print.c Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/ps/print.c Tue May 26 17:01:12 2009 (r192819) @@ -130,9 +130,11 @@ command(KINFO *k, VARENT *ve) if (cflag) { /* If it is the last field, then don't pad */ if (STAILQ_NEXT(ve, next_ve) == NULL) { + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) - printf("/%s", k->ki_p->ki_ocomm); + (void)printf("/%s", k->ki_p->ki_ocomm); } else (void)printf("%-*s", v->width, k->ki_p->ki_comm); return; @@ -140,16 +142,22 @@ command(KINFO *k, VARENT *ve) if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL) errx(1, "malloc failed"); strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH); - if (k->ki_env) { - if ((vis_env = malloc(strlen(k->ki_env) * 4 + 1)) == NULL) - errx(1, "malloc failed"); - strvis(vis_env, k->ki_env, VIS_TAB | VIS_NL | VIS_NOSLASH); - } else - vis_env = NULL; if (STAILQ_NEXT(ve, next_ve) == NULL) { /* last field */ + + if (k->ki_env) { + if ((vis_env = malloc(strlen(k->ki_env) * 4 + 1)) + == NULL) + errx(1, "malloc failed"); + strvis(vis_env, k->ki_env, + VIS_TAB | VIS_NL | VIS_NOSLASH); + } else + vis_env = NULL; + if (termwidth == UNLIMITED) { + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); if (vis_env) (void)printf("%s ", vis_env); (void)printf("%s", vis_args); @@ -157,6 +165,9 @@ command(KINFO *k, VARENT *ve) left = termwidth - (totwidth - v->width); if (left < 1) /* already wrapped, just use std width */ left = v->width; + if ((cp = k->ki_d.prefix) != NULL) + while (--left >= 0 && *cp) + (void)putchar(*cp++); if ((cp = vis_env) != NULL) { while (--left >= 0 && *cp) (void)putchar(*cp++); @@ -166,12 +177,12 @@ command(KINFO *k, VARENT *ve) for (cp = vis_args; --left >= 0 && *cp != '\0';) (void)putchar(*cp++); } + if (vis_env != NULL) + free(vis_env); } else - /* XXX env? */ + /* ki_d.prefix & ki_env aren't shown for interim fields */ (void)printf("%-*.*s", v->width, v->width, vis_args); free(vis_args); - if (vis_env != NULL) - free(vis_env); } void @@ -182,6 +193,8 @@ ucomm(KINFO *k, VARENT *ve) v = ve->var; if (STAILQ_NEXT(ve, next_ve) == NULL) { /* last field, don't pad */ + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) printf("/%s", k->ki_p->ki_ocomm); @@ -583,6 +596,10 @@ elapsed(KINFO *k, VARENT *ve) char obuff[128]; v = ve->var; + if (!k->ki_valid) { + (void)printf("%-*s", v->width, "-"); + return; + } val = now - k->ki_p->ki_start.tv_sec; days = val / (24 * 60 * 60); val %= 24 * 60 * 60; Modified: projects/mips/bin/ps/ps.1 ============================================================================== --- projects/mips/bin/ps/ps.1 Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/ps/ps.1 Tue May 26 17:01:12 2009 (r192819) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd August 21, 2006 +.Dd May 16, 2009 .Dt PS 1 .Os .Sh NAME @@ -37,7 +37,7 @@ .Nd process status .Sh SYNOPSIS .Nm -.Op Fl aCcefHhjlmrSTuvwXxZ +.Op Fl aCcdefHhjlmrSTuvwXxZ .Op Fl O Ar fmt | Fl o Ar fmt .Op Fl G Ar gid Ns Op , Ns Ar gid Ns Ar ... .Op Fl M Ar core @@ -122,6 +122,15 @@ CPU calculation that ignores .Dq resident time (this normally has no effect). +.It Fl d +Arrange processes into descendancy order and prefix each command with +indentation text showing sibling and parent/child relationships. +If either of the +.Fl m +and +.Fl r +options are also used, they control how sibling processes are sorted +relative to eachother. .It Fl e Display the environment as well. .It Fl f Modified: projects/mips/bin/ps/ps.c ============================================================================== --- projects/mips/bin/ps/ps.c Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/ps/ps.c Tue May 26 17:01:12 2009 (r192819) @@ -138,6 +138,7 @@ static int addelem_pid(struct listinfo static int addelem_tty(struct listinfo *, const char *); static int addelem_uid(struct listinfo *, const char *); static void add_list(struct listinfo *, const char *); +static void descendant_sort(KINFO *, int); static void dynsizevars(KINFO *); static void *expand_list(struct listinfo *); static const char * @@ -163,7 +164,7 @@ static char vfmt[] = "pid,state,time,sl, "%cpu,%mem,command"; static char Zfmt[] = "label"; -#define PS_ARGS "AaCce" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ" +#define PS_ARGS "AaCcde" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ" int main(int argc, char *argv[]) @@ -177,7 +178,7 @@ main(int argc, char *argv[]) const char *nlistf, *memf; char *cols; int all, ch, elem, flag, _fmt, i, lineno; - int nentries, nkept, nselectors; + int descendancy, nentries, nkept, nselectors; int prtheader, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -201,7 +202,7 @@ main(int argc, char *argv[]) if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = _fmt = nselectors = optfatal = 0; + all = descendancy = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -233,6 +234,9 @@ main(int argc, char *argv[]) case 'c': cflag = 1; break; + case 'd': + descendancy = 1; + break; case 'e': /* XXX set ufmt */ needenv = 1; break; @@ -575,6 +579,8 @@ main(int argc, char *argv[]) keepit: next_KINFO = &kinfo[nkept]; next_KINFO->ki_p = kp; + next_KINFO->ki_d.level = 0; + next_KINFO->ki_d.prefix = NULL; next_KINFO->ki_pcpu = getpcpu(next_KINFO); if (sortby == SORTMEM) next_KINFO->ki_memsize = kp->ki_tsize + @@ -599,6 +605,13 @@ main(int argc, char *argv[]) * sort proc list */ qsort(kinfo, nkept, sizeof(KINFO), pscomp); + + /* + * We want things in descendant order + */ + if (descendancy) + descendant_sort(kinfo, nkept); + /* * For each process, call each variable output function. */ @@ -622,6 +635,9 @@ main(int argc, char *argv[]) free_list(&sesslist); free_list(&ttylist); free_list(&uidlist); + for (i = 0; i < nkept; i++) + free(kinfo[i].ki_d.prefix); + free(kinfo); exit(eval); } @@ -748,7 +764,7 @@ addelem_tty(struct listinfo *inf, const strlcat(pathbuf2, elem, sizeof(pathbuf2)); if (stat(pathbuf2, &sb) == 0 && S_ISCHR(sb.st_mode)) { /* No need to repeat stat() && S_ISCHR() checks */ - ttypath = NULL; + ttypath = NULL; break; } /* Check to see if /dev/pts/${elem} exists */ @@ -756,7 +772,7 @@ addelem_tty(struct listinfo *inf, const strlcat(pathbuf3, elem, sizeof(pathbuf3)); if (stat(pathbuf3, &sb) == 0 && S_ISCHR(sb.st_mode)) { /* No need to repeat stat() && S_ISCHR() checks */ - ttypath = NULL; + ttypath = NULL; break; } break; @@ -890,6 +906,115 @@ add_list(struct listinfo *inf, const cha } } +static void +descendant_sort(KINFO *ki, int items) +{ + int dst, lvl, maxlvl, n, ndst, nsrc, siblings, src; + unsigned char *path; + KINFO kn; + + /* + * First, sort the entries by descendancy, tracking the descendancy + * depth in the ki_d.level field. + */ + src = 0; + maxlvl = 0; + while (src < items) { + if (ki[src].ki_d.level) { + src++; + continue; + } + for (nsrc = 1; src + nsrc < items; nsrc++) + if (!ki[src + nsrc].ki_d.level) + break; + + for (dst = 0; dst < items; dst++) { + if (ki[dst].ki_p->ki_pid == ki[src].ki_p->ki_pid) + continue; + if (ki[dst].ki_p->ki_pid == ki[src].ki_p->ki_ppid) + break; + } + + if (dst == items) { + src += nsrc; + continue; + } + + for (ndst = 1; dst + ndst < items; ndst++) + if (ki[dst + ndst].ki_d.level <= ki[dst].ki_d.level) + break; + + for (n = src; n < src + nsrc; n++) { + ki[n].ki_d.level += ki[dst].ki_d.level + 1; + if (maxlvl < ki[n].ki_d.level) + maxlvl = ki[n].ki_d.level; + } + + while (nsrc) { + if (src < dst) { + kn = ki[src]; + memmove(ki + src, ki + src + 1, + (dst - src + ndst - 1) * sizeof *ki); + ki[dst + ndst - 1] = kn; + nsrc--; + dst--; + ndst++; + } else if (src != dst + ndst) { + kn = ki[src]; + memmove(ki + dst + ndst + 1, ki + dst + ndst, + (src - dst - ndst) * sizeof *ki); + ki[dst + ndst] = kn; + ndst++; + nsrc--; + src++; + } else { + ndst += nsrc; + src += nsrc; + nsrc = 0; + } + } + } + + /* + * Now populate ki_d.prefix (instead of ki_d.level) with the command + * prefix used to show descendancies. + */ + path = malloc((maxlvl + 7) / 8); + memset(path, '\0', (maxlvl + 7) / 8); + for (src = 0; src < items; src++) { + if ((lvl = ki[src].ki_d.level) == 0) { + ki[src].ki_d.prefix = NULL; + continue; + } + if ((ki[src].ki_d.prefix = malloc(lvl * 2 + 1)) == NULL) + errx(1, "malloc failed"); + for (n = 0; n < lvl - 2; n++) { + ki[src].ki_d.prefix[n * 2] = + path[n / 8] & 1 << (n % 8) ? '|' : ' '; + ki[src].ki_d.prefix[n * 2 + 1] = ' '; + } + if (n == lvl - 2) { + /* Have I any more siblings? */ + for (siblings = 0, dst = src + 1; dst < items; dst++) { + if (ki[dst].ki_d.level > lvl) + continue; + if (ki[dst].ki_d.level == lvl) + siblings = 1; + break; + } + if (siblings) + path[n / 8] |= 1 << (n % 8); + else + path[n / 8] &= ~(1 << (n % 8)); + ki[src].ki_d.prefix[n * 2] = siblings ? '|' : '`'; + ki[src].ki_d.prefix[n * 2 + 1] = '-'; + n++; + } + strcpy(ki[src].ki_d.prefix + n * 2, "- "); + } + free(path); +} + static void * expand_list(struct listinfo *inf) { Modified: projects/mips/bin/ps/ps.h ============================================================================== --- projects/mips/bin/ps/ps.h Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/bin/ps/ps.h Tue May 26 17:01:12 2009 (r192819) @@ -42,6 +42,10 @@ typedef struct kinfo { int ki_valid; /* 1 => uarea stuff valid */ double ki_pcpu; /* calculated in main() */ segsz_t ki_memsize; /* calculated in main() */ + union { + int level; /* used in decendant_sort() */ + char *prefix; /* calculated in decendant_sort() */ + } ki_d; } KINFO; /* Variables. */ Modified: projects/mips/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- projects/mips/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Tue May 26 17:01:12 2009 (r192819) @@ -418,6 +418,7 @@ typedef struct vsecattr { #define VOP_FSYNC(vp, f, cr, ct) fsync((vp)->v_fd) #define VN_RELE(vp) vn_close(vp, 0, NULL, NULL) +#define VN_RELE_ASYNC(vp, taskq) vn_close(vp, 0, NULL, NULL) #define vn_lock(vp, type) #define VOP_UNLOCK(vp, type) Modified: projects/mips/cddl/lib/libzpool/Makefile ============================================================================== --- projects/mips/cddl/lib/libzpool/Makefile Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/cddl/lib/libzpool/Makefile Tue May 26 17:01:12 2009 (r192819) @@ -13,7 +13,7 @@ # ATOMIC_SRCS .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64" .PATH: ${.CURDIR}/../../../sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH} -ATOMIC_SRCS= atomic.S +ATOMIC_SRCS= opensolaris_atomic.S .else .PATH: ${.CURDIR}/../../../sys/cddl/compat/opensolaris/kern ATOMIC_SRCS= opensolaris_atomic.c Modified: projects/mips/contrib/file/ChangeLog ============================================================================== --- projects/mips/contrib/file/ChangeLog Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/ChangeLog Tue May 26 17:01:12 2009 (r192819) @@ -1,3 +1,59 @@ +2009-05-06 10:25 Christos Zoulas + + * Avoid null dereference in cdf code (Drew Yao) + + * More cdf bounds checks and overflow checks + +2009-05-01 18:37 Christos Zoulas + + * Buffer overflow fixes from Drew Yao + +2009-04-30 17:10 Christos Zoulas + + * Fix more cdf lossage. All the documents I have + right now print the correct information. + +2009-03-27 18:43 Christos Zoulas + + * don't print \012- separators in the same magic entry + if it consists of multiple magic printing lines. + +2009-03-23 10:20 Christos Zoulas + + * Avoid file descriptor leak in compress code from + (Daniel Novotny) + +2009-03-18 16:50 Christos Zoulas + + * Allow escaping of relation characters, so that we can say \^[A-Z] + and the ^ is not eaten as a relation char. + + * Fix troff and fortran to their previous glory using + regex. This was broken since their removel from ascmagic. + +2009-03-10 16:50 Christos Zoulas + + * don't use strlen in strndup() (Toby Peterson) + +2009-03-10 7:45 Christos Zoulas + + * avoid c99 syntax. + +2009-02-23 15:45 Christos Zoulas + + * make the cdf code use the buffer first if available, + and then the fd code. + +2009-02-13 13:45 Christos Zoulas + + * look for struct option to determine if getopt.h is usable for IRIX. + + * sanitize cdf document strings + +2009-02-04 13:25 Christos Zoulas + + * fix OS/2 warnings. + 2008-12-12 15:50 Christos Zoulas * fix initial offset calculation for non 4K sector files Modified: projects/mips/contrib/file/Magdir/cafebabe ============================================================================== --- projects/mips/contrib/file/Magdir/cafebabe Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/cafebabe Tue May 26 17:01:12 2009 (r192819) @@ -17,6 +17,15 @@ >4 belong >30 compiled Java class data, >>6 beshort x version %d. >>4 beshort x \b%d +# Which is which? +#>>4 belong 0x032d (Java 1.0) +#>>4 belong 0x032d (Java 1.1) +>>4 belong 0x002e (Java 1.2) +>>4 belong 0x002f (Java 1.3) +>>4 belong 0x0030 (Java 1.4) +>>4 belong 0x0031 (Java 1.5) +>>4 belong 0x0032 (Java 1.6) + 0 belong 0xcafebabe >4 belong 1 Mach-O fat file with 1 architecture Modified: projects/mips/contrib/file/Magdir/compress ============================================================================== --- projects/mips/contrib/file/Magdir/compress Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/compress Tue May 26 17:01:12 2009 (r192819) @@ -195,6 +195,10 @@ # bug #364260) #0 string ]\000\000\200\000 LZMA compressed data +# http://tukaani.org/xz/xz-file-format.txt +0 ustring \xFD7zXZ\x00 xz compressed data +!:mime application/x-xz + # AFX compressed files (Wolfram Kleff) 2 string -afx- AFX compressed file data @@ -208,3 +212,8 @@ >4 byte x - version %d >5 byte x \b.%d >6 belong x (%d bytes) + +# Type: XZ +# URL: http://tukaani.org/xz/ +0 string \xfd\x37\x7a\x58\x5a\x00 XZ compressed data +!:mime application/x-xz Modified: projects/mips/contrib/file/Magdir/database ============================================================================== --- projects/mips/contrib/file/Magdir/database Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/database Tue May 26 17:01:12 2009 (r192819) @@ -242,3 +242,28 @@ # URL: http://www.grc.nasa.gov/WWW/cgns/adf/ # From: Nicolas Chauvat 0 string @(#)ADF\ Database CGNS Advanced Data Format + +# Tokyo Cabinet magic data +# http://tokyocabinet.sourceforge.net/index.html +0 string ToKyO\ CaBiNeT\n Tokyo Cabinet +>14 string x \b (%s) +>32 byte 0 \b, Hash +!:mime application/x-tokyocabinet-hash +>32 byte 1 \b, B+ tree +!:mime application/x-tokyocabinet-btree +>32 byte 2 \b, Fixed-length +!:mime application/x-tokyocabinet-fixed +>32 byte 3 \b, Table +!:mime application/x-tokyocabinet-table +>33 byte &1 \b, [open] +>33 byte &2 \b, [fatal] +>34 byte x \b, apow=%d +>35 byte x \b, fpow=%d +>36 byte &0x01 \b, [large] +>36 byte &0x02 \b, [deflate] +>36 byte &0x04 \b, [bzip] +>36 byte &0x08 \b, [tcbs] +>36 byte &0x10 \b, [excodec] +>40 lequad x \b, bnum=%lld +>48 lequad x \b, rnum=%lld +>56 lequad x \b, fsiz=%lld Modified: projects/mips/contrib/file/Magdir/erlang ============================================================================== --- projects/mips/contrib/file/Magdir/erlang Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/erlang Tue May 26 17:01:12 2009 (r192819) @@ -12,7 +12,7 @@ >8 string BEAM Erlang BEAM file # 4.2 version may have a copyright notice! -4 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2 -79 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2 +4 string Tue\ Jan\ 22\ 14:32:44\ MET\ 1991 Erlang JAM file - version 4.2 +79 string Tue\ Jan\ 22\ 14:32:44\ MET\ 1991 Erlang JAM file - version 4.2 -4 string 1.0 Fri Feb 3 09:55:56 MET 1995 Erlang JAM file - version 4.3 +4 string 1.0\ Fri\ Feb\ 3\ 09:55:56\ MET\ 1995 Erlang JAM file - version 4.3 Modified: projects/mips/contrib/file/Magdir/filesystems ============================================================================== --- projects/mips/contrib/file/Magdir/filesystems Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/filesystems Tue May 26 17:01:12 2009 (r192819) @@ -891,7 +891,7 @@ 0x410 leshort 0x2478 Minix filesystem, version 2, 30 char names # romfs filesystems - Juan Cespedes -0 string -rom1fs-\0 romfs filesystem, version 1 +0 string -rom1fs- romfs filesystem, version 1 >8 belong x %d bytes, >16 string x named %s. Modified: projects/mips/contrib/file/Magdir/fonts ============================================================================== --- projects/mips/contrib/file/Magdir/fonts Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/fonts Tue May 26 17:01:12 2009 (r192819) @@ -6,8 +6,8 @@ 0 short 017001 byte-swapped Berkeley vfont data # PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com -0 search/1 %!PS-AdobeFont-1. PostScript Type 1 font text ->20 search/1 >\0 (%s) +0 string %!PS-AdobeFont-1. PostScript Type 1 font text +>20 string >\0 (%s) 6 string %!PS-AdobeFont-1. PostScript Type 1 font program data # X11 font files in SNF (Server Natural Format) format @@ -55,6 +55,8 @@ 0 string \007\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font 0 string \012\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font +0 string ttcf TrueType font collection data + # Opentype font data from Avi Bercovich 0 string OTTO OpenType font data Modified: projects/mips/contrib/file/Magdir/fortran ============================================================================== --- projects/mips/contrib/file/Magdir/fortran Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/fortran Tue May 26 17:01:12 2009 (r192819) @@ -1,3 +1,3 @@ # FORTRAN source -0 string/c c\ FORTRAN program +0 regex/100 \^[Cc][\ \t] FORTRAN program !:mime text/x-fortran Copied: projects/mips/contrib/file/Magdir/kml (from r192817, head/contrib/file/Magdir/kml) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/mips/contrib/file/Magdir/kml Tue May 26 17:01:12 2009 (r192819, copy of r192817, head/contrib/file/Magdir/kml) @@ -0,0 +1,32 @@ +#------------------------------------------------------------------------------ +# Type: Google KML, formerly Keyhole Markup Language +# Future development of this format has been handed +# over to the Open Geospatial Consortium. +# http://www.opengeospatial.org/standards/kml/ +# From: Asbjoern Sloth Toennesen +0 string \20 search/400 \ xmlns= +>>&0 regex ['"]http://earth.google.com/kml Google KML document +!:mime application/vnd.google-earth.kml+xml +>>>&1 string 2.0' \b, version 2.0 +>>>&1 string 2.1' \b, version 2.1 +>>>&1 string 2.2' \b, version 2.2 + +#------------------------------------------------------------------------------ +# Type: OpenGIS KML, formerly Keyhole Markup Language +# This standard is maintained by the +# Open Geospatial Consortium. +# http://www.opengeospatial.org/standards/kml/ +# From: Asbjoern Sloth Toennesen +>>&0 regex ['"]http://www.opengis.net/kml OpenGIS KML document +!:mime application/vnd.google-earth.kml+xml +>>>&1 string 2.2 \b, version 2.2 + +#------------------------------------------------------------------------------ +# Type: Google KML Archive (ZIP based) +# http://code.google.com/apis/kml/documentation/kml_tut.html +# From: Asbjoern Sloth Toennesen +0 string PK\003\004 +>4 byte 0x14 +>>30 string doc.kml Compressed Google KML Document, including resources. +!:mime application/vnd.google-earth.kmz Modified: projects/mips/contrib/file/Magdir/linux ============================================================================== --- projects/mips/contrib/file/Magdir/linux Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/linux Tue May 26 17:01:12 2009 (r192819) @@ -84,7 +84,7 @@ 514 string HdrS Linux kernel >510 leshort 0xAA55 x86 boot executable >>518 leshort >0x1ff ->>529 byte 0 zImage, +>>>529 byte 0 zImage, >>>529 byte 1 bzImage, >>>(526.s+0x200) string >\0 version %s, >>498 leshort 1 RO-rootFS, Modified: projects/mips/contrib/file/Magdir/lisp ============================================================================== --- projects/mips/contrib/file/Magdir/lisp Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/lisp Tue May 26 17:01:12 2009 (r192819) @@ -8,22 +8,22 @@ #0 string ;; # windows INF files often begin with semicolon and use CRLF as line end # lisp files are mainly created on unix system with LF as line end -#>2 search/2048 !\r Lisp/Scheme program text -#>2 search/2048 \r Windows INF file +#>2 search/4096 !\r Lisp/Scheme program text +#>2 search/4096 \r Windows INF file -0 search/256 (if\ Lisp/Scheme program text +0 search/4096 (if\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (setq\ Lisp/Scheme program text +0 search/4096 (setq\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (defvar\ Lisp/Scheme program text +0 search/4096 (defvar\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (defparam\ Lisp/Scheme program text +0 search/4096 (defparam\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (defun\ Lisp/Scheme program text +0 search/4096 (defun\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (autoload\ Lisp/Scheme program text +0 search/4096 (autoload\ Lisp/Scheme program text !:mime text/x-lisp -0 search/256 (custom-set-variables\ Lisp/Scheme program text +0 search/4096 (custom-set-variables\ Lisp/Scheme program text !:mime text/x-lisp # Emacs 18 - this is always correct, but not very magical. Modified: projects/mips/contrib/file/Magdir/python ============================================================================== --- projects/mips/contrib/file/Magdir/python Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/python Tue May 26 17:01:12 2009 (r192819) @@ -14,6 +14,8 @@ 0 belong 0x3bf20d0a python 2.3 byte-compiled 0 belong 0x6df20d0a python 2.4 byte-compiled 0 belong 0xb3f20d0a python 2.5 byte-compiled +0 belong 0xd1f20d0a python 2.6 byte-compiled + 0 string/b #!\ /usr/bin/python python script text executable Modified: projects/mips/contrib/file/Magdir/troff ============================================================================== --- projects/mips/contrib/file/Magdir/troff Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/troff Tue May 26 17:01:12 2009 (r192819) @@ -14,6 +14,10 @@ !:mime text/troff 0 search/1 ''' troff or preprocessor input text !:mime text/troff +0 regex/20 \^\\.[A-Za-z0-9][A-Za-z0-9][\ \t] troff or preprocessor input text +!:mime text/troff +0 regex/20 \^\\.[A-Za-z0-9][A-Za-z0-9]$ troff or preprocessor input text +!:mime text/troff # ditroff intermediate output text 0 search/1 x\ T ditroff output text Modified: projects/mips/contrib/file/Magdir/windows ============================================================================== --- projects/mips/contrib/file/Magdir/windows Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Magdir/windows Tue May 26 17:01:12 2009 (r192819) @@ -113,3 +113,9 @@ 0 string REGEDIT4\r\n\r\n Windows Registry text (Win95 or above) 0 string Windows\ Registry\ Editor\ >&0 string Version\ 5.00\r\n\r\n Windows Registry text (Win2K or above) + + +# From: Pal Tamas +# Autorun File +0 string/c [autorun]\r\n Microsoft Windows Autorun file. +!:mime application/x-setupscript. Modified: projects/mips/contrib/file/Makefile.am ============================================================================== --- projects/mips/contrib/file/Makefile.am Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Makefile.am Tue May 26 17:01:12 2009 (r192819) @@ -1,5 +1,5 @@ # -# $File: Makefile.am,v 1.44 2009/01/28 02:11:20 christos Exp $ +# $File: Makefile.am,v 1.45 2009/03/05 22:40:59 christos Exp $ # MAGIC_FRAGMENT_BASE = Magdir MAGIC_FRAGMENT_DIR = $(top_srcdir)/magic/$(MAGIC_FRAGMENT_BASE) @@ -97,6 +97,7 @@ $(MAGIC_FRAGMENT_DIR)/java \ $(MAGIC_FRAGMENT_DIR)/jpeg \ $(MAGIC_FRAGMENT_DIR)/karma \ $(MAGIC_FRAGMENT_DIR)/kde \ +$(MAGIC_FRAGMENT_DIR)/kml \ $(MAGIC_FRAGMENT_DIR)/lecter \ $(MAGIC_FRAGMENT_DIR)/lex \ $(MAGIC_FRAGMENT_DIR)/lif \ Modified: projects/mips/contrib/file/Makefile.in ============================================================================== --- projects/mips/contrib/file/Makefile.in Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/Makefile.in Tue May 26 17:01:12 2009 (r192819) @@ -15,7 +15,6 @@ @SET_MAKE@ VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd @@ -54,6 +53,7 @@ am__installdirs = "$(DESTDIR)$(pkgdatadi pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkgdatadir = @pkgdatadir@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -73,6 +73,7 @@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ @@ -95,6 +96,7 @@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -104,6 +106,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -163,7 +166,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # -# $File: Makefile.am,v 1.44 2009/01/28 02:11:20 christos Exp $ +# $File: Makefile.am,v 1.45 2009/03/05 22:40:59 christos Exp $ # MAGIC_FRAGMENT_BASE = Magdir MAGIC_FRAGMENT_DIR = $(top_srcdir)/magic/$(MAGIC_FRAGMENT_BASE) @@ -259,6 +262,7 @@ $(MAGIC_FRAGMENT_DIR)/java \ $(MAGIC_FRAGMENT_DIR)/jpeg \ $(MAGIC_FRAGMENT_DIR)/karma \ $(MAGIC_FRAGMENT_DIR)/kde \ +$(MAGIC_FRAGMENT_DIR)/kml \ $(MAGIC_FRAGMENT_DIR)/lecter \ $(MAGIC_FRAGMENT_DIR)/lex \ $(MAGIC_FRAGMENT_DIR)/lif \ Modified: projects/mips/contrib/file/README ============================================================================== --- projects/mips/contrib/file/README Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/README Tue May 26 17:01:12 2009 (r192819) @@ -1,15 +1,18 @@ ** README for file(1) Command ** -@(#) $File: README,v 1.41 2008/12/02 16:34:46 christos Exp $ +@(#) $File: README,v 1.42 2009/02/14 15:16:24 christos Exp $ E-mail: christos@astron.com Mailing List: file@mx.gw.com Phone: Do not even think of telephoning me about this program. Send cash first! -This is Release 4.x of Ian Darwin's (copyright but distributable) +This is Release 5.x of Ian Darwin's (copyright but distributable) file(1) command. This version is the standard "file" command for Linux, *BSD, and other systems. (See "patchlevel.h" for the exact release number). +The major changes for 5.x are CDF file parsing, indirect magic, and +overhaul in mime and ascii encoding handling. + The major feature of 4.x is the refactoring of the code into a library, and the re-write of the file command in terms of that library. The library itself, libmagic can be used by 3rd party programs that wish to identify Modified: projects/mips/contrib/file/acinclude.m4 ============================================================================== --- projects/mips/contrib/file/acinclude.m4 Tue May 26 17:01:00 2009 (r192818) +++ projects/mips/contrib/file/acinclude.m4 Tue May 26 17:01:12 2009 (r192819) @@ -9,6 +9,7 @@ AC_CACHE_CHECK([for tm_zone in struct tm if test "$ac_cv_struct_tm_zone" = yes; then AC_DEFINE(HAVE_TM_ZONE,1,[HAVE_TM_ZONE]) fi + AC_CACHE_CHECK(for tzname, ac_cv_var_tzname, [AC_TRY_LINK( changequote(<<, >>)dnl @@ -29,6 +30,7 @@ AC_CACHE_CHECK([for tm_isdst in struct t if test "$ac_cv_struct_tm_isdst" = yes; then AC_DEFINE(HAVE_TM_ISDST,1,[HAVE_TM_ISDST]) fi + AC_CACHE_CHECK(for daylight, ac_cv_var_daylight, [AC_TRY_LINK( changequote(<<, >>)dnl @@ -42,3 +44,12 @@ changequote([, ])dnl AC_DEFINE(HAVE_DAYLIGHT,1,[HAVE_DAYLIGHT]) fi ]) + +AC_DEFUN([AC_STRUCT_OPTION_GETOPT_H], +[AC_CACHE_CHECK([for struct option in getopt], ac_cv_struct_option_getopt_h, +[AC_TRY_COMPILE([#include ], [struct option op; op.name;], + ac_cv_struct_option_getopt_h=yes, ac_cv_struct_option_getopt_h=no)]) +if test "$ac_cv_struct_option_getopt_h" = yes; then *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:43:32 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7B34F106564A; Tue, 26 May 2009 17:43:32 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 69F808FC20; Tue, 26 May 2009 17:43:32 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QHhWF3067151; Tue, 26 May 2009 17:43:32 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QHhW1d067150; Tue, 26 May 2009 17:43:32 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905261743.n4QHhW1d067150@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 17:43:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192821 - projects/mips/sys/mips/atheros X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:43:32 -0000 Author: gonzo Date: Tue May 26 17:43:32 2009 New Revision: 192821 URL: http://svn.freebsd.org/changeset/base/192821 Log: - arge_poll should be decalred only if DEVICE_POLLING is enabled - Revert Rx buffer nsegments from BUS_SPACE_UNRESTRICTED to ARGE_MAXFRAGS Modified: projects/mips/sys/mips/atheros/if_arge.c Modified: projects/mips/sys/mips/atheros/if_arge.c ============================================================================== --- projects/mips/sys/mips/atheros/if_arge.c Tue May 26 17:06:36 2009 (r192820) +++ projects/mips/sys/mips/atheros/if_arge.c Tue May 26 17:43:32 2009 (r192821) @@ -103,7 +103,9 @@ static void arge_reset_dma(struct arge_s static int arge_resume(device_t); static int arge_rx_ring_init(struct arge_softc *); static int arge_tx_ring_init(struct arge_softc *); +#ifdef DEVICE_POLLING static void arge_poll(struct ifnet *, enum poll_cmd, int); +#endif static void arge_shutdown(device_t); static void arge_start(struct ifnet *); static void arge_start_locked(struct ifnet *); @@ -1086,7 +1088,7 @@ arge_dma_alloc(struct arge_softc *sc) BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ MCLBYTES, /* maxsize */ - BUS_SPACE_UNRESTRICTED, /* nsegments */ + ARGE_MAXFRAGS, /* nsegments */ MCLBYTES, /* maxsegsize */ 0, /* flags */ NULL, NULL, /* lockfunc, lockarg */ From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:50:51 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A6C1106564A; Tue, 26 May 2009 17:50:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 45C8D8FC12; Tue, 26 May 2009 17:50:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QHopas067340; Tue, 26 May 2009 17:50:51 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QHopuP067338; Tue, 26 May 2009 17:50:51 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905261750.n4QHopuP067338@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 17:50:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192822 - projects/mips/sys/mips/atheros X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:50:53 -0000 Author: gonzo Date: Tue May 26 17:50:50 2009 New Revision: 192822 URL: http://svn.freebsd.org/changeset/base/192822 Log: - style(9) fixes - Get rid of obsolete mask_fn Modified: projects/mips/sys/mips/atheros/apb.c projects/mips/sys/mips/atheros/ar71xx_pci.c Modified: projects/mips/sys/mips/atheros/apb.c ============================================================================== --- projects/mips/sys/mips/atheros/apb.c Tue May 26 17:43:32 2009 (r192821) +++ projects/mips/sys/mips/atheros/apb.c Tue May 26 17:50:50 2009 (r192822) @@ -70,8 +70,10 @@ static int apb_setup_intr(device_t, devi static int apb_teardown_intr(device_t, device_t, struct resource *, void *); -static void apb_mask_irq(unsigned int irq) +static void +apb_mask_irq(void *source) { + unsigned int irq = (unsigned int)source; uint32_t reg; reg = ATH_READ_REG(AR71XX_MISC_INTR_MASK); @@ -79,9 +81,11 @@ static void apb_mask_irq(unsigned int ir } -static void apb_unmask_irq(unsigned int irq) +static void +apb_unmask_irq(void *source) { uint32_t reg; + unsigned int irq = (unsigned int)source; reg = ATH_READ_REG(AR71XX_MISC_INTR_MASK); ATH_WRITE_REG(AR71XX_MISC_INTR_MASK, reg | (1 << irq)); @@ -277,7 +281,7 @@ apb_setup_intr(device_t bus, device_t ch event = sc->sc_eventstab[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)apb_mask_irq, (mask_fn)apb_unmask_irq, + apb_mask_irq, apb_unmask_irq, NULL, NULL, "apb intr%d:", irq); @@ -287,7 +291,7 @@ apb_setup_intr(device_t bus, device_t ch intr_event_add_handler(event, device_get_nameunit(child), filt, handler, arg, intr_priority(flags), flags, cookiep); - apb_unmask_irq(irq); + apb_unmask_irq((void*)irq); return (0); } @@ -306,7 +310,7 @@ apb_teardown_intr(device_t dev, device_t if (sc->sc_eventstab[irq] == NULL) panic("Trying to teardown unoccupied IRQ"); - apb_mask_irq(irq); + apb_mask_irq((void*)irq); result = intr_event_remove_handler(cookie); if (!result) Modified: projects/mips/sys/mips/atheros/ar71xx_pci.c ============================================================================== --- projects/mips/sys/mips/atheros/ar71xx_pci.c Tue May 26 17:43:32 2009 (r192821) +++ projects/mips/sys/mips/atheros/ar71xx_pci.c Tue May 26 17:50:50 2009 (r192822) @@ -80,18 +80,22 @@ static int ar71xx_pci_teardown_intr(devi void *); static int ar71xx_pci_intr(void *); -static void ar71xx_pci_mask_irq(unsigned int irq) +static void +ar71xx_pci_mask_irq(void *source) { uint32_t reg; + unsigned int irq = (unsigned int)source; reg = ATH_READ_REG(AR71XX_PCI_INTR_MASK); ATH_WRITE_REG(AR71XX_PCI_INTR_MASK, reg & ~(1 << irq)); } -static void ar71xx_pci_unmask_irq(unsigned int irq) +static void +ar71xx_pci_unmask_irq(void *source) { uint32_t reg; + unsigned int irq = (unsigned int)source; reg = ATH_READ_REG(AR71XX_PCI_INTR_MASK); ATH_WRITE_REG(AR71XX_PCI_INTR_MASK, reg | (1 << irq)); @@ -426,9 +430,7 @@ ar71xx_pci_setup_intr(device_t bus, devi event = sc->sc_eventstab[irq]; if (event == NULL) { error = intr_event_create(&event, (void *)irq, 0, irq, - (mask_fn)ar71xx_pci_mask_irq, - (mask_fn)ar71xx_pci_unmask_irq, - NULL, NULL, + ar71xx_pci_mask_irq, ar71xx_pci_unmask_irq, NULL, NULL, "ar71xx_pci intr%d:", irq); sc->sc_eventstab[irq] = event; @@ -437,7 +439,7 @@ ar71xx_pci_setup_intr(device_t bus, devi intr_event_add_handler(event, device_get_nameunit(child), filt, handler, arg, intr_priority(flags), flags, cookiep); - ar71xx_pci_unmask_irq(irq); + ar71xx_pci_unmask_irq((void*)irq); return (0); } @@ -456,7 +458,7 @@ ar71xx_pci_teardown_intr(device_t dev, d if (sc->sc_eventstab[irq] == NULL) panic("Trying to teardown unoccupied IRQ"); - ar71xx_pci_mask_irq(irq); + ar71xx_pci_mask_irq((void*)irq); result = intr_event_remove_handler(cookie); if (!result) From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:54:56 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0EDA5106564A; Tue, 26 May 2009 17:54:56 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F2B578FC12; Tue, 26 May 2009 17:54:55 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QHstV9067439; Tue, 26 May 2009 17:54:55 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QHstIv067438; Tue, 26 May 2009 17:54:55 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905261754.n4QHstIv067438@svn.freebsd.org> From: Rui Paulo Date: Tue, 26 May 2009 17:54:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192823 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:54:56 -0000 Author: rpaulo Date: Tue May 26 17:54:55 2009 New Revision: 192823 URL: http://svn.freebsd.org/changeset/base/192823 Log: Add code to send link metric action frames. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_output.c Modified: projects/mesh11s/sys/net80211/ieee80211_output.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_output.c Tue May 26 17:50:50 2009 (r192822) +++ projects/mesh11s/sys/net80211/ieee80211_output.c Tue May 26 17:54:55 2009 (r192823) @@ -753,6 +753,35 @@ ieee80211_send_action(struct ieee80211_n break; } break; + case IEEE80211_ACTION_CAT_MESHLMETRIC: + switch (action) { + /* + * mesh link metric request + * [1] action + * [1] category + */ + case IEEE80211_ACTION_MESHLMETRIC_REQ: + break; + /* + * mesh link metric reply + * [1] action + * [1] category + * [tlv] mesh link metric + */ + case IEEE80211_ACTION_MESHLMETRIC_REP: + { + uint32_t *metric; + + metric = vargs.ptrarg; + IEEE80211_NOTE(vap, + IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, ni, + "send LINK METRIC REPLY action: metric 0x%x", + metric); + frm = ieee80211_add_meshlmetric(frm, *metric); + break; + } + } + break; case IEEE80211_ACTION_CAT_MESHPATH: switch (action) { /* From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:56:45 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 505CC1065670; Tue, 26 May 2009 17:56:45 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3E6DD8FC22; Tue, 26 May 2009 17:56:45 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QHuhSp067533; Tue, 26 May 2009 17:56:43 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QHuhbH067528; Tue, 26 May 2009 17:56:43 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905261756.n4QHuhbH067528@svn.freebsd.org> From: Rui Paulo Date: Tue, 26 May 2009 17:56:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192824 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:56:45 -0000 Author: rpaulo Date: Tue May 26 17:56:43 2009 New Revision: 192824 URL: http://svn.freebsd.org/changeset/base/192824 Log: * checkpoint HWMP preq processing * rename link metric function/variables to something more meaningful. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_input.c projects/mesh11s/sys/net80211/ieee80211_mesh.c projects/mesh11s/sys/net80211/ieee80211_mesh.h projects/mesh11s/sys/net80211/ieee80211_node.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue May 26 17:54:55 2009 (r192823) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue May 26 17:56:43 2009 (r192824) @@ -64,6 +64,27 @@ __FBSDID("$FreeBSD$"); #include +/* + * HWMP Forwarding Information table. + */ +struct ieee80211_hwmp_forwardinfo { + TAILQ_ENTRY(ieee80211_hwmp_path) hp_list; + uint8_t hp_target[IEEE80211_ADDR_LEN]; + ieee80211_seq hp_seq; /* HWMP sequence number */ + uint8_t hp_mnxthop[IEEE80211_ADDR_LEN]; + uint32_t hp_metric; /* Path Metric */ + uint32_t hp_nhops; /* Number of Hops */ + /* XXX percursor list */ + uint32_t hp_lifetime; +}; + +static void hwmp_recv_preq(struct ieee80211vap *, struct ieee80211_node *, + const struct ieee80211_meshpreq_ie *); +static void hwmp_recv_prep(struct ieee80211vap *, struct ieee80211_node *, + const struct ieee80211_meshprep_ie *); +static void hwmp_recv_perr(struct ieee80211vap *, struct ieee80211_node *, + const struct ieee80211_meshperr_ie *); + static int ieee80211_hwmp_maxhops = 31; #ifdef notyet static int ieee80211_hwmp_maxhopstime = 500; @@ -76,29 +97,36 @@ static int ieee80211_hwmp_rootmode = 0; static int ieee80211_hwmp_pathtoroottimeout = 5000; static int ieee80211_hmwp_rootint = 2000; static int ieee80211_hwmp_rannint = 1000; +#endif static int ieee80211_hwmp_targetonly = 1;/* reply to PREQs automatically */ static int ieee80211_hwmp_replyforward = 1; /* propagate PREQs */ +#ifdef notyet static int ieee80211_hwmp_pathmaintenance = 2000; static int ieee80211_hwmp_confirmint = 2000; #endif -extern int ieee80211_mesh_ttl; +/* + * Target Address set in a Proactive PREQ. + */ +static const uint8_t proactiveaddr[IEEE80211_ADDR_LEN] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; SYSCTL_NODE(_net_wlan, OID_AUTO, hwmp, CTLFLAG_RD, 0, "IEEE 802.11s HWMP parameters"); SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, maxhops, CTLTYPE_INT | CTLFLAG_RW, &ieee80211_hwmp_maxhops, 0, "Maximum number of hops for paths"); +SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, targetonly, CTLTYPE_INT | CTLFLAG_RW, + &ieee80211_hwmp_targetonly, 0, "TBD"); +SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, replyforward, CTLTYPE_INT | CTLFLAG_RW, + &ieee80211_hwmp_replyforward, 0, "TBD"); #ifdef notyet SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, rootmode, CTLTYPE_INT | CTLFLAG_RW, &ieee80211_hwmp_rootmode, 0, "Root Mesh Point Node"); #endif -static void hwmp_recv_preq(struct ieee80211vap *, - const struct ieee80211_meshpreq_ie *); -static void hwmp_recv_prep(struct ieee80211vap *, - const struct ieee80211_meshprep_ie *); -static void hwmp_recv_perr(struct ieee80211vap *, - const struct ieee80211_meshperr_ie *); +extern int ieee80211_mesh_ttl; +extern int ieee80211_mesh_forwarding; + void ieee80211_hwmp_recv_action(struct ieee80211vap *vap, struct ieee80211_node *ni, @@ -110,7 +138,6 @@ ieee80211_hwmp_recv_action(struct ieee80 struct ieee80211_meshpreq_ie *meshpreq = NULL; struct ieee80211_meshprep_ie *meshprep = NULL; struct ieee80211_meshperr_ie *meshperr = NULL; - union ieee80211_send_action_args vargs; wh = mtod(m0, struct ieee80211_frame *); ia = (struct ieee80211_action *) &wh[1]; @@ -156,43 +183,31 @@ ieee80211_hwmp_recv_action(struct ieee80 if (meshpreq == NULL) { IEEE80211_DISCARD(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, - wh, NULL, "%s", "preq without IE"); + wh, NULL, "%s", "PREQ without IE"); vap->iv_stats.is_rx_mgtdiscard++; return; } - hwmp_recv_preq(vap, meshpreq); - /* - * Is the peer trying to find us? - */ - if (IEEE80211_ADDR_EQ(vap->iv_myaddr, - meshpreq->preq_targets[0].target_addr)) { - struct ieee80211_meshprep_ie prep; - /* - * Build and send a path reply frame. - */ - prep.prep_flags = 0; - prep.prep_hopcount = 0; - prep.prep_ttl = ieee80211_mesh_ttl; - IEEE80211_ADDR_COPY(prep.prep_targetaddr, - meshpreq->preq_targets[0].target_addr); - prep.prep_targetseq = meshpreq->preq_origseq; - prep.prep_lifetime = 5000; - prep.prep_metric = 0; - IEEE80211_ADDR_COPY(prep.prep_origaddr, - vap->iv_myaddr); - prep.prep_origseq = 1; - vargs.ptrarg = &prep; - ieee80211_send_action(ni, - IEEE80211_ACTION_CAT_MESHPATH, - IEEE80211_ACTION_MESHPATH_REP, - vargs); - } + hwmp_recv_preq(vap, ni, meshpreq); break; case IEEE80211_ACTION_MESHPATH_REP: - hwmp_recv_prep(vap, meshprep); + if (meshprep == NULL) { + IEEE80211_DISCARD(vap, + IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, + wh, NULL, "%s", "PREP without IE"); + vap->iv_stats.is_rx_mgtdiscard++; + return; + } + hwmp_recv_prep(vap, ni, meshprep); break; case IEEE80211_ACTION_MESHPATH_ERR: - hwmp_recv_perr(vap, meshperr); + if (meshperr == NULL) { + IEEE80211_DISCARD(vap, + IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, + wh, NULL, "%s", "PERR without IE"); + vap->iv_stats.is_rx_mgtdiscard++; + return; + } + hwmp_recv_perr(vap, ni, meshperr); break; default: IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_MESH, @@ -214,7 +229,7 @@ ieee80211_hwmp_recv_action(struct ieee80 * Add a Mesh Path Reply IE to a frame. */ uint8_t * -ieee80211_add_meshprep(uint8_t *frm, const struct ieee80211_meshprep_ie *prep) +ieee80211_add_meshprep(uint8_t *frm, struct ieee80211_meshprep_ie *prep) { *frm++ = IEEE80211_ELEMID_MESHPREP; @@ -234,21 +249,140 @@ ieee80211_add_meshprep(uint8_t *frm, con return frm; } +#define PREQ_TFLAGS(n) preq->preq_targets[n].target_flags +#define PREQ_TADDR(n) preq->preq_targets[n].target_addr +#define PREQ_TSEQ(n) preq->preq_targets[n].target_seq static void -hwmp_recv_preq(struct ieee80211vap *vap, +hwmp_recv_preq(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshpreq_ie *preq) { + union ieee80211_send_action_args vargs; + + /* + * Acceptance criteria: if the PREQ is not for us and + * forwarding is disabled, discard this PREQ. + */ + if (!IEEE80211_ADDR_EQ(vap->iv_myaddr, PREQ_TADDR(0)) && + !ieee80211_mesh_forwarding) + return; + + /* + * Step 1. Record the PREQ ID and the originator MAC address. + */ + + /* + * Step 2. + */ + + /* + * Step 3. Check if the PREQ is addressed to us. + * XXX: check if this is part of a proxy address. + */ + if (IEEE80211_ADDR_EQ(vap->iv_myaddr, PREQ_TADDR(0))) { + struct ieee80211_meshprep_ie prep; + /* + * Build and send a PREP frame. + */ + prep.prep_flags = 0; + prep.prep_hopcount = 0; + prep.prep_ttl = ieee80211_mesh_ttl; + IEEE80211_ADDR_COPY(prep.prep_targetaddr, + preq->preq_targets[0].target_addr); + prep.prep_targetseq = preq->preq_origseq; + prep.prep_lifetime = preq->preq_lifetime; + prep.prep_metric = IEEE80211_MESHLMETRIC_INITIALVAL; + IEEE80211_ADDR_COPY(prep.prep_origaddr, vap->iv_myaddr); + /* XXX */ + prep.prep_origseq = 1; + vargs.ptrarg = &prep; + ieee80211_send_action(ni, + IEEE80211_ACTION_CAT_MESHPATH, + IEEE80211_ACTION_MESHPATH_REP, + vargs); + return; + } + + /* XXX: Step 4. Check for AE bit and update proxy information */ + + /* + * Step 5. Intermediate reply: check if we have this path on our + * table and the TO bit is unset. + */ + if (!(PREQ_TFLAGS(0) & IEEE80211_MESHPREQ_TFLAGS_TO)) { + + /* + * XXX: Step 6. Update the percursor table + */ + } + + /* + * XXX: Step 8. Proactive PREQ: reply with a proactive PREP to the + * root STA if requested. + */ + if (IEEE80211_ADDR_EQ(PREQ_TADDR(0), proactiveaddr) && + (PREQ_TFLAGS(0) & + ((IEEE80211_MESHPREQ_TFLAGS_TO|IEEE80211_MESHPREQ_TFLAGS_RF) == + (IEEE80211_MESHPREQ_TFLAGS_TO|IEEE80211_MESHPREQ_TFLAGS_RF)))) { + /* + * Does the root want a proactive PREP ? + */ + if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_PP) { + + } + } } +#undef PREQ_TFLAGS +#undef PREQ_TADDR +#undef PREQ_TSEQ static void -hwmp_recv_prep(struct ieee80211vap *vap, +hwmp_recv_prep(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshprep_ie *prep) { } + static void -hwmp_recv_perr(struct ieee80211vap *vap, - const struct ieee80211_meshprep_ie *perr) +hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, + const struct ieee80211_meshperr_ie *perr) { } + +static int +hwmp_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq) +{ + int error; + + error = 0; + switch (ireq->i_type) { +#ifdef notyet + case IEEE80211_IOC_HWMPFI: + if (vap->iv_opmode != IEEE80211_M_MBSS) + return EINVAL; +#endif + default: + return ENOSYS; + } + + return error; +} +IEEE80211_IOCTL_GET(hwmp, hwmp_ioctl_get80211); + +static int +hwmp_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq) +{ + int error; + + error = 0; + switch (ireq->i_type) { +#ifdef notyet + case IEEE80211_IOC_HWMPFI: +#endif + default: + return ENOSYS; + } + + return error; +} +IEEE80211_IOCTL_SET(hwmp, hwmp_ioctl_set80211); Modified: projects/mesh11s/sys/net80211/ieee80211_input.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_input.c Tue May 26 17:54:55 2009 (r192823) +++ projects/mesh11s/sys/net80211/ieee80211_input.c Tue May 26 17:56:43 2009 (r192824) @@ -807,9 +807,9 @@ ieee80211_recv_action(struct ieee80211_n } break; case IEEE80211_ACTION_CAT_MESHPEERING: - case IEEE80211_ACTION_CAT_MESHLINK: + case IEEE80211_ACTION_CAT_MESHLMETRIC: case IEEE80211_ACTION_CAT_MESHPATH: - /* handled by ieee80211_mesh.c */ + /* handled by ieee80211_mesh.c and ieee80211_hwmp.c */ break; default: IEEE80211_NOTE(vap, Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.c Tue May 26 17:54:55 2009 (r192823) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Tue May 26 17:56:43 2009 (r192824) @@ -848,29 +848,31 @@ mesh_recv_action(struct ieee80211_node * ieee80211_hwmp_recv_action(vap, ni, m0); break; /* - * Airtime link metric handling. + * Link Metric handling. */ - case IEEE80211_ACTION_CAT_MESHLINK: + case IEEE80211_ACTION_CAT_MESHLMETRIC: switch (ia->ia_action) { - case IEEE80211_ACTION_MESHLINK_REQ: + case IEEE80211_ACTION_MESHLMETRIC_REQ: { uint32_t metric; + /* XXX: check if we are using airtime or + aother algorithm */ metric = ieee80211_airtime_calc(vap, ni); vargs.ptrarg = &metric; ieee80211_send_action(ni, - IEEE80211_ACTION_CAT_MESHLINK, - IEEE80211_ACTION_MESHLINK_REP, + IEEE80211_ACTION_CAT_MESHLMETRIC, + IEEE80211_ACTION_MESHLMETRIC_REP, vargs); } break; - case IEEE80211_ACTION_MESHLINK_REP: + case IEEE80211_ACTION_MESHLMETRIC_REP: break; default: IEEE80211_DISCARD(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, - wh, NULL, "mesh link using reserved action %d", - ia->ia_action); + wh, NULL, "mesh link metric using reserved " + "action %d", ia->ia_action); vap->iv_stats.is_rx_mgtdiscard++; } break; @@ -1137,7 +1139,7 @@ ieee80211_airtime_calc(struct ieee80211v * Add a Mesh Link Metric report IE to a frame. */ uint8_t * -ieee80211_add_meshlink(uint8_t *frm, uint32_t metric) +ieee80211_add_meshlmetric(uint8_t *frm, uint32_t metric) { *frm++ = IEEE80211_ELEMID_MESHLINK; Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.h Tue May 26 17:54:55 2009 (r192823) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Tue May 26 17:56:43 2009 (r192824) @@ -86,10 +86,11 @@ struct ieee80211_meshid_ie { #define IEEE80211_MESHID_LEN IEEE80211_NWID_LEN /* Link Metric Report */ -struct ieee80211_meshlink_ie { - uint8_t link_ie; /* IEEE80211_ELEMID_MESHLINK */ - uint8_t link_len; - /* XXXRP: missing variable metric */ +struct ieee80211_meshlmetric_ie { + uint8_t lm_ie; /* IEEE80211_ELEMID_MESHLINK */ + uint8_t lm_len; + uint32_t lm_metric; +#define IEEE80211_MESHLMETRIC_INITIALVAL 0 } __packed; /* Congestion Notification */ @@ -216,6 +217,9 @@ struct ieee80211_meshpreq_ie { uint8_t preq_ie; /* IEEE80211_ELEMID_MESHPREQ */ uint8_t preq_len; uint8_t preq_flags; +#define IEEE80211_MESHPREQ_FLAGS_PR 0x01 /* Portal Role */ +#define IEEE80211_MESHPREQ_FLAGS_AE 0x02 /* Address Extension */ +#define IEEE80211_MESHPREQ_FLAGS_PP 0x04 /* Proactive PREP */ uint8_t preq_hopcount; uint8_t preq_ttl; uint32_t preq_id; @@ -227,6 +231,9 @@ struct ieee80211_meshpreq_ie { uint8_t preq_tcount; /* target count */ struct { uint8_t target_flags; +#define IEEE80211_MESHPREQ_TFLAGS_TO 0x01 /* Target Only */ +#define IEEE80211_MESHPREQ_TFLAGS_RF 0x02 /* Reply and Forward */ +#define IEEE80211_MESHPREQ_TFLAGS_USN 0x04 /* Unknown HWMP seq number */ uint8_t target_addr[IEEE80211_ADDR_LEN]; uint32_t target_seq; /* HWMP Sequence Number */ } preq_targets[1] __packed; /* NB: variable size */ @@ -282,7 +289,7 @@ struct ieee80211_meshpuc_ie { * 802.11s Action Frames */ #define IEEE80211_ACTION_CAT_MESHPEERING 30 /* XXX Linux */ -#define IEEE80211_ACTION_CAT_MESHLINK 13 +#define IEEE80211_ACTION_CAT_MESHLMETRIC 13 #define IEEE80211_ACTION_CAT_MESHPATH 32 /* XXX Linux */ #define IEEE80211_ACTION_CAT_INTERWORK 15 #define IEEE80211_ACTION_CAT_RESOURCE 16 @@ -312,8 +319,8 @@ enum { * Mesh Link Metric Action codes. */ enum { - IEEE80211_ACTION_MESHLINK_REQ = 0, /* Link Metric Request */ - IEEE80211_ACTION_MESHLINK_REP = 1, /* Link Metric Report */ + IEEE80211_ACTION_MESHLMETRIC_REQ = 0, /* Link Metric Request */ + IEEE80211_ACTION_MESHLMETRIC_REP = 1, /* Link Metric Report */ /* 2-255 reserved */ }; @@ -334,7 +341,7 @@ uint8_t * ieee80211_add_meshpeer(uint8_t uint16_t); uint32_t ieee80211_airtime_calc(struct ieee80211vap *, struct ieee80211_node *); -uint8_t * ieee80211_add_meshlink(uint8_t *, uint32_t); +uint8_t * ieee80211_add_meshlmetric(uint8_t *, uint32_t); void ieee80211_create_mbss(struct ieee80211vap *, struct ieee80211_channel *); uint32_t ieee80211_mesh_getseq(void); Modified: projects/mesh11s/sys/net80211/ieee80211_node.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_node.h Tue May 26 17:54:55 2009 (r192823) +++ projects/mesh11s/sys/net80211/ieee80211_node.h Tue May 26 17:56:43 2009 (r192824) @@ -88,7 +88,7 @@ struct ieee80211_ies { int len; /* data size in bytes */ }; -enum ieee80211_mesh_state { +enum ieee80211_mesh_mlstate { IEEE80211_NODE_MESH_IDLE = 0, IEEE80211_NODE_MESH_OPENSNT = 1, /* open frame received */ IEEE80211_NODE_MESH_OPENRCV = 2, /* open frame sent */ @@ -184,15 +184,12 @@ struct ieee80211_node { uint8_t ni_dtim_count; /* DTIM count for last bcn */ /* 11s state */ - enum ieee80211_mesh_state ni_mlstate; /* peering management state */ + enum ieee80211_mesh_mlstate ni_mlstate; /* peering management state */ uint16_t ni_mllid; /* link local ID */ uint16_t ni_mlpid; /* link peer ID */ struct callout ni_mltimer; /* link mesh timer */ uint8_t ni_mlrcnt; /* link mesh retry counter */ uint8_t ni_mltval; /* link mesh timer value */ - uint8_t ni_mnxthop[IEEE80211_ADDR_LEN]; - uint32_t ni_mpmetric; /* path metric */ - ieee80211_seq ni_mhwmpseq; /* HWMP path seq number */ /* 11n state */ uint16_t ni_htcap; /* HT capabilities */ From owner-svn-src-projects@FreeBSD.ORG Tue May 26 17:57:37 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C7501065678; Tue, 26 May 2009 17:57:37 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8B84E8FC1C; Tue, 26 May 2009 17:57:37 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QHvbMQ067587; Tue, 26 May 2009 17:57:37 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QHvb4s067586; Tue, 26 May 2009 17:57:37 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905261757.n4QHvb4s067586@svn.freebsd.org> From: Rui Paulo Date: Tue, 26 May 2009 17:57:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192825 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 17:57:38 -0000 Author: rpaulo Date: Tue May 26 17:57:37 2009 New Revision: 192825 URL: http://svn.freebsd.org/changeset/base/192825 Log: Remove static from fowarding variable. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.c Tue May 26 17:56:43 2009 (r192824) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Tue May 26 17:57:37 2009 (r192825) @@ -87,7 +87,7 @@ static const int ieee80211_mesh_confirmt #define CONFIRM_TIMEOUT msecs_to_ticks(ieee80211_mesh_confirmtimeout) static const int ieee80211_mesh_maxretries = 2; int ieee80211_mesh_ttl = 31; -static int ieee80211_mesh_forwarding = 1; +int ieee80211_mesh_forwarding = 1; SYSCTL_NODE(_net_wlan, OID_AUTO, mesh, CTLFLAG_RD, 0, "IEEE 802.11s parameters"); From owner-svn-src-projects@FreeBSD.ORG Tue May 26 22:40:12 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC980106564A; Tue, 26 May 2009 22:40:12 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CA50F8FC1E; Tue, 26 May 2009 22:40:12 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4QMeCPZ076144; Tue, 26 May 2009 22:40:12 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4QMeC47076137; Tue, 26 May 2009 22:40:12 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905262240.n4QMeC47076137@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Tue, 26 May 2009 22:40:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192864 - in projects/mips/sys: conf mips/conf mips/include mips/malta mips/mips X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2009 22:40:13 -0000 Author: gonzo Date: Tue May 26 22:40:12 2009 New Revision: 192864 URL: http://svn.freebsd.org/changeset/base/192864 Log: - Replace CPU_NOFPU and SOFTFLOAT options with CPU_FPU. By default we assume that there is no FPU, because majority of SoC does not have it. Modified: projects/mips/sys/conf/options.mips projects/mips/sys/mips/conf/AR71XX projects/mips/sys/mips/conf/SENTRY5 projects/mips/sys/mips/include/float.h projects/mips/sys/mips/malta/std.malta projects/mips/sys/mips/mips/locore.S projects/mips/sys/mips/mips/trap.c Modified: projects/mips/sys/conf/options.mips ============================================================================== --- projects/mips/sys/conf/options.mips Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/conf/options.mips Tue May 26 22:40:12 2009 (r192864) @@ -31,8 +31,8 @@ CPU_MIPS4KC opt_global.h CPU_MIPS32 opt_global.h CPU_MIPS64 opt_global.h -CPU_NOFPU opt_global.h CPU_SENTRY5 opt_global.h +CPU_HAVEFPU opt_global.h ISA_MIPS1 opt_cputype.h ISA_MIPS3 opt_cputype.h @@ -48,7 +48,6 @@ CFE_CONSOLE opt_global.h KERNPHYSADDR opt_global.h KERNVIRTADDR opt_global.h PHYSADDR opt_global.h -SOFTFLOAT opt_global.h TARGET_OCTEON opt_global.h TARGET_EMULATOR opt_ddb.h Modified: projects/mips/sys/mips/conf/AR71XX ============================================================================== --- projects/mips/sys/mips/conf/AR71XX Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/conf/AR71XX Tue May 26 22:40:12 2009 (r192864) @@ -4,7 +4,6 @@ ident AR71XX cpu CPU_MIPS4KC -options CPU_NOFPU options ISA_MIPS32 makeoptions TARGET_BIG_ENDIAN makeoptions KERNLOADADDR=0x80050000 Modified: projects/mips/sys/mips/conf/SENTRY5 ============================================================================== --- projects/mips/sys/mips/conf/SENTRY5 Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/conf/SENTRY5 Tue May 26 22:40:12 2009 (r192864) @@ -26,7 +26,6 @@ ident SENTRY5 cpu CPU_MIPS4KC -options CPU_NOFPU options ISA_MIPS32 options CPU_SENTRY5 # XXX should this be a # sub-cpu option? Modified: projects/mips/sys/mips/include/float.h ============================================================================== --- projects/mips/sys/mips/include/float.h Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/include/float.h Tue May 26 22:40:12 2009 (r192864) @@ -42,10 +42,10 @@ extern int __flt_rounds(void); __END_DECLS #define FLT_RADIX 2 /* b */ -#ifdef SOFTFLOAT -#define FLT_ROUNDS -1 -#else +#ifdef CPU_HAVEFPU #define FLT_ROUNDS __flt_rounds() /* FP addition rounds to nearest */ +#else +#define FLT_ROUNDS -1 #endif /* * XXXMIPS: MIPS32 has both float and double type, so set FLT_EVAL_METHOD Modified: projects/mips/sys/mips/malta/std.malta ============================================================================== --- projects/mips/sys/mips/malta/std.malta Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/malta/std.malta Tue May 26 22:40:12 2009 (r192864) @@ -3,7 +3,6 @@ files "../malta/files.malta" cpu CPU_MIPS4KC options ISA_MIPS32 -options SOFTFLOAT device pci device ata device atadisk Modified: projects/mips/sys/mips/mips/locore.S ============================================================================== --- projects/mips/sys/mips/mips/locore.S Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/mips/locore.S Tue May 26 22:40:12 2009 (r192864) @@ -145,7 +145,7 @@ VECTOR(_locore, unknown) /* Read and store the PrID FPU ID for CPU identification, if any. */ mfc0 t2, COP_0_STATUS_REG mfc0 t0, MIPS_COP_0_PRID -#ifndef CPU_NOFPU +#ifdef CPU_HAVEFPU and t2, MIPS_SR_COP_1_BIT beqz t2, 1f move t1, zero Modified: projects/mips/sys/mips/mips/trap.c ============================================================================== --- projects/mips/sys/mips/mips/trap.c Tue May 26 22:34:13 2009 (r192863) +++ projects/mips/sys/mips/mips/trap.c Tue May 26 22:40:12 2009 (r192864) @@ -928,7 +928,7 @@ dofault: goto err; break; case T_COP_UNUSABLE + T_USER: -#if defined(SOFTFLOAT) +#if !defined(CPU_HAVEFPU) /* FP (COP1) instruction */ if ((trapframe->cause & CR_COP_ERR) == 0x10000000) { i = SIGILL; From owner-svn-src-projects@FreeBSD.ORG Wed May 27 00:06:19 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7D23106564A; Wed, 27 May 2009 00:06:19 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D5EDF8FC12; Wed, 27 May 2009 00:06:19 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4R06JU9077963; Wed, 27 May 2009 00:06:19 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4R06JhW077962; Wed, 27 May 2009 00:06:19 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905270006.n4R06JhW077962@svn.freebsd.org> From: Rui Paulo Date: Wed, 27 May 2009 00:06:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192865 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 00:06:20 -0000 Author: rpaulo Date: Wed May 27 00:06:19 2009 New Revision: 192865 URL: http://svn.freebsd.org/changeset/base/192865 Log: Add remaining mesh conf bits and improve style. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.h Tue May 26 22:40:12 2009 (r192864) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Wed May 27 00:06:19 2009 (r192865) @@ -52,30 +52,42 @@ struct ieee80211_meshconf_ie { /* Null Protocol */ #define IEEE80211_MESHCONF_NULL_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_NULL_VALUE 0xff -#define IEEE80211_MESHCONF_NULL { IEEE80211_MESHCONF_NULL_OUI, IEEE80211_MESHCONF_NULL_VALUE } +#define IEEE80211_MESHCONF_NULL { IEEE80211_MESHCONF_NULL_OUI, \ + IEEE80211_MESHCONF_NULL_VALUE } /* Hybrid Wireless Mesh Protocol */ #define IEEE80211_MESHCONF_HWMP_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_HWMP_VALUE 0xff /* XXX Linux */ -#define IEEE80211_MESHCONF_HWMP { IEEE80211_MESHCONF_HWMP_OUI, IEEE80211_MESHCONF_HWMP_VALUE } +#define IEEE80211_MESHCONF_HWMP { IEEE80211_MESHCONF_HWMP_OUI, \ + IEEE80211_MESHCONF_HWMP_VALUE } /* Airtime Link Metric */ #define IEEE80211_MESHCONF_AIRTIME_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_AIRTIME_VALUE 0xff /* XXX Linux */ -#define IEEE80211_MESHCONF_AIRTIME { IEEE80211_MESHCONF_AIRTIME_OUI, IEEE80211_MESHCONF_AIRTIME_VALUE } +#define IEEE80211_MESHCONF_AIRTIME { IEEE80211_MESHCONF_AIRTIME_OUI, \ + IEEE80211_MESHCONF_AIRTIME_VALUE } /* Congestion Control Signaling */ #define IEEE80211_MESHCONF_CCSIG_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_CCSIG_VALUE 0xff /* XXX Linux */ -#define IEEE80211_MESHCONF_CCSIG { IEEE80211_MESHCONF_CCSIG_OUI, IEEE80211_MESHCONF_CCSIG_VALUE } +#define IEEE80211_MESHCONF_CCSIG { IEEE80211_MESHCONF_CCSIG_OUI,\ + IEEE80211_MESHCONF_CCSIG_VALUE } /* Neighbour Offset */ #define IEEE80211_MESHCONF_NEIGHOFF_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_NEIGHOFF_VALUE 0x00 -#define IEEE80211_MESHCONF_NEIGHOFF { IEEE80211_MESHCONF_NEIGHOFF_OUI, IEEE80211_MESHCONF_NEIGHOFF_VALUE } +#define IEEE80211_MESHCONF_NEIGHOFF { IEEE80211_MESHCONF_NEIGHOFF_OUI, \ + IEEE80211_MESHCONF_NEIGHOFF_VALUE } /* Simultaneous Authenticaction of Equals */ #define IEEE80211_MESHCONF_SAE_OUI 0x00, 0x0f, 0xac #define IEEE80211_MESHCONF_SAE_VALUE 0x01 -#define IEEE80211_MESHCONF_SAE { IEEE80211_MESHCONF_SAE_OUI, IEEE80211_MESHCONF_SAE_VALUE } -#define IEEE80211_MESHCONF_FORM_MP (1 << 1) /* connected to portal */ -#define IEEE80211_MESHCONF_FORM_NEIGH (1 << 4) /* no of neighbours */ -/* XXX ... */ +#define IEEE80211_MESHCONF_SAE { IEEE80211_MESHCONF_SAE_OUI, \ + IEEE80211_MESHCONF_SAE_VALUE } +#define IEEE80211_MESHCONF_FORM_MP 0x01 /* Connected to Portal */ +#define IEEE80211_MESHCONF_FORM_NNEIGH_MASK 0x04 /* Number of Neighbours */ +#define IEEE80211_MESHCONF_CAP_AP 0x01 /* Accepting Peers */ +#define IEEE80211_MESHCONF_CAP_MCCAS 0x02 /* MCCA supported */ +#define IEEE80211_MESHCONF_CAP_MCCAE 0x04 /* MCCA enabled */ +#define IEEE80211_MESHCONF_CAP_FRWD 0x08 /* forwarding enabled */ +#define IEEE80211_MESHCONF_CAP_BTR 0x10 /* Beacon Timing Report Enab */ +#define IEEE80211_MESHCONF_CAP_TBTTA 0x20 /* TBTT Adj. Enabled */ +#define IEEE80211_MESHCONF_CAP_PSL 0x40 /* Power Save Level */ /* Mesh Identifier */ struct ieee80211_meshid_ie { From owner-svn-src-projects@FreeBSD.ORG Wed May 27 00:20:33 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C67C71065677; Wed, 27 May 2009 00:20:33 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9A3558FC22; Wed, 27 May 2009 00:20:33 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4R0KXI2078316; Wed, 27 May 2009 00:20:33 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4R0KXXO078315; Wed, 27 May 2009 00:20:33 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905270020.n4R0KXXO078315@svn.freebsd.org> From: Rui Paulo Date: Wed, 27 May 2009 00:20:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192866 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 00:20:34 -0000 Author: rpaulo Date: Wed May 27 00:20:33 2009 New Revision: 192866 URL: http://svn.freebsd.org/changeset/base/192866 Log: Initial handling of PREPs. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Wed May 27 00:06:19 2009 (r192865) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Wed May 27 00:20:33 2009 (r192866) @@ -295,10 +295,8 @@ hwmp_recv_preq(struct ieee80211vap *vap, /* XXX */ prep.prep_origseq = 1; vargs.ptrarg = &prep; - ieee80211_send_action(ni, - IEEE80211_ACTION_CAT_MESHPATH, - IEEE80211_ACTION_MESHPATH_REP, - vargs); + ieee80211_send_action(ni, IEEE80211_ACTION_CAT_MESHPATH, + IEEE80211_ACTION_MESHPATH_REP, vargs); return; } @@ -339,6 +337,55 @@ static void hwmp_recv_prep(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshprep_ie *prep) { + union ieee80211_send_action_args vargs; + + /* + * Acceptance criteria: if the PREP was not generated by us and + * forwarding is disabled, discard this PREP. + */ + if (!IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_origaddr) && + !ieee80211_mesh_forwarding) + return; + + /* + * Step 1: Update the Forwarding Information. + */ + + /* + * Step 2: If it's NOT for us, propagate the PREP if TTL is + * greater than 1. + */ + if (!IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_targetaddr) && + prep->prep_ttl > 1) { + struct ieee80211_meshprep_ie pprep; /* propagated PREP */ + + memcpy(&pprep, prep, sizeof(pprep)); + pprep.prep_hopcount += 1; + pprep.prep_ttl -= 1; + pprep.prep_metric += ieee80211_airtime_calc(vap, ni); + IEEE80211_ADDR_COPY(pprep.prep_origaddr, vap->iv_myaddr); + pprep.prep_origseq = 1; /* XXX */ + + vargs.ptrarg = &pprep; + ieee80211_send_action(ni, IEEE80211_ACTION_CAT_MESHPATH, + IEEE80211_ACTION_MESHPATH_REQ, vargs); + + /* + * XXX: Step 5: update the precursor list. + */ + return; + } + + /* + * XXX: Step 3: If it's for us and the AE bit is set, update the + * proxy information table. + */ + + /* + * XXX: Step 4: If it's NOT for us and the AE bit is set, + * update the proxy information table. + */ + } From owner-svn-src-projects@FreeBSD.ORG Wed May 27 20:01:45 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2137510656D4; Wed, 27 May 2009 20:01:45 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0FE798FC21; Wed, 27 May 2009 20:01:45 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RK1iOh010384; Wed, 27 May 2009 20:01:44 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RK1iu8010383; Wed, 27 May 2009 20:01:44 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905272001.n4RK1iu8010383@svn.freebsd.org> From: Rui Paulo Date: Wed, 27 May 2009 20:01:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192931 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 20:01:45 -0000 Author: rpaulo Date: Wed May 27 20:01:44 2009 New Revision: 192931 URL: http://svn.freebsd.org/changeset/base/192931 Log: Style changes for the node information struct. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Wed May 27 19:56:51 2009 (r192930) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Wed May 27 20:01:44 2009 (r192931) @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); #endif /* - * IEEE 802.11s Hybrid Wireless Mesh Protocol. + * IEEE 802.11s Hybrid Wireless Mesh Protocol, HWMP. * * Based on March 2009, D3.0 802.11s draft spec. */ @@ -63,20 +63,20 @@ __FBSDID("$FreeBSD$"); #include #include - /* * HWMP Forwarding Information table. */ -struct ieee80211_hwmp_forwardinfo { - TAILQ_ENTRY(ieee80211_hwmp_path) hp_list; - uint8_t hp_target[IEEE80211_ADDR_LEN]; - ieee80211_seq hp_seq; /* HWMP sequence number */ - uint8_t hp_mnxthop[IEEE80211_ADDR_LEN]; - uint32_t hp_metric; /* Path Metric */ - uint32_t hp_nhops; /* Number of Hops */ +struct ieee80211_hwmp_fi { + TAILQ_ENTRY(ieee80211_hwmp_fi) fi_list; + uint8_t fi_target[IEEE80211_ADDR_LEN]; + ieee80211_seq fi_seq; /* HWMP sequence number */ + uint8_t fi_mnxthop[IEEE80211_ADDR_LEN]; + uint32_t fi_metric; /* Path Metric */ + uint32_t fi_nhops; /* Number of Hops */ /* XXX percursor list */ - uint32_t hp_lifetime; + uint32_t fi_lifetime; }; +TAILQ_HEAD(, ieee80211_hwmp_fi) ieee80211_hwmp_ft; static void hwmp_recv_preq(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshpreq_ie *); From owner-svn-src-projects@FreeBSD.ORG Wed May 27 20:03:09 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D6AC1065715; Wed, 27 May 2009 20:03:09 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BC898FC13; Wed, 27 May 2009 20:03:09 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RK39X9010449; Wed, 27 May 2009 20:03:09 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RK39su010447; Wed, 27 May 2009 20:03:09 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905272003.n4RK39su010447@svn.freebsd.org> From: Rui Paulo Date: Wed, 27 May 2009 20:03:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192932 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 20:03:10 -0000 Author: rpaulo Date: Wed May 27 20:03:09 2009 New Revision: 192932 URL: http://svn.freebsd.org/changeset/base/192932 Log: Fix a bug on peering managent parsing that was only visible on 11a. Add notyet code for future usage. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c projects/mesh11s/sys/net80211/ieee80211_node.h Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.c Wed May 27 20:01:44 2009 (r192931) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Wed May 27 20:03:09 2009 (r192932) @@ -652,36 +652,49 @@ mesh_recv_action(struct ieee80211_node * return; } - while (efrm - frm > 1) { - IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1] + 2, return); - switch (*frm) { - case IEEE80211_ELEMID_MESHID: - meshid = (struct ieee80211_meshid_ie *) frm; - break; - case IEEE80211_ELEMID_MESHCONF: - meshconf = (struct ieee80211_meshconf_ie *) frm; - break; - case IEEE80211_ELEMID_MESHPEER: - meshpeer = (struct ieee80211_meshpeer_ie *) frm; - meshpeer->peer_llinkid = - LE_READ_2(&meshpeer->peer_llinkid); - meshpeer->peer_linkid = - LE_READ_2(&meshpeer->peer_linkid); - meshpeer->peer_rcode = - LE_READ_2(&meshpeer->peer_rcode); - break; - } - frm += frm[1] + 2; - } - switch (ia->ia_category) { /* * Mesh Peer Link Management Finite State Machine handling. */ case IEEE80211_ACTION_CAT_MESHPEERING: /* - * Check if we agree on the required fields. + * Compute the start of fixed/tagged parameters. + */ + switch (ia->ia_action) { + case IEEE80211_ACTION_MESHPEERING_OPEN: + frm += 2; /* capabilites */ + break; + case IEEE80211_ACTION_MESHPEERING_CONFIRM: + frm += 2 + 2 + 2; /* capabilites + status code + AID */ + break; + case IEEE80211_ACTION_MESHPEERING_CLOSE: + break; + } + /* + * And parse them. */ + while (efrm - frm > 1) { + IEEE80211_VERIFY_LENGTH(efrm - frm, frm[1] + 2, return); + switch (*frm) { + case IEEE80211_ELEMID_MESHID: + meshid = (struct ieee80211_meshid_ie *) frm; + break; + case IEEE80211_ELEMID_MESHCONF: + meshconf = (struct ieee80211_meshconf_ie *) frm; + break; + case IEEE80211_ELEMID_MESHPEER: + meshpeer = (struct ieee80211_meshpeer_ie *) frm; + meshpeer->peer_llinkid = + LE_READ_2(&meshpeer->peer_llinkid); + meshpeer->peer_linkid = + LE_READ_2(&meshpeer->peer_linkid); + meshpeer->peer_rcode = + LE_READ_2(&meshpeer->peer_rcode); + break; + } + frm += frm[1] + 2; + } + if (mesh_verify_meshid(vap, meshid) || mesh_verify_meshconf(vap, meshconf) || !meshpeer) { @@ -691,6 +704,13 @@ mesh_recv_action(struct ieee80211_node * vap->iv_stats.is_rx_mgtdiscard++; return; } +#ifdef notyet + if (!(meshconf->conf_cap & IEEE80211_MESHCONF_CAP_AP)) { + IEEE80211_DISCARD(vap, + IEEE80211_MSG_MESH, + wh, NULL, "%s", "neighbor not accepting peers"); + } +#endif switch (ia->ia_action) { case IEEE80211_ACTION_MESHPEERING_OPEN: IEEE80211_NOTE(vap, @@ -1004,14 +1024,32 @@ mesh_verify_meshid(struct ieee80211vap * return memcmp(vap->iv_meshid, (uint8_t *)&meshid[1], vap->iv_meshidlen); } -static __inline int +static int mesh_verify_meshconf(struct ieee80211vap *vap, struct ieee80211_meshconf_ie *meshconf) { +#ifdef notyet + static const uint8_t null[4] = IEEE80211_MESHCONF_NULL; + static const uint8_t hwmp[4] = IEEE80211_MESHCONF_HWMP; + static const uint8_t airtime[4] = IEEE80211_MESHCONF_AIRTIME; +#endif if (meshconf == NULL) return 1; - /* XXX TBD */ +#ifdef notyet + if (meshconf->conf_ver != IEEE80211_MESHCONF_VERSION) + return 1; + if (memcmp(meshconf->conf_pselid, hwmp, 4) != 0) + return 1; + if (memcmp(meshconf->conf_pmetid, airtime, 4) != 0) + return 1; + if (memcmp(meshconf->conf_ccid, null, 4) != 0) + return 1; + if (memcmp(meshconf->conf_syncid, null, 4) != 0) + return 1; + if (memcmp(meshconf->conf_authid, null, 4) != 0) + return 1; +#endif return 0; } Modified: projects/mesh11s/sys/net80211/ieee80211_node.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_node.h Wed May 27 20:01:44 2009 (r192931) +++ projects/mesh11s/sys/net80211/ieee80211_node.h Wed May 27 20:03:09 2009 (r192932) @@ -88,6 +88,9 @@ struct ieee80211_ies { int len; /* data size in bytes */ }; +/* + * 802.11s (Mesh) Peer Link FSM state. + */ enum ieee80211_mesh_mlstate { IEEE80211_NODE_MESH_IDLE = 0, IEEE80211_NODE_MESH_OPENSNT = 1, /* open frame received */ From owner-svn-src-projects@FreeBSD.ORG Wed May 27 22:15:55 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F7511065732; Wed, 27 May 2009 22:15:55 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1E20D8FC16; Wed, 27 May 2009 22:15:55 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RMFtNs013741; Wed, 27 May 2009 22:15:55 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RMFtiN013740; Wed, 27 May 2009 22:15:55 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905272215.n4RMFtiN013740@svn.freebsd.org> From: Robert Watson Date: Wed, 27 May 2009 22:15:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192935 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 22:15:55 -0000 Author: rwatson Date: Wed May 27 22:15:54 2009 New Revision: 192935 URL: http://svn.freebsd.org/changeset/base/192935 Log: Two netisr2 bug fixes for non-contiguous CPU IDs when using the NETISR_POLICY_SOURCE policy. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Wed May 27 22:02:54 2009 (r192934) +++ projects/pnet/sys/net/netisr2.c Wed May 27 22:15:54 2009 (r192935) @@ -622,9 +622,10 @@ netisr2_selectcpu(struct netisr_proto *n case NETISR_POLICY_SOURCE: ifp = m->m_pkthdr.rcvif; if (ifp != NULL) - *cpuidp = (ifp->if_index + source) % nws_count; + *cpuidp = nws_array[(ifp->if_index + source) % + nws_count]; else - *cpuidp = source % nws_count; + *cpuidp = nws_array[source % nws_count]; return (m); default: From owner-svn-src-projects@FreeBSD.ORG Wed May 27 22:23:17 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42EF7106566C; Wed, 27 May 2009 22:23:17 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 30F6F8FC1D; Wed, 27 May 2009 22:23:17 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RMNH5H013928; Wed, 27 May 2009 22:23:17 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RMNHJT013926; Wed, 27 May 2009 22:23:17 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905272223.n4RMNHJT013926@svn.freebsd.org> From: Robert Watson Date: Wed, 27 May 2009 22:23:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192936 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 22:23:17 -0000 Author: rwatson Date: Wed May 27 22:23:16 2009 New Revision: 192936 URL: http://svn.freebsd.org/changeset/base/192936 Log: Be more specific about whether a 'cpu' is a CPU ID or not. Modified: projects/pnet/sys/net/netisr2.c projects/pnet/sys/net/netisr2.h Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Wed May 27 22:15:54 2009 (r192935) +++ projects/pnet/sys/net/netisr2.c Wed May 27 22:23:16 2009 (r192936) @@ -181,7 +181,7 @@ struct netisr_proto { const char *np_name; /* Character string protocol name. */ netisr_t *np_handler; /* Protocol handler. */ netisr_m2flow_t *np_m2flow; /* Query flow for untagged packet. */ - netisr_m2cpu_t *np_m2cpu; /* Query CPU to process packet on. */ + netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ u_int np_qlimit; /* Maximum per-CPU queue depth. */ u_int np_policy; /* Work placement policy. */ }; @@ -358,11 +358,11 @@ netisr2_register(const struct netisr_han nhp->nh_m2flow == NULL, ("netisr2_register: nh_policy != FLOW but m2flow defined for %s", name)); - KASSERT(nhp->nh_policy == NETISR_POLICY_CPU || nhp->nh_m2cpu == NULL, - ("netisr2_register: nh_policy != CPU but m2cpu defined for %s", + KASSERT(nhp->nh_policy == NETISR_POLICY_CPU || nhp->nh_m2cpuid == NULL, + ("netisr2_register: nh_policy != CPU but m2cpuid defined for %s", name)); - KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpu != NULL, - ("netisr2_register: nh_policy == CPU but m2cpu not defined for " + KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpuid != NULL, + ("netisr2_register: nh_policy == CPU but m2cpuid not defined for " "%s", name)); KASSERT(nhp->nh_qlimit != 0, ("netisr2_register: nh_qlimit 0 for %s", name)); @@ -373,7 +373,7 @@ netisr2_register(const struct netisr_han np[proto].np_name = name; np[proto].np_handler = nhp->nh_handler; np[proto].np_m2flow = nhp->nh_m2flow; - np[proto].np_m2cpu = nhp->nh_m2cpu; + np[proto].np_m2cpuid = nhp->nh_m2cpuid; if (nhp->nh_qlimit > netisr_maxqlimit) { printf("netisr2_register: %s requested queue limit %u " "capped to net.isr2.maxqlimit %u\n", name, @@ -564,7 +564,7 @@ netisr2_unregister(const struct netisr_h np[proto].np_name = NULL; np[proto].np_handler = NULL; np[proto].np_m2flow = NULL; - np[proto].np_m2cpu = NULL; + np[proto].np_m2cpuid = NULL; np[proto].np_qlimit = 0; np[proto].np_policy = 0; for (i = 0; i < MAXCPU; i++) { @@ -581,8 +581,8 @@ netisr2_unregister(const struct netisr_h * for assistance if required. */ static struct mbuf * -netisr2_selectcpu(struct netisr_proto *npp, uintptr_t source, struct mbuf *m, - u_int *cpuidp) +netisr2_select_cpuid(struct netisr_proto *npp, uintptr_t source, + struct mbuf *m, u_int *cpuidp) { struct ifnet *ifp; @@ -604,7 +604,7 @@ netisr2_selectcpu(struct netisr_proto *n */ switch (npp->np_policy) { case NETISR_POLICY_CPU: - return (npp->np_m2cpu(m, source, cpuidp)); + return (npp->np_m2cpuid(m, source, cpuidp)); case NETISR_POLICY_FLOW: if (!(m->m_flags & M_FLOWID) && npp->np_m2flow != NULL) { @@ -629,7 +629,7 @@ netisr2_selectcpu(struct netisr_proto *n return (m); default: - panic("netisr2_selectcpu: invalid policy %u for %s", + panic("netisr2_select_cpuid: invalid policy %u for %s", npp->np_policy, npp->np_name); } } @@ -827,7 +827,7 @@ netisr2_queue_src(u_int proto, uintptr_t KASSERT(np[proto].np_handler != NULL, ("netisr2_queue_src: invalid proto %d", proto)); - m = netisr2_selectcpu(&np[proto], source, m, &cpuid); + m = netisr2_select_cpuid(&np[proto], source, m, &cpuid); if (m != NULL) error = netisr2_queue_internal(proto, m, cpuid); else @@ -897,7 +897,7 @@ netisr2_dispatch_src(u_int proto, uintpt * dispatch if we're on the right CPU and the netisr worker isn't * already running. */ - m = netisr2_selectcpu(&np[proto], source, m, &cpuid); + m = netisr2_select_cpuid(&np[proto], source, m, &cpuid); if (m == NULL) { NETISR_RUNLOCK(&tracker); return (ENOBUFS); Modified: projects/pnet/sys/net/netisr2.h ============================================================================== --- projects/pnet/sys/net/netisr2.h Wed May 27 22:15:54 2009 (r192935) +++ projects/pnet/sys/net/netisr2.h Wed May 27 22:23:16 2009 (r192936) @@ -35,7 +35,7 @@ /*- * Protocols express ordering constraints and affinity preferences by - * implementing one or neither of nh_m2flow and nh_m2cpu, which are used by + * implementing one or neither of nh_m2flow and nh_m2cpuid, which are used by * netisr2 to determine which per-CPU workstream to assign mbufs to. * * The following policies may be used by protocols: @@ -52,7 +52,7 @@ * flow ID, falling back on source ordering. * * NETISR_POLICY_CPU - netisr2 will delegate all work placement decisions to - * the protocol, querying nh_m2cpu for each packet. + * the protocol, querying nh_m2cpuid for each packet. * * Protocols might make decisions about work placement based on an existing * calculated flow ID on the mbuf, such as one provided in hardware, the @@ -65,7 +65,7 @@ * protocol handlers to notify them of CPU configuration changes so that they * can rebalance work. */ -typedef struct mbuf *netisr_m2cpu_t(struct mbuf *m, uintptr_t source, +typedef struct mbuf *netisr_m2cpuid_t(struct mbuf *m, uintptr_t source, u_int *cpuid); typedef struct mbuf *netisr_m2flow_t(struct mbuf *m, uintptr_t source); @@ -80,7 +80,7 @@ struct netisr_handler { const char *nh_name; /* Character string protocol name. */ netisr_t *nh_handler; /* Protocol handler. */ netisr_m2flow_t *nh_m2flow; /* Query flow for untagged packet. */ - netisr_m2cpu_t *nh_m2cpu; /* Query CPU to process packet on. */ + netisr_m2cpuid_t *nh_m2cpuid; /* Query CPU to process mbuf on. */ u_int nh_proto; /* Integer protocol ID. */ u_int nh_qlimit; /* Maximum per-CPU queue depth. */ u_int nh_policy; /* Work placement policy. */ From owner-svn-src-projects@FreeBSD.ORG Wed May 27 23:31:41 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3CC021065672; Wed, 27 May 2009 23:31:41 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2AD5E8FC24; Wed, 27 May 2009 23:31:41 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RNVf3u015566; Wed, 27 May 2009 23:31:41 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RNVfRw015565; Wed, 27 May 2009 23:31:41 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <200905272331.n4RNVfRw015565@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 27 May 2009 23:31:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192939 - projects/jbuild/usr.bin/jbuild/port X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 23:31:41 -0000 Author: rodrigc Date: Wed May 27 23:31:40 2009 New Revision: 192939 URL: http://svn.freebsd.org/changeset/base/192939 Log: Fix paths Modified: projects/jbuild/usr.bin/jbuild/port/Makefile Modified: projects/jbuild/usr.bin/jbuild/port/Makefile ============================================================================== --- projects/jbuild/usr.bin/jbuild/port/Makefile Wed May 27 23:12:02 2009 (r192938) +++ projects/jbuild/usr.bin/jbuild/port/Makefile Wed May 27 23:31:40 2009 (r192939) @@ -15,11 +15,11 @@ do-fetch: do-extract: mkdir -p ${WRKSRC} - ( cd ${WRKSRC} ; ln -s ../../../* . ) + ( cd ${WRKSRC} ; ln -s ../../../filemon . ; ln -s ../../../../jbuild .; ln -s ../../../../jdirdep .; ln -s ../../../../make .) cp Makefile.port ${WRKSRC}/Makefile do-install: - ( cd ${WRKSRC}/filemon.ko; ${MAKE} install BINDIR=/boot/modules ) + ( cd ${WRKSRC}/filemon; ${MAKE} install BINDIR=/boot/modules ) ( cd ${WRKSRC}/jbuild; ${MAKE} install BINDIR=${PREFIX}/bin ) ( cd ${WRKSRC}/jdirdep; ${MAKE} install BINDIR=${PREFIX}/bin ) cp ${WRKSRC}/jdirdep/jgetsrc ${PREFIX}/bin From owner-svn-src-projects@FreeBSD.ORG Wed May 27 23:45:39 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C2FB106566B; Wed, 27 May 2009 23:45:39 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A5688FC1A; Wed, 27 May 2009 23:45:39 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4RNjdTs015913; Wed, 27 May 2009 23:45:39 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4RNjd4B015912; Wed, 27 May 2009 23:45:39 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <200905272345.n4RNjd4B015912@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 27 May 2009 23:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192940 - projects/jbuild/usr.bin/jbuild/port X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2009 23:45:39 -0000 Author: rodrigc Date: Wed May 27 23:45:39 2009 New Revision: 192940 URL: http://svn.freebsd.org/changeset/base/192940 Log: Add message file Added: projects/jbuild/usr.bin/jbuild/port/pkg-message Added: projects/jbuild/usr.bin/jbuild/port/pkg-message ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/port/pkg-message Wed May 27 23:45:39 2009 (r192940) @@ -0,0 +1,12 @@ +After installing the jbuild package, do: + + kldload filemon.ko + +to load the filemon kernel module. + +Add the following to /boot/loader.conf +to automatically load the module on system reboot: + + filemon_load="YES" + + From owner-svn-src-projects@FreeBSD.ORG Thu May 28 00:05:16 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 793D71065670; Thu, 28 May 2009 00:05:16 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C29B8FC17; Thu, 28 May 2009 00:05:16 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S05GBW016366; Thu, 28 May 2009 00:05:16 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S05GH0016364; Thu, 28 May 2009 00:05:16 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905280005.n4S05GH0016364@svn.freebsd.org> From: Rui Paulo Date: Thu, 28 May 2009 00:05:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192941 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 00:05:16 -0000 Author: rpaulo Date: Thu May 28 00:05:16 2009 New Revision: 192941 URL: http://svn.freebsd.org/changeset/base/192941 Log: Build our own function to send action frames with path replies because ieee80211_send_action() is only for unicast frames. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_hwmp.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Wed May 27 23:45:39 2009 (r192940) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Thu May 28 00:05:16 2009 (r192941) @@ -82,6 +82,10 @@ static void hwmp_recv_preq(struct ieee80 const struct ieee80211_meshpreq_ie *); static void hwmp_recv_prep(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshprep_ie *); +static int hwmp_send_prep(struct ieee80211_node *, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const struct ieee80211_meshprep_ie *); static void hwmp_recv_perr(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshperr_ie *); @@ -229,7 +233,7 @@ ieee80211_hwmp_recv_action(struct ieee80 * Add a Mesh Path Reply IE to a frame. */ uint8_t * -ieee80211_add_meshprep(uint8_t *frm, struct ieee80211_meshprep_ie *prep) +ieee80211_add_meshprep(uint8_t *frm, const struct ieee80211_meshprep_ie *prep) { *frm++ = IEEE80211_ELEMID_MESHPREP; @@ -256,8 +260,6 @@ static void hwmp_recv_preq(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshpreq_ie *preq) { - union ieee80211_send_action_args vargs; - /* * Acceptance criteria: if the PREQ is not for us and * forwarding is disabled, discard this PREQ. @@ -294,9 +296,8 @@ hwmp_recv_preq(struct ieee80211vap *vap, IEEE80211_ADDR_COPY(prep.prep_origaddr, vap->iv_myaddr); /* XXX */ prep.prep_origseq = 1; - vargs.ptrarg = &prep; - ieee80211_send_action(ni, IEEE80211_ACTION_CAT_MESHPATH, - IEEE80211_ACTION_MESHPATH_REP, vargs); + /* XXX addr1 = next hop */ + hwmp_send_prep(ni, preq->preq_origaddr, vap->iv_myaddr, &prep); return; } @@ -388,6 +389,96 @@ hwmp_recv_prep(struct ieee80211vap *vap, } +static int +hwmp_send_prep(struct ieee80211_node *ni, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const struct ieee80211_meshprep_ie *prep) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_frame *wh; + struct ieee80211_bpf_params params; + struct mbuf *m; + ieee80211_seq seqno; + uint8_t *frm; + + if (vap->iv_state == IEEE80211_S_CAC) { + IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, + "block %s frame in CAC state", "probe request"); + vap->iv_stats.is_tx_badstate++; + return EIO; /* XXX */ + } + + KASSERT(ni != NULL, ("null node")); + /* + * Hold a reference on the node so it doesn't go away until after + * the xmit is complete all the way in the driver. On error we + * will remove our reference. + */ + IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, + "ieee80211_ref_node (%s:%u) %p<%s> refcnt %d\n", + __func__, __LINE__, + ni, ether_sprintf(ni->ni_macaddr), + ieee80211_node_refcnt(ni)+1); + ieee80211_ref_node(ni); + + + /* + * mesh prep action frame format + * [6] addr1 + * [6] addr2 + * [6] addr2 + * [1] action + * [1] category + * [tlv] mesh path reply + */ + m = ieee80211_getmgtframe(&frm, + ic->ic_headroom + sizeof(struct ieee80211_frame), + sizeof(struct ieee80211_action) + + sizeof(struct ieee80211_meshprep_ie) + ); + if (m == NULL) { + ieee80211_free_node(ni); + vap->iv_stats.is_tx_nobuf++; + return ENOMEM; + } + *frm++ = IEEE80211_ACTION_CAT_MESHPATH; + *frm++ = IEEE80211_ACTION_MESHPATH_REP; + frm = ieee80211_add_meshprep(frm, prep); + m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); + M_PREPEND(m, sizeof(struct ieee80211_frame), M_DONTWAIT); + if (m == NULL) { + ieee80211_free_node(ni); + vap->iv_stats.is_tx_nobuf++; + return ENOMEM; + } + wh = mtod(m, struct ieee80211_frame *); + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | + IEEE80211_FC0_SUBTYPE_ACTION; + wh->i_fc[1] = IEEE80211_FC1_DIR_DSTODS; + IEEE80211_ADDR_COPY(wh->i_addr1, addr1); + IEEE80211_ADDR_COPY(wh->i_addr2, addr2); + IEEE80211_ADDR_COPY(wh->i_addr3, addr2); + *(uint16_t *)&wh->i_dur[0] = 0; + seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++; + *(uint16_t *)&wh->i_seq[0] = htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT); + M_SEQNO_SET(m, seqno); + if (IEEE80211_IS_MULTICAST(wh->i_addr1)) + m->m_flags |= M_MCAST; + + m->m_flags |= M_ENCAP; /* mark encapsulated */ + IEEE80211_NODE_STAT(ni, tx_mgmt); + + memset(¶ms, 0, sizeof(params)); + params.ibp_pri = WME_AC_VO; + params.ibp_rate0 = ni->ni_txparms->mgmtrate; + /* XXX: NB: we know all frames are unicast */ + params.ibp_try0 = ni->ni_txparms->maxretry; + params.ibp_power = ni->ni_txpower; + + return ic->ic_raw_xmit(ni, m, ¶ms); +} static void hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.h Wed May 27 23:45:39 2009 (r192940) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.h Thu May 28 00:05:16 2009 (r192941) @@ -34,7 +34,7 @@ void ieee80211_hwmp_recv_action(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *); uint8_t * ieee80211_add_meshprep(uint8_t *, - struct ieee80211_meshprep_ie *); + const struct ieee80211_meshprep_ie *); #if 0 uint8_t * ieee80211_add_meshpreq(uint8_t *, struct ieee80211_meshpreq_ie *); From owner-svn-src-projects@FreeBSD.ORG Thu May 28 00:18:12 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2509A1065673; Thu, 28 May 2009 00:18:12 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 11A4D8FC13; Thu, 28 May 2009 00:18:12 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S0IBUk016651; Thu, 28 May 2009 00:18:11 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S0IBj1016650; Thu, 28 May 2009 00:18:11 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <200905280018.n4S0IBj1016650@svn.freebsd.org> From: Craig Rodrigues Date: Thu, 28 May 2009 00:18:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192942 - projects/jbuild/usr.bin/jbuild/port X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 00:18:12 -0000 Author: rodrigc Date: Thu May 28 00:18:11 2009 New Revision: 192942 URL: http://svn.freebsd.org/changeset/base/192942 Log: Install filemon.ko in right place Modified: projects/jbuild/usr.bin/jbuild/port/Makefile Modified: projects/jbuild/usr.bin/jbuild/port/Makefile ============================================================================== --- projects/jbuild/usr.bin/jbuild/port/Makefile Thu May 28 00:05:16 2009 (r192941) +++ projects/jbuild/usr.bin/jbuild/port/Makefile Thu May 28 00:18:11 2009 (r192942) @@ -19,7 +19,7 @@ do-extract: cp Makefile.port ${WRKSRC}/Makefile do-install: - ( cd ${WRKSRC}/filemon; ${MAKE} install BINDIR=/boot/modules ) + ( cd ${WRKSRC}/filemon; ${MAKE} install KMODDIR=/boot/modules) ( cd ${WRKSRC}/jbuild; ${MAKE} install BINDIR=${PREFIX}/bin ) ( cd ${WRKSRC}/jdirdep; ${MAKE} install BINDIR=${PREFIX}/bin ) cp ${WRKSRC}/jdirdep/jgetsrc ${PREFIX}/bin From owner-svn-src-projects@FreeBSD.ORG Thu May 28 00:47:51 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 387BF106566C; Thu, 28 May 2009 00:47:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 26B678FC17; Thu, 28 May 2009 00:47:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S0lpCt017401; Thu, 28 May 2009 00:47:51 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S0lpUO017400; Thu, 28 May 2009 00:47:51 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <200905280047.n4S0lpUO017400@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Thu, 28 May 2009 00:47:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192946 - projects/mips/sys/mips/atheros X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 00:47:51 -0000 Author: gonzo Date: Thu May 28 00:47:50 2009 New Revision: 192946 URL: http://svn.freebsd.org/changeset/base/192946 Log: - Revert fix by dwhite that has been accidentally lost in r192783 commit. Modified: projects/mips/sys/mips/atheros/if_arge.c Modified: projects/mips/sys/mips/atheros/if_arge.c ============================================================================== --- projects/mips/sys/mips/atheros/if_arge.c Thu May 28 00:47:32 2009 (r192945) +++ projects/mips/sys/mips/atheros/if_arge.c Thu May 28 00:47:50 2009 (r192946) @@ -1624,6 +1624,10 @@ arge_intr(void *arg) } } + /* + * We handled all bits, clear status + */ + sc->arge_intr_status = 0; ARGE_UNLOCK(sc); /* * re-enable all interrupts From owner-svn-src-projects@FreeBSD.ORG Thu May 28 02:18:02 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 268ED106564A; Thu, 28 May 2009 02:18:02 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 107A88FC08; Thu, 28 May 2009 02:18:02 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S2I1YL019464; Thu, 28 May 2009 02:18:01 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S2HxDW019402; Thu, 28 May 2009 02:17:59 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280217.n4S2HxDW019402@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 02:17:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192948 - in projects/jbuild: . bin/test cddl/contrib/opensolaris/cmd/lockstat cddl/usr.sbin cddl/usr.sbin/lockstat contrib/bind9 contrib/cpio contrib/ee contrib/gdb contrib/gdtoa contr... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 02:18:02 -0000 Author: jb Date: Thu May 28 02:17:58 2009 New Revision: 192948 URL: http://svn.freebsd.org/changeset/base/192948 Log: MFC Added: projects/jbuild/cddl/contrib/opensolaris/cmd/lockstat/ - copied from r192947, head/cddl/contrib/opensolaris/cmd/lockstat/ projects/jbuild/cddl/usr.sbin/lockstat/ - copied from r192947, head/cddl/usr.sbin/lockstat/ projects/jbuild/contrib/ee/ (props changed) - copied from r192947, head/contrib/ee/ projects/jbuild/share/man/man4/ksyms.4 - copied unchanged from r192947, head/share/man/man4/ksyms.4 projects/jbuild/share/man/man4/mld.4 - copied unchanged from r192947, head/share/man/man4/mld.4 projects/jbuild/share/man/man9/fail.9 - copied unchanged from r192947, head/share/man/man9/fail.9 projects/jbuild/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c - copied unchanged from r192947, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c projects/jbuild/sys/cddl/compat/opensolaris/sys/acl.h - copied unchanged from r192947, head/sys/cddl/compat/opensolaris/sys/acl.h projects/jbuild/sys/cddl/dev/lockstat/ - copied from r192947, head/sys/cddl/dev/lockstat/ projects/jbuild/sys/dev/ksyms/ - copied from r192947, head/sys/dev/ksyms/ projects/jbuild/sys/dev/usb/wlan/if_urtw.c - copied unchanged from r192947, head/sys/dev/usb/wlan/if_urtw.c projects/jbuild/sys/dev/usb/wlan/if_urtwreg.h - copied unchanged from r192947, head/sys/dev/usb/wlan/if_urtwreg.h projects/jbuild/sys/dev/usb/wlan/if_urtwvar.h - copied unchanged from r192947, head/sys/dev/usb/wlan/if_urtwvar.h projects/jbuild/sys/kern/kern_fail.c - copied unchanged from r192947, head/sys/kern/kern_fail.c projects/jbuild/sys/kern/kern_lockstat.c - copied unchanged from r192947, head/sys/kern/kern_lockstat.c projects/jbuild/sys/modules/ksyms/ - copied from r192947, head/sys/modules/ksyms/ projects/jbuild/sys/modules/usb/urtw/ - copied from r192947, head/sys/modules/usb/urtw/ projects/jbuild/sys/netipx/spx_reass.c - copied unchanged from r192947, head/sys/netipx/spx_reass.c projects/jbuild/sys/sys/fail.h - copied unchanged from r192947, head/sys/sys/fail.h projects/jbuild/sys/sys/ksyms.h - copied unchanged from r192947, head/sys/sys/ksyms.h projects/jbuild/sys/sys/lockstat.h - copied unchanged from r192947, head/sys/sys/lockstat.h projects/jbuild/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 - copied unchanged from r192947, head/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 projects/jbuild/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 - copied unchanged from r192947, head/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 projects/jbuild/tools/regression/vfs/ - copied from r192947, head/tools/regression/vfs/ projects/jbuild/usr.sbin/nfscbd/ - copied from r192947, head/usr.sbin/nfscbd/ projects/jbuild/usr.sbin/nfsdumpstate/ - copied from r192947, head/usr.sbin/nfsdumpstate/ projects/jbuild/usr.sbin/nfsrevoke/ - copied from r192947, head/usr.sbin/nfsrevoke/ projects/jbuild/usr.sbin/nfsuserd/ - copied from r192947, head/usr.sbin/nfsuserd/ Replaced: projects/jbuild/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c - copied unchanged from r192947, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/jbuild/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h - copied unchanged from r192947, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h projects/jbuild/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c - copied unchanged from r192947, head/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c Deleted: projects/jbuild/libexec/makekey/ projects/jbuild/sys/arm/at91/ohci_atmelarm.c projects/jbuild/sys/dev/usb/bluetooth/ projects/jbuild/sys/legacy/ projects/jbuild/sys/netgraph/bluetooth/drivers/ubt/TODO projects/jbuild/usr.bin/ee/Artistic projects/jbuild/usr.bin/ee/FREEBSD-upgrade projects/jbuild/usr.bin/ee/README projects/jbuild/usr.bin/ee/ee.1 projects/jbuild/usr.bin/ee/ee.c projects/jbuild/usr.bin/ee/ee.i18n.guide projects/jbuild/usr.bin/ee/new_curse.c projects/jbuild/usr.bin/ee/new_curse.h projects/jbuild/usr.bin/ee/nls/en_US.US-ASCII/ Modified: projects/jbuild/ (props changed) projects/jbuild/ObsoleteFiles.inc projects/jbuild/UPDATING projects/jbuild/bin/test/TEST.sh projects/jbuild/bin/test/test.c projects/jbuild/cddl/usr.sbin/Makefile projects/jbuild/contrib/bind9/ (props changed) projects/jbuild/contrib/cpio/ (props changed) projects/jbuild/contrib/gdb/ (props changed) projects/jbuild/contrib/gdtoa/ (props changed) projects/jbuild/contrib/less/ (props changed) projects/jbuild/contrib/libpcap/ (props changed) projects/jbuild/contrib/ncurses/ (props changed) projects/jbuild/contrib/netcat/ (props changed) projects/jbuild/contrib/ntp/ (props changed) projects/jbuild/contrib/openbsm/ (props changed) projects/jbuild/contrib/openpam/ (props changed) projects/jbuild/contrib/pf/ (props changed) projects/jbuild/contrib/sendmail/ (props changed) projects/jbuild/contrib/tcpdump/ (props changed) projects/jbuild/contrib/top/ (props changed) projects/jbuild/contrib/wpa/ (props changed) projects/jbuild/crypto/openssh/ (props changed) projects/jbuild/crypto/openssl/ (props changed) projects/jbuild/etc/mtree/BSD.include.dist projects/jbuild/include/Makefile projects/jbuild/lib/libc/ (props changed) projects/jbuild/lib/libc/gen/popen.c projects/jbuild/lib/libc/include/nss_tls.h projects/jbuild/lib/libc/net/nsdispatch.c projects/jbuild/lib/libc/posix1e/acl_compat.c projects/jbuild/lib/libc/rpc/svc_dg.c projects/jbuild/lib/libc/rpc/svc_generic.c projects/jbuild/lib/libc/stdtime/ (props changed) projects/jbuild/lib/libc/stdtime/time2posix.3 projects/jbuild/lib/libc/string/ffsll.c (props changed) projects/jbuild/lib/libc/string/flsll.c (props changed) projects/jbuild/lib/libc/sys/jail.2 projects/jbuild/lib/libc_r/arch/amd64/_atomic_lock.S projects/jbuild/lib/libc_r/arch/i386/_atomic_lock.S projects/jbuild/lib/libstand/i386/_setjmp.S projects/jbuild/lib/libusb/ (props changed) projects/jbuild/lib/libusb/libusb.3 (props changed) projects/jbuild/lib/libutil/ (props changed) projects/jbuild/lib/msun/amd64/e_sqrt.S projects/jbuild/lib/msun/amd64/e_sqrtf.S projects/jbuild/lib/msun/amd64/s_lrint.S projects/jbuild/lib/msun/amd64/s_lrintf.S projects/jbuild/lib/msun/amd64/s_remquo.S projects/jbuild/lib/msun/amd64/s_remquof.S projects/jbuild/lib/msun/amd64/s_scalbn.S projects/jbuild/lib/msun/amd64/s_scalbnf.S projects/jbuild/lib/msun/amd64/s_scalbnl.S projects/jbuild/lib/msun/i387/e_exp.S projects/jbuild/lib/msun/i387/e_fmod.S projects/jbuild/lib/msun/i387/e_log.S projects/jbuild/lib/msun/i387/e_log10.S projects/jbuild/lib/msun/i387/e_log10f.S projects/jbuild/lib/msun/i387/e_remainder.S projects/jbuild/lib/msun/i387/e_remainderf.S projects/jbuild/lib/msun/i387/e_sqrt.S projects/jbuild/lib/msun/i387/e_sqrtf.S projects/jbuild/lib/msun/i387/s_ceil.S projects/jbuild/lib/msun/i387/s_ceilf.S projects/jbuild/lib/msun/i387/s_ceill.S projects/jbuild/lib/msun/i387/s_copysign.S projects/jbuild/lib/msun/i387/s_copysignf.S projects/jbuild/lib/msun/i387/s_copysignl.S projects/jbuild/lib/msun/i387/s_cos.S projects/jbuild/lib/msun/i387/s_finite.S projects/jbuild/lib/msun/i387/s_floor.S projects/jbuild/lib/msun/i387/s_floorf.S projects/jbuild/lib/msun/i387/s_floorl.S projects/jbuild/lib/msun/i387/s_llrint.S projects/jbuild/lib/msun/i387/s_llrintf.S projects/jbuild/lib/msun/i387/s_logb.S projects/jbuild/lib/msun/i387/s_logbf.S projects/jbuild/lib/msun/i387/s_lrint.S projects/jbuild/lib/msun/i387/s_lrintf.S projects/jbuild/lib/msun/i387/s_remquo.S projects/jbuild/lib/msun/i387/s_remquof.S projects/jbuild/lib/msun/i387/s_rint.S projects/jbuild/lib/msun/i387/s_rintf.S projects/jbuild/lib/msun/i387/s_scalbn.S projects/jbuild/lib/msun/i387/s_scalbnf.S projects/jbuild/lib/msun/i387/s_scalbnl.S projects/jbuild/lib/msun/i387/s_significand.S projects/jbuild/lib/msun/i387/s_significandf.S projects/jbuild/lib/msun/i387/s_sin.S projects/jbuild/lib/msun/i387/s_tan.S projects/jbuild/lib/msun/i387/s_trunc.S projects/jbuild/lib/msun/i387/s_truncf.S projects/jbuild/lib/msun/i387/s_truncl.S projects/jbuild/lib/msun/ia64/s_fma.S projects/jbuild/lib/msun/ia64/s_fmaf.S projects/jbuild/lib/msun/ia64/s_fmal.S projects/jbuild/libexec/Makefile projects/jbuild/libexec/rtld-elf/rtld.h projects/jbuild/sbin/fdisk/fdisk.8 projects/jbuild/sbin/fdisk/fdisk.c projects/jbuild/sbin/geom/class/journal/gjournal.8 projects/jbuild/sbin/ipfw/ (props changed) projects/jbuild/sbin/mount/mount.c projects/jbuild/sbin/mount_nfs/Makefile projects/jbuild/sbin/mount_nfs/mount_nfs.8 projects/jbuild/sbin/mount_nfs/mount_nfs.c projects/jbuild/share/examples/ppp/ppp.linkup.sample projects/jbuild/share/man/man3/Makefile projects/jbuild/share/man/man3/queue.3 projects/jbuild/share/man/man4/Makefile projects/jbuild/share/man/man4/msk.4 projects/jbuild/share/man/man4/multicast.4 projects/jbuild/share/man/man9/Makefile projects/jbuild/share/misc/committers-src.dot projects/jbuild/share/syscons/keymaps/uk.iso-ctrl.kbd projects/jbuild/share/zoneinfo/ (props changed) projects/jbuild/share/zoneinfo/africa projects/jbuild/share/zoneinfo/antarctica projects/jbuild/share/zoneinfo/asia projects/jbuild/share/zoneinfo/australasia projects/jbuild/share/zoneinfo/backward projects/jbuild/share/zoneinfo/etcetera projects/jbuild/share/zoneinfo/europe projects/jbuild/share/zoneinfo/factory projects/jbuild/share/zoneinfo/leapseconds projects/jbuild/share/zoneinfo/northamerica projects/jbuild/share/zoneinfo/pacificnew projects/jbuild/share/zoneinfo/southamerica projects/jbuild/share/zoneinfo/systemv projects/jbuild/share/zoneinfo/zone.tab projects/jbuild/sys/ (props changed) projects/jbuild/sys/amd64/include/xen/ (props changed) projects/jbuild/sys/arm/conf/AVILA projects/jbuild/sys/arm/xscale/ixp425/files.ixp425 projects/jbuild/sys/cddl/contrib/opensolaris/common/acl/acl_common.c projects/jbuild/sys/cddl/contrib/opensolaris/common/acl/acl_common.h projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h projects/jbuild/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h projects/jbuild/sys/compat/freebsd32/freebsd32_misc.c projects/jbuild/sys/compat/linux/linux_ioctl.c projects/jbuild/sys/compat/linux/linux_mib.c projects/jbuild/sys/conf/NOTES projects/jbuild/sys/conf/files projects/jbuild/sys/conf/kern.pre.mk projects/jbuild/sys/contrib/dev/acpica/ (props changed) projects/jbuild/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/jbuild/sys/contrib/ipfilter/netinet/ip_nat.c projects/jbuild/sys/contrib/pf/ (props changed) projects/jbuild/sys/crypto/via/padlock_hash.c projects/jbuild/sys/dev/bktr/bktr_os.c projects/jbuild/sys/dev/cxgb/ (props changed) projects/jbuild/sys/dev/cxgb/cxgb_main.c projects/jbuild/sys/dev/mii/e1000phy.c projects/jbuild/sys/dev/mii/e1000phyreg.h projects/jbuild/sys/dev/mii/miidevs projects/jbuild/sys/dev/msk/if_msk.c projects/jbuild/sys/dev/msk/if_mskreg.h projects/jbuild/sys/dev/nfe/if_nfe.c projects/jbuild/sys/dev/random/nehemiah.c projects/jbuild/sys/dev/random/randomdev_soft.c projects/jbuild/sys/dev/sound/pci/cmi.c projects/jbuild/sys/dev/sound/pci/cs4281.c projects/jbuild/sys/dev/sound/pci/vibes.c projects/jbuild/sys/dev/sound/pcm/sound.c projects/jbuild/sys/dev/sound/pcm/sound.h projects/jbuild/sys/dev/sound/usb/uaudio.c projects/jbuild/sys/dev/usb/input/ukbd.c projects/jbuild/sys/dev/usb/serial/usb_serial.c projects/jbuild/sys/dev/usb/serial/usb_serial.h projects/jbuild/sys/dev/usb/usb_busdma.c projects/jbuild/sys/dev/usb/usb_busdma.h projects/jbuild/sys/dev/usb/usb_core.h projects/jbuild/sys/dev/usb/usb_device.c projects/jbuild/sys/dev/usb/usb_device.h projects/jbuild/sys/dev/usb/usb_generic.c projects/jbuild/sys/dev/usb/usb_hub.c projects/jbuild/sys/dev/usb/usb_util.c projects/jbuild/sys/dev/usb/usbhid.h projects/jbuild/sys/dev/xen/netfront/ (props changed) projects/jbuild/sys/dev/xen/netfront/netfront.c projects/jbuild/sys/dev/xen/xenpci/ (props changed) projects/jbuild/sys/fs/nfs/nfs_commonacl.c projects/jbuild/sys/fs/nfs/nfs_commonport.c projects/jbuild/sys/fs/nfs/nfs_commonsubs.c projects/jbuild/sys/fs/nfs/nfsport.h projects/jbuild/sys/fs/nfsclient/nfs_clnode.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdport.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdserv.c projects/jbuild/sys/fs/nfsserver/nfs_nfsdsocket.c projects/jbuild/sys/fs/procfs/procfs_status.c projects/jbuild/sys/fs/tmpfs/tmpfs_vnops.c projects/jbuild/sys/geom/geom_subr.c projects/jbuild/sys/ia64/ia64/mp_machdep.c projects/jbuild/sys/kern/init_main.c projects/jbuild/sys/kern/kern_cpuset.c projects/jbuild/sys/kern/kern_descrip.c projects/jbuild/sys/kern/kern_exit.c projects/jbuild/sys/kern/kern_fork.c projects/jbuild/sys/kern/kern_jail.c projects/jbuild/sys/kern/kern_linker.c projects/jbuild/sys/kern/kern_lock.c projects/jbuild/sys/kern/kern_mib.c projects/jbuild/sys/kern/kern_mutex.c projects/jbuild/sys/kern/kern_proc.c projects/jbuild/sys/kern/kern_prot.c projects/jbuild/sys/kern/kern_rmlock.c projects/jbuild/sys/kern/kern_rwlock.c projects/jbuild/sys/kern/kern_sx.c projects/jbuild/sys/kern/link_elf.c projects/jbuild/sys/kern/link_elf_obj.c projects/jbuild/sys/kern/linker_if.m projects/jbuild/sys/kern/sysv_msg.c projects/jbuild/sys/kern/sysv_sem.c projects/jbuild/sys/kern/sysv_shm.c projects/jbuild/sys/kern/tty.c projects/jbuild/sys/kern/uipc_debug.c projects/jbuild/sys/kern/vfs_bio.c projects/jbuild/sys/kern/vfs_lookup.c projects/jbuild/sys/kern/vfs_mount.c projects/jbuild/sys/kern/vfs_subr.c projects/jbuild/sys/kern/vfs_syscalls.c projects/jbuild/sys/modules/Makefile projects/jbuild/sys/modules/dtrace/Makefile projects/jbuild/sys/modules/dtrace/dtnfsclient/ (props changed) projects/jbuild/sys/modules/dtrace/dtraceall/dtraceall.c projects/jbuild/sys/modules/ip6_mroute_mod/ (props changed) projects/jbuild/sys/modules/ipmi/ipmi_linux/ (props changed) projects/jbuild/sys/modules/linux/Makefile projects/jbuild/sys/modules/netgraph/bluetooth/ubt/Makefile projects/jbuild/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile projects/jbuild/sys/modules/usb/Makefile projects/jbuild/sys/modules/zfs/Makefile projects/jbuild/sys/net/bpf.c projects/jbuild/sys/net/rtsock.c projects/jbuild/sys/net80211/ieee80211_adhoc.c projects/jbuild/sys/net80211/ieee80211_freebsd.c projects/jbuild/sys/net80211/ieee80211_hostap.c projects/jbuild/sys/net80211/ieee80211_monitor.c projects/jbuild/sys/net80211/ieee80211_radiotap.c projects/jbuild/sys/net80211/ieee80211_sta.c projects/jbuild/sys/net80211/ieee80211_wds.c projects/jbuild/sys/netinet/accf_dns.c projects/jbuild/sys/netinet/in_pcb.c projects/jbuild/sys/netinet/ip_input.c projects/jbuild/sys/netinet/tcp_input.c projects/jbuild/sys/netinet/tcp_reass.c projects/jbuild/sys/netinet/udp_usrreq.c projects/jbuild/sys/netinet6/icmp6.c projects/jbuild/sys/netinet6/in6.c projects/jbuild/sys/netinet6/in6.h projects/jbuild/sys/netinet6/in6_ifattach.c projects/jbuild/sys/netinet6/in6_mcast.c projects/jbuild/sys/netinet6/in6_pcb.c projects/jbuild/sys/netinet6/ip6_input.c projects/jbuild/sys/netinet6/mld6.c projects/jbuild/sys/netipsec/key.c projects/jbuild/sys/netipx/spx.h projects/jbuild/sys/netipx/spx_usrreq.c projects/jbuild/sys/netipx/spx_var.h projects/jbuild/sys/nfsserver/nfs_srvsock.c projects/jbuild/sys/powerpc/booke/pmap.c projects/jbuild/sys/security/mac/mac_framework.c projects/jbuild/sys/security/mac/mac_internal.h projects/jbuild/sys/security/mac_bsdextended/mac_bsdextended.c projects/jbuild/sys/sys/cpuset.h projects/jbuild/sys/sys/eventhandler.h projects/jbuild/sys/sys/jail.h projects/jbuild/sys/sys/lock.h projects/jbuild/sys/sys/mutex.h projects/jbuild/sys/sys/namei.h projects/jbuild/sys/sys/param.h projects/jbuild/sys/sys/queue.h projects/jbuild/sys/sys/rwlock.h projects/jbuild/sys/sys/sx.h projects/jbuild/sys/sys/syscallsubr.h projects/jbuild/sys/sys/systm.h projects/jbuild/sys/ufs/ufs/ufs_vnops.c projects/jbuild/sys/xen/evtchn.h (props changed) projects/jbuild/sys/xen/hypervisor.h (props changed) projects/jbuild/sys/xen/xen_intr.h (props changed) projects/jbuild/tools/KSE/ksetest/kse_asm.S projects/jbuild/tools/KSE/rr/kse_asm.S projects/jbuild/tools/regression/README projects/jbuild/tools/regression/lib/msun/test-conj.t (props changed) projects/jbuild/tools/regression/usr.bin/sed/multitest.t projects/jbuild/tools/tools/ath/common/dumpregs.h (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/jbuild/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/jbuild/usr.bin/ee/Makefile projects/jbuild/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg projects/jbuild/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg projects/jbuild/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg projects/jbuild/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg (contents, props changed) projects/jbuild/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg (contents, props changed) projects/jbuild/usr.bin/kdump/mkioctls projects/jbuild/usr.bin/killall/killall.1 projects/jbuild/usr.bin/killall/killall.c projects/jbuild/usr.bin/nfsstat/nfsstat.1 projects/jbuild/usr.bin/nfsstat/nfsstat.c projects/jbuild/usr.bin/procstat/ (props changed) projects/jbuild/usr.bin/sed/compile.c projects/jbuild/usr.bin/sed/defs.h projects/jbuild/usr.bin/sed/process.c projects/jbuild/usr.bin/sed/sed.1 projects/jbuild/usr.bin/truss/amd64-fbsd.c projects/jbuild/usr.bin/truss/amd64-fbsd32.c projects/jbuild/usr.bin/truss/amd64-linux32.c projects/jbuild/usr.bin/truss/i386-fbsd.c projects/jbuild/usr.bin/truss/i386-linux.c projects/jbuild/usr.bin/truss/ia64-fbsd.c projects/jbuild/usr.bin/truss/mips-fbsd.c projects/jbuild/usr.bin/truss/powerpc-fbsd.c projects/jbuild/usr.bin/truss/sparc64-fbsd.c projects/jbuild/usr.sbin/Makefile projects/jbuild/usr.sbin/ifmcstat/ifmcstat.8 projects/jbuild/usr.sbin/ifmcstat/ifmcstat.c projects/jbuild/usr.sbin/jail/jail.8 projects/jbuild/usr.sbin/jail/jail.c projects/jbuild/usr.sbin/jexec/Makefile projects/jbuild/usr.sbin/jexec/jexec.8 projects/jbuild/usr.sbin/jexec/jexec.c projects/jbuild/usr.sbin/jls/Makefile projects/jbuild/usr.sbin/jls/jls.8 projects/jbuild/usr.sbin/jls/jls.c projects/jbuild/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/jbuild/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/jbuild/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/jbuild/usr.sbin/makefs/getid.c (props changed) projects/jbuild/usr.sbin/mountd/exports.5 projects/jbuild/usr.sbin/mountd/mountd.8 projects/jbuild/usr.sbin/mountd/mountd.c projects/jbuild/usr.sbin/ppp/timer.c projects/jbuild/usr.sbin/usbconfig/usbconfig.8 projects/jbuild/usr.sbin/zic/ (props changed) projects/jbuild/usr.sbin/zic/README projects/jbuild/usr.sbin/zic/Theory projects/jbuild/usr.sbin/zic/zdump.8 projects/jbuild/usr.sbin/zic/zdump.c projects/jbuild/usr.sbin/zic/zic.8 Modified: projects/jbuild/ObsoleteFiles.inc ============================================================================== --- projects/jbuild/ObsoleteFiles.inc Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/ObsoleteFiles.inc Thu May 28 02:17:58 2009 (r192948) @@ -14,6 +14,45 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER() +OLD_FILES+=usr/share/man/man3/SLIST_REMOVE_NEXT.3.gz +OLD_FILES+=usr/share/man/man3/STAILQ_REMOVE_NEXT.3.gz +# 20090527: removal of legacy USB stack +OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h +OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ehcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/hid.h +OLD_FILES+=usr/include/legacy/dev/usb/if_urtwreg.h +OLD_FILES+=usr/include/legacy/dev/usb/if_urtwvar.h +OLD_FILES+=usr/include/legacy/dev/usb/ohcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ohcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/rio500_usb.h +OLD_FILES+=usr/include/legacy/dev/usb/rt2573_ucode.h +OLD_FILES+=usr/include/legacy/dev/usb/sl811hsreg.h +OLD_FILES+=usr/include/legacy/dev/usb/sl811hsvar.h +OLD_FILES+=usr/include/legacy/dev/usb/ubser.h +OLD_FILES+=usr/include/legacy/dev/usb/ucomvar.h +OLD_FILES+=usr/include/legacy/dev/usb/udbp.h +OLD_FILES+=usr/include/legacy/dev/usb/uftdireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ugraphire_rdesc.h +OLD_FILES+=usr/include/legacy/dev/usb/uhcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/uhcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/usb.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_mem.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_port.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_quirks.h +OLD_FILES+=usr/include/legacy/dev/usb/usbcdc.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdi.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdi_util.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdivar.h +OLD_FILES+=usr/include/legacy/dev/usb/usbhid.h +OLD_FILES+=usr/include/legacy/dev/usb/uxb360gp_rdesc.h +OLD_DIRS+=usr/include/legacy/dev/usb +OLD_DIRS+=usr/include/legacy/dev +OLD_DIRS+=usr/include/legacy +# 20090526: removal of makekey(8) +OLD_FILES+=libexec/makekey +OLD_FILES+=usr/share/man/man8/makekey.8.gz # 20090522: removal of University of Michigan NFSv4 client OLD_FILES+=etc/rc.d/idmapd OLD_FILES+=sbin/idmapd Modified: projects/jbuild/UPDATING ============================================================================== --- projects/jbuild/UPDATING Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/UPDATING Thu May 28 02:17:58 2009 (r192948) @@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090527: + Add support for hierarchical jails. Remove global securelevel. + Bump __FreeBSD_version to 800091. + 20090523: The layout of struct vnet_net has changed, therefore modules need to be rebuilt. Modified: projects/jbuild/bin/test/TEST.sh ============================================================================== --- projects/jbuild/bin/test/TEST.sh Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/bin/test/TEST.sh Thu May 28 02:17:58 2009 (r192948) @@ -133,5 +133,45 @@ t 0 '"a" -a ! ""' t 1 '""' t 0 '! ""' +t 0 '!' +t 0 '\(' +t 0 '\)' + +t 1 '\( = \)' +t 0 '\( != \)' +t 0 '\( ! \)' +t 0 '\( \( \)' +t 0 '\( \) \)' +t 0 '! = !' +t 1 '! != !' +t 1 '-n = \)' +t 0 '! != \)' +t 1 '! = a' +t 0 '! != -n' +t 0 '! -c /etc/passwd' + +t 0 '! \( = \)' +t 1 '! \( != \)' +t 1 '! = = =' +t 0 '! = = \)' +t 0 '! "" -o ""' +t 1 '! "x" -o ""' +t 1 '! "" -o "x"' +t 1 '! "x" -o "x"' +t 0 '\( -f /etc/passwd \)' +t 1 '\( ! = \)' +t 0 '\( ! "" \)' +t 1 '\( ! -e \)' + +t 0 '0 -eq 0 -a -d /' +t 0 '-s = "" -o "" = ""' +t 0 '"" = "" -o -s = ""' +t 1 '-s = "" -o -s = ""' +t 0 '-z x -o x = "#" -o x = x' +t 1 '-z y -o y = "#" -o y = x' +t 0 '0 -ne 0 -o ! -f /' +t 0 '1 -ne 0 -o ! -f /etc/passwd' +t 1 '0 -ne 0 -o ! -f /etc/passwd' + echo "" echo "Syntax errors: $ERROR Failed: $FAILED" Modified: projects/jbuild/bin/test/test.c ============================================================================== --- projects/jbuild/bin/test/test.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/bin/test/test.c Thu May 28 02:17:58 2009 (r192948) @@ -163,6 +163,7 @@ struct t_op { struct t_op const *t_wp_op; int nargc; char **t_wp; +int parenlevel; static int aexpr(enum token); static int binop(void); @@ -171,7 +172,9 @@ static int filstat(char *, enum token); static int getn(const char *); static intmax_t getq(const char *); static int intcmp(const char *, const char *); -static int isoperand(void); +static int isunopoperand(void); +static int islparenoperand(void); +static int isrparenoperand(void); static int newerf(const char *, const char *); static int nexpr(enum token); static int oexpr(enum token); @@ -205,7 +208,14 @@ main(int argc, char **argv) #endif nargc = argc; t_wp = &argv[1]; - res = !oexpr(t_lex(*t_wp)); + parenlevel = 0; + if (nargc == 4 && strcmp(*t_wp, "!") == 0) { + /* Things like ! "" -o x do not fit in the normal grammar. */ + --nargc; + ++t_wp; + res = oexpr(t_lex(*t_wp)); + } else + res = !oexpr(t_lex(*t_wp)); if (--nargc > 0) syntax(*t_wp, "unexpected operator"); @@ -268,12 +278,16 @@ primary(enum token n) if (n == EOI) return 0; /* missing expression */ if (n == LPAREN) { + parenlevel++; if ((nn = t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) == - RPAREN) + RPAREN) { + parenlevel--; return 0; /* missing expression */ + } res = oexpr(nn); if (t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) != RPAREN) syntax(NULL, "closing paren expected"); + parenlevel--; return res; } if (t_wp_op && t_wp_op->op_type == UNOP) { @@ -410,8 +424,10 @@ t_lex(char *s) } while (op->op_text) { if (strcmp(s, op->op_text) == 0) { - if ((op->op_type == UNOP && isoperand()) || - (op->op_num == LPAREN && nargc == 1)) + if (((op->op_type == UNOP || op->op_type == BUNOP) + && isunopoperand()) || + (op->op_num == LPAREN && islparenoperand()) || + (op->op_num == RPAREN && isrparenoperand())) break; t_wp_op = op; return op->op_num; @@ -423,7 +439,7 @@ t_lex(char *s) } static int -isoperand(void) +isunopoperand(void) { struct t_op const *op = ops; char *s; @@ -431,19 +447,53 @@ isoperand(void) if (nargc == 1) return 1; - if (nargc == 2) - return 0; s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; t = *(t_wp + 2); while (op->op_text) { if (strcmp(s, op->op_text) == 0) return op->op_type == BINOP && - (t[0] != ')' || t[1] != '\0'); + (parenlevel == 0 || t[0] != ')' || t[1] != '\0'); + op++; + } + return 0; +} + +static int +islparenoperand(void) +{ + struct t_op const *op = ops; + char *s; + + if (nargc == 1) + return 1; + s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; + if (nargc != 3) + return 0; + while (op->op_text) { + if (strcmp(s, op->op_text) == 0) + return op->op_type == BINOP; op++; } return 0; } +static int +isrparenoperand(void) +{ + char *s; + + if (nargc == 1) + return 0; + s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; + return 0; +} + /* atoi with error detection */ static int getn(const char *s) Modified: projects/jbuild/cddl/usr.sbin/Makefile ============================================================================== --- projects/jbuild/cddl/usr.sbin/Makefile Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/cddl/usr.sbin/Makefile Thu May 28 02:17:58 2009 (r192948) @@ -3,6 +3,7 @@ .include SUBDIR= dtrace \ + lockstat \ ${_zdb} .if ${MK_ZFS} != "no" Modified: projects/jbuild/etc/mtree/BSD.include.dist ============================================================================== --- projects/jbuild/etc/mtree/BSD.include.dist Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/etc/mtree/BSD.include.dist Thu May 28 02:17:58 2009 (r192948) @@ -197,12 +197,6 @@ .. kadm5 .. - legacy - dev - usb - .. - .. - .. libmilter .. lwres Modified: projects/jbuild/include/Makefile ============================================================================== --- projects/jbuild/include/Makefile Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/include/Makefile Thu May 28 02:17:58 2009 (r192948) @@ -54,7 +54,7 @@ LSUBDIRS= cam/scsi \ security/mac_mls security/mac_partition \ ufs/ffs ufs/ufs -LSUBSUBDIRS= dev/mpt/mpilib legacy/dev/usb +LSUBSUBDIRS= dev/mpt/mpilib .if ${MACHINE_ARCH} == "powerpc" _dev_powermac_nvram= dev/powermac_nvram Modified: projects/jbuild/lib/libc/gen/popen.c ============================================================================== --- projects/jbuild/lib/libc/gen/popen.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/gen/popen.c Thu May 28 02:17:58 2009 (r192948) @@ -191,7 +191,7 @@ pclose(iop) if (last == NULL) SLIST_REMOVE_HEAD(&pidlist, next); else - SLIST_REMOVE_NEXT(&pidlist, last, next); + SLIST_REMOVE_AFTER(last, next); THREAD_UNLOCK(); (void)fclose(iop); Modified: projects/jbuild/lib/libc/include/nss_tls.h ============================================================================== --- projects/jbuild/lib/libc/include/nss_tls.h Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/include/nss_tls.h Thu May 28 02:17:58 2009 (r192948) @@ -67,6 +67,7 @@ name##_getstate(struct name##_state **p) *p = calloc(1, sizeof(**p)); \ if (*p == NULL) \ return (ENOMEM); \ + memset(*p, 0, sizeof(**p)); \ rv = _pthread_setspecific(name##_state_key, *p); \ if (rv != 0) { \ free(*p); \ Modified: projects/jbuild/lib/libc/net/nsdispatch.c ============================================================================== --- projects/jbuild/lib/libc/net/nsdispatch.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/net/nsdispatch.c Thu May 28 02:17:58 2009 (r192948) @@ -80,12 +80,14 @@ __FBSDID("$FreeBSD$"); #define _NS_PRIVATE #include #include +#include #include #include #include #include #include #include "un-namespace.h" +#include "nss_tls.h" #include "libc_private.h" #ifdef NS_CACHING #include "nscache.h" @@ -143,7 +145,11 @@ static void *nss_cache_cycle_preventio * which in turn calls nsdispatch, which should call fallback * function) are not supported */ -static int fallback_dispatch = 0; +struct fb_state { + int fb_dispatch; +}; +static void fb_endstate(void *); +NSS_TLS_HANDLING(fb); /* * Attempt to spew relatively uniform messages to syslog. @@ -598,6 +604,11 @@ nss_method_lookup(const char *source, co return (NULL); } +static void +fb_endstate(void *p) +{ + free(p); +} __weak_reference(_nsdispatch, nsdispatch); @@ -611,6 +622,7 @@ _nsdispatch(void *retval, const ns_dtab nss_method method, fb_method; void *mdata; int isthreaded, serrno, i, result, srclistsize; + struct fb_state *st; #ifdef NS_CACHING nss_cache_data cache_data; @@ -630,12 +642,19 @@ _nsdispatch(void *retval, const ns_dtab goto fin; } } + + result = fb_getstate(&st); + if (result != 0) { + result = NS_UNAVAIL; + goto fin; + } + result = nss_configure(); if (result != 0) { result = NS_UNAVAIL; goto fin; } - if (fallback_dispatch == 0) { + if (st->fb_dispatch == 0) { dbt = vector_search(&database, _nsmap, _nsmapsize, sizeof(*_nsmap), string_compare); fb_method = nss_method_lookup(NSSRC_FALLBACK, database, @@ -702,12 +721,12 @@ _nsdispatch(void *retval, const ns_dtab break; } else { if (fb_method != NULL) { - fallback_dispatch = 1; + st->fb_dispatch = 1; va_start(ap, defaults); result = fb_method(retval, (void *)srclist[i].name, ap); va_end(ap); - fallback_dispatch = 0; + st->fb_dispatch = 0; } else nss_log(LOG_DEBUG, "%s, %s, %s, not found, " "and no fallback provided", Modified: projects/jbuild/lib/libc/posix1e/acl_compat.c ============================================================================== --- projects/jbuild/lib/libc/posix1e/acl_compat.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/posix1e/acl_compat.c Thu May 28 02:17:58 2009 (r192948) @@ -11,17 +11,17 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * ALTHOUGH THIS SOFTWARE IS MADE OF WIN AND SCIENCE, IT 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. + * 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 Modified: projects/jbuild/lib/libc/rpc/svc_dg.c ============================================================================== --- projects/jbuild/lib/libc/rpc/svc_dg.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/rpc/svc_dg.c Thu May 28 02:17:58 2009 (r192948) @@ -98,6 +98,7 @@ int svc_dg_enablecache(SVCXPRT *, u_int) static const char svc_dg_str[] = "svc_dg_create: %s"; static const char svc_dg_err1[] = "could not get transport information"; static const char svc_dg_err2[] = " transport does not support data transfer"; +static const char svc_dg_err3[] = "getsockname failed"; static const char __no_mem_str[] = "out of memory"; SVCXPRT * @@ -146,8 +147,10 @@ svc_dg_create(fd, sendsize, recvsize) xprt->xp_rtaddr.maxlen = sizeof (struct sockaddr_storage); slen = sizeof ss; - if (_getsockname(fd, (struct sockaddr *)(void *)&ss, &slen) < 0) - goto freedata; + if (_getsockname(fd, (struct sockaddr *)(void *)&ss, &slen) < 0) { + warnx(svc_dg_str, svc_dg_err3); + goto freedata_nowarn; + } xprt->xp_ltaddr.buf = mem_alloc(sizeof (struct sockaddr_storage)); xprt->xp_ltaddr.maxlen = sizeof (struct sockaddr_storage); xprt->xp_ltaddr.len = slen; @@ -157,6 +160,7 @@ svc_dg_create(fd, sendsize, recvsize) return (xprt); freedata: (void) warnx(svc_dg_str, __no_mem_str); +freedata_nowarn: if (xprt) { if (su) (void) mem_free(su, sizeof (*su)); @@ -173,6 +177,58 @@ svc_dg_stat(xprt) return (XPRT_IDLE); } +static int +svc_dg_recvfrom(int fd, char *buf, int buflen, + struct sockaddr *raddr, socklen_t *raddrlen, + struct sockaddr *laddr, socklen_t *laddrlen) +{ + struct msghdr msg; + struct iovec msg_iov[1]; + struct sockaddr_in *lin = (struct sockaddr_in *)laddr; + int rlen; + bool_t have_lin = FALSE; + char tmp[CMSG_LEN(sizeof(*lin))]; + struct cmsghdr *cmsg; + + memset((char *)&msg, 0, sizeof(msg)); + msg_iov[0].iov_base = buf; + msg_iov[0].iov_len = buflen; + msg.msg_iov = msg_iov; + msg.msg_iovlen = 1; + msg.msg_namelen = *raddrlen; + msg.msg_name = (char *)raddr; + msg.msg_control = (caddr_t)tmp; + msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + rlen = _recvmsg(fd, &msg, 0); + if (rlen >= 0) + *raddrlen = msg.msg_namelen; + + if (rlen == -1 || !laddr || + msg.msg_controllen < sizeof(struct cmsghdr) || + msg.msg_flags & MSG_CTRUNC) + return rlen; + + for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; + cmsg = CMSG_NXTHDR(&msg, cmsg)){ + if (cmsg->cmsg_level == IPPROTO_IP && + cmsg->cmsg_type == IP_RECVDSTADDR) { + have_lin = TRUE; + memcpy(&lin->sin_addr, + (struct in_addr *)CMSG_DATA(cmsg), sizeof(struct in_addr)); + break; + } + } + + if (!have_lin) + return rlen; + + lin->sin_family = AF_INET; + lin->sin_port = 0; + *laddrlen = sizeof(struct sockaddr_in); + + return rlen; +} + static bool_t svc_dg_recv(xprt, msg) SVCXPRT *xprt; @@ -188,8 +244,9 @@ svc_dg_recv(xprt, msg) again: alen = sizeof (struct sockaddr_storage); - rlen = _recvfrom(xprt->xp_fd, rpc_buffer(xprt), su->su_iosz, 0, - (struct sockaddr *)(void *)&ss, &alen); + rlen = svc_dg_recvfrom(xprt->xp_fd, rpc_buffer(xprt), su->su_iosz, + (struct sockaddr *)(void *)&ss, &alen, + (struct sockaddr *)xprt->xp_ltaddr.buf, &xprt->xp_ltaddr.len); if (rlen == -1 && errno == EINTR) goto again; if (rlen == -1 || (rlen < (ssize_t)(4 * sizeof (u_int32_t)))) @@ -223,6 +280,39 @@ again: return (TRUE); } +static int +svc_dg_sendto(int fd, char *buf, int buflen, + const struct sockaddr *raddr, socklen_t raddrlen, + const struct sockaddr *laddr, socklen_t laddrlen) +{ + struct msghdr msg; + struct iovec msg_iov[1]; + struct sockaddr_in *laddr_in = (struct sockaddr_in *)laddr; + struct in_addr *lin = &laddr_in->sin_addr; + char tmp[CMSG_SPACE(sizeof(*lin))]; + struct cmsghdr *cmsg; + + memset((char *)&msg, 0, sizeof(msg)); + msg_iov[0].iov_base = buf; + msg_iov[0].iov_len = buflen; + msg.msg_iov = msg_iov; + msg.msg_iovlen = 1; + msg.msg_namelen = raddrlen; + msg.msg_name = (char *)raddr; + + if (laddr->sa_family == AF_INET) { + msg.msg_control = (caddr_t)tmp; + msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + cmsg = CMSG_FIRSTHDR(&msg); + cmsg->cmsg_len = CMSG_LEN(sizeof(*lin)); + cmsg->cmsg_level = IPPROTO_IP; + cmsg->cmsg_type = IP_SENDSRCADDR; + memcpy(CMSG_DATA(cmsg), lin, sizeof(*lin)); + } + + return _sendmsg(fd, &msg, 0); +} + static bool_t svc_dg_reply(xprt, msg) SVCXPRT *xprt; @@ -253,9 +343,11 @@ svc_dg_reply(xprt, msg) } if (stat) { slen = XDR_GETPOS(xdrs); - if (_sendto(xprt->xp_fd, rpc_buffer(xprt), slen, 0, + if (svc_dg_sendto(xprt->xp_fd, rpc_buffer(xprt), slen, (struct sockaddr *)xprt->xp_rtaddr.buf, - (socklen_t)xprt->xp_rtaddr.len) == (ssize_t) slen) { + (socklen_t)xprt->xp_rtaddr.len, + (struct sockaddr *)xprt->xp_ltaddr.buf, + xprt->xp_ltaddr.len) == (ssize_t) slen) { stat = TRUE; if (su->su_cache) cache_set(xprt, slen); Modified: projects/jbuild/lib/libc/rpc/svc_generic.c ============================================================================== --- projects/jbuild/lib/libc/rpc/svc_generic.c Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/rpc/svc_generic.c Thu May 28 02:17:58 2009 (r192948) @@ -199,6 +199,7 @@ svc_tli_create(fd, nconf, bindaddr, send struct __rpc_sockinfo si; struct sockaddr_storage ss; socklen_t slen; + static const uint32_t true_value = 1; if (fd == RPC_ANYFD) { if (nconf == NULL) { @@ -225,6 +226,14 @@ svc_tli_create(fd, nconf, bindaddr, send } } + if (si.si_af == AF_INET && si.si_socktype == SOCK_DGRAM) { + if (_setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, + &true_value, sizeof(true_value))) { + warnx("svc_tli_create: cannot set IP_RECVDSTADDR"); + return (NULL); + } + } + /* * If the fd is unbound, try to bind it. */ Modified: projects/jbuild/lib/libc/stdtime/time2posix.3 ============================================================================== --- projects/jbuild/lib/libc/stdtime/time2posix.3 Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/stdtime/time2posix.3 Thu May 28 02:17:58 2009 (r192948) @@ -118,6 +118,6 @@ degenerate to the identity function. .Xr localtime 3 , .Xr mktime 3 , .Xr time 3 -.\" @(#)time2posix.3 8.1 +.\" @(#)time2posix.3 8.2 .\" This file is in the public domain, so clarified as of .\" 1996-06-05 by Arthur David Olson. Modified: projects/jbuild/lib/libc/sys/jail.2 ============================================================================== --- projects/jbuild/lib/libc/sys/jail.2 Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc/sys/jail.2 Thu May 28 02:17:58 2009 (r192948) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 29, 2009 +.Dd May 27, 2009 .Dt JAIL 2 .Os .Sh NAME @@ -283,7 +283,7 @@ of the jail for the given address family It is possible to identify a process as jailed by examining .Dq Li /proc//status : it will show a field near the end of the line, either as -a single hyphen for a process at large, or the hostname currently +a single hyphen for a process at large, or the name currently set for the prison for jailed processes. .Sh ERRORS The @@ -292,7 +292,10 @@ system call will fail if: .Bl -tag -width Er .It Bq Er EPERM -This process is not allowed to create a jail. +This process is not allowed to create a jail, either because it is not +the super-user, or because it is in a jail where the +.Va allow.jails +parameter is not set. .It Bq Er EFAULT .Fa jail points to an address outside the allocated address space of the process. @@ -308,7 +311,10 @@ system call will fail if: .Bl -tag -width Er .It Bq Er EPERM -This process is not allowed to create a jail. +This process is not allowed to create a jail, either because it is not +the super-user, or because it is in a jail where the +.Va allow.jails +parameter is not set. .It Bq Er EPERM A jail parameter was set to a less restrictive value then the current environment. @@ -324,6 +330,11 @@ or parameter does not exist, and the .Dv JAIL_CREATE flag is not set. +.It Bq Er ENOENT +The jail referred to by a +.Va jid +is not accessible by the process, because the process is in a different +jail. .It Bq Er EEXIST The jail referred to by a .Va jid @@ -368,6 +379,11 @@ or .Va name parameter does not exist. .It Bq Er ENOENT +The jail referred to by a +.Va jid +is not accessible by the process, because the process is in a different +jail. +.It Bq Er ENOENT The .Va lastjid parameter is greater than the highest current jail ID. @@ -429,4 +445,4 @@ for R&D Associates who contributed it to .Fx . .An James Gritton -added the extensible jail parameters. +added the extensible jail parameters and hierarchical jails. Modified: projects/jbuild/lib/libc_r/arch/amd64/_atomic_lock.S ============================================================================== --- projects/jbuild/lib/libc_r/arch/amd64/_atomic_lock.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc_r/arch/amd64/_atomic_lock.S Thu May 28 02:17:58 2009 (r192948) @@ -38,4 +38,5 @@ ENTRY(_atomic_lock) movl $1, %eax xchgq %rax, (%rdi) ret +END(_atomic_lock) Modified: projects/jbuild/lib/libc_r/arch/i386/_atomic_lock.S ============================================================================== --- projects/jbuild/lib/libc_r/arch/i386/_atomic_lock.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libc_r/arch/i386/_atomic_lock.S Thu May 28 02:17:58 2009 (r192948) @@ -39,4 +39,5 @@ ENTRY(_atomic_lock) movl $1, %eax xchg %eax, (%ecx) ret +END(_atomic_lock) Modified: projects/jbuild/lib/libstand/i386/_setjmp.S ============================================================================== --- projects/jbuild/lib/libstand/i386/_setjmp.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/libstand/i386/_setjmp.S Thu May 28 02:17:58 2009 (r192948) @@ -58,6 +58,7 @@ ENTRY(_setjmp) movl %edi,20(%eax) xorl %eax,%eax ret +END(_setjmp) ENTRY(_longjmp) movl 4(%esp),%edx @@ -73,3 +74,4 @@ ENTRY(_longjmp) incl %eax 1: movl %ecx,0(%esp) ret +END(_longjmp) Modified: projects/jbuild/lib/msun/amd64/e_sqrt.S ============================================================================== --- projects/jbuild/lib/msun/amd64/e_sqrt.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/e_sqrt.S Thu May 28 02:17:58 2009 (r192948) @@ -30,4 +30,5 @@ __FBSDID("$FreeBSD$") ENTRY(sqrt) sqrtsd %xmm0, %xmm0 ret +END(sqrt) Modified: projects/jbuild/lib/msun/amd64/e_sqrtf.S ============================================================================== --- projects/jbuild/lib/msun/amd64/e_sqrtf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/e_sqrtf.S Thu May 28 02:17:58 2009 (r192948) @@ -30,3 +30,4 @@ __FBSDID("$FreeBSD$") ENTRY(sqrtf) sqrtss %xmm0, %xmm0 ret +END(sqrtf) Modified: projects/jbuild/lib/msun/amd64/s_lrint.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_lrint.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_lrint.S Thu May 28 02:17:58 2009 (r192948) @@ -34,3 +34,4 @@ __FBSDID("$FreeBSD$") ENTRY(fn) cvtsd2si %xmm0, %rax ret +END(fn) Modified: projects/jbuild/lib/msun/amd64/s_lrintf.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_lrintf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_lrintf.S Thu May 28 02:17:58 2009 (r192948) @@ -34,3 +34,4 @@ __FBSDID("$FreeBSD$") ENTRY(fn) cvtss2si %xmm0, %rax ret +END(fn) Modified: projects/jbuild/lib/msun/amd64/s_remquo.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_remquo.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_remquo.S Thu May 28 02:17:58 2009 (r192948) @@ -63,3 +63,4 @@ ENTRY(remquo) fstpl -8(%rsp) movsd -8(%rsp),%xmm0 ret +END(remquo) Modified: projects/jbuild/lib/msun/amd64/s_remquof.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_remquof.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_remquof.S Thu May 28 02:17:58 2009 (r192948) @@ -63,3 +63,4 @@ ENTRY(remquof) fstps -4(%rsp) movss -4(%rsp),%xmm0 ret +END(remquof) Modified: projects/jbuild/lib/msun/amd64/s_scalbn.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_scalbn.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_scalbn.S Thu May 28 02:17:58 2009 (r192948) @@ -37,3 +37,4 @@ ENTRY(scalbn) fstpl -8(%rsp) movsd -8(%rsp),%xmm0 ret +END(scalbn) Modified: projects/jbuild/lib/msun/amd64/s_scalbnf.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_scalbnf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_scalbnf.S Thu May 28 02:17:58 2009 (r192948) @@ -37,6 +37,7 @@ ENTRY(scalbnf) fstps -8(%rsp) movss -8(%rsp),%xmm0 ret +END(scalbnf) .globl CNAME(ldexpf) .set CNAME(ldexpf),CNAME(scalbnf) Modified: projects/jbuild/lib/msun/amd64/s_scalbnl.S ============================================================================== --- projects/jbuild/lib/msun/amd64/s_scalbnl.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/amd64/s_scalbnl.S Thu May 28 02:17:58 2009 (r192948) @@ -14,6 +14,7 @@ ENTRY(scalbnl) fscale fstp %st(1) ret +END(scalbnl) .globl CNAME(ldexpl) .set CNAME(ldexpl),CNAME(scalbnl) Modified: projects/jbuild/lib/msun/i387/e_exp.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_exp.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_exp.S Thu May 28 02:17:58 2009 (r192948) @@ -96,3 +96,4 @@ x_Inf_or_NaN: x_not_minus_Inf: fldl 4(%esp) ret +END(exp) Modified: projects/jbuild/lib/msun/i387/e_fmod.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_fmod.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_fmod.S Thu May 28 02:17:58 2009 (r192948) @@ -46,3 +46,4 @@ ENTRY(fmod) jp 1b fstp %st(1) ret +END(fmod) Modified: projects/jbuild/lib/msun/i387/e_log.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_log.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_log.S Thu May 28 02:17:58 2009 (r192948) @@ -42,3 +42,4 @@ ENTRY(log) fldl 4(%esp) fyl2x ret +END(log) Modified: projects/jbuild/lib/msun/i387/e_log10.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_log10.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_log10.S Thu May 28 02:17:58 2009 (r192948) @@ -42,3 +42,4 @@ ENTRY(log10) fldl 4(%esp) fyl2x ret +END(log10) Modified: projects/jbuild/lib/msun/i387/e_log10f.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_log10f.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_log10f.S Thu May 28 02:17:58 2009 (r192948) @@ -13,3 +13,4 @@ ENTRY(log10f) flds 4(%esp) fyl2x ret +END(log10f) Modified: projects/jbuild/lib/msun/i387/e_remainder.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_remainder.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_remainder.S Thu May 28 02:17:58 2009 (r192948) @@ -46,3 +46,4 @@ ENTRY(remainder) jp 1b fstp %st(1) ret +END(remainder) Modified: projects/jbuild/lib/msun/i387/e_remainderf.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_remainderf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_remainderf.S Thu May 28 02:17:58 2009 (r192948) @@ -17,3 +17,4 @@ ENTRY(remainderf) jp 1b fstp %st(1) ret +END(remainderf) Modified: projects/jbuild/lib/msun/i387/e_sqrt.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_sqrt.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_sqrt.S Thu May 28 02:17:58 2009 (r192948) @@ -41,3 +41,4 @@ ENTRY(sqrt) fldl 4(%esp) fsqrt ret +END(sqrt) Modified: projects/jbuild/lib/msun/i387/e_sqrtf.S ============================================================================== --- projects/jbuild/lib/msun/i387/e_sqrtf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/e_sqrtf.S Thu May 28 02:17:58 2009 (r192948) @@ -12,3 +12,4 @@ ENTRY(sqrtf) flds 4(%esp) fsqrt ret +END(sqrtf) Modified: projects/jbuild/lib/msun/i387/s_ceil.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_ceil.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_ceil.S Thu May 28 02:17:58 2009 (r192948) @@ -56,3 +56,4 @@ ENTRY(ceil) leave ret +END(ceil) Modified: projects/jbuild/lib/msun/i387/s_ceilf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_ceilf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_ceilf.S Thu May 28 02:17:58 2009 (r192948) @@ -27,3 +27,4 @@ ENTRY(ceilf) leave ret +END(ceilf) Modified: projects/jbuild/lib/msun/i387/s_ceill.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_ceill.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_ceill.S Thu May 28 02:17:58 2009 (r192948) @@ -25,3 +25,4 @@ ENTRY(ceill) leave ret +END(ceill) Modified: projects/jbuild/lib/msun/i387/s_copysign.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_copysign.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_copysign.S Thu May 28 02:17:58 2009 (r192948) @@ -46,3 +46,4 @@ ENTRY(copysign) movl %eax,8(%esp) fldl 4(%esp) ret +END(copysign) Modified: projects/jbuild/lib/msun/i387/s_copysignf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_copysignf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_copysignf.S Thu May 28 02:17:58 2009 (r192948) @@ -17,3 +17,4 @@ ENTRY(copysignf) movl %eax,4(%esp) flds 4(%esp) ret +END(copysignf) Modified: projects/jbuild/lib/msun/i387/s_copysignl.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_copysignl.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_copysignl.S Thu May 28 02:17:58 2009 (r192948) @@ -15,3 +15,4 @@ ENTRY(copysignl) movl %eax,12(%esp) fldt 4(%esp) ret +END(copysignl) Modified: projects/jbuild/lib/msun/i387/s_cos.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_cos.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_cos.S Thu May 28 02:17:58 2009 (r192948) @@ -54,3 +54,4 @@ ENTRY(cos) fstp %st(1) fcos ret +END(cos) Modified: projects/jbuild/lib/msun/i387/s_finite.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_finite.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_finite.S Thu May 28 02:17:58 2009 (r192948) @@ -44,3 +44,4 @@ ENTRY(finite) setneb %al andl $0x000000ff, %eax ret +END(finite) Modified: projects/jbuild/lib/msun/i387/s_floor.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_floor.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_floor.S Thu May 28 02:17:58 2009 (r192948) @@ -56,3 +56,4 @@ ENTRY(floor) leave ret +END(floor) Modified: projects/jbuild/lib/msun/i387/s_floorf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_floorf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_floorf.S Thu May 28 02:17:58 2009 (r192948) @@ -27,3 +27,4 @@ ENTRY(floorf) leave ret +END(floorf) Modified: projects/jbuild/lib/msun/i387/s_floorl.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_floorl.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_floorl.S Thu May 28 02:17:58 2009 (r192948) @@ -25,3 +25,4 @@ ENTRY(floorl) leave ret +END(floorl) Modified: projects/jbuild/lib/msun/i387/s_llrint.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_llrint.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_llrint.S Thu May 28 02:17:58 2009 (r192948) @@ -34,3 +34,4 @@ ENTRY(llrint) popl %eax popl %edx ret +END(llrint) Modified: projects/jbuild/lib/msun/i387/s_llrintf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_llrintf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_llrintf.S Thu May 28 02:17:58 2009 (r192948) @@ -34,3 +34,4 @@ ENTRY(llrintf) popl %eax popl %edx ret +END(llrintf) Modified: projects/jbuild/lib/msun/i387/s_logb.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_logb.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_logb.S Thu May 28 02:17:58 2009 (r192948) @@ -42,3 +42,4 @@ ENTRY(logb) fxtract fstp %st ret +END(logb) Modified: projects/jbuild/lib/msun/i387/s_logbf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_logbf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_logbf.S Thu May 28 02:17:58 2009 (r192948) @@ -13,3 +13,4 @@ ENTRY(logbf) fxtract fstp %st ret +END(logbf) Modified: projects/jbuild/lib/msun/i387/s_lrint.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_lrint.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_lrint.S Thu May 28 02:17:58 2009 (r192948) @@ -33,3 +33,4 @@ ENTRY(lrint) fistpl (%esp) popl %eax ret +END(lrint) Modified: projects/jbuild/lib/msun/i387/s_lrintf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_lrintf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_lrintf.S Thu May 28 02:17:58 2009 (r192948) @@ -33,3 +33,4 @@ ENTRY(lrintf) fistpl (%esp) popl %eax ret +END(lrintf) Modified: projects/jbuild/lib/msun/i387/s_remquo.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_remquo.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_remquo.S Thu May 28 02:17:58 2009 (r192948) @@ -60,3 +60,4 @@ ENTRY(remquo) movl 20(%esp),%ecx movl %eax,(%ecx) ret +END(remquo) Modified: projects/jbuild/lib/msun/i387/s_remquof.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_remquof.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_remquof.S Thu May 28 02:17:58 2009 (r192948) @@ -60,3 +60,4 @@ ENTRY(remquof) movl 12(%esp),%ecx movl %eax,(%ecx) ret +END(remquof) Modified: projects/jbuild/lib/msun/i387/s_rint.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_rint.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_rint.S Thu May 28 02:17:58 2009 (r192948) @@ -41,3 +41,4 @@ ENTRY(rint) fldl 4(%esp) frndint ret +END(rint) Modified: projects/jbuild/lib/msun/i387/s_rintf.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_rintf.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_rintf.S Thu May 28 02:17:58 2009 (r192948) @@ -12,3 +12,4 @@ ENTRY(rintf) flds 4(%esp) frndint ret +END(rintf) Modified: projects/jbuild/lib/msun/i387/s_scalbn.S ============================================================================== --- projects/jbuild/lib/msun/i387/s_scalbn.S Thu May 28 00:52:09 2009 (r192947) +++ projects/jbuild/lib/msun/i387/s_scalbn.S Thu May 28 02:17:58 2009 (r192948) @@ -43,3 +43,4 @@ ENTRY(scalbn) fscale fstp %st(1) ret +END(scalbn) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu May 28 04:51:06 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 976DF1065676; Thu, 28 May 2009 04:51:06 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 81ED58FC18; Thu, 28 May 2009 04:51:06 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S4p62w023206; Thu, 28 May 2009 04:51:06 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S4p6r9023200; Thu, 28 May 2009 04:51:06 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280451.n4S4p6r9023200@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 04:51:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192958 - in projects/jbuild: . bin bin/cat bin/chflags bin/chio bin/chmod bin/cp bin/date bin/dd bin/df bin/domainname bin/echo bin/ed bin/expr bin/getfacl bin/hostname bin/kenv bin/ki... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 04:51:06 -0000 Author: jb Date: Thu May 28 04:51:05 2009 New Revision: 192958 URL: http://svn.freebsd.org/changeset/base/192958 Log: Update bsd.dirdep.mk to the latest JNPR design. This system makefile contains the code to generate the Buildfile.dirdep files. Update Buildfiles where changes are required to suit the recent MFCs. Add Buildfile.dep files from jbuild which relect the directory dependencies (DIRDEP) and the source directory dependencies (SRCDIRDEP) which can be used for a subtree checkout. Update the generated Buildfile.dirdep files based on the bew bsd.dirdep.mk. Added: projects/jbuild/bin/sh/Buildfile.dep projects/jbuild/bin/sh/Buildfile.dirdep projects/jbuild/bin/sh/mkinit/ projects/jbuild/bin/sh/mkinit/Buildfile projects/jbuild/bin/sh/mkinit/Buildfile.dep projects/jbuild/bin/sh/mkinit/Buildfile.dirdep projects/jbuild/bin/sh/mknodes/ projects/jbuild/bin/sh/mknodes/Buildfile projects/jbuild/bin/sh/mknodes/Buildfile.dep projects/jbuild/bin/sh/mknodes/Buildfile.dirdep projects/jbuild/bin/sh/mksyntax/ projects/jbuild/bin/sh/mksyntax/Buildfile projects/jbuild/bin/sh/mksyntax/Buildfile.dep projects/jbuild/bin/sh/mksyntax/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/base/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/basex/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/bits/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/bkw/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/debug/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/ext/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/march/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/std/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/target/Buildfile.dep projects/jbuild/gnu/lib/libstdc++/thr/Buildfile.dep projects/jbuild/gnu/usr.bin/cc/cc_tools/genheaders/Buildfile.dep projects/jbuild/include/arpa/Buildfile.dep projects/jbuild/include/gssapi/Buildfile.dep projects/jbuild/include/machine/Buildfile.dep projects/jbuild/include/protocols/Buildfile.dep projects/jbuild/lib/libpcap/h/ projects/jbuild/lib/libpcap/h/Buildfile projects/jbuild/lib/libpcap/h/Buildfile.dep projects/jbuild/lib/libpcap/h/Buildfile.dirdep projects/jbuild/lib/msun/Buildfile.dep projects/jbuild/lib/ncurses/include/Buildfile.dep projects/jbuild/sys/altq/Buildfile.dep projects/jbuild/sys/bsm/Buildfile.dep projects/jbuild/sys/cam/Buildfile.dep projects/jbuild/sys/cam/scsi/Buildfile.dep projects/jbuild/sys/crypto/Buildfile.dep projects/jbuild/sys/crypto/rijndael/Buildfile.dep projects/jbuild/sys/crypto/sha2/Buildfile.dep projects/jbuild/sys/dev/an/Buildfile.dep projects/jbuild/sys/dev/dcons/Buildfile.dep projects/jbuild/sys/dev/firewire/Buildfile.dep projects/jbuild/sys/dev/ic/Buildfile.dep projects/jbuild/sys/dev/ofw/Buildfile.dep projects/jbuild/sys/dev/utopia/Buildfile.dep projects/jbuild/sys/dev/vkbd/Buildfile.dep projects/jbuild/sys/fs/cd9660/Buildfile.dep projects/jbuild/sys/fs/devfs/Buildfile.dep projects/jbuild/sys/fs/hpfs/Buildfile.dep projects/jbuild/sys/fs/msdosfs/Buildfile.dep projects/jbuild/sys/fs/ntfs/Buildfile.dep projects/jbuild/sys/fs/udf/Buildfile.dep projects/jbuild/sys/geom/Buildfile.dep projects/jbuild/sys/geom/bde/Buildfile.dep projects/jbuild/sys/geom/cache/Buildfile.dep projects/jbuild/sys/geom/concat/Buildfile.dep projects/jbuild/sys/geom/journal/Buildfile.dep projects/jbuild/sys/geom/label/Buildfile.dep projects/jbuild/sys/geom/mirror/Buildfile.dep projects/jbuild/sys/geom/multipath/Buildfile.dep projects/jbuild/sys/geom/nop/Buildfile.dep projects/jbuild/sys/geom/raid3/Buildfile.dep projects/jbuild/sys/geom/shsec/Buildfile.dep projects/jbuild/sys/geom/stripe/Buildfile.dep projects/jbuild/sys/geom/vinum/Buildfile.dep projects/jbuild/sys/geom/virstor/Buildfile.dep projects/jbuild/sys/i386/include/Buildfile.dep projects/jbuild/sys/kgssapi/Buildfile.dep projects/jbuild/sys/net/Buildfile.dep projects/jbuild/sys/net80211/Buildfile.dep projects/jbuild/sys/netatalk/Buildfile.dep projects/jbuild/sys/netgraph/Buildfile.dep projects/jbuild/sys/netgraph/bluetooth/include/Buildfile.dep projects/jbuild/sys/netinet6/Buildfile.dep projects/jbuild/sys/netipsec/Buildfile.dep projects/jbuild/sys/netipx/Buildfile.dep projects/jbuild/sys/netnatm/Buildfile.dep projects/jbuild/sys/nfs/Buildfile.dep projects/jbuild/sys/nfsclient/Buildfile.dep projects/jbuild/sys/opencrypto/Buildfile.dep projects/jbuild/sys/rpc/Buildfile.dep projects/jbuild/sys/ufs/ffs/Buildfile.dep projects/jbuild/sys/vm/Buildfile.dep projects/jbuild/usr.bin/lex/lib/Buildfile.dep projects/jbuild/usr.sbin/adduser/Buildfile.dep projects/jbuild/usr.sbin/crashinfo/Buildfile.dep projects/jbuild/usr.sbin/zzz/Buildfile.dep Modified: projects/jbuild/Buildfile.dirdep projects/jbuild/bin/Buildfile.dirdep projects/jbuild/bin/cat/Buildfile.dirdep projects/jbuild/bin/chflags/Buildfile.dirdep projects/jbuild/bin/chio/Buildfile.dirdep projects/jbuild/bin/chmod/Buildfile.dirdep projects/jbuild/bin/cp/Buildfile projects/jbuild/bin/cp/Buildfile.dirdep projects/jbuild/bin/date/Buildfile.dirdep projects/jbuild/bin/dd/Buildfile.dirdep projects/jbuild/bin/df/Buildfile.dirdep projects/jbuild/bin/domainname/Buildfile.dirdep projects/jbuild/bin/echo/Buildfile.dirdep projects/jbuild/bin/ed/Buildfile.dirdep projects/jbuild/bin/expr/Buildfile.dirdep projects/jbuild/bin/getfacl/Buildfile.dirdep projects/jbuild/bin/hostname/Buildfile.dirdep projects/jbuild/bin/kenv/Buildfile.dirdep projects/jbuild/bin/kill/Buildfile.dirdep projects/jbuild/bin/ln/Buildfile.dirdep projects/jbuild/bin/ls/Buildfile.dirdep projects/jbuild/bin/mkdir/Buildfile.dirdep projects/jbuild/bin/mv/Buildfile.dirdep projects/jbuild/bin/pax/Buildfile.dirdep projects/jbuild/bin/pkill/Buildfile.dirdep projects/jbuild/bin/ps/Buildfile.dirdep projects/jbuild/bin/pwd/Buildfile.dirdep projects/jbuild/bin/rcp/Buildfile.dirdep projects/jbuild/bin/realpath/Buildfile.dirdep projects/jbuild/bin/rm/Buildfile.dirdep projects/jbuild/bin/rmail/Buildfile.dirdep projects/jbuild/bin/rmdir/Buildfile.dirdep projects/jbuild/bin/setfacl/Buildfile.dirdep projects/jbuild/bin/sh/Buildfile projects/jbuild/bin/sh/arith_lex.l projects/jbuild/bin/sleep/Buildfile.dirdep projects/jbuild/bin/stty/Buildfile.dirdep projects/jbuild/bin/sync/Buildfile.dirdep projects/jbuild/bin/test/Buildfile.dirdep projects/jbuild/bin/uuidgen/Buildfile.dirdep projects/jbuild/bld/bsd.dirdep.mk projects/jbuild/games/Buildfile.dirdep projects/jbuild/gnu/Buildfile.dirdep projects/jbuild/gnu/lib/Buildfile.dirdep projects/jbuild/gnu/lib/csu/Buildfile.dirdep projects/jbuild/gnu/lib/libgcc/Buildfile.dirdep projects/jbuild/gnu/lib/libreadline/Buildfile.dirdep projects/jbuild/gnu/lib/libreadline/readline/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/base/Buildfile projects/jbuild/gnu/lib/libstdc++/base/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/basex/Buildfile projects/jbuild/gnu/lib/libstdc++/basex/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/bits/Buildfile projects/jbuild/gnu/lib/libstdc++/bits/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/bkw/Buildfile projects/jbuild/gnu/lib/libstdc++/bkw/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/debug/Buildfile projects/jbuild/gnu/lib/libstdc++/debug/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/ext/Buildfile projects/jbuild/gnu/lib/libstdc++/ext/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/march/Buildfile projects/jbuild/gnu/lib/libstdc++/march/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/pb0/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/pb1/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/std/Buildfile projects/jbuild/gnu/lib/libstdc++/std/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/target/Buildfile projects/jbuild/gnu/lib/libstdc++/target/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/thr/Buildfile projects/jbuild/gnu/lib/libstdc++/thr/Buildfile.dirdep projects/jbuild/gnu/lib/libstdc++/tr1/Buildfile.dirdep projects/jbuild/gnu/lib/libsupc++/Buildfile.dirdep projects/jbuild/gnu/usr.bin/Buildfile.dirdep projects/jbuild/gnu/usr.bin/cc/cc_tools/genheaders/Buildfile projects/jbuild/gnu/usr.bin/cc/cc_tools/genheaders/Buildfile.dirdep projects/jbuild/include/Buildfile projects/jbuild/include/Buildfile.dep projects/jbuild/include/Buildfile.dirdep projects/jbuild/include/arpa/Buildfile projects/jbuild/include/arpa/Buildfile.dirdep projects/jbuild/include/gssapi/Buildfile projects/jbuild/include/gssapi/Buildfile.dirdep projects/jbuild/include/machine/Buildfile projects/jbuild/include/machine/Buildfile.dirdep projects/jbuild/include/osreldate/Buildfile.dirdep projects/jbuild/include/protocols/Buildfile projects/jbuild/include/protocols/Buildfile.dirdep projects/jbuild/include/rpc/Buildfile.dirdep projects/jbuild/include/rpcsvc/Buildfile.dirdep projects/jbuild/lib/Buildfile.dirdep projects/jbuild/lib/csu/Buildfile.dirdep projects/jbuild/lib/csu/i386/Buildfile projects/jbuild/lib/csu/i386/Buildfile.dirdep projects/jbuild/lib/libalias/Buildfile.dirdep projects/jbuild/lib/libalias/libalias/Buildfile.dirdep projects/jbuild/lib/libauditd/Buildfile.dirdep projects/jbuild/lib/libbegemot/Buildfile.dirdep projects/jbuild/lib/libbluetooth/Buildfile projects/jbuild/lib/libbluetooth/Buildfile.dirdep projects/jbuild/lib/libbsm/Buildfile.dirdep projects/jbuild/lib/libbsnmp/Buildfile.dirdep projects/jbuild/lib/libbsnmp/libbsnmp/Buildfile.dirdep projects/jbuild/lib/libc/Buildfile.dirdep projects/jbuild/lib/libc/gen/Buildfile.inc projects/jbuild/lib/libc/posix1e/Buildfile.inc projects/jbuild/lib/libcam/Buildfile.dirdep projects/jbuild/lib/libcrypt/Buildfile.dirdep projects/jbuild/lib/libdevinfo/Buildfile.dirdep projects/jbuild/lib/libdevstat/Buildfile.dirdep projects/jbuild/lib/libdwarf/Buildfile.dirdep projects/jbuild/lib/libedit/Buildfile.dirdep projects/jbuild/lib/libelf/Buildfile.dirdep projects/jbuild/lib/libexpat/Buildfile.dirdep projects/jbuild/lib/libgeom/Buildfile.dirdep projects/jbuild/lib/libipsec/Buildfile.dirdep projects/jbuild/lib/libipx/Buildfile.dirdep projects/jbuild/lib/libkiconv/Buildfile.dirdep projects/jbuild/lib/libkvm/Buildfile.dirdep projects/jbuild/lib/libmd/Buildfile.dirdep projects/jbuild/lib/libnetgraph/Buildfile.dirdep projects/jbuild/lib/libpam/Buildfile.dirdep projects/jbuild/lib/libpam/libpam/Buildfile.dirdep projects/jbuild/lib/libpcap/Buildfile.dep projects/jbuild/lib/libpcap/Buildfile.dirdep projects/jbuild/lib/librpcsvc/Buildfile.dirdep projects/jbuild/lib/libsbuf/Buildfile.dirdep projects/jbuild/lib/libsdp/Buildfile.dirdep projects/jbuild/lib/libsm/Buildfile.dirdep projects/jbuild/lib/libufs/Buildfile.dirdep projects/jbuild/lib/libusbhid/Buildfile.dirdep projects/jbuild/lib/libutil/Buildfile.dirdep projects/jbuild/lib/libwrap/Buildfile.dirdep projects/jbuild/lib/liby/Buildfile.dirdep projects/jbuild/lib/libz/Buildfile.dirdep projects/jbuild/lib/msun/Buildfile projects/jbuild/lib/msun/Buildfile.dirdep projects/jbuild/lib/ncurses/Buildfile.dirdep projects/jbuild/lib/ncurses/include/Buildfile projects/jbuild/lib/ncurses/include/Buildfile.dirdep projects/jbuild/lib/ncurses/make_hash/Buildfile.dirdep projects/jbuild/lib/ncurses/make_keys/Buildfile.dirdep projects/jbuild/lib/ncurses/ncurses/Buildfile.dirdep projects/jbuild/libexec/Buildfile.dirdep projects/jbuild/sbin/Buildfile.dirdep projects/jbuild/sbin/adjkerntz/Buildfile.dirdep projects/jbuild/sbin/atacontrol/Buildfile.dirdep projects/jbuild/sbin/atm/Buildfile.dirdep projects/jbuild/sbin/atm/atmconfig/Buildfile.dirdep projects/jbuild/sbin/badsect/Buildfile.dirdep projects/jbuild/sbin/bsdlabel/Buildfile.dirdep projects/jbuild/sbin/camcontrol/Buildfile.dirdep projects/jbuild/sbin/ccdconfig/Buildfile.dirdep projects/jbuild/sbin/clri/Buildfile.dirdep projects/jbuild/sbin/comcontrol/Buildfile.dirdep projects/jbuild/sbin/conscontrol/Buildfile.dirdep projects/jbuild/sbin/ddb/Buildfile.dirdep projects/jbuild/sbin/devd/Buildfile.dirdep projects/jbuild/sbin/devfs/Buildfile.dirdep projects/jbuild/sbin/dhclient/Buildfile.dirdep projects/jbuild/sbin/dmesg/Buildfile.dirdep projects/jbuild/sbin/dump/Buildfile.dirdep projects/jbuild/sbin/dumpfs/Buildfile.dirdep projects/jbuild/sbin/dumpon/Buildfile.dirdep projects/jbuild/sbin/fdisk/Buildfile.dirdep projects/jbuild/sbin/fdisk_pc98/Buildfile.dirdep projects/jbuild/sbin/ffsinfo/Buildfile.dirdep projects/jbuild/sbin/fsck/Buildfile.dirdep projects/jbuild/sbin/fsck_ffs/Buildfile.dirdep projects/jbuild/sbin/fsck_msdosfs/Buildfile.dirdep projects/jbuild/sbin/fsdb/Buildfile.dirdep projects/jbuild/sbin/fsirand/Buildfile.dirdep projects/jbuild/sbin/gbde/Buildfile.dirdep projects/jbuild/sbin/geom/Buildfile.dirdep projects/jbuild/sbin/geom/class/Buildfile.dirdep projects/jbuild/sbin/geom/class/cache/Buildfile.dirdep projects/jbuild/sbin/geom/class/concat/Buildfile.dirdep projects/jbuild/sbin/geom/class/eli/Buildfile.dirdep projects/jbuild/sbin/geom/class/journal/Buildfile.dirdep projects/jbuild/sbin/geom/class/label/Buildfile.dirdep projects/jbuild/sbin/geom/class/mirror/Buildfile.dirdep projects/jbuild/sbin/geom/class/multipath/Buildfile.dirdep projects/jbuild/sbin/geom/class/nop/Buildfile.dirdep projects/jbuild/sbin/geom/class/part/Buildfile.dirdep projects/jbuild/sbin/geom/class/raid3/Buildfile.dirdep projects/jbuild/sbin/geom/class/shsec/Buildfile.dirdep projects/jbuild/sbin/geom/class/stripe/Buildfile.dirdep projects/jbuild/sbin/geom/class/virstor/Buildfile.dirdep projects/jbuild/sbin/geom/core/Buildfile.dirdep projects/jbuild/sbin/ggate/Buildfile.dirdep projects/jbuild/sbin/growfs/Buildfile.dirdep projects/jbuild/sbin/gvinum/Buildfile.dirdep projects/jbuild/sbin/ifconfig/Buildfile.dirdep projects/jbuild/sbin/init/Buildfile.dirdep projects/jbuild/sbin/ipf/Buildfile.dirdep projects/jbuild/sbin/ipf/ipf/Buildfile.dep projects/jbuild/sbin/ipf/ipf/Buildfile.dirdep projects/jbuild/sbin/ipf/ipfs/Buildfile.dirdep projects/jbuild/sbin/ipf/ipfstat/Buildfile.dirdep projects/jbuild/sbin/ipf/ipmon/Buildfile.dirdep projects/jbuild/sbin/ipf/ipnat/Buildfile.dirdep projects/jbuild/sbin/ipf/ippool/Buildfile.dirdep projects/jbuild/sbin/ipf/ipresend/Buildfile.dirdep projects/jbuild/sbin/ipf/libipf/Buildfile.dirdep projects/jbuild/sbin/ipfw/Buildfile.dirdep projects/jbuild/sbin/iscontrol/Buildfile.dirdep projects/jbuild/sbin/kldconfig/Buildfile.dirdep projects/jbuild/sbin/kldload/Buildfile.dirdep projects/jbuild/sbin/kldstat/Buildfile.dirdep projects/jbuild/sbin/kldunload/Buildfile.dirdep projects/jbuild/sbin/ldconfig/Buildfile.dirdep projects/jbuild/sbin/mca/Buildfile.dirdep projects/jbuild/sbin/md5/Buildfile.dirdep projects/jbuild/sbin/mdconfig/Buildfile.dirdep projects/jbuild/sbin/mdmfs/Buildfile.dirdep projects/jbuild/sbin/mknod/Buildfile.dirdep projects/jbuild/sbin/mksnap_ffs/Buildfile.dirdep projects/jbuild/sbin/mount/Buildfile.dirdep projects/jbuild/sbin/mount_autofs/Buildfile.dirdep projects/jbuild/sbin/mount_cd9660/Buildfile.dirdep projects/jbuild/sbin/mount_ext2fs/Buildfile.dirdep projects/jbuild/sbin/mount_hpfs/Buildfile.dirdep projects/jbuild/sbin/mount_msdosfs/Buildfile.dirdep projects/jbuild/sbin/mount_nfs/Buildfile.dirdep projects/jbuild/sbin/mount_ntfs/Buildfile.dirdep projects/jbuild/sbin/mount_nullfs/Buildfile.dirdep projects/jbuild/sbin/mount_reiserfs/Buildfile.dirdep projects/jbuild/sbin/mount_std/Buildfile.dirdep projects/jbuild/sbin/mount_udf/Buildfile.dirdep projects/jbuild/sbin/mount_unionfs/Buildfile.dirdep projects/jbuild/sbin/natd/Buildfile.dirdep projects/jbuild/sbin/newfs/Buildfile.dirdep projects/jbuild/sbin/newfs_msdos/Buildfile.dirdep projects/jbuild/sbin/nfsiod/Buildfile.dirdep projects/jbuild/sbin/nos-tun/Buildfile.dirdep projects/jbuild/sbin/pfctl/Buildfile.dirdep projects/jbuild/sbin/pflogd/Buildfile.dep projects/jbuild/sbin/pflogd/Buildfile.dirdep projects/jbuild/sbin/ping/Buildfile.dirdep projects/jbuild/sbin/ping6/Buildfile.dirdep projects/jbuild/sbin/quotacheck/Buildfile.dirdep projects/jbuild/sbin/rcorder/Buildfile.dirdep projects/jbuild/sbin/reboot/Buildfile.dirdep projects/jbuild/sbin/recoverdisk/Buildfile.dirdep projects/jbuild/sbin/restore/Buildfile projects/jbuild/sbin/restore/Buildfile.dirdep projects/jbuild/sbin/route/Buildfile.dirdep projects/jbuild/sbin/routed/Buildfile.dirdep projects/jbuild/sbin/rtsol/Buildfile.dirdep projects/jbuild/sbin/savecore/Buildfile.dirdep projects/jbuild/sbin/sconfig/Buildfile.dirdep projects/jbuild/sbin/setkey/Buildfile.dep projects/jbuild/sbin/setkey/Buildfile.dirdep projects/jbuild/sbin/shutdown/Buildfile.dirdep projects/jbuild/sbin/spppcontrol/Buildfile.dirdep projects/jbuild/sbin/sunlabel/Buildfile.dirdep projects/jbuild/sbin/swapon/Buildfile.dirdep projects/jbuild/sbin/sysctl/Buildfile.dirdep projects/jbuild/sbin/tunefs/Buildfile.dirdep projects/jbuild/sbin/umount/Buildfile.dirdep projects/jbuild/secure/Buildfile.dirdep projects/jbuild/secure/lib/Buildfile.dirdep projects/jbuild/secure/lib/libcrypto/Buildfile.dirdep projects/jbuild/secure/libexec/Buildfile.dirdep projects/jbuild/secure/usr.bin/Buildfile.dirdep projects/jbuild/secure/usr.sbin/Buildfile.dirdep projects/jbuild/stage/Buildfile.dirdep projects/jbuild/stage/include.mtree projects/jbuild/sys/Buildfile.dirdep projects/jbuild/sys/altq/Buildfile projects/jbuild/sys/altq/Buildfile.dirdep projects/jbuild/sys/amd64/include/Buildfile.dirdep projects/jbuild/sys/arm/include/Buildfile.dirdep projects/jbuild/sys/bsm/Buildfile projects/jbuild/sys/bsm/Buildfile.dirdep projects/jbuild/sys/cam/Buildfile projects/jbuild/sys/cam/Buildfile.dirdep projects/jbuild/sys/cam/scsi/Buildfile projects/jbuild/sys/cam/scsi/Buildfile.dirdep projects/jbuild/sys/crypto/Buildfile projects/jbuild/sys/crypto/Buildfile.dirdep projects/jbuild/sys/crypto/rijndael/Buildfile projects/jbuild/sys/crypto/rijndael/Buildfile.dirdep projects/jbuild/sys/crypto/sha2/Buildfile projects/jbuild/sys/crypto/sha2/Buildfile.dirdep projects/jbuild/sys/dev/acpica/Buildfile.dirdep projects/jbuild/sys/dev/an/Buildfile projects/jbuild/sys/dev/an/Buildfile.dirdep projects/jbuild/sys/dev/dcons/Buildfile projects/jbuild/sys/dev/dcons/Buildfile.dirdep projects/jbuild/sys/dev/firewire/Buildfile projects/jbuild/sys/dev/firewire/Buildfile.dirdep projects/jbuild/sys/dev/ic/Buildfile projects/jbuild/sys/dev/ic/Buildfile.dirdep projects/jbuild/sys/dev/ofw/Buildfile projects/jbuild/sys/dev/ofw/Buildfile.dirdep projects/jbuild/sys/dev/usb/Buildfile projects/jbuild/sys/dev/usb/Buildfile.dirdep projects/jbuild/sys/dev/utopia/Buildfile projects/jbuild/sys/dev/utopia/Buildfile.dirdep projects/jbuild/sys/dev/vkbd/Buildfile projects/jbuild/sys/dev/vkbd/Buildfile.dirdep projects/jbuild/sys/fs/cd9660/Buildfile projects/jbuild/sys/fs/cd9660/Buildfile.dirdep projects/jbuild/sys/fs/devfs/Buildfile projects/jbuild/sys/fs/devfs/Buildfile.dirdep projects/jbuild/sys/fs/hpfs/Buildfile projects/jbuild/sys/fs/hpfs/Buildfile.dirdep projects/jbuild/sys/fs/msdosfs/Buildfile projects/jbuild/sys/fs/msdosfs/Buildfile.dirdep projects/jbuild/sys/fs/ntfs/Buildfile projects/jbuild/sys/fs/ntfs/Buildfile.dirdep projects/jbuild/sys/fs/udf/Buildfile projects/jbuild/sys/fs/udf/Buildfile.dirdep projects/jbuild/sys/geom/Buildfile projects/jbuild/sys/geom/Buildfile.dirdep projects/jbuild/sys/geom/bde/Buildfile projects/jbuild/sys/geom/bde/Buildfile.dirdep projects/jbuild/sys/geom/cache/Buildfile projects/jbuild/sys/geom/cache/Buildfile.dirdep projects/jbuild/sys/geom/concat/Buildfile projects/jbuild/sys/geom/concat/Buildfile.dirdep projects/jbuild/sys/geom/eli/Buildfile.dirdep projects/jbuild/sys/geom/gate/Buildfile.dirdep projects/jbuild/sys/geom/journal/Buildfile projects/jbuild/sys/geom/journal/Buildfile.dirdep projects/jbuild/sys/geom/label/Buildfile projects/jbuild/sys/geom/label/Buildfile.dirdep projects/jbuild/sys/geom/linux_lvm/Buildfile.dirdep projects/jbuild/sys/geom/mirror/Buildfile projects/jbuild/sys/geom/mirror/Buildfile.dirdep projects/jbuild/sys/geom/multipath/Buildfile projects/jbuild/sys/geom/multipath/Buildfile.dirdep projects/jbuild/sys/geom/nop/Buildfile projects/jbuild/sys/geom/nop/Buildfile.dirdep projects/jbuild/sys/geom/part/Buildfile.dirdep projects/jbuild/sys/geom/raid3/Buildfile projects/jbuild/sys/geom/raid3/Buildfile.dirdep projects/jbuild/sys/geom/shsec/Buildfile projects/jbuild/sys/geom/shsec/Buildfile.dirdep projects/jbuild/sys/geom/stripe/Buildfile projects/jbuild/sys/geom/stripe/Buildfile.dirdep projects/jbuild/sys/geom/vinum/Buildfile projects/jbuild/sys/geom/vinum/Buildfile.dirdep projects/jbuild/sys/geom/virstor/Buildfile projects/jbuild/sys/geom/virstor/Buildfile.dirdep projects/jbuild/sys/i386/include/Buildfile projects/jbuild/sys/i386/include/Buildfile.dirdep projects/jbuild/sys/ia64/include/Buildfile.dirdep projects/jbuild/sys/kgssapi/Buildfile projects/jbuild/sys/kgssapi/Buildfile.dirdep projects/jbuild/sys/mips/include/Buildfile.dirdep projects/jbuild/sys/net/Buildfile projects/jbuild/sys/net/Buildfile.dirdep projects/jbuild/sys/net80211/Buildfile projects/jbuild/sys/net80211/Buildfile.dirdep projects/jbuild/sys/netatalk/Buildfile projects/jbuild/sys/netatalk/Buildfile.dirdep projects/jbuild/sys/netgraph/Buildfile projects/jbuild/sys/netgraph/Buildfile.dirdep projects/jbuild/sys/netgraph/bluetooth/include/Buildfile projects/jbuild/sys/netgraph/bluetooth/include/Buildfile.dirdep projects/jbuild/sys/netinet/Buildfile.dirdep projects/jbuild/sys/netinet6/Buildfile projects/jbuild/sys/netinet6/Buildfile.dirdep projects/jbuild/sys/netipsec/Buildfile projects/jbuild/sys/netipsec/Buildfile.dirdep projects/jbuild/sys/netipx/Buildfile projects/jbuild/sys/netipx/Buildfile.dirdep projects/jbuild/sys/netnatm/Buildfile projects/jbuild/sys/netnatm/Buildfile.dirdep projects/jbuild/sys/nfs/Buildfile projects/jbuild/sys/nfs/Buildfile.dirdep projects/jbuild/sys/nfsclient/Buildfile projects/jbuild/sys/nfsclient/Buildfile.dirdep projects/jbuild/sys/opencrypto/Buildfile projects/jbuild/sys/opencrypto/Buildfile.dirdep projects/jbuild/sys/powerpc/include/Buildfile.dirdep projects/jbuild/sys/rpc/Buildfile projects/jbuild/sys/rpc/Buildfile.dirdep projects/jbuild/sys/sparc64/include/Buildfile.dirdep projects/jbuild/sys/sun4v/include/Buildfile.dirdep projects/jbuild/sys/sys/Buildfile projects/jbuild/sys/sys/Buildfile.dirdep projects/jbuild/sys/ufs/ffs/Buildfile projects/jbuild/sys/ufs/ffs/Buildfile.dirdep projects/jbuild/sys/ufs/ufs/Buildfile.dirdep projects/jbuild/sys/vm/Buildfile projects/jbuild/sys/vm/Buildfile.dirdep projects/jbuild/usr.bin/Buildfile.dirdep projects/jbuild/usr.bin/lex/Buildfile.dirdep projects/jbuild/usr.bin/lex/lib/Buildfile projects/jbuild/usr.bin/lex/lib/Buildfile.dirdep projects/jbuild/usr.bin/rpcgen/Buildfile.dirdep projects/jbuild/usr.bin/rpcgen_host/Buildfile.dirdep projects/jbuild/usr.sbin/Buildfile.dirdep projects/jbuild/usr.sbin/IPXrouted/Buildfile.dirdep projects/jbuild/usr.sbin/ac/Buildfile.dirdep projects/jbuild/usr.sbin/accton/Buildfile.dirdep projects/jbuild/usr.sbin/acpi/Buildfile.dirdep projects/jbuild/usr.sbin/acpi/acpiconf/Buildfile.dirdep projects/jbuild/usr.sbin/acpi/acpidb/Buildfile.dirdep projects/jbuild/usr.sbin/acpi/acpidump/Buildfile.dirdep projects/jbuild/usr.sbin/acpi/iasl/Buildfile.dirdep projects/jbuild/usr.sbin/adduser/Buildfile projects/jbuild/usr.sbin/adduser/Buildfile.dirdep projects/jbuild/usr.sbin/amd/Buildfile.dirdep projects/jbuild/usr.sbin/amd/amd/Buildfile.dirdep projects/jbuild/usr.sbin/amd/amq/Buildfile.dirdep projects/jbuild/usr.sbin/amd/fixmount/Buildfile.dirdep projects/jbuild/usr.sbin/amd/fsinfo/Buildfile.dirdep projects/jbuild/usr.sbin/amd/hlfsd/Buildfile.dirdep projects/jbuild/usr.sbin/amd/include/Buildfile.dirdep projects/jbuild/usr.sbin/amd/libamu/Buildfile.dirdep projects/jbuild/usr.sbin/amd/mk-amd-map/Buildfile.dirdep projects/jbuild/usr.sbin/amd/pawd/Buildfile.dirdep projects/jbuild/usr.sbin/amd/wire-test/Buildfile.dirdep projects/jbuild/usr.sbin/ancontrol/Buildfile.dirdep projects/jbuild/usr.sbin/apm/Buildfile.dirdep projects/jbuild/usr.sbin/apmd/Buildfile.dirdep projects/jbuild/usr.sbin/arp/Buildfile.dirdep projects/jbuild/usr.sbin/asf/Buildfile.dirdep projects/jbuild/usr.sbin/audit/Buildfile.dirdep projects/jbuild/usr.sbin/auditd/Buildfile.dirdep projects/jbuild/usr.sbin/auditreduce/Buildfile.dirdep projects/jbuild/usr.sbin/authpf/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/bcmfw/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/bt3cfw/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/bthidcontrol/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/bthidd/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/btpand/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/hccontrol/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/hcsecd/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/hcseriald/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/l2control/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/l2ping/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/rfcomm_pppd/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/sdpcontrol/Buildfile.dirdep projects/jbuild/usr.sbin/bluetooth/sdpd/Buildfile.dirdep projects/jbuild/usr.sbin/boot0cfg/Buildfile.dirdep projects/jbuild/usr.sbin/boot98cfg/Buildfile.dirdep projects/jbuild/usr.sbin/bootparamd/Buildfile.dirdep projects/jbuild/usr.sbin/bootparamd/bootparamd/Buildfile.dirdep projects/jbuild/usr.sbin/bootparamd/callbootd/Buildfile.dirdep projects/jbuild/usr.sbin/bsnmpd/Buildfile.dirdep projects/jbuild/usr.sbin/bsnmpd/bsnmpd/Buildfile.dirdep projects/jbuild/usr.sbin/bsnmpd/gensnmptree/Buildfile.dirdep projects/jbuild/usr.sbin/bsnmpd/modules/Buildfile.dirdep projects/jbuild/usr.sbin/btxld/Buildfile.dirdep projects/jbuild/usr.sbin/burncd/Buildfile.dirdep projects/jbuild/usr.sbin/cdcontrol/Buildfile.dirdep projects/jbuild/usr.sbin/chkgrp/Buildfile.dirdep projects/jbuild/usr.sbin/chown/Buildfile.dirdep projects/jbuild/usr.sbin/chroot/Buildfile.dirdep projects/jbuild/usr.sbin/ckdist/Buildfile.dirdep projects/jbuild/usr.sbin/clear_locks/Buildfile.dirdep projects/jbuild/usr.sbin/config/Buildfile.dirdep projects/jbuild/usr.sbin/cpucontrol/Buildfile.dirdep projects/jbuild/usr.sbin/crashinfo/Buildfile projects/jbuild/usr.sbin/crashinfo/Buildfile.dirdep projects/jbuild/usr.sbin/cron/Buildfile.dirdep projects/jbuild/usr.sbin/cron/cron/Buildfile.dirdep projects/jbuild/usr.sbin/cron/crontab/Buildfile.dirdep projects/jbuild/usr.sbin/cron/lib/Buildfile.dirdep projects/jbuild/usr.sbin/crunch/Buildfile.dirdep projects/jbuild/usr.sbin/crunch/crunchgen/Buildfile.dirdep projects/jbuild/usr.sbin/crunch/crunchide/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/ctm/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/ctm_dequeue/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/ctm_rmail/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/ctm_smail/Buildfile.dirdep projects/jbuild/usr.sbin/ctm/mkCTM/Buildfile.dirdep projects/jbuild/usr.sbin/cxgbtool/Buildfile.dirdep projects/jbuild/usr.sbin/daemon/Buildfile.dirdep projects/jbuild/usr.sbin/dconschat/Buildfile.dirdep projects/jbuild/usr.sbin/devinfo/Buildfile.dirdep projects/jbuild/usr.sbin/digictl/Buildfile.dirdep projects/jbuild/usr.sbin/diskinfo/Buildfile.dirdep projects/jbuild/usr.sbin/dumpcis/Buildfile.dirdep projects/jbuild/usr.sbin/edquota/Buildfile.dirdep projects/jbuild/usr.sbin/eeprom/Buildfile.dirdep projects/jbuild/usr.sbin/extattr/Buildfile.dirdep projects/jbuild/usr.sbin/extattrctl/Buildfile.dirdep projects/jbuild/usr.sbin/faithd/Buildfile.dirdep projects/jbuild/usr.sbin/fdcontrol/Buildfile.dirdep projects/jbuild/usr.sbin/fdformat/Buildfile.dirdep projects/jbuild/usr.sbin/fdread/Buildfile.dirdep projects/jbuild/usr.sbin/fdwrite/Buildfile.dirdep projects/jbuild/usr.sbin/fifolog/Buildfile.dirdep projects/jbuild/usr.sbin/fifolog/fifolog_create/Buildfile.dirdep projects/jbuild/usr.sbin/fifolog/fifolog_reader/Buildfile.dirdep projects/jbuild/usr.sbin/fifolog/fifolog_writer/Buildfile.dirdep projects/jbuild/usr.sbin/fifolog/lib/Buildfile.dirdep projects/jbuild/usr.sbin/watch/Buildfile.dirdep projects/jbuild/usr.sbin/watchdogd/Buildfile.dirdep projects/jbuild/usr.sbin/wlandebug/Buildfile.dirdep projects/jbuild/usr.sbin/wlconfig/Buildfile.dirdep projects/jbuild/usr.sbin/yp_mkdb/Buildfile.dirdep projects/jbuild/usr.sbin/ypset/Buildfile.dirdep projects/jbuild/usr.sbin/zzz/Buildfile projects/jbuild/usr.sbin/zzz/Buildfile.dirdep Modified: projects/jbuild/Buildfile.dirdep ============================================================================== --- projects/jbuild/Buildfile.dirdep Thu May 28 04:35:09 2009 (r192957) +++ projects/jbuild/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) @@ -1,155 +1,135 @@ # This file is automatically generated. DO NOT EDIT! .if !defined(NODIRDEP) -# DIRDEP= bin crypto etc games gnu include kerberos5 lib libexec release rescue sbin secure share stage sys tools usr.bin usr.sbin -.if empty(D_INC_DONE:Mbin) -D_INC_DONE+= bin -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/Buildfile.dirdep) -.include "${.SRCTOP}/bin/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mcrypto) -D_INC_DONE+= crypto -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/crypto/Buildfile.dirdep) -.include "${.SRCTOP}/crypto/Buildfile.dirdep" +dirdep := ${.SRCTOP}/crypto/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Metc) -D_INC_DONE+= etc -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/etc/Buildfile.dirdep) -.include "${.SRCTOP}/etc/Buildfile.dirdep" +dirdep := ${.SRCTOP}/etc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mgames) -D_INC_DONE+= games -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/games/Buildfile.dirdep) -.include "${.SRCTOP}/games/Buildfile.dirdep" +dirdep := ${.SRCTOP}/games/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mgnu) -D_INC_DONE+= gnu -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/gnu/Buildfile.dirdep) -.include "${.SRCTOP}/gnu/Buildfile.dirdep" +dirdep := ${.SRCTOP}/gnu/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Minclude) -D_INC_DONE+= include -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/include/Buildfile.dirdep) -.include "${.SRCTOP}/include/Buildfile.dirdep" +dirdep := ${.SRCTOP}/include/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mkerberos5) -D_INC_DONE+= kerberos5 -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/kerberos5/Buildfile.dirdep) -.include "${.SRCTOP}/kerberos5/Buildfile.dirdep" +dirdep := ${.SRCTOP}/kerberos5/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mlib) -D_INC_DONE+= lib -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/lib/Buildfile.dirdep) -.include "${.SRCTOP}/lib/Buildfile.dirdep" +dirdep := ${.SRCTOP}/lib/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mlibexec) -D_INC_DONE+= libexec -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/libexec/Buildfile.dirdep) -.include "${.SRCTOP}/libexec/Buildfile.dirdep" +dirdep := ${.SRCTOP}/libexec/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mrelease) -D_INC_DONE+= release -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/release/Buildfile.dirdep) -.include "${.SRCTOP}/release/Buildfile.dirdep" +dirdep := ${.SRCTOP}/release/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mrescue) -D_INC_DONE+= rescue -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/rescue/Buildfile.dirdep) -.include "${.SRCTOP}/rescue/Buildfile.dirdep" +dirdep := ${.SRCTOP}/rescue/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Msbin) -D_INC_DONE+= sbin -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/sbin/Buildfile.dirdep) -.include "${.SRCTOP}/sbin/Buildfile.dirdep" +dirdep := ${.SRCTOP}/sbin/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Msecure) -D_INC_DONE+= secure -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/secure/Buildfile.dirdep) -.include "${.SRCTOP}/secure/Buildfile.dirdep" +dirdep := ${.SRCTOP}/secure/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mshare) -D_INC_DONE+= share -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/share/Buildfile.dirdep) -.include "${.SRCTOP}/share/Buildfile.dirdep" +dirdep := ${.SRCTOP}/share/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mstage) -D_INC_DONE+= stage -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/stage/Buildfile.dirdep) -.include "${.SRCTOP}/stage/Buildfile.dirdep" +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Msys) -D_INC_DONE+= sys -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/sys/Buildfile.dirdep) -.include "${.SRCTOP}/sys/Buildfile.dirdep" +dirdep := ${.SRCTOP}/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mtools) -D_INC_DONE+= tools -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/tools/Buildfile.dirdep) -.include "${.SRCTOP}/tools/Buildfile.dirdep" +dirdep := ${.SRCTOP}/tools/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Musr.bin) -D_INC_DONE+= usr.bin -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/usr.bin/Buildfile.dirdep) -.include "${.SRCTOP}/usr.bin/Buildfile.dirdep" +dirdep := ${.SRCTOP}/usr.bin/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Musr.sbin) -D_INC_DONE+= usr.sbin -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/usr.sbin/Buildfile.dirdep) -.include "${.SRCTOP}/usr.sbin/Buildfile.dirdep" +dirdep := ${.SRCTOP}/usr.sbin/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif Modified: projects/jbuild/bin/Buildfile.dirdep ============================================================================== --- projects/jbuild/bin/Buildfile.dirdep Thu May 28 04:35:09 2009 (r192957) +++ projects/jbuild/bin/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) @@ -1,299 +1,261 @@ # This file is automatically generated. DO NOT EDIT! .if !defined(NODIRDEP) -# DIRDEP= bin/cat bin/chflags bin/chio bin/chmod bin/cp bin/csh bin/date bin/dd bin/df bin/domainname bin/echo bin/ed bin/expr bin/getfacl bin/hostname bin/kenv bin/kill bin/ln bin/ls bin/mkdir bin/mv bin/pax bin/pkill bin/ps bin/pwd bin/rcp bin/realpath bin/rm bin/rmail bin/rmdir bin/setfacl bin/sh bin/sleep bin/stty bin/sync bin/test bin/uuidgen -.if empty(D_INC_DONE:Mbin/cat) -D_INC_DONE+= bin/cat -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/cat/Buildfile.dirdep) -.include "${.SRCTOP}/bin/cat/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/cat/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/chflags) -D_INC_DONE+= bin/chflags -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/chflags/Buildfile.dirdep) -.include "${.SRCTOP}/bin/chflags/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/chflags/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/chio) -D_INC_DONE+= bin/chio -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/chio/Buildfile.dirdep) -.include "${.SRCTOP}/bin/chio/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/chio/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/chmod) -D_INC_DONE+= bin/chmod -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/chmod/Buildfile.dirdep) -.include "${.SRCTOP}/bin/chmod/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/chmod/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/cp) -D_INC_DONE+= bin/cp -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/cp/Buildfile.dirdep) -.include "${.SRCTOP}/bin/cp/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/cp/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/csh) -D_INC_DONE+= bin/csh -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/csh/Buildfile.dirdep) -.include "${.SRCTOP}/bin/csh/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/csh/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/date) -D_INC_DONE+= bin/date -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/date/Buildfile.dirdep) -.include "${.SRCTOP}/bin/date/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/date/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/dd) -D_INC_DONE+= bin/dd -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/dd/Buildfile.dirdep) -.include "${.SRCTOP}/bin/dd/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/dd/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/df) -D_INC_DONE+= bin/df -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/df/Buildfile.dirdep) -.include "${.SRCTOP}/bin/df/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/df/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/domainname) -D_INC_DONE+= bin/domainname -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/domainname/Buildfile.dirdep) -.include "${.SRCTOP}/bin/domainname/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/domainname/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/echo) -D_INC_DONE+= bin/echo -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/echo/Buildfile.dirdep) -.include "${.SRCTOP}/bin/echo/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/echo/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/ed) -D_INC_DONE+= bin/ed -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/ed/Buildfile.dirdep) -.include "${.SRCTOP}/bin/ed/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/ed/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/expr) -D_INC_DONE+= bin/expr -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/expr/Buildfile.dirdep) -.include "${.SRCTOP}/bin/expr/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/expr/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/getfacl) -D_INC_DONE+= bin/getfacl -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/getfacl/Buildfile.dirdep) -.include "${.SRCTOP}/bin/getfacl/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/getfacl/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/hostname) -D_INC_DONE+= bin/hostname -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/hostname/Buildfile.dirdep) -.include "${.SRCTOP}/bin/hostname/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/hostname/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/kenv) -D_INC_DONE+= bin/kenv -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/kenv/Buildfile.dirdep) -.include "${.SRCTOP}/bin/kenv/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/kenv/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/kill) -D_INC_DONE+= bin/kill -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/kill/Buildfile.dirdep) -.include "${.SRCTOP}/bin/kill/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/kill/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/ln) -D_INC_DONE+= bin/ln -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/ln/Buildfile.dirdep) -.include "${.SRCTOP}/bin/ln/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/ln/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/ls) -D_INC_DONE+= bin/ls -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/ls/Buildfile.dirdep) -.include "${.SRCTOP}/bin/ls/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/ls/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/mkdir) -D_INC_DONE+= bin/mkdir -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/mkdir/Buildfile.dirdep) -.include "${.SRCTOP}/bin/mkdir/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/mkdir/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/mv) -D_INC_DONE+= bin/mv -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/mv/Buildfile.dirdep) -.include "${.SRCTOP}/bin/mv/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/mv/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/pax) -D_INC_DONE+= bin/pax -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/pax/Buildfile.dirdep) -.include "${.SRCTOP}/bin/pax/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/pax/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/pkill) -D_INC_DONE+= bin/pkill -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/pkill/Buildfile.dirdep) -.include "${.SRCTOP}/bin/pkill/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/pkill/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/ps) -D_INC_DONE+= bin/ps -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/ps/Buildfile.dirdep) -.include "${.SRCTOP}/bin/ps/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/ps/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/pwd) -D_INC_DONE+= bin/pwd -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/pwd/Buildfile.dirdep) -.include "${.SRCTOP}/bin/pwd/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/pwd/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/rcp) -D_INC_DONE+= bin/rcp -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/rcp/Buildfile.dirdep) -.include "${.SRCTOP}/bin/rcp/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/rcp/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/realpath) -D_INC_DONE+= bin/realpath -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/realpath/Buildfile.dirdep) -.include "${.SRCTOP}/bin/realpath/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/realpath/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/rm) -D_INC_DONE+= bin/rm -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/rm/Buildfile.dirdep) -.include "${.SRCTOP}/bin/rm/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/rm/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/rmail) -D_INC_DONE+= bin/rmail -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/rmail/Buildfile.dirdep) -.include "${.SRCTOP}/bin/rmail/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/rmail/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/rmdir) -D_INC_DONE+= bin/rmdir -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/rmdir/Buildfile.dirdep) -.include "${.SRCTOP}/bin/rmdir/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/rmdir/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/setfacl) -D_INC_DONE+= bin/setfacl -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/setfacl/Buildfile.dirdep) -.include "${.SRCTOP}/bin/setfacl/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/setfacl/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/sh) -D_INC_DONE+= bin/sh -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/sh/Buildfile.dirdep) -.include "${.SRCTOP}/bin/sh/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/sh/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/sleep) -D_INC_DONE+= bin/sleep -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/sleep/Buildfile.dirdep) -.include "${.SRCTOP}/bin/sleep/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/sleep/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/stty) -D_INC_DONE+= bin/stty -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/stty/Buildfile.dirdep) -.include "${.SRCTOP}/bin/stty/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/stty/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/sync) -D_INC_DONE+= bin/sync -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/sync/Buildfile.dirdep) -.include "${.SRCTOP}/bin/sync/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/sync/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/test) -D_INC_DONE+= bin/test -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/test/Buildfile.dirdep) -.include "${.SRCTOP}/bin/test/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/test/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif -.if empty(D_INC_DONE:Mbin/uuidgen) -D_INC_DONE+= bin/uuidgen -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/bin/uuidgen/Buildfile.dirdep) -.include "${.SRCTOP}/bin/uuidgen/Buildfile.dirdep" +dirdep := ${.SRCTOP}/bin/uuidgen/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif Modified: projects/jbuild/bin/cat/Buildfile.dirdep ============================================================================== --- projects/jbuild/bin/cat/Buildfile.dirdep Thu May 28 04:35:09 2009 (r192957) +++ projects/jbuild/bin/cat/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) @@ -1,14 +1,67 @@ # This file is automatically generated. DO NOT EDIT! .if !defined(NODIRDEP) -# DIRDEP= stage -.if empty(D_INC_DONE:Mstage) -D_INC_DONE+= stage -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/stage/Buildfile.dirdep) -.include "${.SRCTOP}/stage/Buildfile.dirdep" +dirdep := ${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif +dirdep := ${.SRCTOP}/include/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/libc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/sys/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.for t in ${MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor +.for t in ${MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor .endif .for t in ${MACHINE_LIST} @@ -17,6 +70,34 @@ D_TGTS_${t}= .if !defined(NODIRDEP) _MACHINE_LIST:= ${MACHINE_LIST} +.if exists(${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/csu/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/libgcc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/include/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/libc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/libc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + .if exists(${.SRCTOP}/stage/Buildfile.dirdep) .for _t in ${_MACHINE_LIST} D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all @@ -24,6 +105,29 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/sys/sys/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/sys/sys/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.for t in ${_MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor +.for t in ${_MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor .endif .for t in ${MACHINE_LIST} Modified: projects/jbuild/bin/chflags/Buildfile.dirdep ============================================================================== --- projects/jbuild/bin/chflags/Buildfile.dirdep Thu May 28 04:35:09 2009 (r192957) +++ projects/jbuild/bin/chflags/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) @@ -1,14 +1,67 @@ # This file is automatically generated. DO NOT EDIT! .if !defined(NODIRDEP) -# DIRDEP= stage -.if empty(D_INC_DONE:Mstage) -D_INC_DONE+= stage -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/stage/Buildfile.dirdep) -.include "${.SRCTOP}/stage/Buildfile.dirdep" +dirdep := ${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif +dirdep := ${.SRCTOP}/include/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/libc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/sys/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.for t in ${MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor +.for t in ${MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor .endif .for t in ${MACHINE_LIST} @@ -17,6 +70,34 @@ D_TGTS_${t}= .if !defined(NODIRDEP) _MACHINE_LIST:= ${MACHINE_LIST} +.if exists(${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/csu/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/libgcc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/include/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/libc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/libc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + .if exists(${.SRCTOP}/stage/Buildfile.dirdep) .for _t in ${_MACHINE_LIST} D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all @@ -24,6 +105,29 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/sys/sys/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/sys/sys/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.for t in ${_MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor +.for t in ${_MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor .endif .for t in ${MACHINE_LIST} Modified: projects/jbuild/bin/chio/Buildfile.dirdep ============================================================================== --- projects/jbuild/bin/chio/Buildfile.dirdep Thu May 28 04:35:09 2009 (r192957) +++ projects/jbuild/bin/chio/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) @@ -1,14 +1,67 @@ # This file is automatically generated. DO NOT EDIT! .if !defined(NODIRDEP) -# DIRDEP= stage -.if empty(D_INC_DONE:Mstage) -D_INC_DONE+= stage -D_INC_DONE:= ${D_INC_DONE} -.if exists(${.SRCTOP}/stage/Buildfile.dirdep) -.include "${.SRCTOP}/stage/Buildfile.dirdep" +dirdep := ${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" .endif .endif +dirdep := ${.SRCTOP}/include/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/libc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu May 28 05:43:36 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45FB01065674; Thu, 28 May 2009 05:43:36 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 342218FC1B; Thu, 28 May 2009 05:43:36 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S5hZss024327; Thu, 28 May 2009 05:43:35 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S5hZbq024324; Thu, 28 May 2009 05:43:35 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280543.n4S5hZbq024324@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 05:43:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192959 - projects/jbuild/bin/sh X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 05:43:36 -0000 Author: jb Date: Thu May 28 05:43:35 2009 New Revision: 192959 URL: http://svn.freebsd.org/changeset/base/192959 Log: Add the missing PROG =. Oops. Modified: projects/jbuild/bin/sh/Buildfile projects/jbuild/bin/sh/Buildfile.dep projects/jbuild/bin/sh/Buildfile.dirdep Modified: projects/jbuild/bin/sh/Buildfile ============================================================================== --- projects/jbuild/bin/sh/Buildfile Thu May 28 04:51:05 2009 (r192958) +++ projects/jbuild/bin/sh/Buildfile Thu May 28 05:43:35 2009 (r192959) @@ -2,9 +2,10 @@ .PATH: ${BSDSRCTOP}/bin/sh .PATH: ${BSDSRCTOP}/bin/sh/bltin -#.PATH: ${BSDSRCTOP}/usr.bin/printf .PATH: ${BSDSRCTOP}/bin/test +PROG = sh + SRCS = \ alias.c \ arith_lex.l \ Modified: projects/jbuild/bin/sh/Buildfile.dep ============================================================================== --- projects/jbuild/bin/sh/Buildfile.dep Thu May 28 04:51:05 2009 (r192958) +++ projects/jbuild/bin/sh/Buildfile.dep Thu May 28 05:43:35 2009 (r192959) @@ -4,10 +4,18 @@ DIRDEP = \ bin/sh/mkinit \ bin/sh/mknodes \ bin/sh/mksyntax \ + gnu/lib/csu \ + gnu/lib/libgcc \ include \ + include/machine \ + lib/csu/MACHINE_ARCH \ + lib/libc \ + lib/libedit \ + lib/ncurses/ncurses \ stage \ sys/MACHINE_ARCH/include \ sys/sys \ + usr.bin/lex/lib \ SRCDIRDEP = \ Modified: projects/jbuild/bin/sh/Buildfile.dirdep ============================================================================== --- projects/jbuild/bin/sh/Buildfile.dirdep Thu May 28 04:51:05 2009 (r192958) +++ projects/jbuild/bin/sh/Buildfile.dirdep Thu May 28 05:43:35 2009 (r192959) @@ -21,6 +21,20 @@ dirdep := ${.SRCTOP}/bin/sh/mksyntax/Bui .endif .endif +dirdep := ${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + dirdep := ${.SRCTOP}/include/Buildfile.dirdep .if empty(.MAKEFILE_LIST:M${dirdep}) .if exists(${dirdep}) @@ -28,6 +42,34 @@ dirdep := ${.SRCTOP}/include/Buildfile.d .endif .endif +dirdep := ${.SRCTOP}/include/machine/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/libc/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/libedit/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/ncurses/ncurses/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + dirdep := ${.SRCTOP}/stage/Buildfile.dirdep .if empty(.MAKEFILE_LIST:M${dirdep}) .if exists(${dirdep}) @@ -42,6 +84,23 @@ dirdep := ${.SRCTOP}/sys/sys/Buildfile.d .endif .endif +dirdep := ${.SRCTOP}/usr.bin/lex/lib/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.for t in ${MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor .for t in ${MACHINE_LIST} _d=sys/MACHINE_ARCH/include dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep @@ -81,6 +140,20 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/gnu/lib/csu/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/csu/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/gnu/lib/libgcc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/gnu/lib/libgcc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + .if exists(${.SRCTOP}/include/Buildfile.dirdep) .for _t in ${_MACHINE_LIST} D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/all @@ -88,6 +161,34 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/include/machine/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/machine/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/libc/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/libc/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/libedit/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/libedit/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/ncurses/ncurses/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/ncurses/ncurses/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + .if exists(${.SRCTOP}/stage/Buildfile.dirdep) .for _t in ${_MACHINE_LIST} D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all @@ -102,6 +203,21 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/usr.bin/lex/lib/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/usr.bin/lex/lib/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.for t in ${_MACHINE_LIST} +_d=lib/csu/MACHINE_ARCH +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor .for t in ${_MACHINE_LIST} _d=sys/MACHINE_ARCH/include .if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) From owner-svn-src-projects@FreeBSD.ORG Thu May 28 06:23:25 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F88A1065675; Thu, 28 May 2009 06:23:25 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0E2618FC18; Thu, 28 May 2009 06:23:25 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S6NOL6025199; Thu, 28 May 2009 06:23:24 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S6NOjf025198; Thu, 28 May 2009 06:23:24 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280623.n4S6NOjf025198@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 06:23:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192960 - projects/jbuild/secure/lib/libcrypto X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 06:23:25 -0000 Author: jb Date: Thu May 28 06:23:24 2009 New Revision: 192960 URL: http://svn.freebsd.org/changeset/base/192960 Log: Fix a parallel build problem Modified: projects/jbuild/secure/lib/libcrypto/Buildfile Modified: projects/jbuild/secure/lib/libcrypto/Buildfile ============================================================================== --- projects/jbuild/secure/lib/libcrypto/Buildfile Thu May 28 05:43:35 2009 (r192959) +++ projects/jbuild/secure/lib/libcrypto/Buildfile Thu May 28 06:23:24 2009 (r192960) @@ -390,8 +390,8 @@ INCS += \ ssl_locl.h \ tls1.h -SRCS+= buildinf.h -INCS+= opensslconf.h +GENHDRS += buildinf.h evp.h fips.h fips_rand.h opensslconf.h +INCS += opensslconf.h INCSDIR= ${INCLUDEDIR}/openssl CSTD= gnu89 From owner-svn-src-projects@FreeBSD.ORG Thu May 28 06:39:11 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9C27106566B; Thu, 28 May 2009 06:39:11 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEE5E8FC0A; Thu, 28 May 2009 06:39:11 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S6dBM0025578; Thu, 28 May 2009 06:39:11 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S6dB51025577; Thu, 28 May 2009 06:39:11 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280639.n4S6dB51025577@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 06:39:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192961 - in projects/jbuild/include: . machine X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 06:39:12 -0000 Author: jb Date: Thu May 28 06:39:11 2009 New Revision: 192961 URL: http://svn.freebsd.org/changeset/base/192961 Log: Discard in favour of a different way to build Deleted: projects/jbuild/include/machine/ Modified: projects/jbuild/include/Buildfile Modified: projects/jbuild/include/Buildfile ============================================================================== --- projects/jbuild/include/Buildfile Thu May 28 06:23:24 2009 (r192960) +++ projects/jbuild/include/Buildfile Thu May 28 06:39:11 2009 (r192961) @@ -22,6 +22,7 @@ INCS = \ err.h \ errno.h \ fcntl.h \ + float.h \ fmtmsg.h \ fnmatch.h \ fstab.h \ From owner-svn-src-projects@FreeBSD.ORG Thu May 28 07:04:51 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A9251065677; Thu, 28 May 2009 07:04:51 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E28178FC1B; Thu, 28 May 2009 07:04:50 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S74ojs026288; Thu, 28 May 2009 07:04:50 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S74omi026284; Thu, 28 May 2009 07:04:50 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280704.n4S74omi026284@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 07:04:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192963 - in projects/jbuild: include/osreldate sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 07:04:51 -0000 Author: jb Date: Thu May 28 07:04:50 2009 New Revision: 192963 URL: http://svn.freebsd.org/changeset/base/192963 Log: These two dirs aren't suitable for the host Modified: projects/jbuild/include/osreldate/Buildfile projects/jbuild/include/osreldate/Buildfile.dirdep projects/jbuild/sys/sys/Buildfile projects/jbuild/sys/sys/Buildfile.dirdep Modified: projects/jbuild/include/osreldate/Buildfile ============================================================================== --- projects/jbuild/include/osreldate/Buildfile Thu May 28 06:52:14 2009 (r192962) +++ projects/jbuild/include/osreldate/Buildfile Thu May 28 07:04:50 2009 (r192963) @@ -1,7 +1,6 @@ # $FreeBSD$ INCDIR= ${STAGEDIR}/usr/include -COMMONDIR= INCS = osreldate.h @@ -18,4 +17,6 @@ osreldate.h : ${BSDSRCTOP}/sys/sys/param echo "#endif"; } >> ${.TARGET} rm -f version vers.c +NOT_MACHINE_ARCH = host + .include Modified: projects/jbuild/include/osreldate/Buildfile.dirdep ============================================================================== --- projects/jbuild/include/osreldate/Buildfile.dirdep Thu May 28 06:52:14 2009 (r192962) +++ projects/jbuild/include/osreldate/Buildfile.dirdep Thu May 28 07:04:50 2009 (r192963) @@ -24,9 +24,8 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endif -.for t in ${MACHINE_LIST:Ncommon} -${.OBJROOT}/${t}/include/osreldate/all : ${.OBJROOT}/common/include/osreldate/all .PHONY +.for t in ${MACHINE_LIST} +${.OBJROOT}/${t}/include/osreldate/all : ${D_TGTS_${t}} .PHONY + echo Checking ${.OBJROOT}/${t}/include/osreldate + cd ${.SRCTOP}/include/osreldate && MACHINE=${t} ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all .endfor -${.OBJROOT}/common/include/osreldate/all : ${D_TGTS_common} .PHONY - echo Checking ${.OBJROOT}/common/include/osreldate - cd ${.SRCTOP}/include/osreldate && MACHINE=common ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all Modified: projects/jbuild/sys/sys/Buildfile ============================================================================== --- projects/jbuild/sys/sys/Buildfile Thu May 28 06:52:14 2009 (r192962) +++ projects/jbuild/sys/sys/Buildfile Thu May 28 07:04:50 2009 (r192963) @@ -1,7 +1,6 @@ # $FreeBSD$ INCDIR = ${STAGEDIR}/usr/include/sys -COMMONDIR = INCS = \ _bus_dma.h \ @@ -259,4 +258,6 @@ INCS = \ wait.h \ watchdog.h +NOT_MACHINE_ARCH = host + .include Modified: projects/jbuild/sys/sys/Buildfile.dirdep ============================================================================== --- projects/jbuild/sys/sys/Buildfile.dirdep Thu May 28 06:52:14 2009 (r192962) +++ projects/jbuild/sys/sys/Buildfile.dirdep Thu May 28 07:04:50 2009 (r192963) @@ -24,9 +24,8 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endif -.for t in ${MACHINE_LIST:Ncommon} -${.OBJROOT}/${t}/sys/sys/all : ${.OBJROOT}/common/sys/sys/all .PHONY +.for t in ${MACHINE_LIST} +${.OBJROOT}/${t}/sys/sys/all : ${D_TGTS_${t}} .PHONY + echo Checking ${.OBJROOT}/${t}/sys/sys + cd ${.SRCTOP}/sys/sys && MACHINE=${t} ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all .endfor -${.OBJROOT}/common/sys/sys/all : ${D_TGTS_common} .PHONY - echo Checking ${.OBJROOT}/common/sys/sys - cd ${.SRCTOP}/sys/sys && MACHINE=common ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all From owner-svn-src-projects@FreeBSD.ORG Thu May 28 07:12:58 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68F3C1065670; Thu, 28 May 2009 07:12:58 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 584F48FC1C; Thu, 28 May 2009 07:12:58 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S7Cwjs026563; Thu, 28 May 2009 07:12:58 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S7Cwhw026562; Thu, 28 May 2009 07:12:58 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280712.n4S7Cwhw026562@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 07:12:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192964 - projects/jbuild/lib/msun X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 07:12:58 -0000 Author: jb Date: Thu May 28 07:12:57 2009 New Revision: 192964 URL: http://svn.freebsd.org/changeset/base/192964 Log: This lib isn't required for the host which has it's own already Modified: projects/jbuild/lib/msun/Buildfile Modified: projects/jbuild/lib/msun/Buildfile ============================================================================== --- projects/jbuild/lib/msun/Buildfile Thu May 28 07:04:50 2009 (r192963) +++ projects/jbuild/lib/msun/Buildfile Thu May 28 07:12:57 2009 (r192964) @@ -12,7 +12,7 @@ # LIBDIR = ${STAGEDIR}/lib -INCDIR = ${STAGEDIR}//usr/include +INCDIR = ${STAGEDIR}/usr/include .if ${MACHINE_ARCH} == "i386" ARCH_SUBDIR = i387 @@ -20,6 +20,7 @@ ARCH_SUBDIR = i387 ARCH_SUBDIR = ${MACHINE_ARCH} .endif +.if exists(${ARCH_SUBDIR}) .include "${ARCH_SUBDIR}/Buildfile.inc" .PATH: ${.CURDIR}/${ARCH_SUBDIR} @@ -32,6 +33,7 @@ CFLAGS+= -I${.CURDIR}/ld80 .PATH: ${.CURDIR}/ld128 CFLAGS+= -I${.CURDIR}/ld128 .endif +.endif .PATH: ${.CURDIR}/bsdsrc .PATH: ${.CURDIR}/src @@ -211,7 +213,7 @@ COMMON_SRCS += \ s_lrintl.c \ s_modfl.c -.if ${LDBL_PREC} != 53 +.if defined(LDBL_PREC) && ${LDBL_PREC} != 53 # If long double != double use these; otherwise, we alias the double versions. COMMON_SRCS += \ e_acosl.c \ @@ -277,4 +279,6 @@ INCS = \ fenv.h \ math.h +NOT_MACHINE_ARCH = host + .include From owner-svn-src-projects@FreeBSD.ORG Thu May 28 07:15:08 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D6E11065675; Thu, 28 May 2009 07:15:08 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CB3E8FC1A; Thu, 28 May 2009 07:15:08 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S7F88j026653; Thu, 28 May 2009 07:15:08 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S7F8O1026651; Thu, 28 May 2009 07:15:08 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280715.n4S7F8O1026651@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 07:15:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192965 - in projects/jbuild/lib: libc libutil X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 07:15:08 -0000 Author: jb Date: Thu May 28 07:15:08 2009 New Revision: 192965 URL: http://svn.freebsd.org/changeset/base/192965 Log: These libs aren't required for the host which has it's own already Modified: projects/jbuild/lib/libc/Buildfile projects/jbuild/lib/libutil/Buildfile Modified: projects/jbuild/lib/libc/Buildfile ============================================================================== --- projects/jbuild/lib/libc/Buildfile Thu May 28 07:12:57 2009 (r192964) +++ projects/jbuild/lib/libc/Buildfile Thu May 28 07:15:08 2009 (r192965) @@ -75,4 +75,6 @@ SRCS += ${_src} .endfor .endif +NOT_MACHINE_ARCH = host + .include Modified: projects/jbuild/lib/libutil/Buildfile ============================================================================== --- projects/jbuild/lib/libutil/Buildfile Thu May 28 07:12:57 2009 (r192964) +++ projects/jbuild/lib/libutil/Buildfile Thu May 28 07:15:08 2009 (r192965) @@ -23,4 +23,6 @@ WARNS ?= 6 CFLAGS += -DLIBC_SCCS -DINET6 CFLAGS += -I${.CURDIR} -I${BSDSRCTOP}/lib/libc/gen +NOT_MACHINE_ARCH = host + .include From owner-svn-src-projects@FreeBSD.ORG Thu May 28 07:22:12 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC73F1065670; Thu, 28 May 2009 07:22:12 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A9D7C8FC20; Thu, 28 May 2009 07:22:12 +0000 (UTC) (envelope-from jb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4S7MCsJ026915; Thu, 28 May 2009 07:22:12 GMT (envelope-from jb@svn.freebsd.org) Received: (from jb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4S7MCIL026903; Thu, 28 May 2009 07:22:12 GMT (envelope-from jb@svn.freebsd.org) Message-Id: <200905280722.n4S7MCIL026903@svn.freebsd.org> From: John Birrell Date: Thu, 28 May 2009 07:22:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192967 - in projects/jbuild/usr.bin: . jbuild jdirdep make X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 07:22:13 -0000 Author: jb Date: Thu May 28 07:22:11 2009 New Revision: 192967 URL: http://svn.freebsd.org/changeset/base/192967 Log: Add Buildfiles for make, jbuild and jdirdep/jgetsrc Added: projects/jbuild/usr.bin/jbuild/Buildfile projects/jbuild/usr.bin/jbuild/Buildfile.dep projects/jbuild/usr.bin/jbuild/Buildfile.dirdep projects/jbuild/usr.bin/jdirdep/Buildfile projects/jbuild/usr.bin/jdirdep/Buildfile.common projects/jbuild/usr.bin/jdirdep/Buildfile.dep projects/jbuild/usr.bin/jdirdep/Buildfile.dirdep projects/jbuild/usr.bin/make/Buildfile projects/jbuild/usr.bin/make/Buildfile.dep projects/jbuild/usr.bin/make/Buildfile.dirdep Modified: projects/jbuild/usr.bin/Buildfile projects/jbuild/usr.bin/Buildfile.dirdep Modified: projects/jbuild/usr.bin/Buildfile ============================================================================== --- projects/jbuild/usr.bin/Buildfile Thu May 28 07:20:52 2009 (r192966) +++ projects/jbuild/usr.bin/Buildfile Thu May 28 07:22:11 2009 (r192967) @@ -79,6 +79,8 @@ SUBDIR = \ indent \ ipcrm \ ipcs \ + jbuild \ + jdirdep \ join \ jot \ kdump \ Modified: projects/jbuild/usr.bin/Buildfile.dirdep ============================================================================== --- projects/jbuild/usr.bin/Buildfile.dirdep Thu May 28 07:20:52 2009 (r192966) +++ projects/jbuild/usr.bin/Buildfile.dirdep Thu May 28 07:22:11 2009 (r192967) @@ -546,6 +546,20 @@ dirdep := ${.SRCTOP}/usr.bin/ipcs/Buildf .endif .endif +dirdep := ${.SRCTOP}/usr.bin/jbuild/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/usr.bin/jdirdep/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + dirdep := ${.SRCTOP}/usr.bin/join/Buildfile.dirdep .if empty(.MAKEFILE_LIST:M${dirdep}) .if exists(${dirdep}) @@ -2164,6 +2178,20 @@ D_TGTS_${_t}:= ${D_TGTS_${_t}} .endfor .endif +.if exists(${.SRCTOP}/usr.bin/jbuild/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/usr.bin/jbuild/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/usr.bin/jdirdep/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/usr.bin/jdirdep/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + .if exists(${.SRCTOP}/usr.bin/join/Buildfile.dirdep) .for _t in ${_MACHINE_LIST} D_TGTS_${_t}+= ${.OBJROOT}/${_t}/usr.bin/join/all Added: projects/jbuild/usr.bin/jbuild/Buildfile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/Buildfile Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,44 @@ +# $FreeBSD$ + +.PATH: ${BSDSRCTOP}/usr.bin/make + +PROG = jbuild + +HOSTPROG = + +SRCS = \ + arch.c \ + buf.c \ + cond.c \ + dir.c \ + for.c \ + hash.c \ + hash_tables.c \ + job.c \ + lst.c \ + main.c \ + make.c \ + parse.c \ + proc.c \ + shell.c \ + str.c \ + suff.c \ + targ.c \ + util.c \ + var.c + +WARNS ?= 6 +NO_SHARED ?= YES + +CFLAGS += -I${.CURDIR} +CFLAGS += -DMAKE_VERSION=\"5200408120\" +CFLAGS += -DDEFSHELLNAME=\"sh\" +CFLAGS += -I${.CURDIR}/filemon + +# We're building 'build', not 'make' so the behaviour is different in +# some areas like defaulting to silent. +CFLAGS += -DMAKE_IS_BUILD -DJBUILD + +.include "${BSDSRCTOP}/usr.bin/jdirdep/Buildfile.common" + +.include Added: projects/jbuild/usr.bin/jbuild/Buildfile.dep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/Buildfile.dep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,13 @@ +# This file is automatically generated. DO NOT EDIT! + +DIRDEP = \ + stage \ + sys/sys \ + + +SRCDIRDEP = \ + usr.bin/jbuild/filemon \ + usr.bin/jdirdep \ + usr.bin/make \ + + Added: projects/jbuild/usr.bin/jbuild/Buildfile.dirdep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jbuild/Buildfile.dirdep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,46 @@ +# This file is automatically generated. DO NOT EDIT! +.if !defined(NODIRDEP) +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/sys/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endif + +.for t in ${MACHINE_LIST} +D_TGTS_${t}= +.endfor + +.if !defined(NODIRDEP) +_MACHINE_LIST:= ${MACHINE_LIST} +.if exists(${.SRCTOP}/stage/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/sys/sys/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/sys/sys/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + + +.endif +.for t in ${MACHINE_LIST:Nhost} +${.OBJROOT}/${t}/usr.bin/jbuild/all : ${.OBJROOT}/host/usr.bin/jbuild/all .PHONY +.endfor +${.OBJROOT}/host/usr.bin/jbuild/all : ${D_TGTS_host} .PHONY + echo Checking ${.OBJROOT}/host/usr.bin/jbuild + cd ${.SRCTOP}/usr.bin/jbuild && MACHINE=host ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all Added: projects/jbuild/usr.bin/jdirdep/Buildfile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Buildfile Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,19 @@ +# $FreeBSD$ + +PROG = jdirdep + +HOSTPROG = + +.include "Buildfile.common" + +WARNS = 6 + +CFLAGS += -DJDIRDEP_MAIN +CFLAGS += -DDEBUG +CFLAGS += -g +STRIP = + +RELDIR = ${STAGEDIR}/usr/bin +RELFILES = jgetsrc + +.include Added: projects/jbuild/usr.bin/jdirdep/Buildfile.common ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Buildfile.common Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,20 @@ +# $FreeBSD$ + +.PATH: ${BSDSRCTOP}/usr.bin/jdirdep + +SRCS += jdirdep.c + +CFLAGS += -I${BSDSRCTOP}/usr.bin/jdirdep -DJDIRDEP + +.if defined(USE_SQLITE3) +CFLAGS += -DUSE_SQLITE3 -pthread +CFLAGS += -I/usr/local/include +SRCS += jdirdep_sqlite3.c +LDADD += /usr/local/lib/libsqlite3.a +.else +SRCS += jdirdep_mysql.c +MYSQL_CFLAGS != mysql_config --cflags +MYSQL_LIBS != mysql_config --libs +CFLAGS += -DUSE_MYSQL ${MYSQL_CFLAGS} +LDADD += ${MYSQL_LIBS} +.endif Added: projects/jbuild/usr.bin/jdirdep/Buildfile.dep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Buildfile.dep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,14 @@ +# This file is automatically generated. DO NOT EDIT! + +DIRDEP = \ + include \ + include/machine \ + lib/msun \ + stage \ + sys/MACHINE_ARCH/include \ + sys/sys \ + + +SRCDIRDEP = \ + + Added: projects/jbuild/usr.bin/jdirdep/Buildfile.dirdep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/jdirdep/Buildfile.dirdep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,105 @@ +# This file is automatically generated. DO NOT EDIT! +.if !defined(NODIRDEP) +dirdep := ${.SRCTOP}/include/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/include/machine/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/lib/msun/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/sys/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.for t in ${MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +dirdep := ${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endfor +.endif + +.for t in ${MACHINE_LIST} +D_TGTS_${t}= +.endfor + +.if !defined(NODIRDEP) +_MACHINE_LIST:= ${MACHINE_LIST} +.if exists(${.SRCTOP}/include/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/include/machine/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/include/machine/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/lib/msun/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/lib/msun/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/stage/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/sys/sys/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/sys/sys/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.for t in ${_MACHINE_LIST} +_d=sys/MACHINE_ARCH/include +.if exists(${.SRCTOP}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/Buildfile.dirdep) +D_TGTS_${t}+= ${.OBJROOT}/${t}/${_d:S,MACHINE_ARCH,${MACHINE_ARCH.${t}},g}/all +D_TGTS_${t}:= ${D_TGTS_${t}} +.endif + +.endfor + +.endif +.for t in ${MACHINE_LIST} +${.OBJROOT}/${t}/usr.bin/jdirdep/all : ${D_TGTS_${t}} .PHONY + echo Checking ${.OBJROOT}/${t}/usr.bin/jdirdep + cd ${.SRCTOP}/usr.bin/jdirdep && MACHINE=${t} ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all +.endfor Added: projects/jbuild/usr.bin/make/Buildfile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/make/Buildfile Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,101 @@ +# $FreeBSD$ + +PROG = make + +HOSTPROG = + +SRCS = \ + arch.c \ + buf.c \ + cond.c \ + dir.c \ + for.c \ + hash.c \ + hash_tables.c \ + job.c \ + lst.c \ + main.c \ + make.c \ + parse.c \ + proc.c \ + shell.c \ + str.c \ + suff.c \ + targ.c \ + util.c \ + var.c + +WARNS ?= 6 +NO_SHARED ?= YES + +CFLAGS += -I${.CURDIR} +CFLAGS += -DMAKE_VERSION=\"5200408120\" + +LOCALBASE ?= /usr/local +MPH ?= ${LOCALBASE}/bin/mph +EMITC ?= ${LOCALBASE}/bin/emitc + +.PRECIOUS: hash + +hash: + ( echo '/*' ; \ + echo ' * DO NOT EDIT' ; \ + echo ' * $$''FreeBSD$$' ; \ + echo -n ' * auto-generated from ' ; \ + sed -nEe '/\$$FreeBSD/s/^.*\$$(.*)\$$.*$$/\1/p' \ + ${.CURDIR}/parse.c ; \ + echo ' * DO NOT EDIT' ; \ + echo ' */' ; \ + echo '#include ' ; \ + echo ; \ + echo '#include "hash_tables.h"' ; \ + echo ; \ + cat ${.CURDIR}/parse.c | sed \ + -e '1,/DIRECTIVES-START-TAG/d' \ + -e '/DIRECTIVES-END-TAG/,$$d' \ + -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ + ${MPH} -d2 -m1 | ${EMITC} -l -s | \ + sed \ + -e 's/^static int g\[\]/static const signed char directive_g[]/' \ + -e 's/^static int T0\[\]/static const u_char directive_T0[]/' \ + -e 's/^static int T1\[\]/static const u_char directive_T1[]/' \ + -e '/^#define uchar unsigned char/d' \ + -e 's/uchar/u_char/g' \ + -e 's/^hash(/directive_hash(/' \ + -e 's/; \*kp;/; kp < key + len;/' \ + -e 's/int len)/size_t len)/' \ + -e 's/= T0\[/= directive_T0\[/' \ + -e 's/= T1\[/= directive_T1\[/' \ + -e 's/g\[f/directive_g[f/g' ; \ + cat ${.CURDIR}/parse.c | sed \ + -e '1,/KEYWORD-START-TAG/d' \ + -e '/KEYWORD-END-TAG/,$$d' \ + -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \ + ${MPH} -d2 -m1 | ${EMITC} -l -s | \ + sed \ + -e 's/^static int g\[\]/static const signed char keyword_g[]/' \ + -e 's/^static int T0\[\]/static const u_char keyword_T0[]/' \ + -e 's/^static int T1\[\]/static const u_char keyword_T1[]/' \ + -e '/^#define uchar unsigned char/d' \ + -e 's/uchar/u_char/g' \ + -e 's/^hash(/keyword_hash(/' \ + -e 's/int len)/size_t len)/' \ + -e 's/= T0\[/= keyword_T0\[/' \ + -e 's/= T1\[/= keyword_T1\[/' \ + -e 's/g\[f/keyword_g[f/g' \ + ) > ${.CURDIR}/hash_tables.c + +# Set the shell which make(1) uses. Bourne is the default, but a decent +# Korn shell works fine, and much faster. Using the C shell for this +# will almost certainly break everything, but it's Unix tradition to +# allow you to shoot yourself in the foot if you want to :-) + +MAKE_SHELL ?= sh + +.if ${MAKE_SHELL} == "csh" || ${MAKE_SHELL} == "sh" || ${MAKE_SHELL} == "ksh" +CFLAGS+= -DDEFSHELLNAME=\"${MAKE_SHELL}\" +.else +.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"." +.endif + +.include Added: projects/jbuild/usr.bin/make/Buildfile.dep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/make/Buildfile.dep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,10 @@ +# This file is automatically generated. DO NOT EDIT! + +DIRDEP = \ + stage \ + sys/sys \ + + +SRCDIRDEP = \ + + Added: projects/jbuild/usr.bin/make/Buildfile.dirdep ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/jbuild/usr.bin/make/Buildfile.dirdep Thu May 28 07:22:11 2009 (r192967) @@ -0,0 +1,46 @@ +# This file is automatically generated. DO NOT EDIT! +.if !defined(NODIRDEP) +dirdep := ${.SRCTOP}/stage/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +dirdep := ${.SRCTOP}/sys/sys/Buildfile.dirdep +.if empty(.MAKEFILE_LIST:M${dirdep}) +.if exists(${dirdep}) +.include "${dirdep}" +.endif +.endif + +.endif + +.for t in ${MACHINE_LIST} +D_TGTS_${t}= +.endfor + +.if !defined(NODIRDEP) +_MACHINE_LIST:= ${MACHINE_LIST} +.if exists(${.SRCTOP}/stage/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/stage/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + +.if exists(${.SRCTOP}/sys/sys/Buildfile.dirdep) +.for _t in ${_MACHINE_LIST} +D_TGTS_${_t}+= ${.OBJROOT}/${_t}/sys/sys/all +D_TGTS_${_t}:= ${D_TGTS_${_t}} +.endfor +.endif + + +.endif +.for t in ${MACHINE_LIST:Nhost} +${.OBJROOT}/${t}/usr.bin/make/all : ${.OBJROOT}/host/usr.bin/make/all .PHONY +.endfor +${.OBJROOT}/host/usr.bin/make/all : ${D_TGTS_host} .PHONY + echo Checking ${.OBJROOT}/host/usr.bin/make + cd ${.SRCTOP}/usr.bin/make && MACHINE=host ${MAKE} ${.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all From owner-svn-src-projects@FreeBSD.ORG Thu May 28 13:16:24 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 10D7210656A4; Thu, 28 May 2009 13:16:24 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F314D8FC21; Thu, 28 May 2009 13:16:23 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4SDGNC5038673; Thu, 28 May 2009 13:16:23 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4SDGNAs038672; Thu, 28 May 2009 13:16:23 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905281316.n4SDGNAs038672@svn.freebsd.org> From: Robert Watson Date: Thu, 28 May 2009 13:16:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192974 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 13:16:24 -0000 Author: rwatson Date: Thu May 28 13:16:23 2009 New Revision: 192974 URL: http://svn.freebsd.org/changeset/base/192974 Log: Universally use unsigned ints for protocol numbers in netisr2; the only remaining signed int protocol numbers are from compatibility interfaces with the existing netisr code. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Thu May 28 10:24:26 2009 (r192973) +++ projects/pnet/sys/net/netisr2.c Thu May 28 13:16:23 2009 (r192974) @@ -644,7 +644,7 @@ netisr2_select_cpuid(struct netisr_proto * processing. */ static void -netisr2_process_workstream_proto(struct netisr_workstream *nwsp, int proto) +netisr2_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) { struct netisr_work local_npw, *npwp; u_int handled; @@ -703,7 +703,7 @@ netisr2_process_workstream_proto(struct * responsible for checking the running flag before entering this function. */ static void -netisr2_process_workstream(struct netisr_workstream *nwsp, int proto) +netisr2_process_workstream(struct netisr_workstream *nwsp, u_int proto) { u_int i; From owner-svn-src-projects@FreeBSD.ORG Thu May 28 15:41:42 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0760E10656A7; Thu, 28 May 2009 15:41:42 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E03008FC15; Thu, 28 May 2009 15:41:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4SFffnZ042147; Thu, 28 May 2009 15:41:41 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4SFffpj042146; Thu, 28 May 2009 15:41:41 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905281541.n4SFffpj042146@svn.freebsd.org> From: Robert Watson Date: Thu, 28 May 2009 15:41:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192980 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 15:41:42 -0000 Author: rwatson Date: Thu May 28 15:41:41 2009 New Revision: 192980 URL: http://svn.freebsd.org/changeset/base/192980 Log: Remove nws_pendingwork (packets pending in a workstream), which can be calculated if required from the sum of the registered protocols' queue lengths. Add instead nws_pendingbits, which uses similar logic to the current netisr code to avoid checking the queues of protocols that ether aren't registered or aren't active. Return the number of packets handled from netisr2_process_workstream_proto(). Eliminate netisr2_process_workstream() and NETISR_ALLPROT. Update DDB code. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Thu May 28 15:28:29 2009 (r192979) +++ projects/pnet/sys/net/netisr2.c Thu May 28 15:41:41 2009 (r192980) @@ -187,7 +187,6 @@ struct netisr_proto { }; #define NETISR_MAXPROT 32 /* Compile-time limit. */ -#define NETISR_ALLPROT 0xffffffff /* Run all protocols. */ /* * The np array describes all registered protocols, indexed by protocol @@ -239,7 +238,7 @@ struct netisr_workstream { struct mtx nws_mtx; /* Synchronize work. */ u_int nws_cpu; /* CPU pinning. */ u_int nws_flags; /* Wakeup flags. */ - u_int nws_pendingwork; /* Across all protos. */ + u_int nws_pendingbits; /* Scheduled protocols. */ /* * Each protocol has per-workstream data. @@ -641,9 +640,9 @@ netisr2_select_cpuid(struct netisr_proto * from the global queue. The caller is responsible for deciding whether to * loop, and for setting the NWS_RUNNING flag. The passed workstream will be * locked on entry and relocked before return, but will be released while - * processing. + * processing. The number of packets processed is returned. */ -static void +static u_int netisr2_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) { struct netisr_work local_npw, *npwp; @@ -659,7 +658,7 @@ netisr2_process_workstream_proto(struct npwp = &nwsp->nws_work[proto]; if (npwp->nw_len == 0) - return; + return (0); /* * Move the global work queue to a thread-local work queue. @@ -673,7 +672,7 @@ netisr2_process_workstream_proto(struct npwp->nw_head = NULL; npwp->nw_tail = NULL; npwp->nw_len = 0; - nwsp->nws_pendingwork -= handled; + nwsp->nws_pendingbits &= ~(1 << proto); NWS_UNLOCK(nwsp); while ((m = local_npw.nw_head) != NULL) { local_npw.nw_head = m->m_nextpkt; @@ -687,38 +686,7 @@ netisr2_process_workstream_proto(struct ("netisr_process_proto(%d): len %d", proto, local_npw.nw_len)); NWS_LOCK(nwsp); npwp->nw_handled += handled; -} - -/* - * Process either one or all protocols associated with a specific workstream. - * Handle only existing work for each protocol processed, not new work that - * may arrive while processing. Set the running flag so that other threads - * don't also try to process work in the queue; however, the lock on the - * workstream will be released by netisr_process_workstream_proto() while - * entering the protocol so that producers can continue to queue new work. - * - * The consumer is responsible for making sure that either all available work - * is performed until there is no more work to perform, or that the worker is - * scheduled to pick up where the consumer left off. They are also - * responsible for checking the running flag before entering this function. - */ -static void -netisr2_process_workstream(struct netisr_workstream *nwsp, u_int proto) -{ - u_int i; - - NETISR_LOCK_ASSERT(); - NWS_LOCK_ASSERT(nwsp); - - KASSERT(nwsp->nws_flags & NWS_RUNNING, - ("netisr2_process_workstream: not running")); - KASSERT(!(nwsp->nws_flags & NWS_DISPATCHING), - ("netisr2_process_workstream: dispatching")); - if (proto == NETISR_ALLPROT) { - for (i = 0; i < NETISR_MAXPROT; i++) - netisr2_process_workstream_proto(nwsp, i); - } else - netisr2_process_workstream_proto(nwsp, proto); + return (handled); } /* @@ -732,6 +700,7 @@ swi_net(void *arg) { struct rm_priotracker tracker; struct netisr_workstream *nwsp; + u_int bits, prot; nwsp = arg; @@ -748,8 +717,14 @@ swi_net(void *arg) goto out; nwsp->nws_flags |= NWS_RUNNING; nwsp->nws_flags &= ~NWS_SCHEDULED; - while (nwsp->nws_pendingwork != 0) - netisr2_process_workstream(nwsp, NETISR_ALLPROT); + + while ((bits = nws->nws_pendingbits) != 0) { + while ((prot = ffs(bits)) != 0) { + prot--; + bits &= ~(1 << prot); + (void)netisr2_process_workstream_proto(nwsp, prot); + } + } nwsp->nws_flags &= ~NWS_RUNNING; out: NWS_UNLOCK(nwsp); @@ -761,7 +736,7 @@ out: } static int -netisr2_queue_workstream(struct netisr_workstream *nwsp, +netisr2_queue_workstream(struct netisr_workstream *nwsp, u_int proto, struct netisr_work *npwp, struct mbuf *m, int *dosignalp) { @@ -780,7 +755,7 @@ netisr2_queue_workstream(struct netisr_w npwp->nw_len++; if (npwp->nw_len > npwp->nw_watermark) npwp->nw_watermark = npwp->nw_len; - nwsp->nws_pendingwork++; + nwsp->nws_pendingbits |= (1 << proto); if (!(nwsp->nws_flags & (NWS_SCHEDULED | NWS_RUNNING))) { nwsp->nws_flags |= NWS_SCHEDULED; *dosignalp = 1; /* Defer until unlocked. */ @@ -807,7 +782,7 @@ netisr2_queue_internal(u_int proto, stru nwsp = &nws[cpuid]; npwp = &nwsp->nws_work[proto]; NWS_LOCK(nwsp); - error = netisr2_queue_workstream(nwsp, npwp, m, &dosignal); + error = netisr2_queue_workstream(nwsp, proto, npwp, m, &dosignal); NWS_UNLOCK(nwsp); if (dosignal) NWS_SIGNAL(nwsp); @@ -917,7 +892,8 @@ netisr2_dispatch_src(u_int proto, uintpt */ NWS_LOCK(nwsp); if (nwsp->nws_flags & (NWS_RUNNING | NWS_DISPATCHING | NWS_SCHEDULED)) { - error = netisr2_queue_workstream(nwsp, npwp, m, &dosignal); + error = netisr2_queue_workstream(nwsp, proto, npwp, m, + &dosignal); NWS_UNLOCK(nws); if (dosignal) NWS_SIGNAL(nwsp); @@ -951,7 +927,7 @@ netisr2_dispatch_src(u_int proto, uintpt * so, we'll want to establish a reasonable bound on the work done in * the "borrowed" context. */ - if (nwsp->nws_pendingwork != 0) { + if (nwsp->nws_pendingbits != 0) { nwsp->nws_flags |= NWS_SCHEDULED; dosignal = 1; } else @@ -1092,9 +1068,9 @@ DB_SHOW_COMMAND(netisr2, db_show_netisr2 struct netisr_work *nwp; int cpu, first, proto; - db_printf("%3s %5s %6s %5s %5s %5s %8s %8s %8s %8s %8s\n", "CPU", - "Pend", "Proto", "Len", "WMark", "Max", "Disp", "HDisp", - "XHDisp", "Drop", "Queue"); + db_printf("%3s %6s %5s %5s %5s %8s %8s %8s %8s %8s\n", "CPU", + "Proto", "Len", "WMark", "Max", "Disp", "HDisp", "XHDisp", + "Drop", "Queue"); for (cpu = 0; cpu < MAXCPU; cpu++) { nwsp = &nws[cpu]; if (nwsp->nws_intr_event == NULL) @@ -1105,12 +1081,12 @@ DB_SHOW_COMMAND(netisr2, db_show_netisr2 continue; nwp = &nwsp->nws_work[proto]; if (first) { - db_printf("%3d %5d ", cpu, - nwsp->nws_pendingwork); + db_printf("%3d ", cpu); first = 0; } else - db_printf("%3s %5s ", "", ""); - db_printf("%6s %5d %5d %5d %8ju %8ju %8ju %8ju %8ju\n", + db_printf("%3s ", ""); + db_printf( + "%6s %5d %5d %5d %8ju %8ju %8ju %8ju %8ju\n", np[proto].np_name, nwp->nw_len, nwp->nw_watermark, nwp->nw_qlimit, nwp->nw_dispatched, nwp->nw_hybrid_dispatched, From owner-svn-src-projects@FreeBSD.ORG Thu May 28 18:22:28 2009 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE181106568B; Thu, 28 May 2009 18:22:28 +0000 (UTC) (envelope-from brooks@lor.one-eyed-alien.net) Received: from lor.one-eyed-alien.net (cl-162.ewr-01.us.sixxs.net [IPv6:2001:4830:1200:a1::2]) by mx1.freebsd.org (Postfix) with ESMTP id 573BC8FC29; Thu, 28 May 2009 18:22:28 +0000 (UTC) (envelope-from brooks@lor.one-eyed-alien.net) Received: from lor.one-eyed-alien.net (localhost [127.0.0.1]) by lor.one-eyed-alien.net (8.14.3/8.14.3) with ESMTP id n4SIMbDD068814; Thu, 28 May 2009 13:22:37 -0500 (CDT) (envelope-from brooks@lor.one-eyed-alien.net) Received: (from brooks@localhost) by lor.one-eyed-alien.net (8.14.3/8.14.3/Submit) id n4SIMaDn068813; Thu, 28 May 2009 13:22:36 -0500 (CDT) (envelope-from brooks) Date: Thu, 28 May 2009 13:22:36 -0500 From: Brooks Davis To: Bruce Evans Message-ID: <20090528182236.GC44818@lor.one-eyed-alien.net> References: <200905140650.n4E6oURU079910@svn.freebsd.org> <20090515122400.B15792@delplex.bde.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="rQ2U398070+RC21q" Content-Disposition: inline In-Reply-To: <20090515122400.B15792@delplex.bde.org> User-Agent: Mutt/1.5.17 (2007-11-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (lor.one-eyed-alien.net [127.0.0.1]); Thu, 28 May 2009 13:22:37 -0500 (CDT) Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r192087 - in projects/ngroups: lib/libc/gen lib/libc/rpc lib/libc/sys usr.bin/id usr.bin/newgrp usr.bin/quota usr.sbin/chown usr.sbin/chroot usr.sbin/jail usr.sbin/jexec usr.sbin/lpr/lpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 18:22:29 -0000 --rQ2U398070+RC21q Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, May 15, 2009 at 01:32:52PM +1000, Bruce Evans wrote: > On Thu, 14 May 2009, Brooks Davis wrote: >=20 >> Log: >> Use to value returned by sysconf(_SC_NGROUPS_MAX) in favor of >> NGROUPS_MAX or NGROUPS since POSIX says that NGROUPS_MAX represents a >> lower bound on sysconf(_SC_NGROUPS_MAX). >=20 > Actually, POSIX says that NGROUPS_MAX is identical to > sysconf(_SC_NGROUPS_MAX) if it is defined (and the sysconf() succeeds). > It is _POSIX_NGROUPS_MAX that gives the lower bound. _POSIX_NGROUPS_MAX > is always 8, except under old versions of POSIX that don't require > supplementary groups to be supported, where it is always 0. It is a > bug for a POSIX implementation to define NGROUPS_MAX if its value is > not always identical to sysconf(_SC_NGROUPS_MAX), or for a POSIX > application to use NGROUPS_MAX unconditionally. According to the limits.h section of POSIX.1-2008, NGROUPS_MAX is a Runtime Increasable Value and thus NGROUPS_MAX specifies the minimum value that implementation may use. Given the constraint that the value returned by sysconf(_SC_NGROUPS_MAX) not change during the life of a process, there is probably a practical limitation that the underlying limit be controllable at compile time or by a tunable, but not by sysctl. I'll look over and incorporate your other comments shortly. -- Brooks --rQ2U398070+RC21q Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iD8DBQFKHtZsXY6L6fI4GtQRAlkmAJ0V55/s1FYvE8CdJM6C1Ne1YScNDwCeK2Y9 egMaVWNr4iG74kU/1WRIcx8= =iDIW -----END PGP SIGNATURE----- --rQ2U398070+RC21q-- From owner-svn-src-projects@FreeBSD.ORG Thu May 28 21:41:02 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 03E591065673; Thu, 28 May 2009 21:41:02 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CDBD38FC1F; Thu, 28 May 2009 21:41:01 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4SLf1FK050658; Thu, 28 May 2009 21:41:01 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4SLf1mo050648; Thu, 28 May 2009 21:41:01 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <200905282141.n4SLf1mo050648@svn.freebsd.org> From: Brooks Davis Date: Thu, 28 May 2009 21:41:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192998 - in projects/ngroups: lib/libkvm sys/compat/linux sys/i386/ibcs2 sys/kern sys/nfsserver sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 21:41:02 -0000 Author: brooks Date: Thu May 28 21:41:01 2009 New Revision: 192998 URL: http://svn.freebsd.org/changeset/base/192998 Log: More work toward increasing NGROUPS_MAX and/or allowing kern.ngroups to be increased at boot time. * Replace the embedded cr_groups[NGROUPS] member of struct cred with a pointer to malloc'd storage and a cr_agroups value which tracks the number of allocated group slots. When more space is required crextend() is used to add more space. The new crcopysafe() function calls crextend as needed when saving a copy of a credential from a process before modification. * Introduce a new #define, XU_NGROUPS which is always 16 and is used to set the array size in struct xucred and will be used other places where the 16 group limit needs to be preserved. * Replace the embedded ki_groups[KI_NGROUPS] entry in struct kinfo_proc with a pointer and adapt libkvm accordingly. Submitted by: Isilon Systems (Matthew Fleming) Modified: projects/ngroups/lib/libkvm/kvm_proc.c projects/ngroups/sys/compat/linux/linux_misc.c projects/ngroups/sys/compat/linux/linux_uid16.c projects/ngroups/sys/i386/ibcs2/ibcs2_misc.c projects/ngroups/sys/kern/kern_exec.c projects/ngroups/sys/kern/kern_proc.c projects/ngroups/sys/kern/kern_prot.c projects/ngroups/sys/nfsserver/nfs_srvsock.c projects/ngroups/sys/sys/ucred.h projects/ngroups/sys/sys/user.h Modified: projects/ngroups/lib/libkvm/kvm_proc.c ============================================================================== --- projects/ngroups/lib/libkvm/kvm_proc.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/lib/libkvm/kvm_proc.c Thu May 28 21:41:01 2009 (r192998) @@ -146,9 +146,7 @@ kvm_proclist(kd, what, arg, p, bp, maxcn kp->ki_rgid = ucred.cr_rgid; kp->ki_svgid = ucred.cr_svgid; kp->ki_ngroups = ucred.cr_ngroups; - bcopy(ucred.cr_groups, kp->ki_groups, - (NGROUPS < KI_NGROUPS ? NGROUPS : KI_NGROUPS) * - sizeof(gid_t)); + kp->ki_groups = ucred.cr_groups; kp->ki_uid = ucred.cr_uid; if (ucred.cr_prison != NULL) { if (KREAD(kd, (u_long)ucred.cr_prison, &pr)) { Modified: projects/ngroups/sys/compat/linux/linux_misc.c ============================================================================== --- projects/ngroups/sys/compat/linux/linux_misc.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/compat/linux/linux_misc.c Thu May 28 21:41:01 2009 (r192998) @@ -1124,7 +1124,7 @@ int linux_setgroups(struct thread *td, struct linux_setgroups_args *args) { struct ucred *newcred, *oldcred; - l_gid_t linux_gidset[NGROUPS]; + l_gid_t *linux_gidset; gid_t *bsd_gidset; int ngrp, error; struct proc *p; @@ -1132,13 +1132,14 @@ linux_setgroups(struct thread *td, struc ngrp = args->gidsetsize; if (ngrp < 0 || ngrp >= NGROUPS) return (EINVAL); + linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_TEMP, M_WAITOK); error = copyin(args->grouplist, linux_gidset, ngrp * sizeof(l_gid_t)); if (error) - return (error); + goto out; newcred = crget(); p = td->td_proc; PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); /* * cr_groups[0] holds egid. Setting the whole set from @@ -1149,10 +1150,9 @@ linux_setgroups(struct thread *td, struc if ((error = priv_check_cred(oldcred, PRIV_CRED_SETGROUPS, 0)) != 0) { PROC_UNLOCK(p); crfree(newcred); - return (error); + goto out; } - crcopy(newcred, oldcred); if (ngrp > 0) { newcred->cr_ngroups = ngrp + 1; @@ -1169,14 +1169,17 @@ linux_setgroups(struct thread *td, struc p->p_ucred = newcred; PROC_UNLOCK(p); crfree(oldcred); - return (0); + error = 0; +out: + free(linux_gidset, M_TEMP); + return (error); } int linux_getgroups(struct thread *td, struct linux_getgroups_args *args) { struct ucred *cred; - l_gid_t linux_gidset[NGROUPS]; + l_gid_t *linux_gidset; gid_t *bsd_gidset; int bsd_gidsetsz, ngrp, error; @@ -1199,13 +1202,16 @@ linux_getgroups(struct thread *td, struc return (EINVAL); ngrp = 0; + linux_gidset = malloc(bsd_gidsetsz * sizeof(*linux_gidset), + M_TEMP, M_WAITOK); while (ngrp < bsd_gidsetsz) { linux_gidset[ngrp] = bsd_gidset[ngrp + 1]; ngrp++; } - if ((error = copyout(linux_gidset, args->grouplist, - ngrp * sizeof(l_gid_t)))) + error = copyout(linux_gidset, args->grouplist, ngrp * sizeof(l_gid_t)); + free(linux_gidset, M_TEMP); + if (error) return (error); td->td_retval[0] = ngrp; Modified: projects/ngroups/sys/compat/linux/linux_uid16.c ============================================================================== --- projects/ngroups/sys/compat/linux/linux_uid16.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/compat/linux/linux_uid16.c Thu May 28 21:41:01 2009 (r192998) @@ -98,7 +98,7 @@ int linux_setgroups16(struct thread *td, struct linux_setgroups16_args *args) { struct ucred *newcred, *oldcred; - l_gid16_t linux_gidset[NGROUPS]; + l_gid16_t *linux_gidset; gid_t *bsd_gidset; int ngrp, error; struct proc *p; @@ -111,13 +111,14 @@ linux_setgroups16(struct thread *td, str ngrp = args->gidsetsize; if (ngrp < 0 || ngrp >= NGROUPS) return (EINVAL); + linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_TEMP, M_WAITOK); error = copyin(args->gidset, linux_gidset, ngrp * sizeof(l_gid16_t)); if (error) return (error); newcred = crget(); p = td->td_proc; PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); /* * cr_groups[0] holds egid. Setting the whole set from @@ -128,10 +129,9 @@ linux_setgroups16(struct thread *td, str if ((error = priv_check_cred(oldcred, PRIV_CRED_SETGROUPS, 0)) != 0) { PROC_UNLOCK(p); crfree(newcred); - return (error); + goto out; } - crcopy(newcred, oldcred); if (ngrp > 0) { newcred->cr_ngroups = ngrp + 1; @@ -149,14 +149,17 @@ linux_setgroups16(struct thread *td, str p->p_ucred = newcred; PROC_UNLOCK(p); crfree(oldcred); - return (0); + error = 0; +out: + free(linux_gidset, M_TEMP); + return (error); } int linux_getgroups16(struct thread *td, struct linux_getgroups16_args *args) { struct ucred *cred; - l_gid16_t linux_gidset[NGROUPS]; + l_gid16_t *linux_gidset; gid_t *bsd_gidset; int bsd_gidsetsz, ngrp, error; @@ -184,12 +187,15 @@ linux_getgroups16(struct thread *td, str return (EINVAL); ngrp = 0; + linux_gidset = malloc(bsd_gidsetsz * sizeof(*linux_gidset), + M_TEMP, M_WAITOK); while (ngrp < bsd_gidsetsz) { linux_gidset[ngrp] = bsd_gidset[ngrp + 1]; ngrp++; } error = copyout(linux_gidset, args->gidset, ngrp * sizeof(l_gid16_t)); + free(linux_gidset, M_TEMP); if (error) return (error); Modified: projects/ngroups/sys/i386/ibcs2/ibcs2_misc.c ============================================================================== --- projects/ngroups/sys/i386/ibcs2/ibcs2_misc.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/i386/ibcs2/ibcs2_misc.c Thu May 28 21:41:01 2009 (r192998) @@ -659,24 +659,29 @@ ibcs2_getgroups(td, uap) struct thread *td; struct ibcs2_getgroups_args *uap; { - ibcs2_gid_t iset[NGROUPS_MAX]; - gid_t gp[NGROUPS_MAX]; + ibcs2_gid_t *iset; + gid_t *gp; u_int i, ngrp; int error; if (uap->gidsetsize < 0) return (EINVAL); ngrp = MIN(uap->gidsetsize, NGROUPS_MAX); + gp = malloc(ngrp * sizeof(*gp), M_TEMP, M_WAITOK); error = kern_getgroups(td, &ngrp, gp); if (error) - return (error); + goto out; if (uap->gidsetsize > 0) { + iset = malloc(ngrp * sizeof(*iset), M_TEMP, M_WAITOK); for (i = 0; i < ngrp; i++) iset[i] = (ibcs2_gid_t)gp[i]; error = copyout(iset, uap->gidset, ngrp * sizeof(ibcs2_gid_t)); + free(iset, M_TEMP); } if (error == 0) td->td_retval[0] = ngrp; +out: + free(gp, M_TEMP); return (error); } @@ -685,21 +690,31 @@ ibcs2_setgroups(td, uap) struct thread *td; struct ibcs2_setgroups_args *uap; { - ibcs2_gid_t iset[NGROUPS_MAX]; - gid_t gp[NGROUPS_MAX]; + ibcs2_gid_t *iset; + gid_t *gp; int error, i; if (uap->gidsetsize < 0 || uap->gidsetsize > NGROUPS_MAX) return (EINVAL); - if (uap->gidsetsize && uap->gidset) { + if (uap->gidsetsize && uap->gidset == NULL) + return (EINVAL); + gp = malloc(uap->gidsetsize * sizeof(*gp), M_TEMP, M_WAITOK); + if (uap->gidsetsize) { + iset = malloc(uap->gidsetsize * sizeof(*iset), M_TEMP, M_WAITOK); error = copyin(uap->gidset, iset, sizeof(ibcs2_gid_t) * uap->gidsetsize); - if (error) - return (error); + if (error) { + free(iset, M_TEMP); + goto out; + } for (i = 0; i < uap->gidsetsize; i++) gp[i] = (gid_t)iset[i]; } - return (kern_setgroups(td, uap->gidsetsize, gp)); + + error = kern_setgroups(td, uap->gidsetsize, gp); +out: + free(gp, M_TEMP); + return (error); } int Modified: projects/ngroups/sys/kern/kern_exec.c ============================================================================== --- projects/ngroups/sys/kern/kern_exec.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/kern/kern_exec.c Thu May 28 21:41:01 2009 (r192998) @@ -580,6 +580,7 @@ interpret: * reset. */ PROC_LOCK(p); + oldcred = crcopysafe(p, newcred); if (sigacts_shared(p->p_sigacts)) { oldsigacts = p->p_sigacts; PROC_UNLOCK(p); @@ -630,7 +631,6 @@ interpret: * XXXMAC: For the time being, use NOSUID to also prohibit * transitions on the file system. */ - oldcred = p->p_ucred; credential_changing = 0; credential_changing |= (attr.va_mode & S_ISUID) && oldcred->cr_uid != attr.va_uid; @@ -684,7 +684,6 @@ interpret: /* * Set the new credentials. */ - crcopy(newcred, oldcred); if (attr.va_mode & S_ISUID) change_euid(newcred, euip); if (attr.va_mode & S_ISGID) @@ -724,7 +723,6 @@ interpret: */ if (oldcred->cr_svuid != oldcred->cr_uid || oldcred->cr_svgid != oldcred->cr_gid) { - crcopy(newcred, oldcred); change_svuid(newcred, newcred->cr_uid); change_svgid(newcred, newcred->cr_gid); p->p_ucred = newcred; Modified: projects/ngroups/sys/kern/kern_proc.c ============================================================================== --- projects/ngroups/sys/kern/kern_proc.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/kern/kern_proc.c Thu May 28 21:41:01 2009 (r192998) @@ -730,10 +730,8 @@ fill_kinfo_proc_only(struct proc *p, str kp->ki_uid = cred->cr_uid; kp->ki_ruid = cred->cr_ruid; kp->ki_svuid = cred->cr_svuid; - /* XXX bde doesn't like KI_NGROUPS */ - kp->ki_ngroups = min(cred->cr_ngroups, KI_NGROUPS); - bcopy(cred->cr_groups, kp->ki_groups, - kp->ki_ngroups * sizeof(gid_t)); + kp->ki_ngroups = cred->cr_ngroups; + kp->ki_groups = cred->cr_groups; kp->ki_rgid = cred->cr_rgid; kp->ki_svgid = cred->cr_svgid; /* If jailed(cred), emulate the old P_JAILED flag. */ Modified: projects/ngroups/sys/kern/kern_prot.c ============================================================================== --- projects/ngroups/sys/kern/kern_prot.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/kern/kern_prot.c Thu May 28 21:41:01 2009 (r192998) @@ -276,18 +276,21 @@ struct getgroups_args { int getgroups(struct thread *td, register struct getgroups_args *uap) { - gid_t groups[NGROUPS]; + gid_t *groups; u_int ngrp; int error; ngrp = MIN(uap->gidsetsize, NGROUPS); + groups = malloc(ngrp * sizeof(*groups), M_TEMP, M_WAITOK); error = kern_getgroups(td, &ngrp, groups); if (error) - return (error); + goto out; if (uap->gidsetsize > 0) error = copyout(groups, uap->gidset, ngrp * sizeof(gid_t)); if (error == 0) td->td_retval[0] = ngrp; +out: + free(groups, M_TEMP); return (error); } @@ -486,7 +489,10 @@ setuid(struct thread *td, struct setuid_ newcred = crget(); uip = uifind(uid); PROC_LOCK(p); - oldcred = p->p_ucred; + /* + * Copy credentials so other references do not see our changes. + */ + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setuid(oldcred, uid); @@ -521,10 +527,6 @@ setuid(struct thread *td, struct setuid_ (error = priv_check_cred(oldcred, PRIV_CRED_SETUID, 0)) != 0) goto fail; - /* - * Copy credentials so other references do not see our changes. - */ - crcopy(newcred, oldcred); #ifdef _POSIX_SAVED_IDS /* * Do we have "appropriate privileges" (are we root or uid == euid) @@ -598,7 +600,10 @@ seteuid(struct thread *td, struct seteui newcred = crget(); euip = uifind(euid); PROC_LOCK(p); - oldcred = p->p_ucred; + /* + * Copy credentials so other references do not see our changes. + */ + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_seteuid(oldcred, euid); @@ -612,8 +617,7 @@ seteuid(struct thread *td, struct seteui goto fail; /* - * Everything's okay, do it. Copy credentials so other references do - * not see our changes. + * Everything's okay, do it. */ crcopy(newcred, oldcred); if (oldcred->cr_uid != euid) { @@ -651,7 +655,7 @@ setgid(struct thread *td, struct setgid_ AUDIT_ARG(gid, gid); newcred = crget(); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setgid(oldcred, gid); @@ -680,7 +684,6 @@ setgid(struct thread *td, struct setgid_ (error = priv_check_cred(oldcred, PRIV_CRED_SETGID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); #ifdef _POSIX_SAVED_IDS /* * Do we have "appropriate privileges" (are we root or gid == egid) @@ -750,7 +753,7 @@ setegid(struct thread *td, struct setegi AUDIT_ARG(egid, egid); newcred = crget(); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setegid(oldcred, egid); @@ -763,7 +766,6 @@ setegid(struct thread *td, struct setegi (error = priv_check_cred(oldcred, PRIV_CRED_SETEGID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); if (oldcred->cr_groups[0] != egid) { change_egid(newcred, egid); setsugid(p); @@ -789,15 +791,19 @@ struct setgroups_args { int setgroups(struct thread *td, struct setgroups_args *uap) { - gid_t groups[NGROUPS]; + gid_t *groups = NULL; int error; if (uap->gidsetsize > NGROUPS) return (EINVAL); + groups = malloc(uap->gidsetsize * sizeof(gid_t), M_TEMP, M_WAITOK); error = copyin(uap->gidset, groups, uap->gidsetsize * sizeof(gid_t)); if (error) - return (error); - return (kern_setgroups(td, uap->gidsetsize, groups)); + goto out; + error = kern_setgroups(td, uap->gidsetsize, groups); +out: + free(groups, M_TEMP); + return (error); } int @@ -811,8 +817,9 @@ kern_setgroups(struct thread *td, u_int return (EINVAL); AUDIT_ARG(groupset, groups, ngrp); newcred = crget(); + crextend(newcred, ngrp); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setgroups(oldcred, ngrp, groups); @@ -824,11 +831,6 @@ kern_setgroups(struct thread *td, u_int if (error) goto fail; - /* - * XXX A little bit lazy here. We could test if anything has - * changed before crcopy() and setting P_SUGID. - */ - crcopy(newcred, oldcred); if (ngrp < 1) { /* * setgroups(0, NULL) is a legitimate way of clearing the @@ -877,7 +879,7 @@ setreuid(register struct thread *td, str euip = uifind(euid); ruip = uifind(ruid); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setreuid(oldcred, ruid, euid); @@ -892,7 +894,6 @@ setreuid(register struct thread *td, str (error = priv_check_cred(oldcred, PRIV_CRED_SETREUID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); if (euid != (uid_t)-1 && oldcred->cr_uid != euid) { change_euid(newcred, euip); setsugid(p); @@ -942,7 +943,7 @@ setregid(register struct thread *td, str AUDIT_ARG(rgid, rgid); newcred = crget(); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setregid(oldcred, rgid, egid); @@ -957,7 +958,6 @@ setregid(register struct thread *td, str (error = priv_check_cred(oldcred, PRIV_CRED_SETREGID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); if (egid != (gid_t)-1 && oldcred->cr_groups[0] != egid) { change_egid(newcred, egid); setsugid(p); @@ -1013,7 +1013,7 @@ setresuid(register struct thread *td, st euip = uifind(euid); ruip = uifind(ruid); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setresuid(oldcred, ruid, euid, suid); @@ -1033,7 +1033,6 @@ setresuid(register struct thread *td, st (error = priv_check_cred(oldcred, PRIV_CRED_SETRESUID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); if (euid != (uid_t)-1 && oldcred->cr_uid != euid) { change_euid(newcred, euip); setsugid(p); @@ -1090,7 +1089,7 @@ setresgid(register struct thread *td, st AUDIT_ARG(sgid, sgid); newcred = crget(); PROC_LOCK(p); - oldcred = p->p_ucred; + oldcred = crcopysafe(p, newcred); #ifdef MAC error = mac_cred_check_setresgid(oldcred, rgid, egid, sgid); @@ -1110,7 +1109,6 @@ setresgid(register struct thread *td, st (error = priv_check_cred(oldcred, PRIV_CRED_SETRESGID, 0)) != 0) goto fail; - crcopy(newcred, oldcred); if (egid != (gid_t)-1 && oldcred->cr_groups[0] != egid) { change_egid(newcred, egid); setsugid(p); @@ -1786,6 +1784,7 @@ crget(void) #ifdef MAC mac_cred_init(cr); #endif + crextend(cr, XU_NGROUPS); return (cr); } @@ -1830,6 +1829,7 @@ crfree(struct ucred *cr) #ifdef MAC mac_cred_destroy(cr); #endif + free(cr->cr_groups, M_CRED); free(cr, M_CRED); } } @@ -1855,6 +1855,9 @@ crcopy(struct ucred *dest, struct ucred bcopy(&src->cr_startcopy, &dest->cr_startcopy, (unsigned)((caddr_t)&src->cr_endcopy - (caddr_t)&src->cr_startcopy)); + crextend(dest, src->cr_agroups); + memcpy(dest->cr_groups, src->cr_groups, + src->cr_ngroups * sizeof(gid_t)); uihold(dest->cr_uidinfo); uihold(dest->cr_ruidinfo); if (jailed(dest)) @@ -1886,12 +1889,16 @@ crdup(struct ucred *cr) void cru2x(struct ucred *cr, struct xucred *xcr) { + int ngroups; bzero(xcr, sizeof(*xcr)); xcr->cr_version = XUCRED_VERSION; xcr->cr_uid = cr->cr_uid; - xcr->cr_ngroups = cr->cr_ngroups; - bcopy(cr->cr_groups, xcr->cr_groups, sizeof(cr->cr_groups)); + + ngroups = min(cr->cr_ngroups, XU_NGROUPS); + xcr->cr_ngroups = ngroups; + bcopy(cr->cr_groups, xcr->cr_groups, + ngroups * sizeof(cr->cr_groups[0])); } /* @@ -1913,6 +1920,59 @@ cred_update_thread(struct thread *td) crfree(cred); } +struct ucred * +crcopysafe(struct proc *p, struct ucred *cr) +{ + struct ucred *oldcred; + int groups; + + PROC_LOCK_ASSERT(p, MA_OWNED); + + oldcred = p->p_ucred; + while (cr->cr_agroups < oldcred->cr_agroups) { + groups = oldcred->cr_agroups; + PROC_UNLOCK(p); + crextend(cr, groups); + PROC_LOCK(p); + oldcred = p->p_ucred; + } + crcopy(cr, oldcred); + + return (oldcred); +} + +/* + * Extend the passed in credential to hold n items. + */ +void +crextend(struct ucred *cr, int n) +{ + int cnt; + + /* Truncate? */ + if (n <= cr->cr_agroups) + return; + + /* + * We extend by 2 each time since we're using a power of two + * allocator. + */ + if (cr->cr_agroups) + cnt = cr->cr_agroups * 2; + else + cnt = MINALLOCSIZE / sizeof(gid_t); + + while (cnt < n) + cnt *= 2; + + /* Free the old array. */ + if (cr->cr_groups) + free(cr->cr_groups, M_CRED); + + cr->cr_groups = malloc(cnt * sizeof(gid_t), M_CRED, M_WAITOK | M_ZERO); + cr->cr_agroups = cnt; +} + /* * Get login name, if available. */ Modified: projects/ngroups/sys/nfsserver/nfs_srvsock.c ============================================================================== --- projects/ngroups/sys/nfsserver/nfs_srvsock.c Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/nfsserver/nfs_srvsock.c Thu May 28 21:41:01 2009 (r192998) @@ -371,11 +371,11 @@ nfs_getreq(struct nfsrv_descript *nd, st } tl = nfsm_dissect_nonblock(u_int32_t *, (len + 2) * NFSX_UNSIGNED); for (i = 1; i <= len; i++) - if (i < NGROUPS) + if (i < XU_NGROUPS) nd->nd_cr->cr_groups[i] = fxdr_unsigned(gid_t, *tl++); else tl++; - nd->nd_cr->cr_ngroups = (len >= NGROUPS) ? NGROUPS : (len + 1); + nd->nd_cr->cr_ngroups = (len >= XU_NGROUPS) ? XU_NGROUPS : (len + 1); if (nd->nd_cr->cr_ngroups > 1) nfsrvw_sort(nd->nd_cr->cr_groups, nd->nd_cr->cr_ngroups); len = fxdr_unsigned(int, *++tl); Modified: projects/ngroups/sys/sys/ucred.h ============================================================================== --- projects/ngroups/sys/sys/ucred.h Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/sys/ucred.h Thu May 28 21:41:01 2009 (r192998) @@ -49,7 +49,6 @@ struct ucred { uid_t cr_ruid; /* real user id */ uid_t cr_svuid; /* saved user id */ short cr_ngroups; /* number of groups */ - gid_t cr_groups[NGROUPS]; /* groups */ gid_t cr_rgid; /* real group id */ gid_t cr_svgid; /* saved group id */ struct uidinfo *cr_uidinfo; /* per euid resource consumption */ @@ -60,11 +59,15 @@ struct ucred { #define cr_endcopy cr_label struct label *cr_label; /* MAC label */ struct auditinfo_addr cr_audit; /* Audit properties. */ + gid_t *cr_groups; /* groups */ + short cr_agroups; /* Available groups */ }; #define NOCRED ((struct ucred *)0) /* no credential available */ #define FSCRED ((struct ucred *)-1) /* filesystem credential */ #endif /* _KERNEL || _WANT_UCRED */ +#define XU_NGROUPS 16 + /* * This is the external representation of struct ucred. */ @@ -72,7 +75,7 @@ struct xucred { u_int cr_version; /* structure layout version */ uid_t cr_uid; /* effective user id */ short cr_ngroups; /* number of groups */ - gid_t cr_groups[NGROUPS]; /* groups */ + gid_t cr_groups[XU_NGROUPS]; /* groups */ void *_cr_unused1; /* compatibility with old ucred */ }; #define XUCRED_VERSION 0 @@ -81,6 +84,7 @@ struct xucred { #define cr_gid cr_groups[0] #ifdef _KERNEL +struct proc; struct thread; void change_egid(struct ucred *newcred, gid_t egid); @@ -90,6 +94,7 @@ void change_ruid(struct ucred *newcred, void change_svgid(struct ucred *newcred, gid_t svgid); void change_svuid(struct ucred *newcred, uid_t svuid); void crcopy(struct ucred *dest, struct ucred *src); +struct ucred *crcopysafe(struct proc *, struct ucred *); struct ucred *crdup(struct ucred *cr); void cred_update_thread(struct thread *td); void crfree(struct ucred *cr); @@ -97,6 +102,7 @@ struct ucred *crget(void); struct ucred *crhold(struct ucred *cr); int crshared(struct ucred *cr); void cru2x(struct ucred *cr, struct xucred *xcr); +void crextend(struct ucred *cr, int n); int groupmember(gid_t gid, struct ucred *cred); #endif /* _KERNEL */ Modified: projects/ngroups/sys/sys/user.h ============================================================================== --- projects/ngroups/sys/sys/user.h Thu May 28 21:37:40 2009 (r192997) +++ projects/ngroups/sys/sys/user.h Thu May 28 21:41:01 2009 (r192998) @@ -85,7 +85,7 @@ */ #define KI_NSPARE_INT 10 #define KI_NSPARE_LONG 12 -#define KI_NSPARE_PTR 7 +#define KI_NSPARE_PTR 6 #ifdef __amd64__ #define KINFO_PROC_SIZE 1088 @@ -117,7 +117,6 @@ #define OCOMMLEN 16 /* size of returned thread name */ #define COMMLEN 19 /* size of returned ki_comm name */ #define KI_EMULNAMELEN 16 /* size of returned ki_emul */ -#define KI_NGROUPS 16 /* number of groups in ki_groups */ #define LOGNAMELEN 17 /* size of returned ki_login */ struct kinfo_proc { @@ -151,7 +150,7 @@ struct kinfo_proc { gid_t ki_svgid; /* Saved effective group id */ short ki_ngroups; /* number of groups */ short ki_spare_short2; /* unused (just here for alignment) */ - gid_t ki_groups[KI_NGROUPS]; /* groups */ + uint32_t __was_ki_groups[16]; /* unused; left for bin compat */ vm_size_t ki_size; /* virtual size */ segsz_t ki_rssize; /* current resident set size in pages */ segsz_t ki_swrss; /* resident set size before last swap */ @@ -200,6 +199,7 @@ struct kinfo_proc { struct pcb *ki_pcb; /* kernel virtual addr of pcb */ void *ki_kstack; /* kernel virtual addr of stack */ void *ki_udata; /* User convenience pointer */ + gid_t *ki_groups; /* groups */ /* * When adding new variables, take space for pointers from the * front of ki_spareptrs, and longs from the end of ki_sparelongs. From owner-svn-src-projects@FreeBSD.ORG Thu May 28 22:12:17 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0DB59106564A; Thu, 28 May 2009 22:12:17 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EAC928FC13; Thu, 28 May 2009 22:12:16 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4SMCGSu051579; Thu, 28 May 2009 22:12:16 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4SMCFrS051552; Thu, 28 May 2009 22:12:15 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <200905282212.n4SMCFrS051552@svn.freebsd.org> From: Brooks Davis Date: Thu, 28 May 2009 22:12:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193002 - in projects/ngroups: . bin/chflags bin/cp bin/pkill bin/ps bin/test cddl/contrib/opensolaris/cmd/lockstat cddl/contrib/opensolaris/lib/libzpool/common/sys cddl/lib/libzpool cd... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 22:12:17 -0000 Author: brooks Date: Thu May 28 22:12:14 2009 New Revision: 193002 URL: http://svn.freebsd.org/changeset/base/193002 Log: MFH @ r193000 Added: projects/ngroups/cddl/contrib/opensolaris/cmd/lockstat/ - copied from r193000, head/cddl/contrib/opensolaris/cmd/lockstat/ projects/ngroups/cddl/usr.sbin/lockstat/ - copied from r193000, head/cddl/usr.sbin/lockstat/ projects/ngroups/contrib/ee/ (props changed) - copied from r193000, head/contrib/ee/ projects/ngroups/contrib/file/Magdir/kml - copied unchanged from r193000, head/contrib/file/Magdir/kml projects/ngroups/contrib/file/strlcat.c - copied unchanged from r193000, head/contrib/file/strlcat.c projects/ngroups/contrib/file/strlcpy.c - copied unchanged from r193000, head/contrib/file/strlcpy.c projects/ngroups/crypto/openssh/auth2-jpake.c - copied unchanged from r193000, head/crypto/openssh/auth2-jpake.c projects/ngroups/crypto/openssh/jpake.c - copied unchanged from r193000, head/crypto/openssh/jpake.c projects/ngroups/crypto/openssh/jpake.h - copied unchanged from r193000, head/crypto/openssh/jpake.h projects/ngroups/crypto/openssh/schnorr.c - copied unchanged from r193000, head/crypto/openssh/schnorr.c projects/ngroups/lib/libc/posix1e/acl_compat.c - copied unchanged from r193000, head/lib/libc/posix1e/acl_compat.c projects/ngroups/share/man/man4/bwi.4 - copied unchanged from r193000, head/share/man/man4/bwi.4 projects/ngroups/share/man/man4/iwnfw.4 - copied unchanged from r193000, head/share/man/man4/iwnfw.4 projects/ngroups/share/man/man4/ksyms.4 - copied unchanged from r193000, head/share/man/man4/ksyms.4 projects/ngroups/share/man/man4/mld.4 - copied unchanged from r193000, head/share/man/man4/mld.4 projects/ngroups/share/man/man9/fail.9 - copied unchanged from r193000, head/share/man/man9/fail.9 projects/ngroups/sys/amd64/amd64/mca.c - copied unchanged from r193000, head/sys/amd64/amd64/mca.c projects/ngroups/sys/amd64/include/mca.h - copied unchanged from r193000, head/sys/amd64/include/mca.h projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c - copied unchanged from r193000, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c projects/ngroups/sys/cddl/compat/opensolaris/sys/acl.h - copied unchanged from r193000, head/sys/cddl/compat/opensolaris/sys/acl.h projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr.c - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_array.c - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_array.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_mem.c - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/uts/common/rpc/opensolaris_xdr_mem.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c - copied unchanged from r193000, head/sys/cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c projects/ngroups/sys/cddl/dev/lockstat/ - copied from r193000, head/sys/cddl/dev/lockstat/ projects/ngroups/sys/contrib/dev/iwi/Makefile - copied unchanged from r193000, head/sys/contrib/dev/iwi/Makefile projects/ngroups/sys/dev/ksyms/ - copied from r193000, head/sys/dev/ksyms/ projects/ngroups/sys/dev/usb/controller/avr32dci.c - copied unchanged from r193000, head/sys/dev/usb/controller/avr32dci.c projects/ngroups/sys/dev/usb/controller/avr32dci.h - copied unchanged from r193000, head/sys/dev/usb/controller/avr32dci.h projects/ngroups/sys/dev/usb/wlan/if_upgt.c - copied unchanged from r193000, head/sys/dev/usb/wlan/if_upgt.c projects/ngroups/sys/dev/usb/wlan/if_upgtvar.h - copied unchanged from r193000, head/sys/dev/usb/wlan/if_upgtvar.h projects/ngroups/sys/dev/usb/wlan/if_urtw.c - copied unchanged from r193000, head/sys/dev/usb/wlan/if_urtw.c projects/ngroups/sys/dev/usb/wlan/if_urtwreg.h - copied unchanged from r193000, head/sys/dev/usb/wlan/if_urtwreg.h projects/ngroups/sys/dev/usb/wlan/if_urtwvar.h - copied unchanged from r193000, head/sys/dev/usb/wlan/if_urtwvar.h projects/ngroups/sys/i386/i386/mca.c - copied unchanged from r193000, head/sys/i386/i386/mca.c projects/ngroups/sys/i386/include/mca.h - copied unchanged from r193000, head/sys/i386/include/mca.h projects/ngroups/sys/i386/xen/xen_rtc.c - copied unchanged from r193000, head/sys/i386/xen/xen_rtc.c projects/ngroups/sys/kern/kern_fail.c - copied unchanged from r193000, head/sys/kern/kern_fail.c projects/ngroups/sys/kern/kern_lockstat.c - copied unchanged from r193000, head/sys/kern/kern_lockstat.c projects/ngroups/sys/modules/ksyms/ - copied from r193000, head/sys/modules/ksyms/ projects/ngroups/sys/modules/nfscl/ - copied from r193000, head/sys/modules/nfscl/ projects/ngroups/sys/modules/nfscommon/ - copied from r193000, head/sys/modules/nfscommon/ projects/ngroups/sys/modules/nfsd/ - copied from r193000, head/sys/modules/nfsd/ projects/ngroups/sys/modules/usb/upgt/ - copied from r193000, head/sys/modules/usb/upgt/ projects/ngroups/sys/modules/usb/urtw/ - copied from r193000, head/sys/modules/usb/urtw/ projects/ngroups/sys/net80211/ieee80211_radiotap.c - copied unchanged from r193000, head/sys/net80211/ieee80211_radiotap.c projects/ngroups/sys/netipx/spx_reass.c - copied unchanged from r193000, head/sys/netipx/spx_reass.c projects/ngroups/sys/pc98/include/mca.h - copied unchanged from r193000, head/sys/pc98/include/mca.h projects/ngroups/sys/powerpc/aim/platform_chrp.c - copied unchanged from r193000, head/sys/powerpc/aim/platform_chrp.c projects/ngroups/sys/powerpc/booke/mp_cpudep.c - copied unchanged from r193000, head/sys/powerpc/booke/mp_cpudep.c projects/ngroups/sys/powerpc/booke/platform_bare.c - copied unchanged from r193000, head/sys/powerpc/booke/platform_bare.c projects/ngroups/sys/powerpc/include/platform.h - copied unchanged from r193000, head/sys/powerpc/include/platform.h projects/ngroups/sys/powerpc/include/platformvar.h - copied unchanged from r193000, head/sys/powerpc/include/platformvar.h projects/ngroups/sys/powerpc/powerpc/platform.c - copied unchanged from r193000, head/sys/powerpc/powerpc/platform.c projects/ngroups/sys/powerpc/powerpc/platform_if.m - copied unchanged from r193000, head/sys/powerpc/powerpc/platform_if.m projects/ngroups/sys/sys/fail.h - copied unchanged from r193000, head/sys/sys/fail.h projects/ngroups/sys/sys/ksyms.h - copied unchanged from r193000, head/sys/sys/ksyms.h projects/ngroups/sys/sys/lockstat.h - copied unchanged from r193000, head/sys/sys/lockstat.h projects/ngroups/tools/regression/bin/date/ - copied from r193000, head/tools/regression/bin/date/ projects/ngroups/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 - copied unchanged from r193000, head/tools/regression/usr.bin/sed/regress.multitest.out/40_2.21 projects/ngroups/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 - copied unchanged from r193000, head/tools/regression/usr.bin/sed/regress.multitest.out/41_2.22 projects/ngroups/tools/regression/vfs/ - copied from r193000, head/tools/regression/vfs/ projects/ngroups/tools/tools/iso/ - copied from r193000, head/tools/tools/iso/ projects/ngroups/tools/tools/npe/ - copied from r193000, head/tools/tools/npe/ projects/ngroups/usr.bin/perror/ - copied from r193000, head/usr.bin/perror/ projects/ngroups/usr.sbin/nfscbd/ - copied from r193000, head/usr.sbin/nfscbd/ projects/ngroups/usr.sbin/nfsd/nfsv4.4 - copied unchanged from r193000, head/usr.sbin/nfsd/nfsv4.4 projects/ngroups/usr.sbin/nfsd/stablerestart.5 - copied unchanged from r193000, head/usr.sbin/nfsd/stablerestart.5 projects/ngroups/usr.sbin/nfsdumpstate/ - copied from r193000, head/usr.sbin/nfsdumpstate/ projects/ngroups/usr.sbin/nfsrevoke/ - copied from r193000, head/usr.sbin/nfsrevoke/ projects/ngroups/usr.sbin/nfsuserd/ - copied from r193000, head/usr.sbin/nfsuserd/ Replaced: projects/ngroups/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c - copied unchanged from r193000, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/ngroups/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h - copied unchanged from r193000, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h projects/ngroups/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c - copied unchanged from r193000, head/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c Deleted: projects/ngroups/contrib/file/config.guess projects/ngroups/contrib/file/config.sub projects/ngroups/etc/rc.d/idmapd projects/ngroups/libexec/makekey/ projects/ngroups/sbin/idmapd/ projects/ngroups/share/man/man4/usb2_core.4 projects/ngroups/sys/arm/at91/ohci_atmelarm.c projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/amd64/atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/i386/atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/ia64/atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/common/atomic/sparc64/atomic.S projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_array.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_mem.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/zmod/crc32.c projects/ngroups/sys/compat/svr4/svr4_ttold.c projects/ngroups/sys/compat/svr4/svr4_ttold.h projects/ngroups/sys/dev/usb/README.TXT projects/ngroups/sys/dev/usb/bluetooth/ projects/ngroups/sys/gnu/fs/xfs/FreeBSD/xfsdmapistubs.c projects/ngroups/sys/gnu/fs/xfs/FreeBSD/xfsquotasstubs.c projects/ngroups/sys/gnu/fs/xfs/FreeBSD/xfsrtstubs.c projects/ngroups/sys/legacy/ projects/ngroups/sys/modules/nfs4client/ projects/ngroups/sys/netgraph/bluetooth/drivers/ubt/TODO projects/ngroups/sys/nfs4client/ projects/ngroups/sys/powerpc/include/powerpc.h projects/ngroups/sys/rpc/rpcclnt.c projects/ngroups/sys/rpc/rpcclnt.h projects/ngroups/usr.bin/ee/Artistic projects/ngroups/usr.bin/ee/FREEBSD-upgrade projects/ngroups/usr.bin/ee/README projects/ngroups/usr.bin/ee/ee.1 projects/ngroups/usr.bin/ee/ee.c projects/ngroups/usr.bin/ee/ee.i18n.guide projects/ngroups/usr.bin/ee/new_curse.c projects/ngroups/usr.bin/ee/new_curse.h projects/ngroups/usr.bin/ee/nls/en_US.US-ASCII/ projects/ngroups/usr.sbin/zic/Arts.htm projects/ngroups/usr.sbin/zic/tz-art.htm projects/ngroups/usr.sbin/zic/tz-link.htm Modified: projects/ngroups/ (props changed) projects/ngroups/ObsoleteFiles.inc projects/ngroups/UPDATING projects/ngroups/bin/chflags/chflags.c projects/ngroups/bin/cp/Makefile projects/ngroups/bin/pkill/pkill.1 projects/ngroups/bin/pkill/pkill.c projects/ngroups/bin/ps/print.c projects/ngroups/bin/ps/ps.1 projects/ngroups/bin/ps/ps.c projects/ngroups/bin/ps/ps.h projects/ngroups/bin/test/TEST.sh projects/ngroups/bin/test/test.c projects/ngroups/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/ngroups/cddl/lib/libzpool/Makefile projects/ngroups/cddl/usr.sbin/Makefile projects/ngroups/contrib/csup/rcstokenizer.l (props changed) projects/ngroups/contrib/file/ (props changed) projects/ngroups/contrib/file/ChangeLog projects/ngroups/contrib/file/Magdir/cafebabe projects/ngroups/contrib/file/Magdir/compress projects/ngroups/contrib/file/Magdir/database projects/ngroups/contrib/file/Magdir/erlang projects/ngroups/contrib/file/Magdir/filesystems projects/ngroups/contrib/file/Magdir/fonts projects/ngroups/contrib/file/Magdir/fortran projects/ngroups/contrib/file/Magdir/linux projects/ngroups/contrib/file/Magdir/lisp projects/ngroups/contrib/file/Magdir/python projects/ngroups/contrib/file/Magdir/troff projects/ngroups/contrib/file/Magdir/windows projects/ngroups/contrib/file/Makefile.am projects/ngroups/contrib/file/Makefile.in projects/ngroups/contrib/file/README projects/ngroups/contrib/file/acinclude.m4 projects/ngroups/contrib/file/aclocal.m4 projects/ngroups/contrib/file/apprentice.c projects/ngroups/contrib/file/apptype.c projects/ngroups/contrib/file/cdf.c projects/ngroups/contrib/file/cdf.h projects/ngroups/contrib/file/cdf_time.c projects/ngroups/contrib/file/compress.c projects/ngroups/contrib/file/config.h.in projects/ngroups/contrib/file/configure projects/ngroups/contrib/file/configure.ac projects/ngroups/contrib/file/file.c projects/ngroups/contrib/file/file.h projects/ngroups/contrib/file/funcs.c projects/ngroups/contrib/file/getopt_long.c projects/ngroups/contrib/file/magic.c projects/ngroups/contrib/file/patchlevel.h projects/ngroups/contrib/file/readcdf.c projects/ngroups/contrib/file/softmagic.c projects/ngroups/contrib/file/tests/Makefile.in projects/ngroups/contrib/gcc/config/mips/freebsd.h (props changed) projects/ngroups/contrib/groff/font/devutf8/R.proto projects/ngroups/contrib/less/ (props changed) projects/ngroups/contrib/less/COPYING projects/ngroups/contrib/less/FREEBSD-upgrade projects/ngroups/contrib/less/LICENSE projects/ngroups/contrib/less/Makefile.in projects/ngroups/contrib/less/NEWS projects/ngroups/contrib/less/README projects/ngroups/contrib/less/brac.c projects/ngroups/contrib/less/ch.c projects/ngroups/contrib/less/charset.c projects/ngroups/contrib/less/charset.h projects/ngroups/contrib/less/cmd.h projects/ngroups/contrib/less/cmdbuf.c projects/ngroups/contrib/less/command.c projects/ngroups/contrib/less/configure projects/ngroups/contrib/less/configure.ac projects/ngroups/contrib/less/decode.c projects/ngroups/contrib/less/defines.ds projects/ngroups/contrib/less/defines.o2 projects/ngroups/contrib/less/defines.o9 projects/ngroups/contrib/less/defines.wn projects/ngroups/contrib/less/edit.c projects/ngroups/contrib/less/filename.c projects/ngroups/contrib/less/forwback.c projects/ngroups/contrib/less/funcs.h projects/ngroups/contrib/less/help.c projects/ngroups/contrib/less/ifile.c projects/ngroups/contrib/less/input.c projects/ngroups/contrib/less/install.sh projects/ngroups/contrib/less/jump.c projects/ngroups/contrib/less/less.h projects/ngroups/contrib/less/less.hlp projects/ngroups/contrib/less/less.man projects/ngroups/contrib/less/less.nro projects/ngroups/contrib/less/lessecho.c projects/ngroups/contrib/less/lessecho.man projects/ngroups/contrib/less/lessecho.nro projects/ngroups/contrib/less/lesskey.c projects/ngroups/contrib/less/lesskey.h projects/ngroups/contrib/less/lesskey.man projects/ngroups/contrib/less/lesskey.nro projects/ngroups/contrib/less/lglob.h projects/ngroups/contrib/less/line.c projects/ngroups/contrib/less/linenum.c projects/ngroups/contrib/less/lsystem.c projects/ngroups/contrib/less/main.c projects/ngroups/contrib/less/mark.c projects/ngroups/contrib/less/mkhelp.c projects/ngroups/contrib/less/optfunc.c projects/ngroups/contrib/less/option.c projects/ngroups/contrib/less/option.h projects/ngroups/contrib/less/opttbl.c projects/ngroups/contrib/less/os.c projects/ngroups/contrib/less/output.c projects/ngroups/contrib/less/pckeys.h projects/ngroups/contrib/less/position.c projects/ngroups/contrib/less/position.h projects/ngroups/contrib/less/prompt.c projects/ngroups/contrib/less/screen.c projects/ngroups/contrib/less/scrsize.c projects/ngroups/contrib/less/search.c projects/ngroups/contrib/less/signal.c projects/ngroups/contrib/less/tags.c projects/ngroups/contrib/less/ttyin.c projects/ngroups/contrib/less/version.c projects/ngroups/contrib/libpcap/FREEBSD-Xlist (props changed) projects/ngroups/contrib/tcpdump/FREEBSD-Xlist (props changed) projects/ngroups/crypto/openssh/ (props changed) projects/ngroups/crypto/openssh/ChangeLog projects/ngroups/crypto/openssh/PROTOCOL projects/ngroups/crypto/openssh/README projects/ngroups/crypto/openssh/addrmatch.c projects/ngroups/crypto/openssh/auth-options.c projects/ngroups/crypto/openssh/auth-pam.c (contents, props changed) projects/ngroups/crypto/openssh/auth.c projects/ngroups/crypto/openssh/auth.h projects/ngroups/crypto/openssh/auth2-chall.c projects/ngroups/crypto/openssh/auth2.c projects/ngroups/crypto/openssh/canohost.c projects/ngroups/crypto/openssh/canohost.h projects/ngroups/crypto/openssh/channels.c projects/ngroups/crypto/openssh/channels.h projects/ngroups/crypto/openssh/cipher.c projects/ngroups/crypto/openssh/cipher.h projects/ngroups/crypto/openssh/clientloop.c projects/ngroups/crypto/openssh/compat.c projects/ngroups/crypto/openssh/compat.h projects/ngroups/crypto/openssh/config.guess projects/ngroups/crypto/openssh/config.h projects/ngroups/crypto/openssh/config.h.in projects/ngroups/crypto/openssh/defines.h projects/ngroups/crypto/openssh/dispatch.c projects/ngroups/crypto/openssh/kex.c projects/ngroups/crypto/openssh/kexgexs.c projects/ngroups/crypto/openssh/key.c projects/ngroups/crypto/openssh/loginrec.c projects/ngroups/crypto/openssh/misc.c projects/ngroups/crypto/openssh/monitor.c projects/ngroups/crypto/openssh/monitor.h projects/ngroups/crypto/openssh/monitor_fdpass.c projects/ngroups/crypto/openssh/monitor_wrap.c projects/ngroups/crypto/openssh/monitor_wrap.h projects/ngroups/crypto/openssh/myproposal.h projects/ngroups/crypto/openssh/nchan.c projects/ngroups/crypto/openssh/openbsd-compat/bsd-poll.c projects/ngroups/crypto/openssh/openbsd-compat/port-uw.c projects/ngroups/crypto/openssh/openbsd-compat/xcrypt.c projects/ngroups/crypto/openssh/openbsd-compat/xmmap.c projects/ngroups/crypto/openssh/packet.c projects/ngroups/crypto/openssh/pathnames.h projects/ngroups/crypto/openssh/readconf.c projects/ngroups/crypto/openssh/readconf.h projects/ngroups/crypto/openssh/scp.c projects/ngroups/crypto/openssh/servconf.c projects/ngroups/crypto/openssh/servconf.h projects/ngroups/crypto/openssh/serverloop.c projects/ngroups/crypto/openssh/session.c projects/ngroups/crypto/openssh/sftp-server-main.c projects/ngroups/crypto/openssh/sftp.1 (contents, props changed) projects/ngroups/crypto/openssh/sftp.c projects/ngroups/crypto/openssh/ssh-keygen.1 (contents, props changed) projects/ngroups/crypto/openssh/ssh-keygen.c projects/ngroups/crypto/openssh/ssh-keyscan.1 (contents, props changed) projects/ngroups/crypto/openssh/ssh-keyscan.c projects/ngroups/crypto/openssh/ssh.1 projects/ngroups/crypto/openssh/ssh.c projects/ngroups/crypto/openssh/ssh2.h projects/ngroups/crypto/openssh/ssh_config projects/ngroups/crypto/openssh/ssh_config.5 projects/ngroups/crypto/openssh/ssh_namespace.h projects/ngroups/crypto/openssh/sshconnect.c projects/ngroups/crypto/openssh/sshconnect2.c projects/ngroups/crypto/openssh/sshd.8 projects/ngroups/crypto/openssh/sshd.c projects/ngroups/crypto/openssh/sshd_config projects/ngroups/crypto/openssh/sshd_config.5 projects/ngroups/crypto/openssh/sshpty.c projects/ngroups/crypto/openssh/ttymodes.c projects/ngroups/crypto/openssh/uidswap.c projects/ngroups/crypto/openssh/version.h projects/ngroups/etc/defaults/rc.conf projects/ngroups/etc/devd.conf projects/ngroups/etc/mtree/BSD.include.dist projects/ngroups/etc/namedb/named.conf projects/ngroups/etc/periodic/daily/460.status-mail-rejects projects/ngroups/etc/rc.d/Makefile projects/ngroups/etc/rc.d/named projects/ngroups/etc/rc.d/tmp projects/ngroups/gnu/usr.bin/patch/common.h projects/ngroups/gnu/usr.bin/patch/inp.c projects/ngroups/gnu/usr.bin/patch/patch.c projects/ngroups/gnu/usr.bin/patch/pch.c projects/ngroups/gnu/usr.bin/patch/pch.h projects/ngroups/gnu/usr.bin/patch/util.c projects/ngroups/include/Makefile projects/ngroups/lib/libarchive/archive_read_disk_entry_from_file.c projects/ngroups/lib/libarchive/archive_read_open_filename.c projects/ngroups/lib/libarchive/archive_read_support_compression_gzip.c projects/ngroups/lib/libbluetooth/hci.c projects/ngroups/lib/libc/gen/getcap.c projects/ngroups/lib/libc/gen/popen.c projects/ngroups/lib/libc/gen/ttyname.3 projects/ngroups/lib/libc/net/nsdispatch.c projects/ngroups/lib/libc/nls/be_BY.UTF-8.msg (props changed) projects/ngroups/lib/libc/nls/el_GR.ISO8859-7.msg (props changed) projects/ngroups/lib/libc/nls/mn_MN.UTF-8.msg (props changed) projects/ngroups/lib/libc/nls/ru_RU.KOI8-R.msg (props changed) projects/ngroups/lib/libc/nls/uk_UA.UTF-8.msg (props changed) projects/ngroups/lib/libc/posix1e/Makefile.inc projects/ngroups/lib/libc/posix1e/Symbol.map projects/ngroups/lib/libc/posix1e/acl.3 projects/ngroups/lib/libc/posix1e/acl_add_perm.3 projects/ngroups/lib/libc/posix1e/acl_delete.c projects/ngroups/lib/libc/posix1e/acl_entry.c projects/ngroups/lib/libc/posix1e/acl_get.3 projects/ngroups/lib/libc/posix1e/acl_get.c projects/ngroups/lib/libc/posix1e/acl_init.c projects/ngroups/lib/libc/posix1e/acl_set.3 projects/ngroups/lib/libc/posix1e/acl_set.c projects/ngroups/lib/libc/posix1e/acl_set_tag_type.3 projects/ngroups/lib/libc/posix1e/acl_support.c projects/ngroups/lib/libc/posix1e/acl_support.h projects/ngroups/lib/libc/posix1e/acl_valid.c projects/ngroups/lib/libc/posix1e/posix1e.3 projects/ngroups/lib/libc/rpc/svc_dg.c projects/ngroups/lib/libc/rpc/svc_generic.c projects/ngroups/lib/libc/stdtime/asctime.c projects/ngroups/lib/libc/stdtime/difftime.c projects/ngroups/lib/libc/stdtime/localtime.c projects/ngroups/lib/libc/stdtime/private.h projects/ngroups/lib/libc/stdtime/strftime.c projects/ngroups/lib/libc/stdtime/time2posix.3 projects/ngroups/lib/libc/stdtime/tzfile.5 projects/ngroups/lib/libc/stdtime/tzfile.h projects/ngroups/lib/libc/sys/jail.2 projects/ngroups/lib/libc_r/arch/amd64/_atomic_lock.S projects/ngroups/lib/libc_r/arch/i386/_atomic_lock.S projects/ngroups/lib/libdisk/open_ia64_disk.c projects/ngroups/lib/libgeom/Makefile projects/ngroups/lib/libmemstat/memstat_malloc.c projects/ngroups/lib/libstand/i386/_setjmp.S projects/ngroups/lib/libstand/stand.h projects/ngroups/lib/libthr/thread/thr_fork.c projects/ngroups/lib/libusb/ (props changed) projects/ngroups/lib/libusb/libusb.3 (contents, props changed) projects/ngroups/lib/libusb/libusb20.c projects/ngroups/lib/libusb/libusb20.h projects/ngroups/lib/libusb/libusb20_int.h projects/ngroups/lib/libusb/libusb20_ugen20.c projects/ngroups/lib/libusbhid/descr.c projects/ngroups/lib/msun/amd64/e_sqrt.S projects/ngroups/lib/msun/amd64/e_sqrtf.S projects/ngroups/lib/msun/amd64/s_lrint.S projects/ngroups/lib/msun/amd64/s_lrintf.S projects/ngroups/lib/msun/amd64/s_remquo.S projects/ngroups/lib/msun/amd64/s_remquof.S projects/ngroups/lib/msun/amd64/s_scalbn.S projects/ngroups/lib/msun/amd64/s_scalbnf.S projects/ngroups/lib/msun/amd64/s_scalbnl.S projects/ngroups/lib/msun/i387/e_exp.S projects/ngroups/lib/msun/i387/e_fmod.S projects/ngroups/lib/msun/i387/e_log.S projects/ngroups/lib/msun/i387/e_log10.S projects/ngroups/lib/msun/i387/e_log10f.S projects/ngroups/lib/msun/i387/e_remainder.S projects/ngroups/lib/msun/i387/e_remainderf.S projects/ngroups/lib/msun/i387/e_sqrt.S projects/ngroups/lib/msun/i387/e_sqrtf.S projects/ngroups/lib/msun/i387/s_ceil.S projects/ngroups/lib/msun/i387/s_ceilf.S projects/ngroups/lib/msun/i387/s_ceill.S projects/ngroups/lib/msun/i387/s_copysign.S projects/ngroups/lib/msun/i387/s_copysignf.S projects/ngroups/lib/msun/i387/s_copysignl.S projects/ngroups/lib/msun/i387/s_cos.S projects/ngroups/lib/msun/i387/s_finite.S projects/ngroups/lib/msun/i387/s_floor.S projects/ngroups/lib/msun/i387/s_floorf.S projects/ngroups/lib/msun/i387/s_floorl.S projects/ngroups/lib/msun/i387/s_llrint.S projects/ngroups/lib/msun/i387/s_llrintf.S projects/ngroups/lib/msun/i387/s_logb.S projects/ngroups/lib/msun/i387/s_logbf.S projects/ngroups/lib/msun/i387/s_lrint.S projects/ngroups/lib/msun/i387/s_lrintf.S projects/ngroups/lib/msun/i387/s_remquo.S projects/ngroups/lib/msun/i387/s_remquof.S projects/ngroups/lib/msun/i387/s_rint.S projects/ngroups/lib/msun/i387/s_rintf.S projects/ngroups/lib/msun/i387/s_scalbn.S projects/ngroups/lib/msun/i387/s_scalbnf.S projects/ngroups/lib/msun/i387/s_scalbnl.S projects/ngroups/lib/msun/i387/s_significand.S projects/ngroups/lib/msun/i387/s_significandf.S projects/ngroups/lib/msun/i387/s_sin.S projects/ngroups/lib/msun/i387/s_tan.S projects/ngroups/lib/msun/i387/s_trunc.S projects/ngroups/lib/msun/i387/s_truncf.S projects/ngroups/lib/msun/i387/s_truncl.S projects/ngroups/lib/msun/ia64/s_fma.S projects/ngroups/lib/msun/ia64/s_fmaf.S projects/ngroups/lib/msun/ia64/s_fmal.S projects/ngroups/libexec/Makefile projects/ngroups/libexec/rtld-elf/rtld.h projects/ngroups/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/ngroups/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/ngroups/release/doc/share/misc/dev.archlist.txt projects/ngroups/rescue/rescue/Makefile projects/ngroups/sbin/Makefile projects/ngroups/sbin/fdisk/fdisk.8 projects/ngroups/sbin/fdisk/fdisk.c projects/ngroups/sbin/geom/class/journal/gjournal.8 projects/ngroups/sbin/geom/core/geom.8 projects/ngroups/sbin/mount/mount.c projects/ngroups/sbin/mount_nfs/Makefile projects/ngroups/sbin/mount_nfs/mount_nfs.8 projects/ngroups/sbin/mount_nfs/mount_nfs.c projects/ngroups/sbin/restore/Makefile projects/ngroups/secure/lib/libssh/Makefile projects/ngroups/secure/usr.sbin/sshd/Makefile projects/ngroups/share/examples/ppp/ppp.linkup.sample projects/ngroups/share/man/man3/Makefile projects/ngroups/share/man/man3/queue.3 projects/ngroups/share/man/man4/Makefile projects/ngroups/share/man/man4/altq.4 projects/ngroups/share/man/man4/ath.4 projects/ngroups/share/man/man4/bge.4 projects/ngroups/share/man/man4/geom.4 projects/ngroups/share/man/man4/hifn.4 projects/ngroups/share/man/man4/if_bridge.4 projects/ngroups/share/man/man4/ipsec.4 projects/ngroups/share/man/man4/md.4 projects/ngroups/share/man/man4/msk.4 projects/ngroups/share/man/man4/multicast.4 projects/ngroups/share/man/man4/nge.4 projects/ngroups/share/man/man4/smp.4 projects/ngroups/share/man/man4/ubsec.4 projects/ngroups/share/man/man4/uchcom.4 projects/ngroups/share/man/man4/urtw.4 projects/ngroups/share/man/man4/usb.4 projects/ngroups/share/man/man4/wlan.4 projects/ngroups/share/man/man5/fstab.5 projects/ngroups/share/man/man5/rc.conf.5 projects/ngroups/share/man/man9/Makefile projects/ngroups/share/man/man9/VFS_MOUNT.9 projects/ngroups/share/man/man9/VFS_QUOTACTL.9 projects/ngroups/share/man/man9/VFS_ROOT.9 projects/ngroups/share/man/man9/VFS_STATFS.9 projects/ngroups/share/man/man9/VFS_SYNC.9 projects/ngroups/share/man/man9/VFS_UNMOUNT.9 projects/ngroups/share/man/man9/acl.9 projects/ngroups/share/man/man9/atomic.9 projects/ngroups/share/man/man9/bus_dma.9 projects/ngroups/share/man/man9/sbuf.9 projects/ngroups/share/misc/committers-ports.dot projects/ngroups/share/misc/committers-src.dot projects/ngroups/share/misc/iso639 projects/ngroups/share/syscons/keymaps/uk.iso-ctrl.kbd projects/ngroups/share/zoneinfo/ (props changed) projects/ngroups/share/zoneinfo/africa projects/ngroups/share/zoneinfo/antarctica projects/ngroups/share/zoneinfo/asia projects/ngroups/share/zoneinfo/australasia projects/ngroups/share/zoneinfo/backward projects/ngroups/share/zoneinfo/etcetera projects/ngroups/share/zoneinfo/europe projects/ngroups/share/zoneinfo/factory projects/ngroups/share/zoneinfo/leapseconds projects/ngroups/share/zoneinfo/northamerica projects/ngroups/share/zoneinfo/pacificnew projects/ngroups/share/zoneinfo/southamerica projects/ngroups/share/zoneinfo/systemv projects/ngroups/share/zoneinfo/zone.tab projects/ngroups/sys/Makefile projects/ngroups/sys/amd64/amd64/machdep.c projects/ngroups/sys/amd64/amd64/mp_machdep.c projects/ngroups/sys/amd64/amd64/pmap.c projects/ngroups/sys/amd64/amd64/trap.c projects/ngroups/sys/amd64/conf/DEFAULTS projects/ngroups/sys/amd64/conf/GENERIC projects/ngroups/sys/amd64/conf/GENERIC.hints projects/ngroups/sys/amd64/conf/NOTES projects/ngroups/sys/amd64/conf/XENHVM projects/ngroups/sys/amd64/include/param.h projects/ngroups/sys/amd64/include/smp.h projects/ngroups/sys/amd64/include/specialreg.h projects/ngroups/sys/amd64/include/vmparam.h projects/ngroups/sys/amd64/linux32/linux.h projects/ngroups/sys/amd64/linux32/linux32_sysvec.c projects/ngroups/sys/amd64/pci/pci_cfgreg.c projects/ngroups/sys/arm/arm/machdep.c projects/ngroups/sys/arm/at91/at91.c projects/ngroups/sys/arm/at91/at91_cfata.c projects/ngroups/sys/arm/at91/at91_spi.c projects/ngroups/sys/arm/at91/if_ate.c projects/ngroups/sys/arm/conf/AVILA projects/ngroups/sys/arm/conf/BWCT projects/ngroups/sys/arm/conf/CAMBRIA projects/ngroups/sys/arm/conf/CRB projects/ngroups/sys/arm/conf/DB-78XXX projects/ngroups/sys/arm/conf/DB-88F5XXX projects/ngroups/sys/arm/conf/DB-88F6XXX projects/ngroups/sys/arm/conf/EP80219 projects/ngroups/sys/arm/conf/GUMSTIX projects/ngroups/sys/arm/conf/HL200 projects/ngroups/sys/arm/conf/IQ31244 projects/ngroups/sys/arm/conf/KB920X projects/ngroups/sys/arm/conf/NSLU projects/ngroups/sys/arm/conf/SIMICS projects/ngroups/sys/arm/conf/SKYEYE projects/ngroups/sys/arm/xscale/ixp425/files.ixp425 projects/ngroups/sys/arm/xscale/ixp425/if_npe.c projects/ngroups/sys/arm/xscale/ixp425/std.ixp435 (props changed) projects/ngroups/sys/boot/common/ufsread.c projects/ngroups/sys/boot/forth/loader.conf projects/ngroups/sys/boot/i386/zfsboot/zfsboot.c projects/ngroups/sys/boot/pc98/boot2/sys.c projects/ngroups/sys/boot/zfs/zfsimpl.c projects/ngroups/sys/cam/cam_periph.c projects/ngroups/sys/cam/scsi/scsi_pass.c projects/ngroups/sys/cam/scsi/scsi_sg.c projects/ngroups/sys/cddl/boot/zfs/README projects/ngroups/sys/cddl/boot/zfs/zfsimpl.h projects/ngroups/sys/cddl/boot/zfs/zfssubr.c (contents, props changed) projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris.c projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/ngroups/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c projects/ngroups/sys/cddl/compat/opensolaris/sys/mutex.h projects/ngroups/sys/cddl/compat/opensolaris/sys/rwlock.h projects/ngroups/sys/cddl/compat/opensolaris/sys/vnode.h projects/ngroups/sys/cddl/contrib/opensolaris/common/acl/acl_common.c projects/ngroups/sys/cddl/contrib/opensolaris/common/acl/acl_common.h projects/ngroups/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h projects/ngroups/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/ngroups/sys/compat/freebsd32/freebsd32_misc.c projects/ngroups/sys/compat/linux/linux_ioctl.c projects/ngroups/sys/compat/linux/linux_mib.c projects/ngroups/sys/compat/linux/linux_mib.h projects/ngroups/sys/compat/linux/linux_misc.c projects/ngroups/sys/compat/linux/linux_misc.h projects/ngroups/sys/compat/linux/linux_socket.c projects/ngroups/sys/compat/linux/linux_socket.h projects/ngroups/sys/compat/linux/linux_stats.c projects/ngroups/sys/compat/ndis/kern_ndis.c projects/ngroups/sys/compat/ndis/kern_windrv.c projects/ngroups/sys/compat/ndis/subr_ndis.c projects/ngroups/sys/compat/ndis/subr_usbd.c projects/ngroups/sys/compat/svr4/svr4_ioctl.c projects/ngroups/sys/compat/svr4/svr4_ioctl.h projects/ngroups/sys/compat/svr4/svr4_misc.c projects/ngroups/sys/compat/svr4/svr4_proto.h projects/ngroups/sys/compat/svr4/svr4_stat.c projects/ngroups/sys/compat/svr4/svr4_syscall.h projects/ngroups/sys/compat/svr4/svr4_syscallnames.c projects/ngroups/sys/compat/svr4/svr4_sysent.c projects/ngroups/sys/conf/NOTES projects/ngroups/sys/conf/files projects/ngroups/sys/conf/files.amd64 projects/ngroups/sys/conf/files.i386 projects/ngroups/sys/conf/files.pc98 projects/ngroups/sys/conf/files.powerpc projects/ngroups/sys/conf/kern.pre.mk projects/ngroups/sys/conf/options projects/ngroups/sys/contrib/altq/altq/altq_subr.c projects/ngroups/sys/contrib/dev/acpica/ (props changed) projects/ngroups/sys/contrib/dev/iwi/ipw2200-bss.fw.uu projects/ngroups/sys/contrib/dev/iwi/ipw2200-ibss.fw.uu projects/ngroups/sys/contrib/dev/iwi/ipw2200-sniffer.fw.uu projects/ngroups/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/ngroups/sys/contrib/ipfilter/netinet/ip_nat.c projects/ngroups/sys/crypto/via/padlock_hash.c projects/ngroups/sys/dev/aac/aac.c projects/ngroups/sys/dev/acpi_support/acpi_ibm.c projects/ngroups/sys/dev/acpi_support/acpi_sony.c projects/ngroups/sys/dev/acpica/acpi.c projects/ngroups/sys/dev/age/if_age.c projects/ngroups/sys/dev/aic/aic.c projects/ngroups/sys/dev/amr/amr.c projects/ngroups/sys/dev/amr/amr_linux.c projects/ngroups/sys/dev/arcmsr/arcmsr.c projects/ngroups/sys/dev/asr/asr.c projects/ngroups/sys/dev/ata/ata-pci.h projects/ngroups/sys/dev/ata/ata-usb.c projects/ngroups/sys/dev/ata/atapi-cam.c projects/ngroups/sys/dev/ata/chipsets/ata-acard.c projects/ngroups/sys/dev/ata/chipsets/ata-promise.c projects/ngroups/sys/dev/ata/chipsets/ata-siliconimage.c projects/ngroups/sys/dev/ath/ah_osdep.c projects/ngroups/sys/dev/ath/ah_osdep.h projects/ngroups/sys/dev/ath/ath_hal/ah.c projects/ngroups/sys/dev/ath/ath_hal/ah.h projects/ngroups/sys/dev/ath/ath_hal/ah_internal.h projects/ngroups/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c projects/ngroups/sys/dev/ath/ath_hal/ar5210/ar5210_interrupts.c projects/ngroups/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c projects/ngroups/sys/dev/ath/ath_hal/ar5211/ar5211_interrupts.c projects/ngroups/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/ngroups/sys/dev/ath/ath_hal/ar5212/ar5212_interrupts.c projects/ngroups/sys/dev/ath/ath_hal/ar5212/ar5212reg.h projects/ngroups/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/ngroups/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c projects/ngroups/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/ngroups/sys/dev/ath/if_ath.c projects/ngroups/sys/dev/ath/if_ath_pci.c projects/ngroups/sys/dev/ath/if_athvar.h projects/ngroups/sys/dev/bce/if_bce.c projects/ngroups/sys/dev/bce/if_bcereg.h projects/ngroups/sys/dev/bge/if_bge.c projects/ngroups/sys/dev/bktr/bktr_os.c projects/ngroups/sys/dev/bwi/bwimac.c projects/ngroups/sys/dev/bwi/bwiphy.c projects/ngroups/sys/dev/bwi/if_bwi.c projects/ngroups/sys/dev/bwi/if_bwi_pci.c projects/ngroups/sys/dev/bwi/if_bwireg.h projects/ngroups/sys/dev/bwi/if_bwivar.h projects/ngroups/sys/dev/ciss/ciss.c projects/ngroups/sys/dev/cxgb/common/cxgb_ael1002.c projects/ngroups/sys/dev/cxgb/common/cxgb_common.h projects/ngroups/sys/dev/cxgb/common/cxgb_t3_hw.c projects/ngroups/sys/dev/cxgb/cxgb_adapter.h projects/ngroups/sys/dev/cxgb/cxgb_main.c projects/ngroups/sys/dev/cxgb/cxgb_multiq.c projects/ngroups/sys/dev/cxgb/cxgb_sge.c projects/ngroups/sys/dev/e1000/if_em.c projects/ngroups/sys/dev/ed/if_ed.c projects/ngroups/sys/dev/ep/if_ep.c projects/ngroups/sys/dev/flash/at45d.c projects/ngroups/sys/dev/if_ndis/if_ndis.c projects/ngroups/sys/dev/if_ndis/if_ndis_usb.c projects/ngroups/sys/dev/if_ndis/if_ndisvar.h projects/ngroups/sys/dev/iir/iir_ctrl.c projects/ngroups/sys/dev/iir/iir_pci.c projects/ngroups/sys/dev/ipw/if_ipw.c projects/ngroups/sys/dev/ipw/if_ipwvar.h projects/ngroups/sys/dev/isp/isp_freebsd.c projects/ngroups/sys/dev/iwi/if_iwi.c projects/ngroups/sys/dev/iwi/if_iwivar.h projects/ngroups/sys/dev/iwn/if_iwn.c projects/ngroups/sys/dev/iwn/if_iwnvar.h projects/ngroups/sys/dev/ixgb/if_ixgb.c projects/ngroups/sys/dev/lge/if_lge.c projects/ngroups/sys/dev/lmc/if_lmc.c projects/ngroups/sys/dev/malo/if_malo.c projects/ngroups/sys/dev/malo/if_malo.h projects/ngroups/sys/dev/malo/if_malo_pci.c projects/ngroups/sys/dev/md/md.c projects/ngroups/sys/dev/mfi/mfi.c projects/ngroups/sys/dev/mfi/mfi_linux.c projects/ngroups/sys/dev/mii/e1000phy.c projects/ngroups/sys/dev/mii/e1000phyreg.h projects/ngroups/sys/dev/mii/miidevs projects/ngroups/sys/dev/mpt/mpt_raid.c projects/ngroups/sys/dev/mpt/mpt_user.c projects/ngroups/sys/dev/msk/if_msk.c projects/ngroups/sys/dev/msk/if_mskreg.h projects/ngroups/sys/dev/nfe/if_nfe.c projects/ngroups/sys/dev/nge/if_nge.c projects/ngroups/sys/dev/nge/if_ngereg.h projects/ngroups/sys/dev/ral/rt2560.c projects/ngroups/sys/dev/ral/rt2560var.h projects/ngroups/sys/dev/ral/rt2661.c projects/ngroups/sys/dev/ral/rt2661var.h projects/ngroups/sys/dev/random/nehemiah.c projects/ngroups/sys/dev/random/randomdev_soft.c projects/ngroups/sys/dev/snp/snp.c projects/ngroups/sys/dev/sound/midi/midi.c projects/ngroups/sys/dev/sound/pci/cmi.c projects/ngroups/sys/dev/sound/pci/cs4281.c projects/ngroups/sys/dev/sound/pci/emu10kx-midi.c projects/ngroups/sys/dev/sound/pci/ich.c projects/ngroups/sys/dev/sound/pci/via82c686.h projects/ngroups/sys/dev/sound/pci/vibes.c projects/ngroups/sys/dev/sound/pcm/sound.c projects/ngroups/sys/dev/sound/pcm/sound.h projects/ngroups/sys/dev/sound/sbus/cs4231.h projects/ngroups/sys/dev/sound/usb/uaudio.c projects/ngroups/sys/dev/sound/usb/uaudioreg.h projects/ngroups/sys/dev/spibus/spibus.c projects/ngroups/sys/dev/syscons/syscons.c projects/ngroups/sys/dev/twa/tw_osl_freebsd.c projects/ngroups/sys/dev/twe/twe_freebsd.c projects/ngroups/sys/dev/ubsec/ubsec.c projects/ngroups/sys/dev/ubsec/ubsecreg.h projects/ngroups/sys/dev/usb/controller/at91dci.c projects/ngroups/sys/dev/usb/controller/at91dci.h projects/ngroups/sys/dev/usb/controller/atmegadci.c projects/ngroups/sys/dev/usb/controller/atmegadci.h projects/ngroups/sys/dev/usb/controller/atmegadci_atmelarm.c projects/ngroups/sys/dev/usb/controller/ehci.c projects/ngroups/sys/dev/usb/controller/ehci.h projects/ngroups/sys/dev/usb/controller/musb_otg.c projects/ngroups/sys/dev/usb/controller/musb_otg.h projects/ngroups/sys/dev/usb/controller/ohci.c projects/ngroups/sys/dev/usb/controller/ohci.h projects/ngroups/sys/dev/usb/controller/uhci.c projects/ngroups/sys/dev/usb/controller/uhci.h projects/ngroups/sys/dev/usb/controller/usb_controller.c projects/ngroups/sys/dev/usb/controller/uss820dci.c projects/ngroups/sys/dev/usb/controller/uss820dci.h projects/ngroups/sys/dev/usb/controller/uss820dci_atmelarm.c projects/ngroups/sys/dev/usb/input/uhid.c projects/ngroups/sys/dev/usb/input/ukbd.c projects/ngroups/sys/dev/usb/input/ums.c projects/ngroups/sys/dev/usb/misc/udbp.c projects/ngroups/sys/dev/usb/misc/ufm.c projects/ngroups/sys/dev/usb/net/if_aue.c projects/ngroups/sys/dev/usb/net/if_auereg.h projects/ngroups/sys/dev/usb/net/if_axe.c projects/ngroups/sys/dev/usb/net/if_axereg.h projects/ngroups/sys/dev/usb/net/if_cdce.c projects/ngroups/sys/dev/usb/net/if_cdcereg.h projects/ngroups/sys/dev/usb/net/if_cue.c projects/ngroups/sys/dev/usb/net/if_cuereg.h projects/ngroups/sys/dev/usb/net/if_kue.c projects/ngroups/sys/dev/usb/net/if_kuereg.h projects/ngroups/sys/dev/usb/net/if_rue.c projects/ngroups/sys/dev/usb/net/if_ruereg.h projects/ngroups/sys/dev/usb/net/if_udav.c projects/ngroups/sys/dev/usb/net/if_udavreg.h projects/ngroups/sys/dev/usb/net/usb_ethernet.c projects/ngroups/sys/dev/usb/net/usb_ethernet.h projects/ngroups/sys/dev/usb/quirk/usb_quirk.c projects/ngroups/sys/dev/usb/serial/u3g.c projects/ngroups/sys/dev/usb/serial/uark.c projects/ngroups/sys/dev/usb/serial/ubsa.c projects/ngroups/sys/dev/usb/serial/ubser.c projects/ngroups/sys/dev/usb/serial/uchcom.c projects/ngroups/sys/dev/usb/serial/ucycom.c projects/ngroups/sys/dev/usb/serial/ufoma.c projects/ngroups/sys/dev/usb/serial/uftdi.c projects/ngroups/sys/dev/usb/serial/ugensa.c projects/ngroups/sys/dev/usb/serial/uipaq.c projects/ngroups/sys/dev/usb/serial/ulpt.c projects/ngroups/sys/dev/usb/serial/umct.c projects/ngroups/sys/dev/usb/serial/umodem.c projects/ngroups/sys/dev/usb/serial/umoscom.c projects/ngroups/sys/dev/usb/serial/uplcom.c projects/ngroups/sys/dev/usb/serial/usb_serial.c projects/ngroups/sys/dev/usb/serial/usb_serial.h projects/ngroups/sys/dev/usb/serial/uslcom.c projects/ngroups/sys/dev/usb/serial/uvisor.c projects/ngroups/sys/dev/usb/serial/uvscom.c projects/ngroups/sys/dev/usb/storage/umass.c projects/ngroups/sys/dev/usb/storage/urio.c projects/ngroups/sys/dev/usb/storage/ustorage_fs.c projects/ngroups/sys/dev/usb/template/usb_template.c projects/ngroups/sys/dev/usb/template/usb_template.h projects/ngroups/sys/dev/usb/template/usb_template_cdce.c projects/ngroups/sys/dev/usb/template/usb_template_msc.c projects/ngroups/sys/dev/usb/template/usb_template_mtp.c projects/ngroups/sys/dev/usb/usb.h projects/ngroups/sys/dev/usb/usb_bus.h projects/ngroups/sys/dev/usb/usb_busdma.c projects/ngroups/sys/dev/usb/usb_busdma.h projects/ngroups/sys/dev/usb/usb_cdc.h projects/ngroups/sys/dev/usb/usb_compat_linux.c projects/ngroups/sys/dev/usb/usb_compat_linux.h projects/ngroups/sys/dev/usb/usb_controller.h projects/ngroups/sys/dev/usb/usb_core.h projects/ngroups/sys/dev/usb/usb_debug.c projects/ngroups/sys/dev/usb/usb_debug.h projects/ngroups/sys/dev/usb/usb_dev.c projects/ngroups/sys/dev/usb/usb_dev.h projects/ngroups/sys/dev/usb/usb_device.c projects/ngroups/sys/dev/usb/usb_device.h projects/ngroups/sys/dev/usb/usb_dynamic.c projects/ngroups/sys/dev/usb/usb_dynamic.h projects/ngroups/sys/dev/usb/usb_generic.c projects/ngroups/sys/dev/usb/usb_generic.h projects/ngroups/sys/dev/usb/usb_handle_request.c projects/ngroups/sys/dev/usb/usb_hid.c projects/ngroups/sys/dev/usb/usb_hid.h projects/ngroups/sys/dev/usb/usb_hub.c projects/ngroups/sys/dev/usb/usb_hub.h projects/ngroups/sys/dev/usb/usb_ioctl.h projects/ngroups/sys/dev/usb/usb_lookup.c projects/ngroups/sys/dev/usb/usb_lookup.h projects/ngroups/sys/dev/usb/usb_mbuf.c projects/ngroups/sys/dev/usb/usb_mbuf.h projects/ngroups/sys/dev/usb/usb_msctest.c projects/ngroups/sys/dev/usb/usb_msctest.h projects/ngroups/sys/dev/usb/usb_parse.c projects/ngroups/sys/dev/usb/usb_parse.h projects/ngroups/sys/dev/usb/usb_process.c projects/ngroups/sys/dev/usb/usb_process.h projects/ngroups/sys/dev/usb/usb_request.c projects/ngroups/sys/dev/usb/usb_request.h projects/ngroups/sys/dev/usb/usb_revision.h projects/ngroups/sys/dev/usb/usb_transfer.c projects/ngroups/sys/dev/usb/usb_transfer.h projects/ngroups/sys/dev/usb/usb_util.c projects/ngroups/sys/dev/usb/usbdevs projects/ngroups/sys/dev/usb/usbhid.h projects/ngroups/sys/dev/usb/wlan/if_rum.c projects/ngroups/sys/dev/usb/wlan/if_rumvar.h projects/ngroups/sys/dev/usb/wlan/if_uath.c projects/ngroups/sys/dev/usb/wlan/if_uathvar.h projects/ngroups/sys/dev/usb/wlan/if_ural.c projects/ngroups/sys/dev/usb/wlan/if_uralvar.h projects/ngroups/sys/dev/usb/wlan/if_zyd.c projects/ngroups/sys/dev/usb/wlan/if_zydreg.h projects/ngroups/sys/dev/vge/if_vge.c projects/ngroups/sys/dev/wi/if_wi.c projects/ngroups/sys/dev/wi/if_wireg.h projects/ngroups/sys/dev/wi/if_wivar.h projects/ngroups/sys/dev/wpi/if_wpi.c projects/ngroups/sys/dev/wpi/if_wpivar.h projects/ngroups/sys/dev/xen/console/console.c projects/ngroups/sys/dev/xen/console/xencons_ring.c projects/ngroups/sys/dev/xen/console/xencons_ring.h projects/ngroups/sys/dev/xen/netfront/ (props changed) projects/ngroups/sys/dev/xen/netfront/netfront.c projects/ngroups/sys/dev/xen/xenpci/ (props changed) projects/ngroups/sys/fs/cd9660/cd9660_vfsops.c projects/ngroups/sys/fs/coda/coda_vfsops.c projects/ngroups/sys/fs/devfs/devfs.h projects/ngroups/sys/fs/devfs/devfs_vfsops.c projects/ngroups/sys/fs/devfs/devfs_vnops.c projects/ngroups/sys/fs/fdescfs/fdesc.h projects/ngroups/sys/fs/fdescfs/fdesc_vfsops.c projects/ngroups/sys/fs/fdescfs/fdesc_vnops.c projects/ngroups/sys/fs/hpfs/hpfs_vfsops.c projects/ngroups/sys/fs/msdosfs/msdosfs_vfsops.c projects/ngroups/sys/fs/nfs/nfs.h projects/ngroups/sys/fs/nfs/nfs_commonacl.c projects/ngroups/sys/fs/nfs/nfs_commonkrpc.c projects/ngroups/sys/fs/nfs/nfs_commonport.c projects/ngroups/sys/fs/nfs/nfs_commonsubs.c projects/ngroups/sys/fs/nfs/nfs_var.h projects/ngroups/sys/fs/nfs/nfsdport.h projects/ngroups/sys/fs/nfs/nfsport.h projects/ngroups/sys/fs/nfs/nfsproto.h projects/ngroups/sys/fs/nfsclient/nfs.h projects/ngroups/sys/fs/nfsclient/nfs_clbio.c projects/ngroups/sys/fs/nfsclient/nfs_clkrpc.c projects/ngroups/sys/fs/nfsclient/nfs_clnode.c projects/ngroups/sys/fs/nfsclient/nfs_clport.c projects/ngroups/sys/fs/nfsclient/nfs_clrpcops.c projects/ngroups/sys/fs/nfsclient/nfs_clstate.c projects/ngroups/sys/fs/nfsclient/nfs_clvfsops.c projects/ngroups/sys/fs/nfsclient/nfs_clvnops.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdport.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdserv.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdsocket.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdstate.c projects/ngroups/sys/fs/nfsserver/nfs_nfsdsubs.c projects/ngroups/sys/fs/ntfs/ntfs_vfsops.c projects/ngroups/sys/fs/nullfs/null_vfsops.c projects/ngroups/sys/fs/nwfs/nwfs_io.c projects/ngroups/sys/fs/nwfs/nwfs_vfsops.c projects/ngroups/sys/fs/portalfs/portal_vfsops.c projects/ngroups/sys/fs/procfs/procfs_status.c projects/ngroups/sys/fs/pseudofs/pseudofs.c projects/ngroups/sys/fs/pseudofs/pseudofs.h projects/ngroups/sys/fs/pseudofs/pseudofs_vnops.c projects/ngroups/sys/fs/smbfs/smbfs_io.c projects/ngroups/sys/fs/smbfs/smbfs_vfsops.c projects/ngroups/sys/fs/tmpfs/tmpfs.h projects/ngroups/sys/fs/tmpfs/tmpfs_subr.c projects/ngroups/sys/fs/tmpfs/tmpfs_vfsops.c projects/ngroups/sys/fs/tmpfs/tmpfs_vnops.c projects/ngroups/sys/fs/udf/udf_vfsops.c projects/ngroups/sys/fs/unionfs/union_vfsops.c projects/ngroups/sys/geom/concat/g_concat.c projects/ngroups/sys/geom/geom_subr.c projects/ngroups/sys/geom/journal/g_journal.c projects/ngroups/sys/gnu/fs/ext2fs/ext2_vfsops.c projects/ngroups/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/ngroups/sys/gnu/fs/xfs/FreeBSD/support/debug.h projects/ngroups/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c projects/ngroups/sys/i386/acpica/acpi_machdep.c projects/ngroups/sys/i386/bios/smapi.c projects/ngroups/sys/i386/conf/DEFAULTS projects/ngroups/sys/i386/conf/GENERIC projects/ngroups/sys/i386/conf/GENERIC.hints projects/ngroups/sys/i386/conf/NOTES projects/ngroups/sys/i386/conf/PAE projects/ngroups/sys/i386/conf/XBOX projects/ngroups/sys/i386/conf/XEN projects/ngroups/sys/i386/cpufreq/hwpstate.c projects/ngroups/sys/i386/i386/machdep.c projects/ngroups/sys/i386/i386/mp_machdep.c projects/ngroups/sys/i386/i386/pmap.c projects/ngroups/sys/i386/i386/trap.c projects/ngroups/sys/i386/ibcs2/ibcs2_ioctl.c projects/ngroups/sys/i386/ibcs2/ibcs2_isc_syscall.h projects/ngroups/sys/i386/ibcs2/ibcs2_isc_sysent.c projects/ngroups/sys/i386/ibcs2/ibcs2_proto.h projects/ngroups/sys/i386/ibcs2/ibcs2_socksys.c projects/ngroups/sys/i386/ibcs2/ibcs2_syscall.h projects/ngroups/sys/i386/ibcs2/ibcs2_sysent.c projects/ngroups/sys/i386/ibcs2/ibcs2_xenix.h projects/ngroups/sys/i386/ibcs2/ibcs2_xenix_syscall.h projects/ngroups/sys/i386/ibcs2/ibcs2_xenix_sysent.c projects/ngroups/sys/i386/ibcs2/syscalls.master projects/ngroups/sys/i386/include/param.h projects/ngroups/sys/i386/include/smp.h projects/ngroups/sys/i386/include/specialreg.h projects/ngroups/sys/i386/linux/linux.h projects/ngroups/sys/i386/linux/linux_sysvec.c projects/ngroups/sys/i386/pci/pci_cfgreg.c projects/ngroups/sys/i386/xen/mp_machdep.c projects/ngroups/sys/ia64/conf/DEFAULTS projects/ngroups/sys/ia64/conf/NOTES projects/ngroups/sys/ia64/ia64/elf_machdep.c projects/ngroups/sys/ia64/ia64/machdep.c projects/ngroups/sys/ia64/ia64/mp_machdep.c projects/ngroups/sys/ia64/ia64/pmap.c projects/ngroups/sys/ia64/include/md_var.h projects/ngroups/sys/kern/init_main.c projects/ngroups/sys/kern/kern_acct.c projects/ngroups/sys/kern/kern_clock.c projects/ngroups/sys/kern/kern_conf.c projects/ngroups/sys/kern/kern_cpuset.c projects/ngroups/sys/kern/kern_descrip.c projects/ngroups/sys/kern/kern_exit.c projects/ngroups/sys/kern/kern_fork.c projects/ngroups/sys/kern/kern_intr.c projects/ngroups/sys/kern/kern_jail.c projects/ngroups/sys/kern/kern_linker.c projects/ngroups/sys/kern/kern_lock.c projects/ngroups/sys/kern/kern_lockf.c projects/ngroups/sys/kern/kern_malloc.c projects/ngroups/sys/kern/kern_mib.c projects/ngroups/sys/kern/kern_mutex.c projects/ngroups/sys/kern/kern_poll.c projects/ngroups/sys/kern/kern_proc.c projects/ngroups/sys/kern/kern_prot.c projects/ngroups/sys/kern/kern_rmlock.c projects/ngroups/sys/kern/kern_rwlock.c projects/ngroups/sys/kern/kern_sx.c projects/ngroups/sys/kern/kern_sysctl.c projects/ngroups/sys/kern/kern_vimage.c projects/ngroups/sys/kern/link_elf.c projects/ngroups/sys/kern/link_elf_obj.c projects/ngroups/sys/kern/linker_if.m projects/ngroups/sys/kern/subr_acl_posix1e.c projects/ngroups/sys/kern/subr_bus.c projects/ngroups/sys/kern/subr_kdb.c projects/ngroups/sys/kern/subr_rman.c projects/ngroups/sys/kern/subr_witness.c projects/ngroups/sys/kern/sys_generic.c projects/ngroups/sys/kern/sysv_msg.c projects/ngroups/sys/kern/sysv_sem.c projects/ngroups/sys/kern/sysv_shm.c projects/ngroups/sys/kern/tty.c projects/ngroups/sys/kern/tty_info.c projects/ngroups/sys/kern/tty_inq.c projects/ngroups/sys/kern/tty_ttydisc.c projects/ngroups/sys/kern/uipc_debug.c projects/ngroups/sys/kern/uipc_mqueue.c projects/ngroups/sys/kern/uipc_socket.c projects/ngroups/sys/kern/uipc_syscalls.c projects/ngroups/sys/kern/vfs_acl.c projects/ngroups/sys/kern/vfs_bio.c projects/ngroups/sys/kern/vfs_default.c projects/ngroups/sys/kern/vfs_export.c projects/ngroups/sys/kern/vfs_extattr.c projects/ngroups/sys/kern/vfs_lookup.c projects/ngroups/sys/kern/vfs_mount.c projects/ngroups/sys/kern/vfs_subr.c projects/ngroups/sys/kern/vfs_syscalls.c projects/ngroups/sys/kern/vfs_vnops.c projects/ngroups/sys/kgssapi/gsstest.c projects/ngroups/sys/mips/conf/ADM5120 projects/ngroups/sys/mips/conf/IDT projects/ngroups/sys/mips/conf/MALTA projects/ngroups/sys/mips/conf/QEMU projects/ngroups/sys/mips/conf/SENTRY5 projects/ngroups/sys/mips/mips/machdep.c projects/ngroups/sys/mips/mips/pm_machdep.c projects/ngroups/sys/mips/mips/pmap.c projects/ngroups/sys/modules/Makefile projects/ngroups/sys/modules/dtrace/Makefile projects/ngroups/sys/modules/dtrace/dtnfsclient/ (props changed) projects/ngroups/sys/modules/dtrace/dtraceall/dtraceall.c projects/ngroups/sys/modules/ip6_mroute_mod/ (props changed) projects/ngroups/sys/modules/ipmi/ipmi_linux/ (props changed) projects/ngroups/sys/modules/linux/Makefile projects/ngroups/sys/modules/netgraph/bluetooth/ubt/Makefile projects/ngroups/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile projects/ngroups/sys/modules/nfsclient/Makefile projects/ngroups/sys/modules/opensolaris/Makefile projects/ngroups/sys/modules/sound/sound/Makefile projects/ngroups/sys/modules/svr4/Makefile projects/ngroups/sys/modules/usb/Makefile projects/ngroups/sys/modules/wlan/Makefile projects/ngroups/sys/modules/xfs/Makefile projects/ngroups/sys/modules/zfs/Makefile projects/ngroups/sys/net/bpf.c projects/ngroups/sys/net/if.c projects/ngroups/sys/net/if_clone.c projects/ngroups/sys/net/if_llatbl.c projects/ngroups/sys/net/if_llatbl.h projects/ngroups/sys/net/if_loop.c projects/ngroups/sys/net/if_var.h projects/ngroups/sys/net/netisr.c projects/ngroups/sys/net/netisr.h projects/ngroups/sys/net/rtsock.c projects/ngroups/sys/net/vnet.h projects/ngroups/sys/net80211/ieee80211.c projects/ngroups/sys/net80211/ieee80211.h projects/ngroups/sys/net80211/ieee80211_adhoc.c projects/ngroups/sys/net80211/ieee80211_ddb.c projects/ngroups/sys/net80211/ieee80211_freebsd.c projects/ngroups/sys/net80211/ieee80211_freebsd.h projects/ngroups/sys/net80211/ieee80211_hostap.c projects/ngroups/sys/net80211/ieee80211_ht.c projects/ngroups/sys/net80211/ieee80211_input.c projects/ngroups/sys/net80211/ieee80211_monitor.c projects/ngroups/sys/net80211/ieee80211_node.c projects/ngroups/sys/net80211/ieee80211_node.h projects/ngroups/sys/net80211/ieee80211_output.c projects/ngroups/sys/net80211/ieee80211_proto.c projects/ngroups/sys/net80211/ieee80211_proto.h projects/ngroups/sys/net80211/ieee80211_scan.c projects/ngroups/sys/net80211/ieee80211_scan.h projects/ngroups/sys/net80211/ieee80211_scan_sta.c projects/ngroups/sys/net80211/ieee80211_sta.c projects/ngroups/sys/net80211/ieee80211_superg.c projects/ngroups/sys/net80211/ieee80211_tdma.c projects/ngroups/sys/net80211/ieee80211_tdma.h projects/ngroups/sys/net80211/ieee80211_var.h projects/ngroups/sys/net80211/ieee80211_wds.c projects/ngroups/sys/netgraph/netflow/ng_netflow.c projects/ngroups/sys/netinet/accf_dns.c projects/ngroups/sys/netinet/igmp.c projects/ngroups/sys/netinet/in.c projects/ngroups/sys/netinet/in_pcb.c projects/ngroups/sys/netinet/in_pcb.h projects/ngroups/sys/netinet/in_var.h projects/ngroups/sys/netinet/ip_fw2.c projects/ngroups/sys/netinet/ip_input.c projects/ngroups/sys/netinet/ip_ipsec.c projects/ngroups/sys/netinet/ip_output.c projects/ngroups/sys/netinet/sctp_crc32.c projects/ngroups/sys/netinet/sctp_uio.h projects/ngroups/sys/netinet/tcp_hostcache.c projects/ngroups/sys/netinet/tcp_input.c projects/ngroups/sys/netinet/tcp_reass.c projects/ngroups/sys/netinet/tcp_subr.c projects/ngroups/sys/netinet/udp_usrreq.c projects/ngroups/sys/netinet/udp_var.h projects/ngroups/sys/netinet/vinet.h projects/ngroups/sys/netinet6/icmp6.c projects/ngroups/sys/netinet6/in6.c projects/ngroups/sys/netinet6/in6.h projects/ngroups/sys/netinet6/in6_ifattach.c projects/ngroups/sys/netinet6/in6_mcast.c projects/ngroups/sys/netinet6/in6_pcb.c projects/ngroups/sys/netinet6/ip6_input.c projects/ngroups/sys/netinet6/ip6_ipsec.c projects/ngroups/sys/netinet6/ip6_mroute.c projects/ngroups/sys/netinet6/ip6_output.c projects/ngroups/sys/netinet6/mld6.c projects/ngroups/sys/netinet6/route6.c projects/ngroups/sys/netinet6/udp6_usrreq.c projects/ngroups/sys/netipsec/ipsec.c projects/ngroups/sys/netipsec/ipsec.h projects/ngroups/sys/netipsec/ipsec6.h projects/ngroups/sys/netipsec/key.c projects/ngroups/sys/netipsec/vipsec.h projects/ngroups/sys/netipx/spx.h projects/ngroups/sys/netipx/spx_usrreq.c projects/ngroups/sys/netipx/spx_var.h projects/ngroups/sys/netnatm/natm.c projects/ngroups/sys/nfs/nfs_common.c projects/ngroups/sys/nfsclient/bootp_subr.c projects/ngroups/sys/nfsclient/krpc_subr.c projects/ngroups/sys/nfsclient/nfs.h projects/ngroups/sys/nfsclient/nfs_bio.c projects/ngroups/sys/nfsclient/nfs_diskless.c projects/ngroups/sys/nfsclient/nfs_krpc.c projects/ngroups/sys/nfsclient/nfs_lock.c projects/ngroups/sys/nfsclient/nfs_nfsiod.c projects/ngroups/sys/nfsclient/nfs_node.c projects/ngroups/sys/nfsclient/nfs_socket.c projects/ngroups/sys/nfsclient/nfs_subs.c projects/ngroups/sys/nfsclient/nfs_vfsops.c projects/ngroups/sys/nfsclient/nfs_vnops.c projects/ngroups/sys/nfsclient/nfsm_subs.h projects/ngroups/sys/nfsclient/nfsmount.h projects/ngroups/sys/nfsclient/nfsnode.h projects/ngroups/sys/nfsserver/nfs_serv.c projects/ngroups/sys/nfsserver/nfs_srvkrpc.c projects/ngroups/sys/nfsserver/nfs_srvsock.c projects/ngroups/sys/nfsserver/nfs_srvsubs.c projects/ngroups/sys/nlm/nlm.h projects/ngroups/sys/nlm/nlm_advlock.c projects/ngroups/sys/nlm/nlm_prot_impl.c projects/ngroups/sys/opencrypto/cryptodev.c projects/ngroups/sys/pc98/conf/DEFAULTS projects/ngroups/sys/pc98/conf/NOTES projects/ngroups/sys/pc98/pc98/machdep.c projects/ngroups/sys/powerpc/aim/clock.c projects/ngroups/sys/powerpc/aim/machdep.c projects/ngroups/sys/powerpc/aim/mmu_oea.c projects/ngroups/sys/powerpc/aim/mmu_oea64.c projects/ngroups/sys/powerpc/aim/mp_cpudep.c projects/ngroups/sys/powerpc/aim/ofw_machdep.c projects/ngroups/sys/powerpc/aim/vm_machdep.c projects/ngroups/sys/powerpc/booke/clock.c projects/ngroups/sys/powerpc/booke/locore.S projects/ngroups/sys/powerpc/booke/machdep.c projects/ngroups/sys/powerpc/booke/pmap.c projects/ngroups/sys/powerpc/booke/trap_subr.S projects/ngroups/sys/powerpc/booke/vm_machdep.c projects/ngroups/sys/powerpc/conf/GENERIC projects/ngroups/sys/powerpc/conf/MPC85XX projects/ngroups/sys/powerpc/conf/NOTES projects/ngroups/sys/powerpc/include/cpufunc.h projects/ngroups/sys/powerpc/include/md_var.h projects/ngroups/sys/powerpc/include/mutex.h projects/ngroups/sys/powerpc/include/ofw_machdep.h projects/ngroups/sys/powerpc/include/pcpu.h projects/ngroups/sys/powerpc/include/pmap.h projects/ngroups/sys/powerpc/include/smp.h projects/ngroups/sys/powerpc/include/spr.h projects/ngroups/sys/powerpc/mpc85xx/ocpbus.c projects/ngroups/sys/powerpc/mpc85xx/ocpbus.h projects/ngroups/sys/powerpc/powerpc/busdma_machdep.c projects/ngroups/sys/powerpc/powerpc/genassym.c projects/ngroups/sys/powerpc/powerpc/mp_machdep.c projects/ngroups/sys/powerpc/powerpc/openpic.c projects/ngroups/sys/powerpc/powerpc/pmap_dispatch.c projects/ngroups/sys/rpc/xdr.h projects/ngroups/sys/security/audit/audit_worker.c projects/ngroups/sys/security/mac/mac_framework.c projects/ngroups/sys/security/mac/mac_internal.h projects/ngroups/sys/security/mac_bsdextended/mac_bsdextended.c projects/ngroups/sys/sparc64/conf/GENERIC projects/ngroups/sys/sparc64/sparc64/machdep.c projects/ngroups/sys/sparc64/sparc64/vm_machdep.c projects/ngroups/sys/sun4v/sun4v/machdep.c projects/ngroups/sys/sys/_null.h projects/ngroups/sys/sys/acl.h projects/ngroups/sys/sys/buf.h projects/ngroups/sys/sys/buf_ring.h projects/ngroups/sys/sys/cpuset.h projects/ngroups/sys/sys/eventhandler.h projects/ngroups/sys/sys/filedesc.h projects/ngroups/sys/sys/interrupt.h projects/ngroups/sys/sys/ioctl.h projects/ngroups/sys/sys/ioctl_compat.h projects/ngroups/sys/sys/jail.h projects/ngroups/sys/sys/kernel.h projects/ngroups/sys/sys/lock.h projects/ngroups/sys/sys/lockf.h projects/ngroups/sys/sys/mount.h projects/ngroups/sys/sys/mutex.h projects/ngroups/sys/sys/namei.h projects/ngroups/sys/sys/param.h projects/ngroups/sys/sys/priv.h projects/ngroups/sys/sys/proc.h projects/ngroups/sys/sys/queue.h projects/ngroups/sys/sys/rwlock.h projects/ngroups/sys/sys/sx.h projects/ngroups/sys/sys/syscallsubr.h projects/ngroups/sys/sys/sysctl.h projects/ngroups/sys/sys/systm.h projects/ngroups/sys/sys/ucred.h projects/ngroups/sys/sys/vimage.h projects/ngroups/sys/ufs/ffs/ffs_alloc.c projects/ngroups/sys/ufs/ffs/ffs_vfsops.c projects/ngroups/sys/ufs/ufs/extattr.h projects/ngroups/sys/ufs/ufs/ufs_acl.c projects/ngroups/sys/ufs/ufs/ufs_extattr.c projects/ngroups/sys/ufs/ufs/ufs_extern.h projects/ngroups/sys/ufs/ufs/ufs_vfsops.c projects/ngroups/sys/ufs/ufs/ufs_vnops.c projects/ngroups/sys/vm/vm_object.c projects/ngroups/sys/vm/vm_page.c projects/ngroups/sys/vm/vm_page.h projects/ngroups/sys/vm/vm_pageout.c projects/ngroups/sys/vm/vnode_pager.c projects/ngroups/sys/xdr/xdr_mem.c projects/ngroups/sys/xen/xenbus/init.txt (props changed) projects/ngroups/sys/xen/xenbus/xenbus_xs.c projects/ngroups/tools/KSE/ksetest/kse_asm.S projects/ngroups/tools/KSE/rr/kse_asm.S projects/ngroups/tools/regression/README projects/ngroups/tools/regression/file/flock/Makefile projects/ngroups/tools/regression/file/flock/flock.c projects/ngroups/tools/regression/lib/msun/test-conj.t (props changed) projects/ngroups/tools/regression/usr.bin/sed/multitest.t projects/ngroups/tools/tools/README projects/ngroups/tools/tools/ath/common/dumpregs.h (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5210.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5211.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5212.c (props changed) projects/ngroups/tools/tools/ath/common/dumpregs_5416.c (props changed) projects/ngroups/tools/tools/nanobsd/gateworks/common projects/ngroups/tools/tools/net80211/scripts/setup.tdma-slave projects/ngroups/usr.bin/Makefile projects/ngroups/usr.bin/ee/Makefile projects/ngroups/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg projects/ngroups/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg projects/ngroups/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg projects/ngroups/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg (contents, props changed) projects/ngroups/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg (contents, props changed) projects/ngroups/usr.bin/find/function.c projects/ngroups/usr.bin/kdump/mkioctls projects/ngroups/usr.bin/killall/killall.1 projects/ngroups/usr.bin/killall/killall.c projects/ngroups/usr.bin/nfsstat/nfsstat.1 projects/ngroups/usr.bin/nfsstat/nfsstat.c projects/ngroups/usr.bin/sed/compile.c projects/ngroups/usr.bin/sed/defs.h projects/ngroups/usr.bin/sed/process.c projects/ngroups/usr.bin/sed/sed.1 projects/ngroups/usr.bin/truss/amd64-fbsd.c projects/ngroups/usr.bin/truss/amd64-fbsd32.c projects/ngroups/usr.bin/truss/amd64-linux32.c projects/ngroups/usr.bin/truss/i386-fbsd.c projects/ngroups/usr.bin/truss/i386-linux.c projects/ngroups/usr.bin/truss/ia64-fbsd.c projects/ngroups/usr.bin/truss/main.c projects/ngroups/usr.bin/truss/mips-fbsd.c projects/ngroups/usr.bin/truss/powerpc-fbsd.c projects/ngroups/usr.bin/truss/sparc64-fbsd.c projects/ngroups/usr.bin/truss/syscall.h projects/ngroups/usr.bin/truss/syscalls.c projects/ngroups/usr.bin/truss/truss.1 projects/ngroups/usr.bin/truss/truss.h projects/ngroups/usr.sbin/Makefile projects/ngroups/usr.sbin/bluetooth/btpand/btpand.c projects/ngroups/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c projects/ngroups/usr.sbin/ifmcstat/ifmcstat.8 projects/ngroups/usr.sbin/ifmcstat/ifmcstat.c projects/ngroups/usr.sbin/iostat/iostat.c projects/ngroups/usr.sbin/jail/jail.8 projects/ngroups/usr.sbin/jail/jail.c projects/ngroups/usr.sbin/jexec/Makefile projects/ngroups/usr.sbin/jexec/jexec.8 projects/ngroups/usr.sbin/jexec/jexec.c projects/ngroups/usr.sbin/jls/Makefile projects/ngroups/usr.sbin/jls/jls.8 projects/ngroups/usr.sbin/jls/jls.c projects/ngroups/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/ngroups/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/ngroups/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/ngroups/usr.sbin/makefs/getid.c (props changed) projects/ngroups/usr.sbin/mergemaster/mergemaster.sh projects/ngroups/usr.sbin/mountd/exports.5 projects/ngroups/usr.sbin/mountd/mountd.8 projects/ngroups/usr.sbin/mountd/mountd.c projects/ngroups/usr.sbin/nfsd/Makefile projects/ngroups/usr.sbin/nfsd/nfsd.8 projects/ngroups/usr.sbin/nfsd/nfsd.c projects/ngroups/usr.sbin/pkg_install/lib/lib.h projects/ngroups/usr.sbin/pkg_install/lib/plist.c projects/ngroups/usr.sbin/ppp/timer.c projects/ngroups/usr.sbin/pwd_mkdb/pwd_mkdb.c projects/ngroups/usr.sbin/sysinstall/tcpip.c projects/ngroups/usr.sbin/usbconfig/usbconfig.8 projects/ngroups/usr.sbin/zic/README projects/ngroups/usr.sbin/zic/Theory projects/ngroups/usr.sbin/zic/ialloc.c projects/ngroups/usr.sbin/zic/private.h projects/ngroups/usr.sbin/zic/scheck.c projects/ngroups/usr.sbin/zic/zdump.8 projects/ngroups/usr.sbin/zic/zdump.c projects/ngroups/usr.sbin/zic/zic.8 projects/ngroups/usr.sbin/zic/zic.c Modified: projects/ngroups/ObsoleteFiles.inc ============================================================================== --- projects/ngroups/ObsoleteFiles.inc Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/ObsoleteFiles.inc Thu May 28 22:12:14 2009 (r193002) @@ -14,6 +14,54 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER() +OLD_FILES+=usr/share/man/man3/SLIST_REMOVE_NEXT.3.gz +OLD_FILES+=usr/share/man/man3/STAILQ_REMOVE_NEXT.3.gz +# 20090527: removal of legacy USB stack +OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h +OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ehcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/hid.h +OLD_FILES+=usr/include/legacy/dev/usb/if_urtwreg.h +OLD_FILES+=usr/include/legacy/dev/usb/if_urtwvar.h +OLD_FILES+=usr/include/legacy/dev/usb/ohcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ohcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/rio500_usb.h +OLD_FILES+=usr/include/legacy/dev/usb/rt2573_ucode.h +OLD_FILES+=usr/include/legacy/dev/usb/sl811hsreg.h +OLD_FILES+=usr/include/legacy/dev/usb/sl811hsvar.h +OLD_FILES+=usr/include/legacy/dev/usb/ubser.h +OLD_FILES+=usr/include/legacy/dev/usb/ucomvar.h +OLD_FILES+=usr/include/legacy/dev/usb/udbp.h +OLD_FILES+=usr/include/legacy/dev/usb/uftdireg.h +OLD_FILES+=usr/include/legacy/dev/usb/ugraphire_rdesc.h +OLD_FILES+=usr/include/legacy/dev/usb/uhcireg.h +OLD_FILES+=usr/include/legacy/dev/usb/uhcivar.h +OLD_FILES+=usr/include/legacy/dev/usb/usb.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_mem.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_port.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_quirks.h +OLD_FILES+=usr/include/legacy/dev/usb/usbcdc.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdi.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdi_util.h +OLD_FILES+=usr/include/legacy/dev/usb/usbdivar.h +OLD_FILES+=usr/include/legacy/dev/usb/usbhid.h +OLD_FILES+=usr/include/legacy/dev/usb/uxb360gp_rdesc.h +OLD_DIRS+=usr/include/legacy/dev/usb +OLD_DIRS+=usr/include/legacy/dev +OLD_DIRS+=usr/include/legacy +# 20090526: removal of makekey(8) +OLD_FILES+=libexec/makekey +OLD_FILES+=usr/share/man/man8/makekey.8.gz +# 20090522: removal of University of Michigan NFSv4 client +OLD_FILES+=etc/rc.d/idmapd +OLD_FILES+=sbin/idmapd +OLD_FILES+=sbin/mount_nfs4 +OLD_FILES+=usr/share/man/man8/idmapd.8.gz +OLD_FILES+=usr/share/man/man8/mount_nfs4.8.gz +# 20090513: removal of legacy versions of USB network interface drivers +OLD_FILES+=usr/include/legacy/dev/usb/if_upgtvar.h +OLD_FILES+=usr/include/legacy/dev/usb/usb_ethersubr.h # 20090417: removal of legacy versions of USB network interface drivers OLD_FILES+=usr/include/legacy/dev/usb/if_auereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_axereg.h Modified: projects/ngroups/UPDATING ============================================================================== --- projects/ngroups/UPDATING Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/UPDATING Thu May 28 22:12:14 2009 (r193002) @@ -22,6 +22,32 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090527: + Add support for hierarchical jails. Remove global securelevel. + Bump __FreeBSD_version to 800091. + +20090523: + The layout of struct vnet_net has changed, therefore modules + need to be rebuilt. + Bump __FreeBSD_version to 800090. + +20090523: + The newly imported zic(8) produces a new format in the + output. Please run tzsetup(8) to install the newly created + data to /etc/localtime. + +20090520: + The sysctl tree for the usb stack has renamed from hw.usb2.* to + hw.usb.* and is now consistent again with previous releases. + +20090520: + 802.11 monitor mode support was revised and driver api's + were changed. Drivers dependent on net80211 now support + DLT_IEEE802_11_RADIO instead of DLT_IEEE802_11. No + user-visible data structures were changed but applications + that use DLT_IEEE802_11 may require changes. + Bump __FreeBSD_version to 800088. + 20090430: The layout of the following structs has changed: sysctl_oid, socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet, @@ -262,7 +288,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. memory segment of size > 2 GB on the 64-bit architectures. Due to a limitation of the existing ABI, the shm_segsz member of the struct shmid_ds, returned by shmctl(IPC_STAT) call is - wrong for large segments. Note that limits must be explicitely + wrong for large segments. Note that limits must be explicitly raised to allow such segments to be created. 20090301: Modified: projects/ngroups/bin/chflags/chflags.c ============================================================================== --- projects/ngroups/bin/chflags/chflags.c Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/chflags/chflags.c Thu May 28 22:12:14 2009 (r193002) @@ -115,7 +115,7 @@ main(int argc, char *argv[]) fts_options |= FTS_LOGICAL; } } else - fts_options = FTS_LOGICAL; + fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL; /* XXX: Why don't chflags and lchflags have compatible prototypes? */ if (hflag) Modified: projects/ngroups/bin/cp/Makefile ============================================================================== --- projects/ngroups/bin/cp/Makefile Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/cp/Makefile Thu May 28 22:12:14 2009 (r193002) @@ -3,6 +3,6 @@ PROG= cp SRCS= cp.c utils.c -CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED +CFLAGS+= -DVM_AND_BUFFER_CACHE_SYNCHRONIZED -D_ACL_PRIVATE .include Modified: projects/ngroups/bin/pkill/pkill.1 ============================================================================== --- projects/ngroups/bin/pkill/pkill.1 Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/pkill/pkill.1 Thu May 28 22:12:14 2009 (r193002) @@ -36,7 +36,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd November 23, 2006 +.Dd May 16, 2009 .Dt PKILL 1 .Os .Sh NAME @@ -44,7 +44,7 @@ .Nd find or signal processes by name .Sh SYNOPSIS .Nm pgrep -.Op Fl LSfilnovx +.Op Fl LSafilnovx .Op Fl F Ar pidfile .Op Fl G Ar gid .Op Fl M Ar core @@ -60,7 +60,7 @@ .Ar pattern ... .Nm pkill .Op Fl Ar signal -.Op Fl ILfinovx +.Op Fl ILafinovx .Op Fl F Ar pidfile .Op Fl G Ar gid .Op Fl M Ar core @@ -128,6 +128,15 @@ The default is a newline. This option can only be used with the .Nm pgrep command. +.It Fl a +Include process ancestors in the match list. +By default, the current +.Nm pgrep +or +.Nm pkill +process and all of its ancestors are excluded (unless +.Fl v +is used). .It Fl f Match against full argument lists. The default is to match against process names. Modified: projects/ngroups/bin/pkill/pkill.c ============================================================================== --- projects/ngroups/bin/pkill/pkill.c Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/pkill/pkill.c Thu May 28 22:12:14 2009 (r193002) @@ -133,7 +133,7 @@ main(int argc, char **argv) { char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q, *pidfile; const char *execf, *coref; - int debug_opt; + int ancestors, debug_opt; int i, ch, bestidx, rv, criteria, pidfromfile, pidfilelock; size_t jsz; int (*action)(const struct kinfo_proc *); @@ -142,6 +142,7 @@ main(int argc, char **argv) struct timeval best_tval; regex_t reg; regmatch_t regmatch; + pid_t pid; setlocale(LC_ALL, ""); @@ -174,13 +175,14 @@ main(int argc, char **argv) } } + ancestors = 0; criteria = 0; debug_opt = 0; pidfile = NULL; pidfilelock = 0; execf = coref = _PATH_DEVNULL; - while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:d:fg:ij:lnos:t:u:vx")) != -1) + while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnos:t:u:vx")) != -1) switch (ch) { case 'D': debug_opt++; @@ -220,6 +222,9 @@ main(int argc, char **argv) makelist(&ruidlist, LT_USER, optarg); criteria = 1; break; + case 'a': + ancestors++; + break; case 'd': if (!pgrep) usage(); @@ -468,6 +473,27 @@ main(int argc, char **argv) selected[i] = 1; } + if (!ancestors) { + pid = mypid; + while (pid) { + for (i = 0, kp = plist; i < nproc; i++, kp++) { + if (PSKIP(kp)) + continue; + if (kp->ki_pid == pid) { + selected[i] = 0; + pid = kp->ki_ppid; + break; + } + } + if (i == nproc) { + if (pid == mypid) + pid = getppid(); + else + break; /* Maybe we're in a jail ? */ + } + } + } + if (newest || oldest) { best_tval.tv_sec = 0; best_tval.tv_usec = 0; Modified: projects/ngroups/bin/ps/print.c ============================================================================== --- projects/ngroups/bin/ps/print.c Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/ps/print.c Thu May 28 22:12:14 2009 (r193002) @@ -130,9 +130,11 @@ command(KINFO *k, VARENT *ve) if (cflag) { /* If it is the last field, then don't pad */ if (STAILQ_NEXT(ve, next_ve) == NULL) { + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) - printf("/%s", k->ki_p->ki_ocomm); + (void)printf("/%s", k->ki_p->ki_ocomm); } else (void)printf("%-*s", v->width, k->ki_p->ki_comm); return; @@ -140,16 +142,22 @@ command(KINFO *k, VARENT *ve) if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL) errx(1, "malloc failed"); strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH); - if (k->ki_env) { - if ((vis_env = malloc(strlen(k->ki_env) * 4 + 1)) == NULL) - errx(1, "malloc failed"); - strvis(vis_env, k->ki_env, VIS_TAB | VIS_NL | VIS_NOSLASH); - } else - vis_env = NULL; if (STAILQ_NEXT(ve, next_ve) == NULL) { /* last field */ + + if (k->ki_env) { + if ((vis_env = malloc(strlen(k->ki_env) * 4 + 1)) + == NULL) + errx(1, "malloc failed"); + strvis(vis_env, k->ki_env, + VIS_TAB | VIS_NL | VIS_NOSLASH); + } else + vis_env = NULL; + if (termwidth == UNLIMITED) { + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); if (vis_env) (void)printf("%s ", vis_env); (void)printf("%s", vis_args); @@ -157,6 +165,9 @@ command(KINFO *k, VARENT *ve) left = termwidth - (totwidth - v->width); if (left < 1) /* already wrapped, just use std width */ left = v->width; + if ((cp = k->ki_d.prefix) != NULL) + while (--left >= 0 && *cp) + (void)putchar(*cp++); if ((cp = vis_env) != NULL) { while (--left >= 0 && *cp) (void)putchar(*cp++); @@ -166,12 +177,12 @@ command(KINFO *k, VARENT *ve) for (cp = vis_args; --left >= 0 && *cp != '\0';) (void)putchar(*cp++); } + if (vis_env != NULL) + free(vis_env); } else - /* XXX env? */ + /* ki_d.prefix & ki_env aren't shown for interim fields */ (void)printf("%-*.*s", v->width, v->width, vis_args); free(vis_args); - if (vis_env != NULL) - free(vis_env); } void @@ -182,6 +193,8 @@ ucomm(KINFO *k, VARENT *ve) v = ve->var; if (STAILQ_NEXT(ve, next_ve) == NULL) { /* last field, don't pad */ + if (k->ki_d.prefix) + (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) printf("/%s", k->ki_p->ki_ocomm); @@ -583,6 +596,10 @@ elapsed(KINFO *k, VARENT *ve) char obuff[128]; v = ve->var; + if (!k->ki_valid) { + (void)printf("%-*s", v->width, "-"); + return; + } val = now - k->ki_p->ki_start.tv_sec; days = val / (24 * 60 * 60); val %= 24 * 60 * 60; Modified: projects/ngroups/bin/ps/ps.1 ============================================================================== --- projects/ngroups/bin/ps/ps.1 Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/ps/ps.1 Thu May 28 22:12:14 2009 (r193002) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd August 21, 2006 +.Dd May 16, 2009 .Dt PS 1 .Os .Sh NAME @@ -37,7 +37,7 @@ .Nd process status .Sh SYNOPSIS .Nm -.Op Fl aCcefHhjlmrSTuvwXxZ +.Op Fl aCcdefHhjlmrSTuvwXxZ .Op Fl O Ar fmt | Fl o Ar fmt .Op Fl G Ar gid Ns Op , Ns Ar gid Ns Ar ... .Op Fl M Ar core @@ -122,6 +122,15 @@ CPU calculation that ignores .Dq resident time (this normally has no effect). +.It Fl d +Arrange processes into descendancy order and prefix each command with +indentation text showing sibling and parent/child relationships. +If either of the +.Fl m +and +.Fl r +options are also used, they control how sibling processes are sorted +relative to eachother. .It Fl e Display the environment as well. .It Fl f Modified: projects/ngroups/bin/ps/ps.c ============================================================================== --- projects/ngroups/bin/ps/ps.c Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/ps/ps.c Thu May 28 22:12:14 2009 (r193002) @@ -138,6 +138,7 @@ static int addelem_pid(struct listinfo static int addelem_tty(struct listinfo *, const char *); static int addelem_uid(struct listinfo *, const char *); static void add_list(struct listinfo *, const char *); +static void descendant_sort(KINFO *, int); static void dynsizevars(KINFO *); static void *expand_list(struct listinfo *); static const char * @@ -163,7 +164,7 @@ static char vfmt[] = "pid,state,time,sl, "%cpu,%mem,command"; static char Zfmt[] = "label"; -#define PS_ARGS "AaCce" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ" +#define PS_ARGS "AaCcde" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ" int main(int argc, char *argv[]) @@ -177,7 +178,7 @@ main(int argc, char *argv[]) const char *nlistf, *memf; char *cols; int all, ch, elem, flag, _fmt, i, lineno; - int nentries, nkept, nselectors; + int descendancy, nentries, nkept, nselectors; int prtheader, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -201,7 +202,7 @@ main(int argc, char *argv[]) if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = _fmt = nselectors = optfatal = 0; + all = descendancy = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -233,6 +234,9 @@ main(int argc, char *argv[]) case 'c': cflag = 1; break; + case 'd': + descendancy = 1; + break; case 'e': /* XXX set ufmt */ needenv = 1; break; @@ -575,6 +579,8 @@ main(int argc, char *argv[]) keepit: next_KINFO = &kinfo[nkept]; next_KINFO->ki_p = kp; + next_KINFO->ki_d.level = 0; + next_KINFO->ki_d.prefix = NULL; next_KINFO->ki_pcpu = getpcpu(next_KINFO); if (sortby == SORTMEM) next_KINFO->ki_memsize = kp->ki_tsize + @@ -599,6 +605,13 @@ main(int argc, char *argv[]) * sort proc list */ qsort(kinfo, nkept, sizeof(KINFO), pscomp); + + /* + * We want things in descendant order + */ + if (descendancy) + descendant_sort(kinfo, nkept); + /* * For each process, call each variable output function. */ @@ -622,6 +635,9 @@ main(int argc, char *argv[]) free_list(&sesslist); free_list(&ttylist); free_list(&uidlist); + for (i = 0; i < nkept; i++) + free(kinfo[i].ki_d.prefix); + free(kinfo); exit(eval); } @@ -748,7 +764,7 @@ addelem_tty(struct listinfo *inf, const strlcat(pathbuf2, elem, sizeof(pathbuf2)); if (stat(pathbuf2, &sb) == 0 && S_ISCHR(sb.st_mode)) { /* No need to repeat stat() && S_ISCHR() checks */ - ttypath = NULL; + ttypath = NULL; break; } /* Check to see if /dev/pts/${elem} exists */ @@ -756,7 +772,7 @@ addelem_tty(struct listinfo *inf, const strlcat(pathbuf3, elem, sizeof(pathbuf3)); if (stat(pathbuf3, &sb) == 0 && S_ISCHR(sb.st_mode)) { /* No need to repeat stat() && S_ISCHR() checks */ - ttypath = NULL; + ttypath = NULL; break; } break; @@ -890,6 +906,115 @@ add_list(struct listinfo *inf, const cha } } +static void +descendant_sort(KINFO *ki, int items) +{ + int dst, lvl, maxlvl, n, ndst, nsrc, siblings, src; + unsigned char *path; + KINFO kn; + + /* + * First, sort the entries by descendancy, tracking the descendancy + * depth in the ki_d.level field. + */ + src = 0; + maxlvl = 0; + while (src < items) { + if (ki[src].ki_d.level) { + src++; + continue; + } + for (nsrc = 1; src + nsrc < items; nsrc++) + if (!ki[src + nsrc].ki_d.level) + break; + + for (dst = 0; dst < items; dst++) { + if (ki[dst].ki_p->ki_pid == ki[src].ki_p->ki_pid) + continue; + if (ki[dst].ki_p->ki_pid == ki[src].ki_p->ki_ppid) + break; + } + + if (dst == items) { + src += nsrc; + continue; + } + + for (ndst = 1; dst + ndst < items; ndst++) + if (ki[dst + ndst].ki_d.level <= ki[dst].ki_d.level) + break; + + for (n = src; n < src + nsrc; n++) { + ki[n].ki_d.level += ki[dst].ki_d.level + 1; + if (maxlvl < ki[n].ki_d.level) + maxlvl = ki[n].ki_d.level; + } + + while (nsrc) { + if (src < dst) { + kn = ki[src]; + memmove(ki + src, ki + src + 1, + (dst - src + ndst - 1) * sizeof *ki); + ki[dst + ndst - 1] = kn; + nsrc--; + dst--; + ndst++; + } else if (src != dst + ndst) { + kn = ki[src]; + memmove(ki + dst + ndst + 1, ki + dst + ndst, + (src - dst - ndst) * sizeof *ki); + ki[dst + ndst] = kn; + ndst++; + nsrc--; + src++; + } else { + ndst += nsrc; + src += nsrc; + nsrc = 0; + } + } + } + + /* + * Now populate ki_d.prefix (instead of ki_d.level) with the command + * prefix used to show descendancies. + */ + path = malloc((maxlvl + 7) / 8); + memset(path, '\0', (maxlvl + 7) / 8); + for (src = 0; src < items; src++) { + if ((lvl = ki[src].ki_d.level) == 0) { + ki[src].ki_d.prefix = NULL; + continue; + } + if ((ki[src].ki_d.prefix = malloc(lvl * 2 + 1)) == NULL) + errx(1, "malloc failed"); + for (n = 0; n < lvl - 2; n++) { + ki[src].ki_d.prefix[n * 2] = + path[n / 8] & 1 << (n % 8) ? '|' : ' '; + ki[src].ki_d.prefix[n * 2 + 1] = ' '; + } + if (n == lvl - 2) { + /* Have I any more siblings? */ + for (siblings = 0, dst = src + 1; dst < items; dst++) { + if (ki[dst].ki_d.level > lvl) + continue; + if (ki[dst].ki_d.level == lvl) + siblings = 1; + break; + } + if (siblings) + path[n / 8] |= 1 << (n % 8); + else + path[n / 8] &= ~(1 << (n % 8)); + ki[src].ki_d.prefix[n * 2] = siblings ? '|' : '`'; + ki[src].ki_d.prefix[n * 2 + 1] = '-'; + n++; + } + strcpy(ki[src].ki_d.prefix + n * 2, "- "); + } + free(path); +} + static void * expand_list(struct listinfo *inf) { Modified: projects/ngroups/bin/ps/ps.h ============================================================================== --- projects/ngroups/bin/ps/ps.h Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/ps/ps.h Thu May 28 22:12:14 2009 (r193002) @@ -42,6 +42,10 @@ typedef struct kinfo { int ki_valid; /* 1 => uarea stuff valid */ double ki_pcpu; /* calculated in main() */ segsz_t ki_memsize; /* calculated in main() */ + union { + int level; /* used in decendant_sort() */ + char *prefix; /* calculated in decendant_sort() */ + } ki_d; } KINFO; /* Variables. */ Modified: projects/ngroups/bin/test/TEST.sh ============================================================================== --- projects/ngroups/bin/test/TEST.sh Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/test/TEST.sh Thu May 28 22:12:14 2009 (r193002) @@ -133,5 +133,45 @@ t 0 '"a" -a ! ""' t 1 '""' t 0 '! ""' +t 0 '!' +t 0 '\(' +t 0 '\)' + +t 1 '\( = \)' +t 0 '\( != \)' +t 0 '\( ! \)' +t 0 '\( \( \)' +t 0 '\( \) \)' +t 0 '! = !' +t 1 '! != !' +t 1 '-n = \)' +t 0 '! != \)' +t 1 '! = a' +t 0 '! != -n' +t 0 '! -c /etc/passwd' + +t 0 '! \( = \)' +t 1 '! \( != \)' +t 1 '! = = =' +t 0 '! = = \)' +t 0 '! "" -o ""' +t 1 '! "x" -o ""' +t 1 '! "" -o "x"' +t 1 '! "x" -o "x"' +t 0 '\( -f /etc/passwd \)' +t 1 '\( ! = \)' +t 0 '\( ! "" \)' +t 1 '\( ! -e \)' + +t 0 '0 -eq 0 -a -d /' +t 0 '-s = "" -o "" = ""' +t 0 '"" = "" -o -s = ""' +t 1 '-s = "" -o -s = ""' +t 0 '-z x -o x = "#" -o x = x' +t 1 '-z y -o y = "#" -o y = x' +t 0 '0 -ne 0 -o ! -f /' +t 0 '1 -ne 0 -o ! -f /etc/passwd' +t 1 '0 -ne 0 -o ! -f /etc/passwd' + echo "" echo "Syntax errors: $ERROR Failed: $FAILED" Modified: projects/ngroups/bin/test/test.c ============================================================================== --- projects/ngroups/bin/test/test.c Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/bin/test/test.c Thu May 28 22:12:14 2009 (r193002) @@ -163,6 +163,7 @@ struct t_op { struct t_op const *t_wp_op; int nargc; char **t_wp; +int parenlevel; static int aexpr(enum token); static int binop(void); @@ -171,7 +172,9 @@ static int filstat(char *, enum token); static int getn(const char *); static intmax_t getq(const char *); static int intcmp(const char *, const char *); -static int isoperand(void); +static int isunopoperand(void); +static int islparenoperand(void); +static int isrparenoperand(void); static int newerf(const char *, const char *); static int nexpr(enum token); static int oexpr(enum token); @@ -205,7 +208,14 @@ main(int argc, char **argv) #endif nargc = argc; t_wp = &argv[1]; - res = !oexpr(t_lex(*t_wp)); + parenlevel = 0; + if (nargc == 4 && strcmp(*t_wp, "!") == 0) { + /* Things like ! "" -o x do not fit in the normal grammar. */ + --nargc; + ++t_wp; + res = oexpr(t_lex(*t_wp)); + } else + res = !oexpr(t_lex(*t_wp)); if (--nargc > 0) syntax(*t_wp, "unexpected operator"); @@ -268,12 +278,16 @@ primary(enum token n) if (n == EOI) return 0; /* missing expression */ if (n == LPAREN) { + parenlevel++; if ((nn = t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) == - RPAREN) + RPAREN) { + parenlevel--; return 0; /* missing expression */ + } res = oexpr(nn); if (t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) != RPAREN) syntax(NULL, "closing paren expected"); + parenlevel--; return res; } if (t_wp_op && t_wp_op->op_type == UNOP) { @@ -410,8 +424,10 @@ t_lex(char *s) } while (op->op_text) { if (strcmp(s, op->op_text) == 0) { - if ((op->op_type == UNOP && isoperand()) || - (op->op_num == LPAREN && nargc == 1)) + if (((op->op_type == UNOP || op->op_type == BUNOP) + && isunopoperand()) || + (op->op_num == LPAREN && islparenoperand()) || + (op->op_num == RPAREN && isrparenoperand())) break; t_wp_op = op; return op->op_num; @@ -423,7 +439,7 @@ t_lex(char *s) } static int -isoperand(void) +isunopoperand(void) { struct t_op const *op = ops; char *s; @@ -431,19 +447,53 @@ isoperand(void) if (nargc == 1) return 1; - if (nargc == 2) - return 0; s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; t = *(t_wp + 2); while (op->op_text) { if (strcmp(s, op->op_text) == 0) return op->op_type == BINOP && - (t[0] != ')' || t[1] != '\0'); + (parenlevel == 0 || t[0] != ')' || t[1] != '\0'); + op++; + } + return 0; +} + +static int +islparenoperand(void) +{ + struct t_op const *op = ops; + char *s; + + if (nargc == 1) + return 1; + s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; + if (nargc != 3) + return 0; + while (op->op_text) { + if (strcmp(s, op->op_text) == 0) + return op->op_type == BINOP; op++; } return 0; } +static int +isrparenoperand(void) +{ + char *s; + + if (nargc == 1) + return 0; + s = *(t_wp + 1); + if (nargc == 2) + return parenlevel == 1 && strcmp(s, ")") == 0; + return 0; +} + /* atoi with error detection */ static int getn(const char *s) Modified: projects/ngroups/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- projects/ngroups/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu May 28 22:12:14 2009 (r193002) @@ -418,6 +418,7 @@ typedef struct vsecattr { #define VOP_FSYNC(vp, f, cr, ct) fsync((vp)->v_fd) #define VN_RELE(vp) vn_close(vp, 0, NULL, NULL) +#define VN_RELE_ASYNC(vp, taskq) vn_close(vp, 0, NULL, NULL) #define vn_lock(vp, type) #define VOP_UNLOCK(vp, type) Modified: projects/ngroups/cddl/lib/libzpool/Makefile ============================================================================== --- projects/ngroups/cddl/lib/libzpool/Makefile Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/cddl/lib/libzpool/Makefile Thu May 28 22:12:14 2009 (r193002) @@ -13,7 +13,7 @@ # ATOMIC_SRCS .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64" .PATH: ${.CURDIR}/../../../sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH} -ATOMIC_SRCS= atomic.S +ATOMIC_SRCS= opensolaris_atomic.S .else .PATH: ${.CURDIR}/../../../sys/cddl/compat/opensolaris/kern ATOMIC_SRCS= opensolaris_atomic.c Modified: projects/ngroups/cddl/usr.sbin/Makefile ============================================================================== --- projects/ngroups/cddl/usr.sbin/Makefile Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/cddl/usr.sbin/Makefile Thu May 28 22:12:14 2009 (r193002) @@ -3,6 +3,7 @@ .include SUBDIR= dtrace \ + lockstat \ ${_zdb} .if ${MK_ZFS} != "no" Modified: projects/ngroups/contrib/file/ChangeLog ============================================================================== --- projects/ngroups/contrib/file/ChangeLog Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/ChangeLog Thu May 28 22:12:14 2009 (r193002) @@ -1,3 +1,59 @@ +2009-05-06 10:25 Christos Zoulas + + * Avoid null dereference in cdf code (Drew Yao) + + * More cdf bounds checks and overflow checks + +2009-05-01 18:37 Christos Zoulas + + * Buffer overflow fixes from Drew Yao + +2009-04-30 17:10 Christos Zoulas + + * Fix more cdf lossage. All the documents I have + right now print the correct information. + +2009-03-27 18:43 Christos Zoulas + + * don't print \012- separators in the same magic entry + if it consists of multiple magic printing lines. + +2009-03-23 10:20 Christos Zoulas + + * Avoid file descriptor leak in compress code from + (Daniel Novotny) + +2009-03-18 16:50 Christos Zoulas + + * Allow escaping of relation characters, so that we can say \^[A-Z] + and the ^ is not eaten as a relation char. + + * Fix troff and fortran to their previous glory using + regex. This was broken since their removel from ascmagic. + +2009-03-10 16:50 Christos Zoulas + + * don't use strlen in strndup() (Toby Peterson) + +2009-03-10 7:45 Christos Zoulas + + * avoid c99 syntax. + +2009-02-23 15:45 Christos Zoulas + + * make the cdf code use the buffer first if available, + and then the fd code. + +2009-02-13 13:45 Christos Zoulas + + * look for struct option to determine if getopt.h is usable for IRIX. + + * sanitize cdf document strings + +2009-02-04 13:25 Christos Zoulas + + * fix OS/2 warnings. + 2008-12-12 15:50 Christos Zoulas * fix initial offset calculation for non 4K sector files Modified: projects/ngroups/contrib/file/Magdir/cafebabe ============================================================================== --- projects/ngroups/contrib/file/Magdir/cafebabe Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/cafebabe Thu May 28 22:12:14 2009 (r193002) @@ -17,6 +17,15 @@ >4 belong >30 compiled Java class data, >>6 beshort x version %d. >>4 beshort x \b%d +# Which is which? +#>>4 belong 0x032d (Java 1.0) +#>>4 belong 0x032d (Java 1.1) +>>4 belong 0x002e (Java 1.2) +>>4 belong 0x002f (Java 1.3) +>>4 belong 0x0030 (Java 1.4) +>>4 belong 0x0031 (Java 1.5) +>>4 belong 0x0032 (Java 1.6) + 0 belong 0xcafebabe >4 belong 1 Mach-O fat file with 1 architecture Modified: projects/ngroups/contrib/file/Magdir/compress ============================================================================== --- projects/ngroups/contrib/file/Magdir/compress Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/compress Thu May 28 22:12:14 2009 (r193002) @@ -195,6 +195,10 @@ # bug #364260) #0 string ]\000\000\200\000 LZMA compressed data +# http://tukaani.org/xz/xz-file-format.txt +0 ustring \xFD7zXZ\x00 xz compressed data +!:mime application/x-xz + # AFX compressed files (Wolfram Kleff) 2 string -afx- AFX compressed file data @@ -208,3 +212,8 @@ >4 byte x - version %d >5 byte x \b.%d >6 belong x (%d bytes) + +# Type: XZ +# URL: http://tukaani.org/xz/ +0 string \xfd\x37\x7a\x58\x5a\x00 XZ compressed data +!:mime application/x-xz Modified: projects/ngroups/contrib/file/Magdir/database ============================================================================== --- projects/ngroups/contrib/file/Magdir/database Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/database Thu May 28 22:12:14 2009 (r193002) @@ -242,3 +242,28 @@ # URL: http://www.grc.nasa.gov/WWW/cgns/adf/ # From: Nicolas Chauvat 0 string @(#)ADF\ Database CGNS Advanced Data Format + +# Tokyo Cabinet magic data +# http://tokyocabinet.sourceforge.net/index.html +0 string ToKyO\ CaBiNeT\n Tokyo Cabinet +>14 string x \b (%s) +>32 byte 0 \b, Hash +!:mime application/x-tokyocabinet-hash +>32 byte 1 \b, B+ tree +!:mime application/x-tokyocabinet-btree +>32 byte 2 \b, Fixed-length +!:mime application/x-tokyocabinet-fixed +>32 byte 3 \b, Table +!:mime application/x-tokyocabinet-table +>33 byte &1 \b, [open] +>33 byte &2 \b, [fatal] +>34 byte x \b, apow=%d +>35 byte x \b, fpow=%d +>36 byte &0x01 \b, [large] +>36 byte &0x02 \b, [deflate] +>36 byte &0x04 \b, [bzip] +>36 byte &0x08 \b, [tcbs] +>36 byte &0x10 \b, [excodec] +>40 lequad x \b, bnum=%lld +>48 lequad x \b, rnum=%lld +>56 lequad x \b, fsiz=%lld Modified: projects/ngroups/contrib/file/Magdir/erlang ============================================================================== --- projects/ngroups/contrib/file/Magdir/erlang Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/erlang Thu May 28 22:12:14 2009 (r193002) @@ -12,7 +12,7 @@ >8 string BEAM Erlang BEAM file # 4.2 version may have a copyright notice! -4 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2 -79 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2 +4 string Tue\ Jan\ 22\ 14:32:44\ MET\ 1991 Erlang JAM file - version 4.2 +79 string Tue\ Jan\ 22\ 14:32:44\ MET\ 1991 Erlang JAM file - version 4.2 -4 string 1.0 Fri Feb 3 09:55:56 MET 1995 Erlang JAM file - version 4.3 +4 string 1.0\ Fri\ Feb\ 3\ 09:55:56\ MET\ 1995 Erlang JAM file - version 4.3 Modified: projects/ngroups/contrib/file/Magdir/filesystems ============================================================================== --- projects/ngroups/contrib/file/Magdir/filesystems Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/filesystems Thu May 28 22:12:14 2009 (r193002) @@ -891,7 +891,7 @@ 0x410 leshort 0x2478 Minix filesystem, version 2, 30 char names # romfs filesystems - Juan Cespedes -0 string -rom1fs-\0 romfs filesystem, version 1 +0 string -rom1fs- romfs filesystem, version 1 >8 belong x %d bytes, >16 string x named %s. Modified: projects/ngroups/contrib/file/Magdir/fonts ============================================================================== --- projects/ngroups/contrib/file/Magdir/fonts Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/fonts Thu May 28 22:12:14 2009 (r193002) @@ -6,8 +6,8 @@ 0 short 017001 byte-swapped Berkeley vfont data # PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com -0 search/1 %!PS-AdobeFont-1. PostScript Type 1 font text ->20 search/1 >\0 (%s) +0 string %!PS-AdobeFont-1. PostScript Type 1 font text +>20 string >\0 (%s) 6 string %!PS-AdobeFont-1. PostScript Type 1 font program data # X11 font files in SNF (Server Natural Format) format @@ -55,6 +55,8 @@ 0 string \007\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font 0 string \012\001\001\000Copyright\ (c)\ 199 Adobe Multiple Master font +0 string ttcf TrueType font collection data + # Opentype font data from Avi Bercovich 0 string OTTO OpenType font data Modified: projects/ngroups/contrib/file/Magdir/fortran ============================================================================== --- projects/ngroups/contrib/file/Magdir/fortran Thu May 28 22:11:10 2009 (r193001) +++ projects/ngroups/contrib/file/Magdir/fortran Thu May 28 22:12:14 2009 (r193002) @@ -1,3 +1,3 @@ # FORTRAN source -0 string/c c\ FORTRAN program +0 regex/100 \^[Cc][\ \t] FORTRAN program !:mime text/x-fortran Copied: projects/ngroups/contrib/file/Magdir/kml (from r193000, head/contrib/file/Magdir/kml) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ngroups/contrib/file/Magdir/kml Thu May 28 22:12:14 2009 (r193002, copy of r193000, head/contrib/file/Magdir/kml) @@ -0,0 +1,32 @@ +#------------------------------------------------------------------------------ +# Type: Google KML, formerly Keyhole Markup Language +# Future development of this format has been handed +# over to the Open Geospatial Consortium. +# http://www.opengeospatial.org/standards/kml/ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu May 28 23:13:53 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A978C106566C; Thu, 28 May 2009 23:13:53 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97B858FC12; Thu, 28 May 2009 23:13:53 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4SNDrf1052929; Thu, 28 May 2009 23:13:53 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4SNDrNe052928; Thu, 28 May 2009 23:13:53 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <200905282313.n4SNDrNe052928@svn.freebsd.org> From: Brooks Davis Date: Thu, 28 May 2009 23:13:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193005 - projects/ngroups/sys/fs/nfsclient X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2009 23:13:54 -0000 Author: brooks Date: Thu May 28 23:13:53 2009 New Revision: 193005 URL: http://svn.freebsd.org/changeset/base/193005 Log: Don't attempt to copy more than XU_NGROUPS gids into the NFS credential structure. Modified: projects/ngroups/sys/fs/nfsclient/nfs_clport.c Modified: projects/ngroups/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- projects/ngroups/sys/fs/nfsclient/nfs_clport.c Thu May 28 23:09:32 2009 (r193004) +++ projects/ngroups/sys/fs/nfsclient/nfs_clport.c Thu May 28 23:13:53 2009 (r193005) @@ -979,7 +979,7 @@ newnfs_copyincred(struct ucred *cr, stru int ngroups, i; nfscr->nfsc_uid = cr->cr_uid; - ngroups = (cr->cr_ngroups > NGROUPS) ? NGROUPS : + ngroups = (cr->cr_ngroups > XU_NGROUPS) ? XU_NGROUPS : cr->cr_ngroups; for (i = 0; i < ngroups; i++) nfscr->nfsc_groups[i] = cr->cr_groups[i]; From owner-svn-src-projects@FreeBSD.ORG Fri May 29 00:14:59 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AE59106566B; Fri, 29 May 2009 00:14:59 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 886458FC0C; Fri, 29 May 2009 00:14:59 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4T0ExBe054312; Fri, 29 May 2009 00:14:59 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4T0ExQl054307; Fri, 29 May 2009 00:14:59 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905290014.n4T0ExQl054307@svn.freebsd.org> From: Rui Paulo Date: Fri, 29 May 2009 00:14:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193009 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 00:14:59 -0000 Author: rpaulo Date: Fri May 29 00:14:59 2009 New Revision: 193009 URL: http://svn.freebsd.org/changeset/base/193009 Log: * add hwmp_send_action() function that will handle all mesh path action frames * add place holders for preq, prep, perr and rann action frames * make ieee80211_send_setup() global * use ieee80211_send_setup() in hwmp_send_action() thereby reducing code size * inline functions that just call hwmp_send_action() * don't use zerobssid. The standard says bssid = addr2 (sa) for non multhop action frames * add IEEE80211_IOC_HWMP_TABLE to fetch/set the HWMP forwarding table (not yet handled) Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_ioctl.h projects/mesh11s/sys/net80211/ieee80211_mesh.h projects/mesh11s/sys/net80211/ieee80211_output.c projects/mesh11s/sys/net80211/ieee80211_proto.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Thu May 28 23:23:49 2009 (r193008) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Fri May 29 00:14:59 2009 (r193009) @@ -78,16 +78,31 @@ struct ieee80211_hwmp_fi { }; TAILQ_HEAD(, ieee80211_hwmp_fi) ieee80211_hwmp_ft; +static int ieee80211_hwmp_send_action(struct ieee80211_node *, + const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], + const uint8_t *, size_t); static void hwmp_recv_preq(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshpreq_ie *); +static int hwmp_send_preq(struct ieee80211_node *, + const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], + const struct ieee80211_meshpreq_ie *); static void hwmp_recv_prep(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshprep_ie *); static int hwmp_send_prep(struct ieee80211_node *, - const uint8_t addr1[IEEE80211_ADDR_LEN], - const uint8_t addr2[IEEE80211_ADDR_LEN], + const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], const struct ieee80211_meshprep_ie *); static void hwmp_recv_perr(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshperr_ie *); +static int hwmp_send_perr(struct ieee80211_node *, + const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], + const struct ieee80211_meshperr_ie *); +static void hwmp_recv_rann(struct ieee80211vap *, struct ieee80211_node *, + const struct ieee80211_meshrann_ie *); +#ifdef notyet +static int hwmp_send_rann(struct ieee80211_node *, + const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], + const struct ieee80211_meshrann_ie *); +#endif static int ieee80211_hwmp_maxhops = 31; #ifdef notyet @@ -142,6 +157,7 @@ ieee80211_hwmp_recv_action(struct ieee80 struct ieee80211_meshpreq_ie *meshpreq = NULL; struct ieee80211_meshprep_ie *meshprep = NULL; struct ieee80211_meshperr_ie *meshperr = NULL; + struct ieee80211_meshrann_ie *meshrann = NULL; wh = mtod(m0, struct ieee80211_frame *); ia = (struct ieee80211_action *) &wh[1]; @@ -178,6 +194,12 @@ ieee80211_hwmp_recv_action(struct ieee80 case IEEE80211_ELEMID_MESHPERR: meshperr = (struct ieee80211_meshperr_ie *) frm; break; + case IEEE80211_ELEMID_MESHRANN: + meshrann = (struct ieee80211_meshrann_ie *) frm; + meshrann->rann_seq = LE_READ_4(&meshrann->rann_seq); + meshrann->rann_metric = + LE_READ_4(&meshrann->rann_metric); + break; } frm += frm[1] + 2; } @@ -213,6 +235,16 @@ ieee80211_hwmp_recv_action(struct ieee80 } hwmp_recv_perr(vap, ni, meshperr); break; + case IEEE80211_ACTION_MESHPATH_RANN: + if (meshrann == NULL) { + IEEE80211_DISCARD(vap, + IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, + wh, NULL, "%s", "RANN without IE"); + vap->iv_stats.is_rx_mgtdiscard++; + return; + } + hwmp_recv_rann(vap, ni, meshrann); + break; default: IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_MESH, ni->ni_macaddr, NULL, @@ -221,6 +253,88 @@ ieee80211_hwmp_recv_action(struct ieee80 } +static int +ieee80211_hwmp_send_action(struct ieee80211_node *ni, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const uint8_t *ie, size_t len) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_bpf_params params; + struct mbuf *m; + uint8_t *frm; + + if (vap->iv_state == IEEE80211_S_CAC) { + IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, + "block %s frame in CAC state", "probe request"); + vap->iv_stats.is_tx_badstate++; + return EIO; /* XXX */ + } + + KASSERT(ni != NULL, ("null node")); + /* + * Hold a reference on the node so it doesn't go away until after + * the xmit is complete all the way in the driver. On error we + * will remove our reference. + */ + IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, + "ieee80211_ref_node (%s:%u) %p<%s> refcnt %d\n", + __func__, __LINE__, + ni, ether_sprintf(ni->ni_macaddr), + ieee80211_node_refcnt(ni)+1); + ieee80211_ref_node(ni); + + m = ieee80211_getmgtframe(&frm, + ic->ic_headroom + sizeof(struct ieee80211_frame), + sizeof(struct ieee80211_action) + len + ); + if (m == NULL) { + ieee80211_free_node(ni); + vap->iv_stats.is_tx_nobuf++; + return ENOMEM; + } + *frm++ = IEEE80211_ACTION_CAT_MESHPATH; + switch (*ie) { + case IEEE80211_ELEMID_MESHPREQ: + *frm++ = IEEE80211_ACTION_MESHPATH_REQ; + break; + case IEEE80211_ELEMID_MESHPREP: + *frm++ = IEEE80211_ACTION_MESHPATH_REP; + frm = ieee80211_add_meshprep(frm, + (struct ieee80211_meshprep_ie *)&ie); + break; + case IEEE80211_ELEMID_MESHPERR: + *frm++ = IEEE80211_ACTION_MESHPATH_ERR; + break; + case IEEE80211_ELEMID_MESHRANN: + *frm++ = IEEE80211_ACTION_MESHPATH_RANN; + break; + } + + m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); + M_PREPEND(m, sizeof(struct ieee80211_frame), M_DONTWAIT); + if (m == NULL) { + ieee80211_free_node(ni); + vap->iv_stats.is_tx_nobuf++; + return ENOMEM; + } + ieee80211_send_setup(ni, m, + IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_ACTION, + IEEE80211_NONQOS_TID, addr1, addr2, addr2); + + m->m_flags |= M_ENCAP; /* mark encapsulated */ + IEEE80211_NODE_STAT(ni, tx_mgmt); + + memset(¶ms, 0, sizeof(params)); + params.ibp_pri = WME_AC_VO; + params.ibp_rate0 = ni->ni_txparms->mgmtrate; + /* XXX: NB: we know all frames are unicast */ + params.ibp_try0 = ni->ni_txparms->maxretry; + params.ibp_power = ni->ni_txpower; + + return ic->ic_raw_xmit(ni, m, ¶ms); +} #define ADDWORD(frm, v) do { \ frm[0] = (v) & 0xff; \ @@ -334,6 +448,25 @@ hwmp_recv_preq(struct ieee80211vap *vap, #undef PREQ_TADDR #undef PREQ_TSEQ +static inline int +hwmp_send_preq(struct ieee80211_node *ni, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const struct ieee80211_meshpreq_ie *preq) +{ + /* + * mesh preq action frame format + * [6] addr1 + * [6] addr2 + * [6] addr3 = addr2 + * [1] action + * [1] category + * [tlv] mesh path request + */ + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&preq, + sizeof(*preq)); +} + static void hwmp_recv_prep(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshprep_ie *prep) @@ -389,104 +522,81 @@ hwmp_recv_prep(struct ieee80211vap *vap, } -static int + +static inline int hwmp_send_prep(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], const uint8_t addr2[IEEE80211_ADDR_LEN], const struct ieee80211_meshprep_ie *prep) { - struct ieee80211vap *vap = ni->ni_vap; - struct ieee80211com *ic = ni->ni_ic; - struct ieee80211_frame *wh; - struct ieee80211_bpf_params params; - struct mbuf *m; - ieee80211_seq seqno; - uint8_t *frm; - - if (vap->iv_state == IEEE80211_S_CAC) { - IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, - "block %s frame in CAC state", "probe request"); - vap->iv_stats.is_tx_badstate++; - return EIO; /* XXX */ - } - - KASSERT(ni != NULL, ("null node")); - /* - * Hold a reference on the node so it doesn't go away until after - * the xmit is complete all the way in the driver. On error we - * will remove our reference. - */ - IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, - "ieee80211_ref_node (%s:%u) %p<%s> refcnt %d\n", - __func__, __LINE__, - ni, ether_sprintf(ni->ni_macaddr), - ieee80211_node_refcnt(ni)+1); - ieee80211_ref_node(ni); - - /* * mesh prep action frame format * [6] addr1 * [6] addr2 - * [6] addr2 + * [6] addr3 = addr2 * [1] action * [1] category * [tlv] mesh path reply */ - m = ieee80211_getmgtframe(&frm, - ic->ic_headroom + sizeof(struct ieee80211_frame), - sizeof(struct ieee80211_action) + - sizeof(struct ieee80211_meshprep_ie) - ); - if (m == NULL) { - ieee80211_free_node(ni); - vap->iv_stats.is_tx_nobuf++; - return ENOMEM; - } - *frm++ = IEEE80211_ACTION_CAT_MESHPATH; - *frm++ = IEEE80211_ACTION_MESHPATH_REP; - frm = ieee80211_add_meshprep(frm, prep); - m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); - M_PREPEND(m, sizeof(struct ieee80211_frame), M_DONTWAIT); - if (m == NULL) { - ieee80211_free_node(ni); - vap->iv_stats.is_tx_nobuf++; - return ENOMEM; - } - wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | - IEEE80211_FC0_SUBTYPE_ACTION; - wh->i_fc[1] = IEEE80211_FC1_DIR_DSTODS; - IEEE80211_ADDR_COPY(wh->i_addr1, addr1); - IEEE80211_ADDR_COPY(wh->i_addr2, addr2); - IEEE80211_ADDR_COPY(wh->i_addr3, addr2); - *(uint16_t *)&wh->i_dur[0] = 0; - seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++; - *(uint16_t *)&wh->i_seq[0] = htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT); - M_SEQNO_SET(m, seqno); - if (IEEE80211_IS_MULTICAST(wh->i_addr1)) - m->m_flags |= M_MCAST; + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&prep, + sizeof(*prep)); +} - m->m_flags |= M_ENCAP; /* mark encapsulated */ - IEEE80211_NODE_STAT(ni, tx_mgmt); +static void +hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, + const struct ieee80211_meshperr_ie *perr) +{ - memset(¶ms, 0, sizeof(params)); - params.ibp_pri = WME_AC_VO; - params.ibp_rate0 = ni->ni_txparms->mgmtrate; - /* XXX: NB: we know all frames are unicast */ - params.ibp_try0 = ni->ni_txparms->maxretry; - params.ibp_power = ni->ni_txpower; +} - return ic->ic_raw_xmit(ni, m, ¶ms); + +static inline int +hwmp_send_perr(struct ieee80211_node *ni, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const struct ieee80211_meshperr_ie *perr) +{ + /* + * mesh perr action frame format + * [6] addr1 + * [6] addr2 + * [6] addr3 = addr2 + * [1] action + * [1] category + * [tlv] mesh path error + */ + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&perr, + sizeof(*perr)); } static void -hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, - const struct ieee80211_meshperr_ie *perr) +hwmp_recv_rann(struct ieee80211vap *vap, struct ieee80211_node *ni, + const struct ieee80211_meshrann_ie *rann) { } +#ifdef notyet +static int +hwmp_send_rann(struct ieee80211_node *ni, + const uint8_t addr1[IEEE80211_ADDR_LEN], + const uint8_t addr2[IEEE80211_ADDR_LEN], + const struct ieee80211_meshrann_ie *rann) +{ + /* + * mesh rann action frame format + * [6] addr1 + * [6] addr2 + * [6] addr3 = addr2 + * [1] action + * [1] category + * [tlv] root annoucement + */ + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&rann, + sizeof(*rann)); +} +#endif + static int hwmp_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq) { @@ -494,11 +604,9 @@ hwmp_ioctl_get80211(struct ieee80211vap error = 0; switch (ireq->i_type) { -#ifdef notyet - case IEEE80211_IOC_HWMPFI: + case IEEE80211_IOC_HWMP_TABLE: if (vap->iv_opmode != IEEE80211_M_MBSS) return EINVAL; -#endif default: return ENOSYS; } @@ -514,9 +622,9 @@ hwmp_ioctl_set80211(struct ieee80211vap error = 0; switch (ireq->i_type) { -#ifdef notyet - case IEEE80211_IOC_HWMPFI: -#endif + case IEEE80211_IOC_HWMP_TABLE: + if (vap->iv_opmode != IEEE80211_M_MBSS) + return EINVAL; default: return ENOSYS; } Modified: projects/mesh11s/sys/net80211/ieee80211_ioctl.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_ioctl.h Thu May 28 23:23:49 2009 (r193008) +++ projects/mesh11s/sys/net80211/ieee80211_ioctl.h Fri May 29 00:14:59 2009 (r193009) @@ -634,6 +634,7 @@ struct ieee80211req { #define IEEE80211_IOC_RIFS 111 /* RIFS config (on, off) */ #define IEEE80211_IOC_MESH_ID 190 /* Mesh identifier */ +#define IEEE80211_IOC_HWMP_TABLE 195 /* HWMP Forwarding Table */ #define IEEE80211_IOC_TDMA_SLOT 201 /* TDMA: assigned slot */ #define IEEE80211_IOC_TDMA_SLOTCNT 202 /* TDMA: slots in bss */ Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.h Thu May 28 23:23:49 2009 (r193008) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Fri May 29 00:14:59 2009 (r193009) @@ -217,6 +217,7 @@ struct ieee80211_meshrann_ie { uint8_t rann_ie; /* IEEE80211_ELEMID_MESHRANN */ uint8_t rann_len; uint8_t rann_flags; +#define IEEE80211_MESHRANN_FLAGS_PR 0x01 /* Portal Role */ uint8_t rann_hopcount; uint8_t rann_ttl; uint8_t rann_addr[IEEE80211_ADDR_LEN]; @@ -324,7 +325,8 @@ enum { IEEE80211_ACTION_MESHPATH_REQ = 0, IEEE80211_ACTION_MESHPATH_REP = 1, IEEE80211_ACTION_MESHPATH_ERR = 2, - /* 3-255 reserved */ + IEEE80211_ACTION_MESHPATH_RANN = 3, + /* 4-255 reserved */ }; /* Modified: projects/mesh11s/sys/net80211/ieee80211_output.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_output.c Thu May 28 23:23:49 2009 (r193008) +++ projects/mesh11s/sys/net80211/ieee80211_output.c Fri May 29 00:14:59 2009 (r193009) @@ -457,7 +457,7 @@ bad: * frame. Note this should be called early on in constructing * a frame as it sets i_fc[1]; other bits can then be or'd in. */ -static void +void ieee80211_send_setup( struct ieee80211_node *ni, struct mbuf *m, @@ -467,7 +467,6 @@ ieee80211_send_setup( const uint8_t bssid[IEEE80211_ADDR_LEN]) { #define WH4(wh) ((struct ieee80211_frame_addr4 *)wh) - static const uint8_t zerobssid[IEEE80211_ADDR_LEN]; struct ieee80211vap *vap = ni->ni_vap; struct ieee80211_frame *wh = mtod(m, struct ieee80211_frame *); ieee80211_seq seqno; @@ -510,7 +509,7 @@ ieee80211_send_setup( IEEE80211_ADDR_COPY(wh->i_addr1, da); IEEE80211_ADDR_COPY(wh->i_addr2, sa); if (vap->iv_opmode == IEEE80211_M_MBSS) - IEEE80211_ADDR_COPY(wh->i_addr3, zerobssid); + IEEE80211_ADDR_COPY(wh->i_addr3, sa); else IEEE80211_ADDR_COPY(wh->i_addr3, bssid); } Modified: projects/mesh11s/sys/net80211/ieee80211_proto.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_proto.h Thu May 28 23:23:49 2009 (r193008) +++ projects/mesh11s/sys/net80211/ieee80211_proto.h Fri May 29 00:14:59 2009 (r193009) @@ -76,6 +76,9 @@ int ieee80211_raw_xmit(struct ieee80211_ const struct ieee80211_bpf_params *); int ieee80211_output(struct ifnet *, struct mbuf *, struct sockaddr *, struct route *ro); +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_send_nulldata(struct ieee80211_node *); int ieee80211_classify(struct ieee80211_node *, struct mbuf *m); From owner-svn-src-projects@FreeBSD.ORG Fri May 29 07:40:58 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B83210656A9; Fri, 29 May 2009 07:40:58 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 7669B8FC26; Fri, 29 May 2009 07:40:58 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id 2D37046B2C; Fri, 29 May 2009 03:40:58 -0400 (EDT) Date: Fri, 29 May 2009 08:40:58 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Brooks Davis In-Reply-To: <200905282141.n4SLf1mo050648@svn.freebsd.org> Message-ID: References: <200905282141.n4SLf1mo050648@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r192998 - in projects/ngroups: lib/libkvm sys/compat/linux sys/i386/ibcs2 sys/kern sys/nfsserver sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 07:40:59 -0000 On Thu, 28 May 2009, Brooks Davis wrote: > * Replace the embedded cr_groups[NGROUPS] member of struct cred with > a pointer to malloc'd storage and a cr_agroups value which tracks > the number of allocated group slots. When more space is required > crextend() is used to add more space. The new crcopysafe() function > calls crextend as needed when saving a copy of a credential from a > process before modification. I'm glad to see this work finally happening. Last time I looked at doing this (and bounced eventually), I took a slightly different approach here: I moved away from slab-allocating struct ucred, and instead malloc'd it as a variable-length structure based on the number of additional gid's needed. I set the minimize size to the current NGROUPS so that we'd use larger constainer structs only if required. This reduces the number of interactions with the memory allocator, which has some benefits, although it makes extending struct ucred a more risk-prone thing from a binary compatibility perspective in the kernel. It also reduces the number of indirections to non-local memory and potentially the cache footprint. This is not a change request, just an observation an alternative memory strategy. And with its downsides as well, of course. Robert N M Watson Computer Laboratory University of Cambridge From owner-svn-src-projects@FreeBSD.ORG Fri May 29 11:02:08 2009 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE0AA106564A; Fri, 29 May 2009 11:02:08 +0000 (UTC) (envelope-from bde@zeta.org.au) Received: from mail03.syd.optusnet.com.au (mail03.syd.optusnet.com.au [211.29.132.184]) by mx1.freebsd.org (Postfix) with ESMTP id 67B8A8FC08; Fri, 29 May 2009 11:02:08 +0000 (UTC) (envelope-from bde@zeta.org.au) Received: from besplex.bde.org (c122-106-151-9.carlnfd1.nsw.optusnet.com.au [122.106.151.9]) by mail03.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id n4TB24m1031391 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 29 May 2009 21:02:06 +1000 Date: Fri, 29 May 2009 21:02:04 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Brooks Davis In-Reply-To: <20090528182236.GC44818@lor.one-eyed-alien.net> Message-ID: <20090529200133.C1382@besplex.bde.org> References: <200905140650.n4E6oURU079910@svn.freebsd.org> <20090515122400.B15792@delplex.bde.org> <20090528182236.GC44818@lor.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org, Bruce Evans Subject: Re: svn commit: r192087 - in projects/ngroups: lib/libc/gen lib/libc/rpc lib/libc/sys usr.bin/id usr.bin/newgrp usr.bin/quota usr.sbin/chown usr.sbin/chroot usr.sbin/jail usr.sbin/jexec usr.sbin/lpr/lpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 11:02:09 -0000 On Thu, 28 May 2009, Brooks Davis wrote: > On Fri, May 15, 2009 at 01:32:52PM +1000, Bruce Evans wrote: >> On Thu, 14 May 2009, Brooks Davis wrote: >> >>> Log: >>> Use to value returned by sysconf(_SC_NGROUPS_MAX) in favor of >>> NGROUPS_MAX or NGROUPS since POSIX says that NGROUPS_MAX represents a >>> lower bound on sysconf(_SC_NGROUPS_MAX). >> >> Actually, POSIX says that NGROUPS_MAX is identical to >> sysconf(_SC_NGROUPS_MAX) if it is defined (and the sysconf() succeeds). >> It is _POSIX_NGROUPS_MAX that gives the lower bound. _POSIX_NGROUPS_MAX >> is always 8, except under old versions of POSIX that don't require >> supplementary groups to be supported, where it is always 0. It is a >> bug for a POSIX implementation to define NGROUPS_MAX if its value is >> not always identical to sysconf(_SC_NGROUPS_MAX), or for a POSIX >> application to use NGROUPS_MAX unconditionally. > > According to the limits.h section of POSIX.1-2008, NGROUPS_MAX is a > Runtime Increasable Value and thus NGROUPS_MAX specifies the minimum > value that implementation may use. Gak, so it is. This makes the compile-time constant value NGROUPS_MAX (or any Runtime Increasable Value) almost useless in applications, since it is always defined but only gives the minimum value (for a "specific" implementation, whatever that is). NGROUPS_MAX can be used to allocate storage for functions like getgroups(2), but then the function will fail if the minimum value is smaller than the maximum and the calling process actually belongs to more than the minimum number of groups. Recovering from such failures would be harder (e.g., by trying again after doubling the allocation size) would be harder than avoiding the failure (by allocating enough storage using sysconf() to determine the amount needed). OTOH, the most efficient way might be to always allocate a large amount of storage initially (say PAGE_SIZE) and never look at {NGROUPS_MAX}. In POSIX.1-1990, {NGROUPS_MAX} is the _only_ Runtime Increasable Value. In POSIX.1-2001, there are lots more, but they are mainly for userland limits like {LINE_MAX} whose existence is a much larger bug than that of {NGROUPS_MAX}. > Given the constraint that the value > returned by sysconf(_SC_NGROUPS_MAX) not change during the life of a > process, there is probably a practical limitation that the underlying > limit be controllable at compile time or by a tunable, but not by sysctl. No one worries about sysctl()s and setrlimit()s breaking this constraint for other limits, but POSIX recently) added words to specify exactly how setting RLIMIT_NOFILE breaks^Waffects {OPEN_MAX}. > I'll look over and incorporate your other comments shortly. They were mainly about localizing the allocating of group lists. It would be harder to localize the more general allocation algorithms described above -- doubling the allocation size after it is found to be too small seems to need at least a separate loop for each function that detects the failure. I actually thought of such interfaces when I wrote the old mail -- use interfaces that allocate the storage internally, like asprintf(). getgrouplist() would be suitable for this treatment, and wouldn't even need to be renamed (it would allocate the storage iff its groups parameter is NULL). Syscalls couldn't do this, but getgroups(2) could become agetgroups(3). Bruce From owner-svn-src-projects@FreeBSD.ORG Fri May 29 12:50:37 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44C801065670; Fri, 29 May 2009 12:50:37 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2E69D8FC12; Fri, 29 May 2009 12:50:37 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TCobLY075016; Fri, 29 May 2009 12:50:37 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TCoaYO074995; Fri, 29 May 2009 12:50:36 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905291250.n4TCoaYO074995@svn.freebsd.org> From: Robert Watson Date: Fri, 29 May 2009 12:50:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193031 - in projects/pnet/sys: . arm/at91 arm/conf arm/xscale/ixp425 boot/common boot/pc98/boot2 cddl/compat/opensolaris/kern cddl/compat/opensolaris/sys cddl/contrib/opensolaris/commo... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 12:50:37 -0000 Author: rwatson Date: Fri May 29 12:50:35 2009 New Revision: 193031 URL: http://svn.freebsd.org/changeset/base/193031 Log: Merge r192636-r193030 from head to projects/pnet. Added: projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c - copied unchanged from r193030, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c projects/pnet/sys/cddl/compat/opensolaris/sys/acl.h - copied unchanged from r193030, head/sys/cddl/compat/opensolaris/sys/acl.h projects/pnet/sys/cddl/dev/lockstat/ - copied from r193030, head/sys/cddl/dev/lockstat/ projects/pnet/sys/dev/ksyms/ - copied from r193030, head/sys/dev/ksyms/ projects/pnet/sys/dev/usb/wlan/if_urtw.c - copied unchanged from r193030, head/sys/dev/usb/wlan/if_urtw.c projects/pnet/sys/dev/usb/wlan/if_urtwreg.h - copied unchanged from r193030, head/sys/dev/usb/wlan/if_urtwreg.h projects/pnet/sys/dev/usb/wlan/if_urtwvar.h - copied unchanged from r193030, head/sys/dev/usb/wlan/if_urtwvar.h projects/pnet/sys/i386/xen/xen_rtc.c - copied unchanged from r193030, head/sys/i386/xen/xen_rtc.c projects/pnet/sys/kern/kern_fail.c - copied unchanged from r193030, head/sys/kern/kern_fail.c projects/pnet/sys/kern/kern_lockstat.c - copied unchanged from r193030, head/sys/kern/kern_lockstat.c projects/pnet/sys/modules/ksyms/ - copied from r193030, head/sys/modules/ksyms/ projects/pnet/sys/modules/nfscl/ - copied from r193030, head/sys/modules/nfscl/ projects/pnet/sys/modules/nfscommon/ - copied from r193030, head/sys/modules/nfscommon/ projects/pnet/sys/modules/nfsd/ - copied from r193030, head/sys/modules/nfsd/ projects/pnet/sys/modules/usb/urtw/ - copied from r193030, head/sys/modules/usb/urtw/ projects/pnet/sys/netipx/spx_reass.c - copied unchanged from r193030, head/sys/netipx/spx_reass.c projects/pnet/sys/sys/fail.h - copied unchanged from r193030, head/sys/sys/fail.h projects/pnet/sys/sys/ksyms.h - copied unchanged from r193030, head/sys/sys/ksyms.h projects/pnet/sys/sys/lockstat.h - copied unchanged from r193030, head/sys/sys/lockstat.h Replaced: projects/pnet/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c - copied unchanged from r193030, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/pnet/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h - copied unchanged from r193030, head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h projects/pnet/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c - copied unchanged from r193030, head/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c Deleted: projects/pnet/sys/arm/at91/ohci_atmelarm.c projects/pnet/sys/dev/usb/bluetooth/ projects/pnet/sys/legacy/ projects/pnet/sys/netgraph/bluetooth/drivers/ubt/TODO Modified: projects/pnet/sys/ (props changed) projects/pnet/sys/arm/conf/AVILA projects/pnet/sys/arm/xscale/ixp425/files.ixp425 projects/pnet/sys/arm/xscale/ixp425/if_npe.c projects/pnet/sys/boot/common/ufsread.c projects/pnet/sys/boot/pc98/boot2/sys.c projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/pnet/sys/cddl/compat/opensolaris/sys/mutex.h projects/pnet/sys/cddl/compat/opensolaris/sys/rwlock.h projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.c projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.h projects/pnet/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/pnet/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h projects/pnet/sys/compat/freebsd32/freebsd32_misc.c projects/pnet/sys/compat/linux/linux_ioctl.c projects/pnet/sys/compat/linux/linux_mib.c projects/pnet/sys/compat/ndis/kern_ndis.c projects/pnet/sys/compat/ndis/subr_usbd.c projects/pnet/sys/compat/svr4/svr4_fcntl.c projects/pnet/sys/compat/svr4/svr4_ioctl.c projects/pnet/sys/compat/svr4/svr4_misc.c projects/pnet/sys/compat/svr4/svr4_resource.c projects/pnet/sys/compat/svr4/svr4_signal.c projects/pnet/sys/compat/svr4/svr4_socket.c projects/pnet/sys/compat/svr4/svr4_stat.c projects/pnet/sys/compat/svr4/svr4_stream.c projects/pnet/sys/compat/svr4/svr4_sysconfig.h projects/pnet/sys/conf/NOTES projects/pnet/sys/conf/files projects/pnet/sys/conf/files.i386 projects/pnet/sys/conf/kern.pre.mk projects/pnet/sys/conf/options projects/pnet/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/pnet/sys/contrib/ipfilter/netinet/ip_nat.c projects/pnet/sys/crypto/via/padlock_hash.c projects/pnet/sys/dev/ata/ata-usb.c projects/pnet/sys/dev/bktr/bktr_os.c projects/pnet/sys/dev/cfe/cfe_console.c projects/pnet/sys/dev/cxgb/cxgb_main.c projects/pnet/sys/dev/dcons/dcons_os.c projects/pnet/sys/dev/if_ndis/if_ndis_usb.c projects/pnet/sys/dev/if_ndis/if_ndisvar.h projects/pnet/sys/dev/mii/e1000phy.c projects/pnet/sys/dev/mii/e1000phyreg.h projects/pnet/sys/dev/mii/miidevs projects/pnet/sys/dev/msk/if_msk.c projects/pnet/sys/dev/msk/if_mskreg.h projects/pnet/sys/dev/nfe/if_nfe.c projects/pnet/sys/dev/nmdm/nmdm.c projects/pnet/sys/dev/ofw/ofw_console.c projects/pnet/sys/dev/random/nehemiah.c projects/pnet/sys/dev/random/randomdev_soft.c projects/pnet/sys/dev/rp/rp.c projects/pnet/sys/dev/si/si.c projects/pnet/sys/dev/sound/pci/cmi.c projects/pnet/sys/dev/sound/pci/cs4281.c projects/pnet/sys/dev/sound/pci/vibes.c projects/pnet/sys/dev/sound/pcm/sound.c projects/pnet/sys/dev/sound/pcm/sound.h projects/pnet/sys/dev/sound/usb/uaudio.c projects/pnet/sys/dev/sound/usb/uaudioreg.h projects/pnet/sys/dev/syscons/syscons.c projects/pnet/sys/dev/syscons/sysmouse.c projects/pnet/sys/dev/uart/uart_tty.c projects/pnet/sys/dev/usb/controller/at91dci.c projects/pnet/sys/dev/usb/controller/at91dci.h projects/pnet/sys/dev/usb/controller/atmegadci.c projects/pnet/sys/dev/usb/controller/atmegadci.h projects/pnet/sys/dev/usb/controller/atmegadci_atmelarm.c projects/pnet/sys/dev/usb/controller/avr32dci.c projects/pnet/sys/dev/usb/controller/avr32dci.h projects/pnet/sys/dev/usb/controller/ehci.c projects/pnet/sys/dev/usb/controller/ehci.h projects/pnet/sys/dev/usb/controller/musb_otg.c projects/pnet/sys/dev/usb/controller/musb_otg.h projects/pnet/sys/dev/usb/controller/ohci.c projects/pnet/sys/dev/usb/controller/ohci.h projects/pnet/sys/dev/usb/controller/uhci.c projects/pnet/sys/dev/usb/controller/uhci.h projects/pnet/sys/dev/usb/controller/usb_controller.c projects/pnet/sys/dev/usb/controller/uss820dci.c projects/pnet/sys/dev/usb/controller/uss820dci.h projects/pnet/sys/dev/usb/input/uhid.c projects/pnet/sys/dev/usb/input/ukbd.c projects/pnet/sys/dev/usb/input/ums.c projects/pnet/sys/dev/usb/misc/udbp.c projects/pnet/sys/dev/usb/misc/ufm.c projects/pnet/sys/dev/usb/net/if_aue.c projects/pnet/sys/dev/usb/net/if_auereg.h projects/pnet/sys/dev/usb/net/if_axe.c projects/pnet/sys/dev/usb/net/if_axereg.h projects/pnet/sys/dev/usb/net/if_cdce.c projects/pnet/sys/dev/usb/net/if_cdcereg.h projects/pnet/sys/dev/usb/net/if_cue.c projects/pnet/sys/dev/usb/net/if_cuereg.h projects/pnet/sys/dev/usb/net/if_kue.c projects/pnet/sys/dev/usb/net/if_kuereg.h projects/pnet/sys/dev/usb/net/if_rue.c projects/pnet/sys/dev/usb/net/if_ruereg.h projects/pnet/sys/dev/usb/net/if_udav.c projects/pnet/sys/dev/usb/net/if_udavreg.h projects/pnet/sys/dev/usb/net/usb_ethernet.c projects/pnet/sys/dev/usb/net/usb_ethernet.h projects/pnet/sys/dev/usb/quirk/usb_quirk.c projects/pnet/sys/dev/usb/serial/u3g.c projects/pnet/sys/dev/usb/serial/uark.c projects/pnet/sys/dev/usb/serial/ubsa.c projects/pnet/sys/dev/usb/serial/ubser.c projects/pnet/sys/dev/usb/serial/uchcom.c projects/pnet/sys/dev/usb/serial/ucycom.c projects/pnet/sys/dev/usb/serial/ufoma.c projects/pnet/sys/dev/usb/serial/uftdi.c projects/pnet/sys/dev/usb/serial/ugensa.c projects/pnet/sys/dev/usb/serial/uipaq.c projects/pnet/sys/dev/usb/serial/ulpt.c projects/pnet/sys/dev/usb/serial/umct.c projects/pnet/sys/dev/usb/serial/umodem.c projects/pnet/sys/dev/usb/serial/umoscom.c projects/pnet/sys/dev/usb/serial/uplcom.c projects/pnet/sys/dev/usb/serial/usb_serial.c projects/pnet/sys/dev/usb/serial/usb_serial.h projects/pnet/sys/dev/usb/serial/uslcom.c projects/pnet/sys/dev/usb/serial/uvisor.c projects/pnet/sys/dev/usb/serial/uvscom.c projects/pnet/sys/dev/usb/storage/umass.c projects/pnet/sys/dev/usb/storage/urio.c projects/pnet/sys/dev/usb/storage/ustorage_fs.c projects/pnet/sys/dev/usb/template/usb_template.c projects/pnet/sys/dev/usb/template/usb_template.h projects/pnet/sys/dev/usb/template/usb_template_cdce.c projects/pnet/sys/dev/usb/template/usb_template_msc.c projects/pnet/sys/dev/usb/template/usb_template_mtp.c projects/pnet/sys/dev/usb/usb.h projects/pnet/sys/dev/usb/usb_bus.h projects/pnet/sys/dev/usb/usb_busdma.c projects/pnet/sys/dev/usb/usb_busdma.h projects/pnet/sys/dev/usb/usb_cdc.h projects/pnet/sys/dev/usb/usb_compat_linux.c projects/pnet/sys/dev/usb/usb_compat_linux.h projects/pnet/sys/dev/usb/usb_controller.h projects/pnet/sys/dev/usb/usb_core.h projects/pnet/sys/dev/usb/usb_debug.c projects/pnet/sys/dev/usb/usb_debug.h projects/pnet/sys/dev/usb/usb_dev.c projects/pnet/sys/dev/usb/usb_dev.h projects/pnet/sys/dev/usb/usb_device.c projects/pnet/sys/dev/usb/usb_device.h projects/pnet/sys/dev/usb/usb_dynamic.c projects/pnet/sys/dev/usb/usb_dynamic.h projects/pnet/sys/dev/usb/usb_generic.c projects/pnet/sys/dev/usb/usb_generic.h projects/pnet/sys/dev/usb/usb_handle_request.c projects/pnet/sys/dev/usb/usb_hid.c projects/pnet/sys/dev/usb/usb_hid.h projects/pnet/sys/dev/usb/usb_hub.c projects/pnet/sys/dev/usb/usb_hub.h projects/pnet/sys/dev/usb/usb_ioctl.h projects/pnet/sys/dev/usb/usb_lookup.c projects/pnet/sys/dev/usb/usb_lookup.h projects/pnet/sys/dev/usb/usb_mbuf.c projects/pnet/sys/dev/usb/usb_mbuf.h projects/pnet/sys/dev/usb/usb_msctest.c projects/pnet/sys/dev/usb/usb_msctest.h projects/pnet/sys/dev/usb/usb_parse.c projects/pnet/sys/dev/usb/usb_parse.h projects/pnet/sys/dev/usb/usb_process.c projects/pnet/sys/dev/usb/usb_process.h projects/pnet/sys/dev/usb/usb_request.c projects/pnet/sys/dev/usb/usb_request.h projects/pnet/sys/dev/usb/usb_transfer.c projects/pnet/sys/dev/usb/usb_transfer.h projects/pnet/sys/dev/usb/usb_util.c projects/pnet/sys/dev/usb/usbdevs projects/pnet/sys/dev/usb/usbhid.h projects/pnet/sys/dev/usb/wlan/if_rum.c projects/pnet/sys/dev/usb/wlan/if_rumvar.h projects/pnet/sys/dev/usb/wlan/if_uath.c projects/pnet/sys/dev/usb/wlan/if_uathvar.h projects/pnet/sys/dev/usb/wlan/if_upgt.c projects/pnet/sys/dev/usb/wlan/if_upgtvar.h projects/pnet/sys/dev/usb/wlan/if_ural.c projects/pnet/sys/dev/usb/wlan/if_uralvar.h projects/pnet/sys/dev/usb/wlan/if_zyd.c projects/pnet/sys/dev/usb/wlan/if_zydreg.h projects/pnet/sys/dev/xen/console/console.c projects/pnet/sys/dev/xen/netfront/ (props changed) projects/pnet/sys/dev/xen/netfront/netfront.c projects/pnet/sys/dev/xen/xenpci/ (props changed) projects/pnet/sys/fs/nfs/nfs_commonacl.c projects/pnet/sys/fs/nfs/nfs_commonkrpc.c projects/pnet/sys/fs/nfs/nfs_commonport.c projects/pnet/sys/fs/nfs/nfs_commonsubs.c projects/pnet/sys/fs/nfs/nfsport.h projects/pnet/sys/fs/nfsclient/nfs_clbio.c projects/pnet/sys/fs/nfsclient/nfs_clnode.c projects/pnet/sys/fs/nfsclient/nfs_clvfsops.c projects/pnet/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/pnet/sys/fs/nfsserver/nfs_nfsdport.c projects/pnet/sys/fs/nfsserver/nfs_nfsdserv.c projects/pnet/sys/fs/nfsserver/nfs_nfsdsocket.c projects/pnet/sys/fs/nwfs/nwfs_io.c projects/pnet/sys/fs/procfs/procfs_status.c projects/pnet/sys/fs/pseudofs/pseudofs_vnops.c projects/pnet/sys/fs/smbfs/smbfs_io.c projects/pnet/sys/fs/tmpfs/tmpfs_vnops.c projects/pnet/sys/geom/geom_subr.c projects/pnet/sys/ia64/ia64/mp_machdep.c projects/pnet/sys/ia64/ia64/ssc.c projects/pnet/sys/kern/init_main.c projects/pnet/sys/kern/kern_cpuset.c projects/pnet/sys/kern/kern_descrip.c projects/pnet/sys/kern/kern_exit.c projects/pnet/sys/kern/kern_fork.c projects/pnet/sys/kern/kern_jail.c projects/pnet/sys/kern/kern_linker.c projects/pnet/sys/kern/kern_lock.c projects/pnet/sys/kern/kern_lockf.c projects/pnet/sys/kern/kern_mib.c projects/pnet/sys/kern/kern_mutex.c projects/pnet/sys/kern/kern_osd.c projects/pnet/sys/kern/kern_proc.c projects/pnet/sys/kern/kern_prot.c projects/pnet/sys/kern/kern_rmlock.c projects/pnet/sys/kern/kern_rwlock.c projects/pnet/sys/kern/kern_sx.c projects/pnet/sys/kern/kern_vimage.c projects/pnet/sys/kern/link_elf.c projects/pnet/sys/kern/link_elf_obj.c projects/pnet/sys/kern/linker_if.m projects/pnet/sys/kern/sysv_msg.c projects/pnet/sys/kern/sysv_sem.c projects/pnet/sys/kern/sysv_shm.c projects/pnet/sys/kern/tty.c projects/pnet/sys/kern/tty_pts.c projects/pnet/sys/kern/uipc_debug.c projects/pnet/sys/kern/vfs_bio.c projects/pnet/sys/kern/vfs_lookup.c projects/pnet/sys/kern/vfs_mount.c projects/pnet/sys/kern/vfs_subr.c projects/pnet/sys/kern/vfs_syscalls.c projects/pnet/sys/kgssapi/gsstest.c projects/pnet/sys/mips/mips/pmap.c projects/pnet/sys/modules/Makefile projects/pnet/sys/modules/dtrace/Makefile projects/pnet/sys/modules/dtrace/dtnfsclient/ (props changed) projects/pnet/sys/modules/dtrace/dtraceall/dtraceall.c projects/pnet/sys/modules/ip6_mroute_mod/ (props changed) projects/pnet/sys/modules/ipmi/ipmi_linux/ (props changed) projects/pnet/sys/modules/linux/Makefile projects/pnet/sys/modules/netgraph/bluetooth/ubt/Makefile projects/pnet/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile projects/pnet/sys/modules/usb/Makefile projects/pnet/sys/modules/zfs/Makefile projects/pnet/sys/net/bpf.c projects/pnet/sys/net/if_clone.c projects/pnet/sys/net/if_loop.c projects/pnet/sys/net/netisr2.c projects/pnet/sys/net/pfil.h projects/pnet/sys/net/rtsock.c projects/pnet/sys/net/vnet.h projects/pnet/sys/net80211/ieee80211_adhoc.c projects/pnet/sys/net80211/ieee80211_freebsd.c projects/pnet/sys/net80211/ieee80211_hostap.c projects/pnet/sys/net80211/ieee80211_monitor.c projects/pnet/sys/net80211/ieee80211_radiotap.c projects/pnet/sys/net80211/ieee80211_sta.c projects/pnet/sys/net80211/ieee80211_wds.c projects/pnet/sys/netinet/accf_dns.c projects/pnet/sys/netinet/in_pcb.c projects/pnet/sys/netinet/ip_input.c projects/pnet/sys/netinet/ip_ipsec.c projects/pnet/sys/netinet/tcp_input.c projects/pnet/sys/netinet/tcp_reass.c projects/pnet/sys/netinet/tcp_subr.c projects/pnet/sys/netinet/udp_usrreq.c projects/pnet/sys/netinet/udp_var.h projects/pnet/sys/netinet/vinet.h projects/pnet/sys/netinet6/icmp6.c projects/pnet/sys/netinet6/in6.c projects/pnet/sys/netinet6/in6.h projects/pnet/sys/netinet6/in6_ifattach.c projects/pnet/sys/netinet6/in6_mcast.c projects/pnet/sys/netinet6/in6_pcb.c projects/pnet/sys/netinet6/ip6_input.c projects/pnet/sys/netinet6/ip6_ipsec.c projects/pnet/sys/netinet6/mld6.c projects/pnet/sys/netinet6/udp6_usrreq.c projects/pnet/sys/netipsec/ipsec.c projects/pnet/sys/netipsec/ipsec.h projects/pnet/sys/netipsec/ipsec6.h projects/pnet/sys/netipsec/key.c projects/pnet/sys/netipsec/vipsec.h projects/pnet/sys/netipx/spx.h projects/pnet/sys/netipx/spx_usrreq.c projects/pnet/sys/netipx/spx_var.h projects/pnet/sys/nfsclient/bootp_subr.c projects/pnet/sys/nfsclient/nfs_bio.c projects/pnet/sys/nfsclient/nfs_krpc.c projects/pnet/sys/nfsserver/nfs_srvkrpc.c projects/pnet/sys/nfsserver/nfs_srvsock.c projects/pnet/sys/opencrypto/cryptodev.c projects/pnet/sys/powerpc/booke/pmap.c projects/pnet/sys/rpc/xdr.h projects/pnet/sys/security/mac/mac_framework.c projects/pnet/sys/security/mac/mac_internal.h projects/pnet/sys/security/mac_bsdextended/mac_bsdextended.c projects/pnet/sys/sun4v/sun4v/hvcons.c projects/pnet/sys/sys/acl.h projects/pnet/sys/sys/cpuset.h projects/pnet/sys/sys/eventhandler.h projects/pnet/sys/sys/jail.h projects/pnet/sys/sys/lock.h projects/pnet/sys/sys/lockf.h projects/pnet/sys/sys/mutex.h projects/pnet/sys/sys/namei.h projects/pnet/sys/sys/param.h projects/pnet/sys/sys/queue.h projects/pnet/sys/sys/rmlock.h projects/pnet/sys/sys/rwlock.h projects/pnet/sys/sys/sx.h projects/pnet/sys/sys/syscallsubr.h projects/pnet/sys/sys/systm.h projects/pnet/sys/sys/tty.h projects/pnet/sys/sys/vimage.h projects/pnet/sys/ufs/ufs/ufs_vnops.c projects/pnet/sys/vm/vm_object.c projects/pnet/sys/vm/vm_pageout.c projects/pnet/sys/xdr/xdr_mem.c projects/pnet/sys/xen/xenbus/init.txt (props changed) projects/pnet/sys/xen/xenbus/xenbus_xs.c Modified: projects/pnet/sys/arm/conf/AVILA ============================================================================== --- projects/pnet/sys/arm/conf/AVILA Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/arm/conf/AVILA Fri May 29 12:50:35 2009 (r193031) @@ -132,15 +132,14 @@ device ath_ar5416 options AH_SUPPORT_AR5416 device ath_ar9160 -makeoptions WITH_LEGACY -device ousb +device usb #options USB_DEBUG -device oohci -device oehci -device oumass +device ohci +device ehci +device umass device scbus # SCSI bus (required for SCSI) device da # Direct Access (disks) -#device oural -#device ozyd +#device ural +#device zyd #device wlan_amrr Modified: projects/pnet/sys/arm/xscale/ixp425/files.ixp425 ============================================================================== --- projects/pnet/sys/arm/xscale/ixp425/files.ixp425 Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/arm/xscale/ixp425/files.ixp425 Fri May 29 12:50:35 2009 (r193031) @@ -47,4 +47,3 @@ IxNpeMicrocode.dat optional npe_fw \ arm/xscale/ixp425/ixp425_qmgr.c optional qmgr # dev/usb/controller/ehci_ixp4xx.c optional ehci usb -legacy/dev/usb/ehci_ixp4xx.c optional oehci ousb Modified: projects/pnet/sys/arm/xscale/ixp425/if_npe.c ============================================================================== --- projects/pnet/sys/arm/xscale/ixp425/if_npe.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/arm/xscale/ixp425/if_npe.c Fri May 29 12:50:35 2009 (r193031) @@ -143,6 +143,7 @@ struct npe_softc { struct npestats *sc_stats; bus_dmamap_t sc_stats_map; bus_addr_t sc_stats_phys; /* phys addr of sc_stats */ + struct npestats sc_totals; /* accumulated sc_stats */ }; /* @@ -374,6 +375,8 @@ npe_attach(device_t dev) CTLFLAG_RW, &sc->sc_debug, 0, "control debugging printfs"); SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "tickinterval", CTLFLAG_RW, &sc->sc_tickinterval, 0, "periodic work frequency"); + SYSCTL_ADD_STRUCT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "stats", + CTLFLAG_RD, &sc->sc_totals, npestats, "onboard stats"); ether_ifattach(ifp, eaddr); return 0; @@ -867,12 +870,24 @@ npe_ifmedia_status(struct ifnet *ifp, st static void npe_addstats(struct npe_softc *sc) { -#define MIBADD(x) sc->mibdata.x += be32toh(ns->x) +#define NPEADD(x) sc->sc_totals.x += be32toh(ns->x) +#define MIBADD(x) do { sc->mibdata.x += be32toh(ns->x); NPEADD(x); } while (0) struct ifnet *ifp = sc->sc_ifp; struct npestats *ns = sc->sc_stats; MIBADD(dot3StatsAlignmentErrors); MIBADD(dot3StatsFCSErrors); + MIBADD(dot3StatsInternalMacReceiveErrors); + NPEADD(RxOverrunDiscards); + NPEADD(RxLearnedEntryDiscards); + NPEADD(RxLargeFramesDiscards); + NPEADD(RxSTPBlockedDiscards); + NPEADD(RxVLANTypeFilterDiscards); + NPEADD(RxVLANIdFilterDiscards); + NPEADD(RxInvalidSourceDiscards); + NPEADD(RxBlackListDiscards); + NPEADD(RxWhiteListDiscards); + NPEADD(RxUnderflowEntryDiscards); MIBADD(dot3StatsSingleCollisionFrames); MIBADD(dot3StatsMultipleCollisionFrames); MIBADD(dot3StatsDeferredTransmissions); @@ -880,10 +895,12 @@ npe_addstats(struct npe_softc *sc) MIBADD(dot3StatsExcessiveCollisions); MIBADD(dot3StatsInternalMacTransmitErrors); MIBADD(dot3StatsCarrierSenseErrors); + NPEADD(TxLargeFrameDiscards); + NPEADD(TxVLANIdFilterDiscards); + sc->mibdata.dot3StatsFrameTooLongs += be32toh(ns->RxLargeFramesDiscards) + be32toh(ns->TxLargeFrameDiscards); - MIBADD(dot3StatsInternalMacReceiveErrors); sc->mibdata.dot3StatsMissedFrames += be32toh(ns->RxOverrunDiscards) + be32toh(ns->RxUnderflowEntryDiscards); @@ -902,6 +919,7 @@ npe_addstats(struct npe_softc *sc) be32toh(ns->dot3StatsSingleCollisionFrames) + be32toh(ns->dot3StatsMultipleCollisionFrames) ; +#undef NPEADD #undef MIBADD } Modified: projects/pnet/sys/boot/common/ufsread.c ============================================================================== --- projects/pnet/sys/boot/common/ufsread.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/boot/common/ufsread.c Fri May 29 12:50:35 2009 (r193031) @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #ifdef UFS_SMALL_CGBASE /* XXX: Revert to old (broken for over 1.5Tb filesystems) version of cgbase @@ -93,7 +94,7 @@ static __inline int fsfind(const char *name, ino_t * ino) { char buf[DEV_BSIZE]; - struct dirent *d; + struct direct *d; char *s; ssize_t n; @@ -104,7 +105,7 @@ fsfind(const char *name, ino_t * ino) if (ls) printf("%s ", d->d_name); else if (!strcmp(name, d->d_name)) { - *ino = d->d_fileno; + *ino = d->d_ino; return d->d_type; } s += d->d_reclen; Modified: projects/pnet/sys/boot/pc98/boot2/sys.c ============================================================================== --- projects/pnet/sys/boot/pc98/boot2/sys.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/boot/pc98/boot2/sys.c Fri May 29 12:50:35 2009 (r193031) @@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$"); */ #include "boot.h" -#include +#include #if 0 /* #define BUFSIZE 4096 */ @@ -142,7 +142,7 @@ find(char *path) { char *rest, ch; int block, off, loc, ino = ROOTINO; - struct dirent *dp; + struct direct *dp; char list_only; list_only = (path[0] == '?' && path[1] == '\0'); @@ -174,12 +174,12 @@ loop: devread(iobuf, fsbtodb(fs, block_map(block)) + boff, blksize(fs, &inode, block)); } - dp = (struct dirent *)(iobuf + off); + dp = (struct direct *)(iobuf + off); loc += dp->d_reclen; - if (dp->d_fileno && list_only) + if (dp->d_ino && list_only) printf("%s ", dp->d_name); - } while (!dp->d_fileno || strcmp(path, dp->d_name)); - ino = dp->d_fileno; + } while (!dp->d_ino || strcmp(path, dp->d_name)); + ino = dp->d_ino; *(path = rest) = ch; goto loop; } Copied: projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c (from r193030, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c Fri May 29 12:50:35 2009 (r193031, copy of r193030, head/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c) @@ -0,0 +1,216 @@ +/*- + * Copyright (c) 2008, 2009 Edward Tomasz NapieraÅ‚a + * 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 +#include +#include +#include +#include +#include +#include + +struct zfs2bsd { + uint32_t zb_zfs; + int zb_bsd; +}; + +struct zfs2bsd perms[] = {{ACE_READ_DATA, ACL_READ_DATA}, + {ACE_WRITE_DATA, ACL_WRITE_DATA}, + {ACE_EXECUTE, ACL_EXECUTE}, + {ACE_APPEND_DATA, ACL_APPEND_DATA}, + {ACE_DELETE_CHILD, ACL_DELETE_CHILD}, + {ACE_DELETE, ACL_DELETE}, + {ACE_READ_ATTRIBUTES, ACL_READ_ATTRIBUTES}, + {ACE_WRITE_ATTRIBUTES, ACL_WRITE_ATTRIBUTES}, + {ACE_READ_NAMED_ATTRS, ACL_READ_NAMED_ATTRS}, + {ACE_WRITE_NAMED_ATTRS, ACL_WRITE_NAMED_ATTRS}, + {ACE_READ_ACL, ACL_READ_ACL}, + {ACE_WRITE_ACL, ACL_WRITE_ACL}, + {ACE_WRITE_OWNER, ACL_WRITE_OWNER}, + {ACE_SYNCHRONIZE, ACL_SYNCHRONIZE}, + {0, 0}}; + +struct zfs2bsd flags[] = {{ACE_FILE_INHERIT_ACE, + ACL_ENTRY_FILE_INHERIT}, + {ACE_DIRECTORY_INHERIT_ACE, + ACL_ENTRY_DIRECTORY_INHERIT}, + {ACE_NO_PROPAGATE_INHERIT_ACE, + ACL_ENTRY_NO_PROPAGATE_INHERIT}, + {ACE_INHERIT_ONLY_ACE, + ACL_ENTRY_INHERIT_ONLY}, + {ACE_SUCCESSFUL_ACCESS_ACE_FLAG, + ACL_ENTRY_SUCCESSFUL_ACCESS}, + {ACE_FAILED_ACCESS_ACE_FLAG, + ACL_ENTRY_FAILED_ACCESS}, + {0, 0}}; + +static int +_bsd_from_zfs(uint32_t zfs, const struct zfs2bsd *table) +{ + const struct zfs2bsd *tmp; + int bsd = 0; + + for (tmp = table; tmp->zb_zfs != 0; tmp++) { + if (zfs & tmp->zb_zfs) + bsd |= tmp->zb_bsd; + } + + return (bsd); +} + +static uint32_t +_zfs_from_bsd(int bsd, const struct zfs2bsd *table) +{ + const struct zfs2bsd *tmp; + uint32_t zfs = 0; + + for (tmp = table; tmp->zb_bsd != 0; tmp++) { + if (bsd & tmp->zb_bsd) + zfs |= tmp->zb_zfs; + } + + return (zfs); +} + +int +acl_from_aces(struct acl *aclp, const ace_t *aces, int nentries) +{ + int i; + struct acl_entry *entry; + const ace_t *ace; + + KASSERT(nentries >= 1, ("empty ZFS ACL")); + + if (nentries > ACL_MAX_ENTRIES) { + /* + * I believe it may happen only when moving a pool + * from SunOS to FreeBSD. + */ + printf("acl_from_aces: ZFS ACL too big to fit " + "into 'struct acl'; returning EINVAL.\n"); + return (EINVAL); + } + + bzero(aclp, sizeof(*aclp)); + aclp->acl_maxcnt = ACL_MAX_ENTRIES; + aclp->acl_cnt = nentries; + + for (i = 0; i < nentries; i++) { + entry = &(aclp->acl_entry[i]); + ace = &(aces[i]); + + if (ace->a_flags & ACE_OWNER) + entry->ae_tag = ACL_USER_OBJ; + else if (ace->a_flags & ACE_GROUP) + entry->ae_tag = ACL_GROUP_OBJ; + else if (ace->a_flags & ACE_EVERYONE) + entry->ae_tag = ACL_EVERYONE; + else if (ace->a_flags & ACE_IDENTIFIER_GROUP) + entry->ae_tag = ACL_GROUP; + else + entry->ae_tag = ACL_USER; + + if (entry->ae_tag == ACL_USER || entry->ae_tag == ACL_GROUP) + entry->ae_id = ace->a_who; + else + entry->ae_id = ACL_UNDEFINED_ID; + + entry->ae_perm = _bsd_from_zfs(ace->a_access_mask, perms); + entry->ae_flags = _bsd_from_zfs(ace->a_flags, flags); + + switch (ace->a_type) { + case ACE_ACCESS_ALLOWED_ACE_TYPE: + entry->ae_entry_type = ACL_ENTRY_TYPE_ALLOW; + break; + case ACE_ACCESS_DENIED_ACE_TYPE: + entry->ae_entry_type = ACL_ENTRY_TYPE_DENY; + break; + case ACE_SYSTEM_AUDIT_ACE_TYPE: + entry->ae_entry_type = ACL_ENTRY_TYPE_AUDIT; + break; + case ACE_SYSTEM_ALARM_ACE_TYPE: + entry->ae_entry_type = ACL_ENTRY_TYPE_ALARM; + break; + default: + panic("acl_from_aces: a_type is 0x%x", ace->a_type); + } + } + + return (0); +} + +void +aces_from_acl(ace_t *aces, int *nentries, const struct acl *aclp) +{ + int i; + const struct acl_entry *entry; + ace_t *ace; + + bzero(aces, sizeof(*aces) * aclp->acl_cnt); + + *nentries = aclp->acl_cnt; + + for (i = 0; i < aclp->acl_cnt; i++) { + entry = &(aclp->acl_entry[i]); + ace = &(aces[i]); + + ace->a_who = entry->ae_id; + + if (entry->ae_tag == ACL_USER_OBJ) + ace->a_flags = ACE_OWNER; + else if (entry->ae_tag == ACL_GROUP_OBJ) + ace->a_flags = (ACE_GROUP | ACE_IDENTIFIER_GROUP); + else if (entry->ae_tag == ACL_GROUP) + ace->a_flags = ACE_IDENTIFIER_GROUP; + else if (entry->ae_tag == ACL_EVERYONE) + ace->a_flags = ACE_EVERYONE; + else /* ACL_USER */ + ace->a_flags = 0; + + ace->a_access_mask = _zfs_from_bsd(entry->ae_perm, perms); + ace->a_flags |= _zfs_from_bsd(entry->ae_flags, flags); + + switch (entry->ae_entry_type) { + case ACL_ENTRY_TYPE_ALLOW: + ace->a_type = ACE_ACCESS_ALLOWED_ACE_TYPE; + break; + case ACL_ENTRY_TYPE_DENY: + ace->a_type = ACE_ACCESS_DENIED_ACE_TYPE; + break; + case ACL_ENTRY_TYPE_ALARM: + ace->a_type = ACE_SYSTEM_ALARM_ACE_TYPE; + break; + case ACL_ENTRY_TYPE_AUDIT: + ace->a_type = ACE_SYSTEM_AUDIT_ACE_TYPE; + break; + default: + panic("aces_from_acl: ae_entry_type is 0x%x", entry->ae_entry_type); + } + } +} Modified: projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c ============================================================================== --- projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c Fri May 29 12:50:35 2009 (r193031) @@ -302,6 +302,14 @@ secpolicy_setid_setsticky_clear(struct v if (error) return (error); } + /* + * Deny setting setuid if we are not the file owner. + */ + if ((vap->va_mode & S_ISUID) && ovap->va_uid != cred->cr_uid) { + error = priv_check_cred(cred, PRIV_VFS_ADMIN, 0); + if (error) + return (error); + } return (0); } Copied: projects/pnet/sys/cddl/compat/opensolaris/sys/acl.h (from r193030, head/sys/cddl/compat/opensolaris/sys/acl.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/pnet/sys/cddl/compat/opensolaris/sys/acl.h Fri May 29 12:50:35 2009 (r193031, copy of r193030, head/sys/cddl/compat/opensolaris/sys/acl.h) @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2008, 2009 Edward Tomasz NapieraÅ‚a + * 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$ + */ + +#ifndef OPENSOLARIS_SYS_ACL_H +#define OPENSOLARIS_SYS_ACL_H + +#include_next + +struct acl; + +void aces_from_acl(ace_t *aces, int *nentries, const struct acl *aclp); +int acl_from_aces(struct acl *aclp, const ace_t *aces, int nentries); + +#endif /* OPENSOLARIS_SYS_ACL_H */ Modified: projects/pnet/sys/cddl/compat/opensolaris/sys/mutex.h ============================================================================== --- projects/pnet/sys/cddl/compat/opensolaris/sys/mutex.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/compat/opensolaris/sys/mutex.h Fri May 29 12:50:35 2009 (r193031) @@ -47,9 +47,9 @@ typedef enum { typedef struct sx kmutex_t; #ifndef DEBUG -#define MUTEX_FLAGS (SX_DUPOK | SX_NOWITNESS | SX_ADAPTIVESPIN) +#define MUTEX_FLAGS (SX_DUPOK | SX_NOWITNESS) #else -#define MUTEX_FLAGS (SX_DUPOK | SX_ADAPTIVESPIN) +#define MUTEX_FLAGS (SX_DUPOK) #endif #define mutex_init(lock, desc, type, arg) do { \ Modified: projects/pnet/sys/cddl/compat/opensolaris/sys/rwlock.h ============================================================================== --- projects/pnet/sys/cddl/compat/opensolaris/sys/rwlock.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/compat/opensolaris/sys/rwlock.h Fri May 29 12:50:35 2009 (r193031) @@ -49,9 +49,9 @@ typedef enum { typedef struct sx krwlock_t; #ifndef DEBUG -#define RW_FLAGS (SX_DUPOK | SX_NOWITNESS | SX_ADAPTIVESPIN) +#define RW_FLAGS (SX_DUPOK | SX_NOWITNESS) #else -#define RW_FLAGS (SX_DUPOK | SX_ADAPTIVESPIN) +#define RW_FLAGS (SX_DUPOK) #endif #define RW_READ_HELD(x) (rw_read_held((x))) Modified: projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.c ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.c Fri May 29 12:50:35 2009 (r193031) @@ -424,7 +424,7 @@ cacl_free(void *ptr, size_t size) #endif } -#ifndef __FreeBSD__ +#if !defined(_KERNEL) acl_t * acl_alloc(enum acl_type type) { @@ -470,7 +470,6 @@ acl_free(acl_t *aclp) cacl_free(aclp, sizeof (acl_t)); } -#endif static uint32_t access_mask_set(int haswriteperm, int hasreadperm, int isowner, int isallow) @@ -1727,3 +1726,4 @@ out: return (error); #endif } +#endif /* _KERNEL */ Modified: projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.h ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/common/acl/acl_common.h Fri May 29 12:50:35 2009 (r193031) @@ -46,6 +46,7 @@ extern int ace_trivial(ace_t *acep, int extern int ace_trivial_common(void *, int, uint64_t (*walk)(void *, uint64_t, int aclcnt, uint16_t *, uint16_t *, uint32_t *mask)); +#if !defined(_KERNEL) extern acl_t *acl_alloc(acl_type_t); extern void acl_free(acl_t *aclp); extern int acl_translate(acl_t *aclp, int target_flavor, @@ -53,6 +54,7 @@ extern int acl_translate(acl_t *aclp, in void ksort(caddr_t v, int n, int s, int (*f)()); int cmp2acls(void *a, void *b); +#endif /* _KERNEL */ #ifdef __cplusplus } Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Fri May 29 12:50:35 2009 (r193031) @@ -122,6 +122,7 @@ #include #include #include +#include #include #include #include @@ -3168,14 +3169,11 @@ dtrace_dif_subr(uint_t subr, uint_t rd, uintptr_t rw; } r; #else + struct thread *lowner; union { - struct mtx *mi; - uintptr_t mx; - } m; - union { - struct sx *si; - uintptr_t sx; - } s; + struct lock_object *li; + uintptr_t lx; + } l; #endif switch (subr) { @@ -3272,75 +3270,83 @@ dtrace_dif_subr(uint_t subr, uint_t rd, break; #else - /* - * XXX - The following code works because mutex, rwlocks, & sxlocks - * all have similar data structures in FreeBSD. This may not be - * good if someone changes one of the lock data structures. - * Ideally, it would be nice if all these shared a common lock - * object. - */ case DIF_SUBR_MUTEX_OWNED: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - m.mx = tupregs[0].dttk_value; - -#ifdef DOODAD - if (LO_CLASSINDEX(&(m.mi->lock_object)) < 2) { - regs[rd] = !(m.mi->mtx_lock & MTX_UNOWNED); - } else { - regs[rd] = !(m.mi->mtx_lock & SX_UNLOCKED); + if (!dtrace_canload(tupregs[0].dttk_value, + sizeof (struct lock_object), mstate, vstate)) { + regs[rd] = 0; + break; } -#endif + l.lx = dtrace_loadptr((uintptr_t)&tupregs[0].dttk_value); + regs[rd] = LOCK_CLASS(l.li)->lc_owner(l.li, &lowner); break; case DIF_SUBR_MUTEX_OWNER: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - m.mx = tupregs[0].dttk_value; - - if (LO_CLASSINDEX(&(m.mi->lock_object)) < 2) { - regs[rd] = m.mi->mtx_lock & ~MTX_FLAGMASK; - } else { - if (!(m.mi->mtx_lock & SX_LOCK_SHARED)) - regs[rd] = SX_OWNER(m.mi->mtx_lock); - else - regs[rd] = 0; + if (!dtrace_canload(tupregs[0].dttk_value, + sizeof (struct lock_object), mstate, vstate)) { + regs[rd] = 0; + break; } + l.lx = dtrace_loadptr((uintptr_t)&tupregs[0].dttk_value); + LOCK_CLASS(l.li)->lc_owner(l.li, &lowner); + regs[rd] = (uintptr_t)lowner; break; case DIF_SUBR_MUTEX_TYPE_ADAPTIVE: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - m.mx = tupregs[0].dttk_value; - - regs[rd] = (LO_CLASSINDEX(&(m.mi->lock_object)) != 0); + if (!dtrace_canload(tupregs[0].dttk_value, sizeof (struct mtx), + mstate, vstate)) { + regs[rd] = 0; + break; + } + l.lx = dtrace_loadptr((uintptr_t)&tupregs[0].dttk_value); + /* XXX - should be only LC_SLEEPABLE? */ + regs[rd] = (LOCK_CLASS(l.li)->lc_flags & + (LC_SLEEPLOCK | LC_SLEEPABLE)) != 0; break; case DIF_SUBR_MUTEX_TYPE_SPIN: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - m.mx = tupregs[0].dttk_value; - - regs[rd] = (LO_CLASSINDEX(&(m.mi->lock_object)) == 0); + if (!dtrace_canload(tupregs[0].dttk_value, sizeof (struct mtx), + mstate, vstate)) { + regs[rd] = 0; + break; + } + l.lx = dtrace_loadptr((uintptr_t)&tupregs[0].dttk_value); + regs[rd] = (LOCK_CLASS(l.li)->lc_flags & LC_SPINLOCK) != 0; break; case DIF_SUBR_RW_READ_HELD: case DIF_SUBR_SX_SHARED_HELD: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - s.sx = tupregs[0].dttk_value; - regs[rd] = ((s.si->sx_lock & SX_LOCK_SHARED) && - (SX_OWNER(s.si->sx_lock) >> SX_SHARERS_SHIFT) != 0); + if (!dtrace_canload(tupregs[0].dttk_value, sizeof (uintptr_t), + mstate, vstate)) { + regs[rd] = 0; + break; + } + l.lx = dtrace_loadptr((uintptr_t)&tupregs[0].dttk_value); + regs[rd] = LOCK_CLASS(l.li)->lc_owner(l.li, &lowner) && + lowner == NULL; break; case DIF_SUBR_RW_WRITE_HELD: case DIF_SUBR_SX_EXCLUSIVE_HELD: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - s.sx = tupregs[0].dttk_value; - regs[rd] = (SX_OWNER(s.si->sx_lock) == (uintptr_t) curthread); + if (!dtrace_canload(tupregs[0].dttk_value, sizeof (uintptr_t), + mstate, vstate)) { + regs[rd] = 0; + break; + } + l.lx = dtrace_loadptr(tupregs[0].dttk_value); + LOCK_CLASS(l.li)->lc_owner(l.li, &lowner); + regs[rd] = (lowner == curthread); break; case DIF_SUBR_RW_ISWRITER: case DIF_SUBR_SX_ISEXCLUSIVE: - /* XXX - need to use dtrace_canload() and dtrace_loadptr() */ - s.sx = tupregs[0].dttk_value; - regs[rd] = ((s.si->sx_lock & SX_LOCK_EXCLUSIVE_WAITERS) || - !(s.si->sx_lock & SX_LOCK_SHARED)); + if (!dtrace_canload(tupregs[0].dttk_value, sizeof (uintptr_t), + mstate, vstate)) { + regs[rd] = 0; + break; + } + l.lx = dtrace_loadptr(tupregs[0].dttk_value); + regs[rd] = LOCK_CLASS(l.li)->lc_owner(l.li, &lowner) && + lowner != NULL; break; #endif /* ! defined(sun) */ Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h Fri May 29 12:50:35 2009 (r193031) @@ -188,10 +188,8 @@ struct zfs_fuid_info; #ifdef _KERNEL void zfs_perm_init(struct znode *, struct znode *, int, vattr_t *, dmu_tx_t *, cred_t *, zfs_acl_t *, zfs_fuid_info_t **); -#ifdef TODO int zfs_getacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); int zfs_setacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); -#endif void zfs_acl_rele(void *); void zfs_oldace_byteswap(ace_t *, int); void zfs_ace_byteswap(void *, size_t, boolean_t); Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Fri May 29 12:50:35 2009 (r193031) @@ -1909,7 +1909,6 @@ zfs_perm_init(znode_t *zp, znode_t *pare zfs_acl_free(aclp); } -#ifdef TODO /* * Retrieve a files ACL */ @@ -2005,7 +2004,6 @@ zfs_getacl(znode_t *zp, vsecattr_t *vsec return (0); } -#endif /* TODO */ int zfs_vsec_2_aclp(zfsvfs_t *zfsvfs, vtype_t obj_type, @@ -2062,7 +2060,6 @@ zfs_vsec_2_aclp(zfsvfs_t *zfsvfs, vtype_ return (0); } -#ifdef TODO /* * Set a files ACL */ @@ -2170,7 +2167,6 @@ done: return (error); } -#endif /* TODO */ /* * working_mode returns the permissions that were not granted Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Fri May 29 12:50:35 2009 (r193031) @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -67,6 +66,7 @@ #include #include #include +#include /* * Programming rules. @@ -3846,7 +3846,6 @@ zfs_pathconf(vnode_t *vp, int cmd, ulong } } -#ifdef TODO /*ARGSUSED*/ static int zfs_getsecattr(vnode_t *vp, vsecattr_t *vsecp, int flag, cred_t *cr, @@ -3864,9 +3863,7 @@ zfs_getsecattr(vnode_t *vp, vsecattr_t * return (error); } -#endif /* TODO */ -#ifdef TODO /*ARGSUSED*/ static int zfs_setsecattr(vnode_t *vp, vsecattr_t *vsecp, int flag, cred_t *cr, @@ -3883,7 +3880,6 @@ zfs_setsecattr(vnode_t *vp, vsecattr_t * ZFS_EXIT(zfsvfs); return (error); } -#endif /* TODO */ static int zfs_freebsd_open(ap) @@ -3963,7 +3959,7 @@ static int zfs_freebsd_access(ap) struct vop_access_args /* { struct vnode *a_vp; - int a_accmode; + accmode_t a_accmode; struct ucred *a_cred; struct thread *a_td; } */ *ap; @@ -4777,6 +4773,90 @@ vop_listextattr { return (error); } +int +zfs_freebsd_getacl(ap) + struct vop_getacl_args /* { + struct vnode *vp; + acl_type_t type; + struct acl *aclp; + struct ucred *cred; + struct thread *td; + } */ *ap; +{ + int error; + vsecattr_t vsecattr; + + if (ap->a_type != ACL_TYPE_NFS4) + return (EOPNOTSUPP); + + vsecattr.vsa_mask = VSA_ACE | VSA_ACECNT; + if (error = zfs_getsecattr(ap->a_vp, &vsecattr, 0, ap->a_cred, NULL)) + return (error); + + error = acl_from_aces(ap->a_aclp, vsecattr.vsa_aclentp, vsecattr.vsa_aclcnt); + if (vsecattr.vsa_aclentp != NULL) + kmem_free(vsecattr.vsa_aclentp, vsecattr.vsa_aclentsz); + + return (error); +} + +int +zfs_freebsd_setacl(ap) + struct vop_setacl_args /* { + struct vnode *vp; + acl_type_t type; + struct acl *aclp; + struct ucred *cred; + struct thread *td; + } */ *ap; +{ + int error; + vsecattr_t vsecattr; + int aclbsize; /* size of acl list in bytes */ + aclent_t *aaclp; + + if (ap->a_type != ACL_TYPE_NFS4) + return (EOPNOTSUPP); + + if (ap->a_aclp->acl_cnt < 1 || ap->a_aclp->acl_cnt > MAX_ACL_ENTRIES) + return (EINVAL); + + /* + * With NFS4 ACLs, chmod(2) may need to add additional entries, + * splitting every entry into two and appending "canonical six" + * entries at the end. Don't allow for setting an ACL that would + * cause chmod(2) to run out of ACL entries. + */ + if (ap->a_aclp->acl_cnt * 2 + 6 > ACL_MAX_ENTRIES) + return (ENOSPC); + + vsecattr.vsa_mask = VSA_ACE; + aclbsize = ap->a_aclp->acl_cnt * sizeof(ace_t); + vsecattr.vsa_aclentp = kmem_alloc(aclbsize, KM_SLEEP); + aaclp = vsecattr.vsa_aclentp; + vsecattr.vsa_aclentsz = aclbsize; + + aces_from_acl(vsecattr.vsa_aclentp, &vsecattr.vsa_aclcnt, ap->a_aclp); + error = zfs_setsecattr(ap->a_vp, &vsecattr, 0, ap->a_cred, NULL); + kmem_free(aaclp, aclbsize); + + return (error); +} + +int +zfs_freebsd_aclcheck(ap) + struct vop_aclcheck_args /* { + struct vnode *vp; + acl_type_t type; + struct acl *aclp; + struct ucred *cred; + struct thread *td; + } */ *ap; +{ + + return (EOPNOTSUPP); +} + struct vop_vector zfs_vnodeops; struct vop_vector zfs_fifoops; @@ -4816,6 +4896,11 @@ struct vop_vector zfs_vnodeops = { .vop_deleteextattr = zfs_deleteextattr, .vop_setextattr = zfs_setextattr, .vop_listextattr = zfs_listextattr, +#ifdef notyet + .vop_getacl = zfs_freebsd_getacl, + .vop_setacl = zfs_freebsd_setacl, + .vop_aclcheck = zfs_freebsd_aclcheck, +#endif }; struct vop_vector zfs_fifoops = { @@ -4829,4 +4914,9 @@ struct vop_vector zfs_fifoops = { .vop_setattr = zfs_freebsd_setattr, .vop_write = VOP_PANIC, .vop_fid = zfs_freebsd_fid, +#ifdef notyet + .vop_getacl = zfs_freebsd_getacl, + .vop_setacl = zfs_freebsd_setacl, + .vop_aclcheck = zfs_freebsd_aclcheck, +#endif }; Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h Fri May 29 12:50:35 2009 (r193031) @@ -121,6 +121,7 @@ typedef struct XDR { * Changes must be reviewed by Solaris File Sharing * Changes must be communicated to contract-2003-523@sun.com */ +#ifndef __FreeBSD__ struct xdr_ops { #ifdef __STDC__ #if !defined(_KERNEL) @@ -168,6 +169,28 @@ struct xdr_ops { #endif }; +#else /* FreeBSD */ +struct xdr_ops { + /* get a long from underlying stream */ + bool_t (*x_getint32)(struct XDR *, int32_t *); + /* put a long to " */ + bool_t (*x_putint32)(struct XDR *, const int32_t *); + /* get some bytes from " */ + bool_t (*x_getbytes)(struct XDR *, char *, u_int); + /* put some bytes to " */ + bool_t (*x_putbytes)(struct XDR *, const char *, u_int); + /* returns bytes off from beginning */ + u_int (*x_getpostn)(struct XDR *); + /* lets you reposition the stream */ + bool_t (*x_setpostn)(struct XDR *, u_int); + /* buf quick ptr to buffered data */ + int32_t *(*x_inline)(struct XDR *, u_int); + /* free privates of this xdr_stream */ + void (*x_destroy)(struct XDR *); + bool_t (*x_control)(struct XDR *, int, void *); +}; +#endif + /* * Operations defined on a XDR handle * Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h Fri May 29 12:50:35 2009 (r193031) @@ -31,12 +31,22 @@ #include #include +#if defined(_KERNEL) +/* + * When compiling OpenSolaris kernel code, this file is getting + * included instead of FreeBSD one. Pull the original sys/acl.h as well. + */ +#undef _SYS_ACL_H +#include_next +#define _SYS_ACL_H +#endif /* _KERNEL */ + #ifdef __cplusplus extern "C" { #endif #define MAX_ACL_ENTRIES (1024) /* max entries of each type */ -typedef struct acl { +typedef struct { int a_type; /* the type of ACL entry */ uid_t a_id; /* the entry in -uid or gid */ o_mode_t a_perm; /* the permission field */ @@ -49,7 +59,9 @@ typedef struct ace { uint16_t a_type; /* allow or deny */ } ace_t; +#if !defined(_KERNEL) typedef struct acl_info acl_t; +#endif /* * The following are Defined types for an aclent_t. Modified: projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h ============================================================================== --- projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h Fri May 29 12:50:35 2009 (r193031) @@ -44,10 +44,10 @@ extern "C" { typedef enum acl_type { ACLENT_T = 0, ACE_T = 1 -} acl_type_t; +} zfs_acl_type_t; struct acl_info { - acl_type_t acl_type; /* style of acl */ + zfs_acl_type_t acl_type; /* style of acl */ int acl_cnt; /* number of acl entries */ int acl_entry_size; /* sizeof acl entry */ int acl_flags; /* special flags about acl */ Modified: projects/pnet/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- projects/pnet/sys/compat/freebsd32/freebsd32_misc.c Fri May 29 10:52:37 2009 (r193030) +++ projects/pnet/sys/compat/freebsd32/freebsd32_misc.c Fri May 29 12:50:35 2009 (r193031) @@ -112,8 +112,6 @@ CTASSERT(sizeof(struct msghdr32) == 28); CTASSERT(sizeof(struct stat32) == 96); CTASSERT(sizeof(struct sigaction32) == 24); -extern int jail_max_af_ips; - static int freebsd32_kevent_copyout(void *arg, struct kevent *kevp, int count); static int freebsd32_kevent_copyin(void *arg, struct kevent *kevp, int count); @@ -2044,17 +2042,9 @@ freebsd32_sysctl(struct thread *td, stru int freebsd32_jail(struct thread *td, struct freebsd32_jail_args *uap) { - struct iovec optiov[10]; - struct uio opt; - char *u_path, *u_hostname, *u_name; -#ifdef INET - struct in_addr *u_ip4; -#endif -#ifdef INET6 - struct in6_addr *u_ip6; -#endif uint32_t version; int error; + struct jail j; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri May 29 14:02:46 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A10E1065771; Fri, 29 May 2009 14:02:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 093008FC0C; Fri, 29 May 2009 14:02:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TE2jfg076785; Fri, 29 May 2009 14:02:45 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TE2jG4076784; Fri, 29 May 2009 14:02:45 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905291402.n4TE2jG4076784@svn.freebsd.org> From: Robert Watson Date: Fri, 29 May 2009 14:02:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193036 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 14:02:46 -0000 Author: rwatson Date: Fri May 29 14:02:45 2009 New Revision: 193036 URL: http://svn.freebsd.org/changeset/base/193036 Log: Update netisr2 for rmlock(9) changes. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Fri May 29 13:56:34 2009 (r193035) +++ projects/pnet/sys/net/netisr2.c Fri May 29 14:02:45 2009 (r193036) @@ -94,7 +94,8 @@ __FBSDID("$FreeBSD$"); * XXXRW: rmlocks don't support assertions. */ static struct rmlock netisr_rmlock; -#define NETISR_LOCK_INIT() rm_init(&netisr_rmlock, "netisr", 0) +#define NETISR_LOCK_INIT() rm_init_flags(&netisr_rmlock, "netisr", \ + RM_NOWITNESS) #if 0 #define NETISR_LOCK_ASSERT() rm_assert(&netisr_rmlock, RW_LOCKED) #else From owner-svn-src-projects@FreeBSD.ORG Fri May 29 18:48:19 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4BDBE106564A; Fri, 29 May 2009 18:48:19 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 39C7D8FC0C; Fri, 29 May 2009 18:48:19 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TImJKd083223; Fri, 29 May 2009 18:48:19 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TImJjO083220; Fri, 29 May 2009 18:48:19 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905291848.n4TImJjO083220@svn.freebsd.org> From: Rui Paulo Date: Fri, 29 May 2009 18:48:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193046 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 18:48:19 -0000 Author: rpaulo Date: Fri May 29 18:48:18 2009 New Revision: 193046 URL: http://svn.freebsd.org/changeset/base/193046 Log: * fill up the forwarding information table a little more * explain root modes * implement PREQ intermediate reply and PREQ propagation * fix PREP propagation * remove vap arg from ieee80211_airtime_calc() Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_mesh.c projects/mesh11s/sys/net80211/ieee80211_mesh.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Fri May 29 18:46:57 2009 (r193045) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Fri May 29 18:48:18 2009 (r193046) @@ -65,15 +65,16 @@ __FBSDID("$FreeBSD$"); /* * HWMP Forwarding Information table. + * XXX: this should be in vap */ struct ieee80211_hwmp_fi { - TAILQ_ENTRY(ieee80211_hwmp_fi) fi_list; - uint8_t fi_target[IEEE80211_ADDR_LEN]; + TAILQ_ENTRY(ieee80211_hwmp_fi) fi_next; + uint8_t fi_dest[IEEE80211_ADDR_LEN]; ieee80211_seq fi_seq; /* HWMP sequence number */ - uint8_t fi_mnxthop[IEEE80211_ADDR_LEN]; + uint8_t fi_nexthop[IEEE80211_ADDR_LEN]; uint32_t fi_metric; /* Path Metric */ uint32_t fi_nhops; /* Number of Hops */ - /* XXX percursor list */ + uint8_t fi_prevhop[IEEE80211_ADDR_LEN]; uint32_t fi_lifetime; }; TAILQ_HEAD(, ieee80211_hwmp_fi) ieee80211_hwmp_ft; @@ -85,23 +86,23 @@ static void hwmp_recv_preq(struct ieee80 const struct ieee80211_meshpreq_ie *); static int hwmp_send_preq(struct ieee80211_node *, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], - const struct ieee80211_meshpreq_ie *); + struct ieee80211_meshpreq_ie *); static void hwmp_recv_prep(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshprep_ie *); static int hwmp_send_prep(struct ieee80211_node *, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], - const struct ieee80211_meshprep_ie *); + struct ieee80211_meshprep_ie *); static void hwmp_recv_perr(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshperr_ie *); static int hwmp_send_perr(struct ieee80211_node *, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], - const struct ieee80211_meshperr_ie *); + struct ieee80211_meshperr_ie *); static void hwmp_recv_rann(struct ieee80211vap *, struct ieee80211_node *, - const struct ieee80211_meshrann_ie *); + const struct ieee80211_meshrann_ie *); #ifdef notyet static int hwmp_send_rann(struct ieee80211_node *, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], - const struct ieee80211_meshrann_ie *); + struct ieee80211_meshrann_ie *); #endif static int ieee80211_hwmp_maxhops = 31; @@ -126,9 +127,12 @@ static int ieee80211_hwmp_confirmint = 2 /* * Target Address set in a Proactive PREQ. + * XXX */ static const uint8_t proactiveaddr[IEEE80211_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +static const uint8_t broadcastaddr[IEEE80211_ADDR_LEN] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; SYSCTL_NODE(_net_wlan, OID_AUTO, hwmp, CTLFLAG_RD, 0, "IEEE 802.11s HWMP parameters"); @@ -140,7 +144,9 @@ SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, rep &ieee80211_hwmp_replyforward, 0, "TBD"); #ifdef notyet SYSCTL_INT(_net_wlan_hwmp, OID_AUTO, rootmode, CTLTYPE_INT | CTLFLAG_RW, - &ieee80211_hwmp_rootmode, 0, "Root Mesh Point Node"); + &ieee80211_hwmp_rootmode, 0, "0 = Not a Root, " + "2 = Root with normal PREPs, 3 = Root with proactive PREPs, " + "3 = Root with RANNs"); #endif extern int ieee80211_mesh_ttl; @@ -374,6 +380,8 @@ static void hwmp_recv_preq(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshpreq_ie *preq) { + struct ieee80211_hwmp_fi *fi; + /* * Acceptance criteria: if the PREQ is not for us and * forwarding is disabled, discard this PREQ. @@ -382,6 +390,14 @@ hwmp_recv_preq(struct ieee80211vap *vap, !ieee80211_mesh_forwarding) return; + fi = NULL; + /*HWMP_LOCK();*/ + TAILQ_FOREACH(fi, &ieee80211_hwmp_ft, fi_next) { + if (IEEE80211_ADDR_EQ(PREQ_TADDR(0), fi->fi_dest)) + break; + } + /*HWMP_UNLOCK();*/ + /* * Step 1. Record the PREQ ID and the originator MAC address. */ @@ -418,15 +434,70 @@ hwmp_recv_preq(struct ieee80211vap *vap, /* XXX: Step 4. Check for AE bit and update proxy information */ /* - * Step 5. Intermediate reply: check if we have this path on our - * table and the TO bit is unset. + * Step 5. Intermediate reply for PREQs with 1 target. */ - if (!(PREQ_TFLAGS(0) & IEEE80211_MESHPREQ_TFLAGS_TO)) { + if (preq->preq_ttl > 1 && preq->preq_tcount == 1 && + !(PREQ_TFLAGS(0) & IEEE80211_MESHPREQ_TFLAGS_TO)) { + struct ieee80211_meshpreq_ie ppreq; /* propagated PREQ */ + + memcpy(&ppreq, preq, sizeof(ppreq)); + /* + * Can we do an intermediate path reply? + */ + if (fi != NULL) { + struct ieee80211_meshprep_ie prep; + /* + * Propagate the original PREQ. + */ + ppreq.preq_hopcount += 1; + ppreq.preq_ttl -= 1; + ppreq.preq_metric += ieee80211_airtime_calc(ni); + /* + * Set TO and unset RF bits because we are going + * to send a PREP next. + */ + ppreq.preq_targets[0].target_flags |= + IEEE80211_MESHPREQ_TFLAGS_TO; + ppreq.preq_targets[0].target_flags &= + ~IEEE80211_MESHPREQ_TFLAGS_RF; + hwmp_send_preq(ni, vap->iv_myaddr, broadcastaddr, + &ppreq); + + /* + * Build and send an intermediate PREP. + */ + prep.prep_flags = 0; + prep.prep_hopcount = 0; + prep.prep_ttl = ieee80211_mesh_ttl; + IEEE80211_ADDR_COPY(&prep.prep_targetaddr, + preq->preq_origaddr); + prep.prep_targetseq = fi->fi_seq; + prep.prep_lifetime = preq->preq_lifetime; + prep.prep_metric = fi->fi_metric; + IEEE80211_ADDR_COPY(&prep.prep_origaddr, + vap->iv_myaddr); + /* XXX */ + prep.prep_origseq = 1; + hwmp_send_prep(ni, vap->iv_myaddr, broadcastaddr, + &prep); + } else { + /* + * We have no information about this path, + * propagate the PREQ. + */ + ppreq.preq_hopcount += 1; + ppreq.preq_ttl -= 1; + ppreq.preq_metric += ieee80211_airtime_calc(ni); + hwmp_send_preq(ni, vap->iv_myaddr, broadcastaddr, + &ppreq); + } /* * XXX: Step 6. Update the percursor table */ + return; } + /* * XXX: Step 8. Proactive PREQ: reply with a proactive PREP to the @@ -452,7 +523,7 @@ static inline int hwmp_send_preq(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], const uint8_t addr2[IEEE80211_ADDR_LEN], - const struct ieee80211_meshpreq_ie *preq) + struct ieee80211_meshpreq_ie *preq) { /* * mesh preq action frame format @@ -463,6 +534,10 @@ hwmp_send_preq(struct ieee80211_node *ni * [1] category * [tlv] mesh path request */ + /* XXX target count > 1 */ + preq->preq_ie = IEEE80211_ELEMID_MESHPREQ; + preq->preq_len = sizeof(struct ieee80211_meshpreq_ie) - 2; + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&preq, sizeof(*preq)); } @@ -471,7 +546,6 @@ static void hwmp_recv_prep(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshprep_ie *prep) { - union ieee80211_send_action_args vargs; /* * Acceptance criteria: if the PREP was not generated by us and @@ -485,6 +559,7 @@ hwmp_recv_prep(struct ieee80211vap *vap, * Step 1: Update the Forwarding Information. */ + /* * Step 2: If it's NOT for us, propagate the PREP if TTL is * greater than 1. @@ -496,14 +571,11 @@ hwmp_recv_prep(struct ieee80211vap *vap, memcpy(&pprep, prep, sizeof(pprep)); pprep.prep_hopcount += 1; pprep.prep_ttl -= 1; - pprep.prep_metric += ieee80211_airtime_calc(vap, ni); + pprep.prep_metric += ieee80211_airtime_calc(ni); IEEE80211_ADDR_COPY(pprep.prep_origaddr, vap->iv_myaddr); pprep.prep_origseq = 1; /* XXX */ - - vargs.ptrarg = &pprep; - ieee80211_send_action(ni, IEEE80211_ACTION_CAT_MESHPATH, - IEEE80211_ACTION_MESHPATH_REQ, vargs); - + hwmp_send_prep(ni, vap->iv_myaddr, broadcastaddr, + &pprep); /* * XXX: Step 5: update the precursor list. */ @@ -527,7 +599,7 @@ static inline int hwmp_send_prep(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], const uint8_t addr2[IEEE80211_ADDR_LEN], - const struct ieee80211_meshprep_ie *prep) + struct ieee80211_meshprep_ie *prep) { /* * mesh prep action frame format @@ -538,6 +610,9 @@ hwmp_send_prep(struct ieee80211_node *ni * [1] category * [tlv] mesh path reply */ + prep->prep_ie = IEEE80211_ELEMID_MESHPREP; + prep->prep_len = sizeof(struct ieee80211_meshprep_ie) - 2; + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&prep, sizeof(*prep)); } @@ -554,7 +629,7 @@ static inline int hwmp_send_perr(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], const uint8_t addr2[IEEE80211_ADDR_LEN], - const struct ieee80211_meshperr_ie *perr) + struct ieee80211_meshperr_ie *perr) { /* * mesh perr action frame format @@ -581,7 +656,7 @@ static int hwmp_send_rann(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], const uint8_t addr2[IEEE80211_ADDR_LEN], - const struct ieee80211_meshrann_ie *rann) + struct ieee80211_meshrann_ie *rann) { /* * mesh rann action frame format Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.c Fri May 29 18:46:57 2009 (r193045) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Fri May 29 18:48:18 2009 (r193046) @@ -878,7 +878,7 @@ mesh_recv_action(struct ieee80211_node * /* XXX: check if we are using airtime or aother algorithm */ - metric = ieee80211_airtime_calc(vap, ni); + metric = ieee80211_airtime_calc(ni); vargs.ptrarg = &metric; ieee80211_send_action(ni, IEEE80211_ACTION_CAT_MESHLMETRIC, @@ -1151,7 +1151,7 @@ ieee80211_add_meshpeer(uint8_t *frm, uin * Based on D3.0. */ uint32_t -ieee80211_airtime_calc(struct ieee80211vap *vap, struct ieee80211_node *ni) +ieee80211_airtime_calc(struct ieee80211_node *ni) { #define M_BITS 8 #define S_FACTOR (2 * M_BITS) Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_mesh.h Fri May 29 18:46:57 2009 (r193045) +++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Fri May 29 18:48:18 2009 (r193046) @@ -353,8 +353,7 @@ uint8_t * ieee80211_add_meshid(uint8_t * uint8_t * ieee80211_add_meshconf(uint8_t *, struct ieee80211vap *); uint8_t * ieee80211_add_meshpeer(uint8_t *, uint8_t, uint16_t, uint16_t, uint16_t); -uint32_t ieee80211_airtime_calc(struct ieee80211vap *, - struct ieee80211_node *); +uint32_t ieee80211_airtime_calc(struct ieee80211_node *); uint8_t * ieee80211_add_meshlmetric(uint8_t *, uint32_t); void ieee80211_create_mbss(struct ieee80211vap *, struct ieee80211_channel *); From owner-svn-src-projects@FreeBSD.ORG Fri May 29 19:03:47 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B40F91065674; Fri, 29 May 2009 19:03:47 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A2D548FC1D; Fri, 29 May 2009 19:03:47 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TJ3l20083624; Fri, 29 May 2009 19:03:47 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TJ3lxj083623; Fri, 29 May 2009 19:03:47 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <200905291903.n4TJ3lxj083623@svn.freebsd.org> From: Brooks Davis Date: Fri, 29 May 2009 19:03:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193048 - projects/ngroups/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 19:03:48 -0000 Author: brooks Date: Fri May 29 19:03:47 2009 New Revision: 193048 URL: http://svn.freebsd.org/changeset/base/193048 Log: Fix a botched merge in r193002 by removing an almost duplicate line. Modified: projects/ngroups/usr.sbin/jail/jail.c Modified: projects/ngroups/usr.sbin/jail/jail.c ============================================================================== --- projects/ngroups/usr.sbin/jail/jail.c Fri May 29 18:50:27 2009 (r193047) +++ projects/ngroups/usr.sbin/jail/jail.c Fri May 29 19:03:47 2009 (r193048) @@ -101,7 +101,7 @@ main(int argc, char **argv) struct iovec rparams[2]; struct passwd *pwd = NULL; gid_t *groups = NULL; - int ch, cmdarg, i, jail_set_flags, jid, ngroups; + int ch, cmdarg, i, jail_set_flags, jid, ngroups, ngroups_max; int hflag, iflag, Jflag, lflag, rflag, uflag, Uflag; char *ep, *jailname, *securelevel, *username, *JidFile; char errmsg[ERRMSG_SIZE]; @@ -119,7 +119,6 @@ main(int argc, char **argv) if ((groups = malloc(sizeof(gid_t) * ngroups_max)) == NULL) err(1, "malloc"); - while ((ch = getopt(argc, argv, "hiln:s:u:U:J:")) != -1) { while ((ch = getopt(argc, argv, "cdhilmn:r:s:u:U:J:")) != -1) { switch (ch) { case 'd': From owner-svn-src-projects@FreeBSD.ORG Fri May 29 19:27:52 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F1D2C106566B; Fri, 29 May 2009 19:27:52 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E067E8FC1B; Fri, 29 May 2009 19:27:52 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TJRqDg084287; Fri, 29 May 2009 19:27:52 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TJRqNS084286; Fri, 29 May 2009 19:27:52 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905291927.n4TJRqNS084286@svn.freebsd.org> From: Robert Watson Date: Fri, 29 May 2009 19:27:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193052 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 19:27:53 -0000 Author: rwatson Date: Fri May 29 19:27:52 2009 New Revision: 193052 URL: http://svn.freebsd.org/changeset/base/193052 Log: Ifdef locking the packet-dispatch and -processing paths so that the performance impact of that locking can be better characterized. Close a sched_pin() leak. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Fri May 29 19:18:41 2009 (r193051) +++ projects/pnet/sys/net/netisr2.c Fri May 29 19:27:52 2009 (r193052) @@ -106,6 +106,12 @@ static struct rmlock netisr_rmlock; #define NETISR_WLOCK() rm_wlock(&netisr_rmlock) #define NETISR_WUNLOCK() rm_wunlock(&netisr_rmlock) +/* + * Temporary define to determine whether we acquire the global read lock + * around packet dispatch and processing. + */ +/* #define NETISR2_LOCKING */ + SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLAG_RW, 0, "netisr2"); /*- @@ -699,7 +705,9 @@ netisr2_process_workstream_proto(struct static void swi_net(void *arg) { +#ifdef NETISR2_LOCKING struct rm_priotracker tracker; +#endif struct netisr_workstream *nwsp; u_int bits, prot; @@ -711,7 +719,9 @@ swi_net(void *arg) netisr_poll(); #endif +#ifdef NETISR2_LOCKING NETISR_RLOCK(&tracker); +#endif NWS_LOCK(nwsp); KASSERT(!(nwsp->nws_flags & NWS_RUNNING), ("swi_net: running")); if (nwsp->nws_flags & NWS_DISPATCHING) @@ -729,7 +739,9 @@ swi_net(void *arg) nwsp->nws_flags &= ~NWS_RUNNING; out: NWS_UNLOCK(nwsp); +#ifdef NETISR2_LOCKING NETISR_RUNLOCK(&tracker); +#endif #ifdef DEVICE_POLLING netisr_pollmore(); @@ -776,7 +788,9 @@ netisr2_queue_internal(u_int proto, stru struct netisr_work *npwp; int dosignal, error; +#ifdef NETISR2_LOCKING NETISR_LOCK_ASSERT(); +#endif KASSERT(cpuid < MAXCPU, ("netisr2_queue_internal: cpuid too big " "(%u, %u)", cpuid, MAXCPU)); @@ -795,13 +809,17 @@ netisr2_queue_internal(u_int proto, stru int netisr2_queue_src(u_int proto, uintptr_t source, struct mbuf *m) { +#ifdef NETISR2_LOCKING struct rm_priotracker tracker; +#endif u_int cpuid, error; KASSERT(proto < NETISR_MAXPROT, ("netisr2_queue_src: invalid proto %d", proto)); +#ifdef NETISR2_LOCKING NETISR_RLOCK(&tracker); +#endif KASSERT(np[proto].np_handler != NULL, ("netisr2_queue_src: invalid proto %d", proto)); @@ -810,7 +828,9 @@ netisr2_queue_src(u_int proto, uintptr_t error = netisr2_queue_internal(proto, m, cpuid); else error = ENOBUFS; +#ifdef NETISR2_LOCKING NETISR_RUNLOCK(&tracker); +#endif return (error); } @@ -837,7 +857,9 @@ netisr_queue(int proto, struct mbuf *m) int netisr2_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m) { +#ifdef NETISR2_LOCKING struct rm_priotracker tracker; +#endif struct netisr_workstream *nwsp; struct netisr_work *npwp; int dosignal, error; @@ -851,7 +873,9 @@ netisr2_dispatch_src(u_int proto, uintpt KASSERT(proto < NETISR_MAXPROT, ("netisr2_dispatch_src: invalid proto %u", proto)); +#ifdef NETISR2_LOCKING NETISR_RLOCK(&tracker); +#endif KASSERT(np[proto].np_handler != NULL, ("netisr2_dispatch_src: invalid proto %u", proto)); @@ -866,8 +890,8 @@ netisr2_dispatch_src(u_int proto, uintpt npwp->nw_dispatched++; npwp->nw_handled++; np[proto].np_handler(m); - NETISR_RUNLOCK(&tracker); - return (0); + error = 0; + goto out_unlock; } /* @@ -877,8 +901,8 @@ netisr2_dispatch_src(u_int proto, uintpt */ m = netisr2_select_cpuid(&np[proto], source, m, &cpuid); if (m == NULL) { - NETISR_RUNLOCK(&tracker); - return (ENOBUFS); + error = ENOBUFS; + goto out_unlock; } sched_pin(); if (!netisr_hybridxcpu_enable && (cpuid != curcpu)) @@ -900,9 +924,7 @@ netisr2_dispatch_src(u_int proto, uintpt NWS_UNLOCK(nws); if (dosignal) NWS_SIGNAL(nwsp); - sched_unpin(); - NETISR_RUNLOCK(&tracker); - return (error); + goto out_unpin; } /* @@ -938,13 +960,17 @@ netisr2_dispatch_src(u_int proto, uintpt NWS_UNLOCK(nwsp); if (dosignal) NWS_SIGNAL(nwsp); - NETISR_RUNLOCK(&tracker); - return (0); + error = 0; + goto out_unpin; queue_fallback: error = netisr2_queue_internal(proto, m, cpuid); +out_unpin: sched_unpin(); +out_unlock: +#ifdef NETISR2_LOCKING NETISR_RUNLOCK(&tracker); +#endif return (error); } From owner-svn-src-projects@FreeBSD.ORG Fri May 29 22:18:22 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55D3B106566C; Fri, 29 May 2009 22:18:22 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2A5868FC16; Fri, 29 May 2009 22:18:22 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TMIKoD088433; Fri, 29 May 2009 22:18:20 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TMIKL8088432; Fri, 29 May 2009 22:18:20 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905292218.n4TMIKL8088432@svn.freebsd.org> From: Robert Watson Date: Fri, 29 May 2009 22:18:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193069 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 22:18:22 -0000 Author: rwatson Date: Fri May 29 22:18:20 2009 New Revision: 193069 URL: http://svn.freebsd.org/changeset/base/193069 Log: Simplify out cross-CPU hybrid dispatch for the netisr 8.x merge candidate. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Fri May 29 22:11:22 2009 (r193068) +++ projects/pnet/sys/net/netisr2.c Fri May 29 22:18:20 2009 (r193069) @@ -115,7 +115,7 @@ static struct rmlock netisr_rmlock; SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLAG_RW, 0, "netisr2"); /*- - * Four direct dispatch policies are supported: + * Three direct dispatch policies are supported: * * - Always defer: all work is scheduled for a netisr, regardless of context. * (direct_enable == 0) @@ -127,12 +127,7 @@ SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLA * - Hybrid: if the executing context allows direct dispatch, and we're * running on the CPU the work would be done on, then direct dispatch if it * wouldn't violate ordering constraints on the workstream. - * (direct_enable != 0 && direct_force == 0 && hybridxcpu_enable == 0) - * - * - Hybrid with cross-CPU dispatch: if the executing context allows direct - * dispatch, then direct dispatch if it wouldn't violate ordering - * constraints on the workstream. - * (direct_enable != 0 && direct_force == 0 && hybridxcpu_enable != 0) + * (direct_enable != 0 && direct_force == 0) * * Notice that changing the global policy could lead to short periods of * disordered processing, but this is considered acceptable as compared to @@ -146,10 +141,6 @@ static int netisr_direct_enable = 1; /* SYSCTL_INT(_net_isr2, OID_AUTO, direct_enable, CTLFLAG_RW, &netisr_direct_enable, 0, "Enable direct dispatch"); -static int netisr_hybridxcpu_enable = 1; /* Enable cross-CPU dispatch. */ -SYSCTL_INT(_net_isr2, OID_AUTO, hybridxcpu_enable, CTLFLAG_RW, - &netisr_hybridxcpu_enable, 0, "Enable cross-CPU hybrid direct dispatch."); - /* * Allow the administrator to limit the number of threads (CPUs) to use for * netisr2. Notice that we don't check netisr_maxthreads before creating the @@ -905,7 +896,7 @@ netisr2_dispatch_src(u_int proto, uintpt goto out_unlock; } sched_pin(); - if (!netisr_hybridxcpu_enable && (cpuid != curcpu)) + if (cpuid != curcpu) goto queue_fallback; nwsp = &nws[cpuid]; npwp = &nwsp->nws_work[proto]; From owner-svn-src-projects@FreeBSD.ORG Fri May 29 22:28:28 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5AA031065673; Fri, 29 May 2009 22:28:28 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2EC048FC0C; Fri, 29 May 2009 22:28:28 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TMSRTx088763; Fri, 29 May 2009 22:28:27 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TMSRUG088762; Fri, 29 May 2009 22:28:27 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905292228.n4TMSRUG088762@svn.freebsd.org> From: Robert Watson Date: Fri, 29 May 2009 22:28:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193071 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 22:28:28 -0000 Author: rwatson Date: Fri May 29 22:28:27 2009 New Revision: 193071 URL: http://svn.freebsd.org/changeset/base/193071 Log: Trim hybrid cross-cpu counter, related tweaks. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Fri May 29 22:19:45 2009 (r193070) +++ projects/pnet/sys/net/netisr2.c Fri May 29 22:28:27 2009 (r193071) @@ -179,7 +179,7 @@ struct netisr_proto { const char *np_name; /* Character string protocol name. */ netisr_t *np_handler; /* Protocol handler. */ netisr_m2flow_t *np_m2flow; /* Query flow for untagged packet. */ - netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ + netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ u_int np_qlimit; /* Maximum per-CPU queue depth. */ u_int np_policy; /* Work placement policy. */ }; @@ -214,7 +214,6 @@ struct netisr_work { */ u_int64_t nw_dispatched; /* Number of direct dispatches. */ u_int64_t nw_hybrid_dispatched; /* "" hybrid dispatches. */ - u_int64_t nw_hybrid_xcpudispatched; /* "" cross-CPU hybrid. */ u_int64_t nw_qdrops; /* "" drops. */ u_int64_t nw_queued; /* "" enqueues. */ u_int64_t nw_handled; /* "" handled in worker. */ @@ -930,10 +929,7 @@ netisr2_dispatch_src(u_int proto, uintpt NWS_LOCK(nwsp); nwsp->nws_flags &= ~NWS_DISPATCHING; npwp->nw_handled++; - if (curcpu == cpuid) - npwp->nw_hybrid_dispatched++; - else - npwp->nw_hybrid_xcpudispatched++; + npwp->nw_hybrid_dispatched++; /* * If other work was enqueued by another thread while we were direct @@ -1088,9 +1084,8 @@ DB_SHOW_COMMAND(netisr2, db_show_netisr2 struct netisr_work *nwp; int cpu, first, proto; - db_printf("%3s %6s %5s %5s %5s %8s %8s %8s %8s %8s\n", "CPU", - "Proto", "Len", "WMark", "Max", "Disp", "HDisp", "XHDisp", - "Drop", "Queue"); + db_printf("%3s %6s %5s %5s %5s %8s %8s %8s %8s\n", "CPU", "Proto", + "Len", "WMark", "Max", "Disp", "HDisp", "Drop", "Queue"); for (cpu = 0; cpu < MAXCPU; cpu++) { nwsp = &nws[cpu]; if (nwsp->nws_intr_event == NULL) @@ -1106,12 +1101,11 @@ DB_SHOW_COMMAND(netisr2, db_show_netisr2 } else db_printf("%3s ", ""); db_printf( - "%6s %5d %5d %5d %8ju %8ju %8ju %8ju %8ju\n", + "%6s %5d %5d %5d %8ju %8ju %8ju %8ju\n", np[proto].np_name, nwp->nw_len, nwp->nw_watermark, nwp->nw_qlimit, nwp->nw_dispatched, nwp->nw_hybrid_dispatched, - nwp->nw_hybrid_xcpudispatched, nwp->nw_qdrops, - nwp->nw_queued); + nwp->nw_qdrops, nwp->nw_queued); } } } From owner-svn-src-projects@FreeBSD.ORG Sat May 30 12:26:12 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BF75106566C; Sat, 30 May 2009 12:26:12 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0E6AF8FC12; Sat, 30 May 2009 12:26:12 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UCQBwk007975; Sat, 30 May 2009 12:26:11 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UCQBMH007974; Sat, 30 May 2009 12:26:11 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301226.n4UCQBMH007974@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 12:26:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193091 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 12:26:12 -0000 Author: rwatson Date: Sat May 30 12:26:11 2009 New Revision: 193091 URL: http://svn.freebsd.org/changeset/base/193091 Log: Various tidying of netisr2 as it becomes a merge candidate. Modified: projects/pnet/sys/net/netisr2.c Modified: projects/pnet/sys/net/netisr2.c ============================================================================== --- projects/pnet/sys/net/netisr2.c Sat May 30 11:14:41 2009 (r193090) +++ projects/pnet/sys/net/netisr2.c Sat May 30 12:26:11 2009 (r193091) @@ -33,7 +33,14 @@ __FBSDID("$FreeBSD$"); * registered protocol handlers. Callers pass a protocol identifier and * packet to netisr2, along with a direct dispatch hint, and work will either * be immediately processed with the registered handler, or passed to a - * kernel software interrupt (SWI) thread for deferred dispatch. + * kernel software interrupt (SWI) thread for deferred dispatch. Callers + * will generally select one or the other based on: + * + * - Might directly dispatching a netisr handler lead to code reentrance or + * lock recursion, such as entering the socket code from the socket code. + * - Might directly dispatching a netisr handler lead to recursive + * processing, such as when decapsulating several wrapped layers of tunnel + * information (IPSEC within IPSEC within ...). * * Maintaining ordering for protocol streams is a critical design concern. * Enforcing ordering limits the opportunity for concurrency, but maintains @@ -91,25 +98,23 @@ __FBSDID("$FreeBSD$"); * - The nws array, including all fields of struct netisr_worker. * - The nws_array array. * + * Note: the NETISR2_LOCKING define controls whether read locks are acquired + * in packet processing paths requiring netisr registration stability. This + * is disabled by default as it can lead to a measurable performance + * degradation even with rmlocks (3%-6% for loopback ping-ping traffic), and + * because netisr registration and unregistration is extremely rare at + * runtime. If it becomes more common, this decision should be revisited. + * * XXXRW: rmlocks don't support assertions. */ static struct rmlock netisr_rmlock; #define NETISR_LOCK_INIT() rm_init_flags(&netisr_rmlock, "netisr", \ RM_NOWITNESS) -#if 0 -#define NETISR_LOCK_ASSERT() rm_assert(&netisr_rmlock, RW_LOCKED) -#else #define NETISR_LOCK_ASSERT() -#endif #define NETISR_RLOCK(tracker) rm_rlock(&netisr_rmlock, (tracker)) #define NETISR_RUNLOCK(tracker) rm_runlock(&netisr_rmlock, (tracker)) #define NETISR_WLOCK() rm_wlock(&netisr_rmlock) #define NETISR_WUNLOCK() rm_wunlock(&netisr_rmlock) - -/* - * Temporary define to determine whether we acquire the global read lock - * around packet dispatch and processing. - */ /* #define NETISR2_LOCKING */ SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLAG_RW, 0, "netisr2"); @@ -118,19 +123,18 @@ SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLA * Three direct dispatch policies are supported: * * - Always defer: all work is scheduled for a netisr, regardless of context. - * (direct_enable == 0) - * - * - Always direct: if the executing context allows direct dispatch, always - * direct dispatch. - * (direct_enable != 0 && direct_force != 0) + * (!direct_enable) * * - Hybrid: if the executing context allows direct dispatch, and we're * running on the CPU the work would be done on, then direct dispatch if it * wouldn't violate ordering constraints on the workstream. - * (direct_enable != 0 && direct_force == 0) + * (direct_enable && !direct_force) + * + * - Always direct: if the executing context allows direct dispatch, always + * direct dispatch. (direct_enable && direct_force) * * Notice that changing the global policy could lead to short periods of - * disordered processing, but this is considered acceptable as compared to + * misordered processing, but this is considered acceptable as compared to * the complexity of enforcing ordering during policy changes. */ static int netisr_direct_force = 1; /* Always direct dispatch. */ @@ -143,10 +147,9 @@ SYSCTL_INT(_net_isr2, OID_AUTO, direct_e /* * Allow the administrator to limit the number of threads (CPUs) to use for - * netisr2. Notice that we don't check netisr_maxthreads before creating the - * thread for CPU 0, so in practice we ignore values <= 1. This must be set - * as a tunable, no run-time reconfiguration yet. We will create at most one - * thread per available CPU. + * netisr2. We don't check netisr_maxthreads before creating the thread for + * CPU 0, so in practice we ignore values <= 1. This must be set at boot. + * We will create at most one thread per CPU. */ static int netisr_maxthreads = 1; /* Max number of threads. */ TUNABLE_INT("net.isr2.maxthreads", &netisr_maxthreads); @@ -164,14 +167,13 @@ SYSCTL_INT(_net_isr2, OID_AUTO, bindthre * initial configuration and later modification using netisr2_setqlimit(). */ #define NETISR_DEFAULT_MAXQLIMIT 10240 -static int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; -TUNABLE_INT("net.isr2.maxqlimit", &netisr_maxqlimit); -SYSCTL_INT(_net_isr2, OID_AUTO, maxqlimit, CTLFLAG_RW, +static const int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; +SYSCTL_INT(_net_isr2, OID_AUTO, maxqlimit, CTLFLAG_RDONLY, &netisr_maxqlimit, 0, "Maximum netisr2 per-protocol, per-CPU queue depth."); /* - * Each protocol is described by an instance of netisr_proto, which holds all + * Each protocol is described by a struct netisr_proto, which holds all * global per-protocol information. This data structure is set up by * netisr_register(), and derived from the public struct netisr_handler. */ @@ -196,8 +198,6 @@ static struct netisr_proto np[NETISR_MAX * Protocol-specific work for each workstream is described by struct * netisr_work. Each work descriptor consists of an mbuf queue and * statistics. - * - * XXXRW: Using a lock-free linked list here might be useful. */ struct netisr_work { /* @@ -226,8 +226,6 @@ struct netisr_work { * workstream can be processd in other threads during direct dispatch; * concurrent processing is prevented by the NWS_RUNNING flag, which * indicates that a thread is already processing the work queue. - * - * #workstreams must be <= #CPUs. */ struct netisr_workstream { struct intr_event *nws_intr_event; /* Handler for stream. */ @@ -256,8 +254,8 @@ static struct netisr_workstream nws[MA static u_int nws_array[MAXCPU]; /* - * Number of registered workstreams. Should be the number of running CPUs - * once fully started. + * Number of registered workstreams. Will be at most the number of running + * CPUs once fully started. */ static u_int nws_count; @@ -326,17 +324,6 @@ netisr2_register(const struct netisr_han proto = nhp->nh_proto; name = nhp->nh_name; - KASSERT(proto < NETISR_MAXPROT, - ("netisr2_register(%d, %s): protocol too big", proto, name)); - NETISR_WLOCK(); - - /* - * Test that no existing registration exists for this protocol. - */ - KASSERT(np[proto].np_name == NULL, - ("netisr2_register(%d, %s): name present", proto, name)); - KASSERT(np[proto].np_handler == NULL, - ("netisr2_register(%d, %s): handler present", proto, name)); /* * Test that the requested registration is valid. @@ -362,10 +349,18 @@ netisr2_register(const struct netisr_han "%s", name)); KASSERT(nhp->nh_qlimit != 0, ("netisr2_register: nh_qlimit 0 for %s", name)); + KASSERT(proto < NETISR_MAXPROT, + ("netisr2_register(%d, %s): protocol too big", proto, name)); /* - * Initialize global and per-workstream protocol state. + * Test that no existing registration exists for this protocol. */ + NETISR_WLOCK(); + KASSERT(np[proto].np_name == NULL, + ("netisr2_register(%d, %s): name present", proto, name)); + KASSERT(np[proto].np_handler == NULL, + ("netisr2_register(%d, %s): handler present", proto, name)); + np[proto].np_name = name; np[proto].np_handler = nhp->nh_handler; np[proto].np_m2flow = nhp->nh_m2flow; @@ -404,6 +399,7 @@ netisr2_clearqdrops(const struct netisr_ #endif KASSERT(proto < NETISR_MAXPROT, ("netisr_clearqdrops(%d): protocol too big for %s", proto, name)); + NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, ("netisr_clearqdrops(%d): protocol not registered for %s", proto, @@ -436,6 +432,7 @@ netisr2_getqdrops(const struct netisr_ha #endif KASSERT(proto < NETISR_MAXPROT, ("netisr_getqdrops(%d): protocol too big for %s", proto, name)); + NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, ("netisr_getqdrops(%d): protocol not registered for %s", proto, @@ -466,6 +463,7 @@ netisr2_getqlimit(const struct netisr_ha #endif KASSERT(proto < NETISR_MAXPROT, ("netisr_getqlimit(%d): protocol too big for %s", proto, name)); + NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, ("netisr_getqlimit(%d): protocol not registered for %s", proto, @@ -497,6 +495,7 @@ netisr2_setqlimit(const struct netisr_ha #endif KASSERT(proto < NETISR_MAXPROT, ("netisr_setqlimit(%d): protocol too big for %s", proto, name)); + NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, ("netisr_setqlimit(%d): protocol not registered for %s", proto, @@ -552,6 +551,7 @@ netisr2_unregister(const struct netisr_h #endif KASSERT(proto < NETISR_MAXPROT, ("netisr_unregister(%d): protocol too big for %s", proto, name)); + NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, ("netisr_unregister(%d): protocol not registered for %s", proto, @@ -708,7 +708,6 @@ swi_net(void *arg) ("swi_net: device_polling but nws_count != 1")); netisr_poll(); #endif - #ifdef NETISR2_LOCKING NETISR_RLOCK(&tracker); #endif @@ -718,7 +717,6 @@ swi_net(void *arg) goto out; nwsp->nws_flags |= NWS_RUNNING; nwsp->nws_flags &= ~NWS_SCHEDULED; - while ((bits = nws->nws_pendingbits) != 0) { while ((prot = ffs(bits)) != 0) { prot--; @@ -732,7 +730,6 @@ out: #ifdef NETISR2_LOCKING NETISR_RUNLOCK(&tracker); #endif - #ifdef DEVICE_POLLING netisr_pollmore(); #endif From owner-svn-src-projects@FreeBSD.ORG Sat May 30 15:07:48 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C4211065678; Sat, 30 May 2009 15:07:48 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1FB0E8FC15; Sat, 30 May 2009 15:07:48 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UF7l3m011215; Sat, 30 May 2009 15:07:47 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UF7lOB011214; Sat, 30 May 2009 15:07:47 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905301507.n4UF7lOB011214@svn.freebsd.org> From: Rui Paulo Date: Sat, 30 May 2009 15:07:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193095 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 15:07:48 -0000 Author: rpaulo Date: Sat May 30 15:07:47 2009 New Revision: 193095 URL: http://svn.freebsd.org/changeset/base/193095 Log: * add proper handling for the header of a mesh frame. * remove code that was moved to the hwmp module Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_output.c Modified: projects/mesh11s/sys/net80211/ieee80211_output.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_output.c Sat May 30 14:59:08 2009 (r193094) +++ projects/mesh11s/sys/net80211/ieee80211_output.c Sat May 30 15:07:47 2009 (r193095) @@ -494,13 +494,28 @@ ieee80211_send_setup( IEEE80211_ADDR_COPY(wh->i_addr3, sa); break; case IEEE80211_M_WDS: - case IEEE80211_M_MBSS: /* XXX confirm */ wh->i_fc[1] = IEEE80211_FC1_DIR_DSTODS; IEEE80211_ADDR_COPY(wh->i_addr1, da); IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr); IEEE80211_ADDR_COPY(wh->i_addr3, da); IEEE80211_ADDR_COPY(WH4(wh)->i_addr4, sa); break; + case IEEE80211_M_MBSS: + /* XXX add support for proxied addresses */ + if (IEEE80211_IS_MULTICAST(wh->i_addr1)) { + wh->i_fc[1] = IEEE80211_FC1_DIR_FROMDS; + /* XXX next hop */ + IEEE80211_ADDR_COPY(wh->i_addr1, da); + IEEE80211_ADDR_COPY(wh->i_addr2, + vap->iv_myaddr); + } else { + wh->i_fc[1] = IEEE80211_FC1_DIR_DSTODS; + IEEE80211_ADDR_COPY(wh->i_addr2, + vap->iv_myaddr); + IEEE80211_ADDR_COPY(wh->i_addr3, da); + IEEE80211_ADDR_COPY(WH4(wh)->i_addr4, sa); + } + break; case IEEE80211_M_MONITOR: /* NB: to quiet compiler */ break; } @@ -577,20 +592,6 @@ ieee80211_send_action(struct ieee80211_n + sizeof(struct ieee80211_meshconf_ie) + sizeof(struct ieee80211_meshpeer_ie); break; - case IEEE80211_ACTION_CAT_MESHPATH: - switch (action) { - case IEEE80211_ACTION_MESHPATH_REQ: - /* XXX more than one destination */ - addsize = sizeof(struct ieee80211_meshpreq_ie); - break; - case IEEE80211_ACTION_MESHPATH_REP: - addsize = sizeof(struct ieee80211_meshprep_ie); - break; - case IEEE80211_ACTION_MESHPATH_ERR: - addsize = sizeof(struct ieee80211_meshperr_ie); - break; - } - break; } m = ieee80211_getmgtframe(&frm, ic->ic_headroom + sizeof(struct ieee80211_frame), @@ -781,39 +782,6 @@ ieee80211_send_action(struct ieee80211_n } } break; - case IEEE80211_ACTION_CAT_MESHPATH: - switch (action) { - /* - * mesh path request action frame format: - * [1] action - * [1] category - * [tlv] mesh path request - */ - case IEEE80211_ACTION_MESHPATH_REQ: - break; - /* - * mesh path reply action frame format: - * [1] action - * [1] category - * [tlv] mesh path reply - */ - case IEEE80211_ACTION_MESHPATH_REP: - { - struct ieee80211_meshprep_ie *prep; - - prep = vargs.ptrarg; - IEEE80211_NOTE(vap, - IEEE80211_MSG_ACTION | IEEE80211_MSG_MESH, ni, - "send PATH REPLY action: flags 0x%x, " - "hopcount 0x%x, ttl 0x%x, " - "seq 0x%x, lifetime 0x%x", prep->prep_flags, - prep->prep_hopcount, prep->prep_ttl, - prep->prep_targetseq, prep->prep_lifetime); - frm = ieee80211_add_meshprep(frm, prep); - break; - } - } - break; default: badaction: IEEE80211_NOTE(vap, From owner-svn-src-projects@FreeBSD.ORG Sat May 30 15:19:41 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3728F1065670; Sat, 30 May 2009 15:19:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 256BB8FC15; Sat, 30 May 2009 15:19:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UFJfRN011520; Sat, 30 May 2009 15:19:41 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UFJfPr011519; Sat, 30 May 2009 15:19:41 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301519.n4UFJfPr011519@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 15:19:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193097 - projects/pnet/sys/netinet X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 15:19:41 -0000 Author: rwatson Date: Sat May 30 15:19:40 2009 New Revision: 193097 URL: http://svn.freebsd.org/changeset/base/193097 Log: Fix white space. Submitted by: bz Modified: projects/pnet/sys/netinet/ip_input.c Modified: projects/pnet/sys/netinet/ip_input.c ============================================================================== --- projects/pnet/sys/netinet/ip_input.c Sat May 30 15:14:44 2009 (r193096) +++ projects/pnet/sys/netinet/ip_input.c Sat May 30 15:19:40 2009 (r193097) @@ -297,8 +297,8 @@ sysctl_netinet_intr_queue_drops(SYSCTL_H return (EINVAL); netisr2_clearqdrops(&ip_nh); return (0); - } + SYSCTL_PROC(_net_inet_ip, IPCTL_INTRQDROPS, intr_queue_drops, CTLTYPE_INT|CTLFLAG_RD, 0, 0, sysctl_netinet_intr_queue_drops, "I", "Number of packets dropped from the IP input queue"); From owner-svn-src-projects@FreeBSD.ORG Sat May 30 16:26:08 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E6A310656D6; Sat, 30 May 2009 16:26:08 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BEE38FC0C; Sat, 30 May 2009 16:26:08 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UGQ8pv012810; Sat, 30 May 2009 16:26:08 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UGQ8Sv012807; Sat, 30 May 2009 16:26:08 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200905301626.n4UGQ8Sv012807@svn.freebsd.org> From: Rui Paulo Date: Sat, 30 May 2009 16:26:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193099 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 16:26:08 -0000 Author: rpaulo Date: Sat May 30 16:26:08 2009 New Revision: 193099 URL: http://svn.freebsd.org/changeset/base/193099 Log: * move struct ieee80211_hwmp_fi to ieee80211_hwmp.h so we can add one per vap * add initial hanlding of root annoucement frames, the proactive side of HWMP * add initial handling of PERR frames Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_hwmp.h projects/mesh11s/sys/net80211/ieee80211_var.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Sat May 30 15:20:25 2009 (r193098) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Sat May 30 16:26:08 2009 (r193099) @@ -63,20 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include -/* - * HWMP Forwarding Information table. - * XXX: this should be in vap - */ -struct ieee80211_hwmp_fi { - TAILQ_ENTRY(ieee80211_hwmp_fi) fi_next; - uint8_t fi_dest[IEEE80211_ADDR_LEN]; - ieee80211_seq fi_seq; /* HWMP sequence number */ - uint8_t fi_nexthop[IEEE80211_ADDR_LEN]; - uint32_t fi_metric; /* Path Metric */ - uint32_t fi_nhops; /* Number of Hops */ - uint8_t fi_prevhop[IEEE80211_ADDR_LEN]; - uint32_t fi_lifetime; -}; TAILQ_HEAD(, ieee80211_hwmp_fi) ieee80211_hwmp_ft; static int ieee80211_hwmp_send_action(struct ieee80211_node *, @@ -99,11 +85,9 @@ static int hwmp_send_perr(struct ieee802 struct ieee80211_meshperr_ie *); static void hwmp_recv_rann(struct ieee80211vap *, struct ieee80211_node *, const struct ieee80211_meshrann_ie *); -#ifdef notyet static int hwmp_send_rann(struct ieee80211_node *, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], struct ieee80211_meshrann_ie *); -#endif static int ieee80211_hwmp_maxhops = 31; #ifdef notyet @@ -111,9 +95,11 @@ static int ieee80211_hwmp_maxhopstime = static int ieee80211_hwmp_maxprepretries = 3; static int ieee80211_hwmp_prepminint = 100; static int ieee80211_hwmp_perrminint = 100; +#endif static int ieee80211_hwmp_roottimeout = 5000; +#ifdef notyet static int ieee80211_hwmp_pathtimeout = 5000; -static int ieee80211_hwmp_rootmode = 0; +static int ieee80211_hwmp_rootmode = 0; /* XXX move to vap */ static int ieee80211_hwmp_pathtoroottimeout = 5000; static int ieee80211_hmwp_rootint = 2000; static int ieee80211_hwmp_rannint = 1000; @@ -515,9 +501,9 @@ hwmp_recv_preq(struct ieee80211vap *vap, } } } -#undef PREQ_TFLAGS -#undef PREQ_TADDR -#undef PREQ_TSEQ +#undef PREQ_TFLAGS +#undef PREQ_TADDR +#undef PREQ_TSEQ static inline int hwmp_send_preq(struct ieee80211_node *ni, @@ -617,13 +603,39 @@ hwmp_send_prep(struct ieee80211_node *ni sizeof(*prep)); } +#define PERR_DADDR(n) perr->perr_dests[n].dest_addr +#define PREQ_DSEQ(n) perr->perr_dests[n].dest_seq static void hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshperr_ie *perr) { + struct ieee80211_hwmp_fi *fi; +/* struct ieee80211_meshperr_ie pperr;*/ -} + /* + * Acceptance criteria: check if we received a PERR from a + * neighbor and forwarding is 1. + */ + if (ni == vap->iv_bss || + ni->ni_mlstate != IEEE80211_NODE_MESH_ESTABLISHED || + !ieee80211_mesh_forwarding) + return; + + fi = NULL; + /*HWMP_LOCK();*/ + TAILQ_FOREACH(fi, &ieee80211_hwmp_ft, fi_next) { + if (IEEE80211_ADDR_EQ(PERR_DADDR(0), fi->fi_dest)) + break; + } + + if (fi == NULL) + return; + + /* + * Propagate the PERR. + */ +} static inline int hwmp_send_perr(struct ieee80211_node *ni, @@ -640,6 +652,9 @@ hwmp_send_perr(struct ieee80211_node *ni * [1] category * [tlv] mesh path error */ + perr->perr_ie = IEEE80211_ELEMID_MESHPERR; + perr->perr_len = sizeof(struct ieee80211_meshperr_ie) - 2; + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&perr, sizeof(*perr)); } @@ -648,10 +663,56 @@ static void hwmp_recv_rann(struct ieee80211vap *vap, struct ieee80211_node *ni, const struct ieee80211_meshrann_ie *rann) { + struct ieee80211_hwmp_fi *fi; + /* + * Acceptance criteria: check the HWMP sequence number + * and the path metric is better than what we have. + */ + fi = NULL; + /*HWMP_LOCK();*/ + TAILQ_FOREACH(fi, &ieee80211_hwmp_ft, fi_next) { + if (IEEE80211_ADDR_EQ(rann->rann_addr, fi->fi_dest)) + break; + } + /*HWMP_UNLOCK();*/ + + if (fi == NULL) { + struct ieee80211_meshpreq_ie preq; + + /* + * Try to establish a path to this root mesh station. + */ + preq.preq_flags = 0; + preq.preq_hopcount = 0; + preq.preq_ttl = ieee80211_mesh_ttl; + IEEE80211_ADDR_COPY(&preq.preq_origaddr, + vap->iv_myaddr); + preq.preq_origseq = 0; /* XXX */ + preq.preq_targets[0].target_flags |= + IEEE80211_MESHPREQ_TFLAGS_TO; + IEEE80211_ADDR_COPY(preq.preq_targets[0].target_addr, + rann->rann_addr); + preq.preq_targets[0].target_seq = rann->rann_seq; + preq.preq_lifetime = ieee80211_hwmp_roottimeout; + preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL; + hwmp_send_preq(ni, vap->iv_myaddr, broadcastaddr, + &preq); + /* + * We have a path for this Root Mesh station, so + * propagate the RANN if forwarding is enabled. + */ + } else if (rann->rann_ttl > 1 && ieee80211_mesh_forwarding) { + struct ieee80211_meshrann_ie prann; + + memcpy(&prann, rann, sizeof(prann)); + prann.rann_hopcount += 1; + prann.rann_ttl -= 1; + prann.rann_metric += ieee80211_airtime_calc(ni); + hwmp_send_rann(ni, broadcastaddr, vap->iv_myaddr, &prann); + } } -#ifdef notyet static int hwmp_send_rann(struct ieee80211_node *ni, const uint8_t addr1[IEEE80211_ADDR_LEN], @@ -667,10 +728,12 @@ hwmp_send_rann(struct ieee80211_node *ni * [1] category * [tlv] root annoucement */ + rann->rann_ie = IEEE80211_ELEMID_MESHRANN; + rann->rann_len = sizeof(struct ieee80211_meshrann_ie) - 2; + return ieee80211_hwmp_send_action(ni, addr1, addr2, (uint8_t *)&rann, sizeof(*rann)); } -#endif static int hwmp_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq) Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.h Sat May 30 15:20:25 2009 (r193098) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.h Sat May 30 16:26:08 2009 (r193099) @@ -31,6 +31,20 @@ #ifndef _NET80211_IEEE80211_HWMP_H_ #define _NET80211_IEEE80211_HWMP_H_ +/* + * HWMP Forwarding Information table, part of each VAP. + */ +struct ieee80211_hwmp_fi { + TAILQ_ENTRY(ieee80211_hwmp_fi) fi_next; + uint8_t fi_dest[IEEE80211_ADDR_LEN]; + ieee80211_seq fi_seq; /* HWMP sequence number */ + uint8_t fi_nexthop[IEEE80211_ADDR_LEN]; + uint32_t fi_metric; /* Path Metric */ + uint32_t fi_nhops; /* Number of Hops */ + uint8_t fi_prevhop[IEEE80211_ADDR_LEN]; + uint32_t fi_lifetime; +}; + void ieee80211_hwmp_recv_action(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *); uint8_t * ieee80211_add_meshprep(uint8_t *, Modified: projects/mesh11s/sys/net80211/ieee80211_var.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_var.h Sat May 30 15:20:25 2009 (r193098) +++ projects/mesh11s/sys/net80211/ieee80211_var.h Sat May 30 16:26:08 2009 (r193099) @@ -53,6 +53,7 @@ #include #include #include +#include /* for ieee80211_hwmp_fi */ #define IEEE80211_TXPOWER_MAX 100 /* .5 dbM (XXX units?) */ #define IEEE80211_TXPOWER_MIN 0 /* kill radio */ From owner-svn-src-projects@FreeBSD.ORG Sat May 30 17:39:50 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D211D106564A; Sat, 30 May 2009 17:39:50 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BDC638FC14; Sat, 30 May 2009 17:39:50 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UHdo7x014405; Sat, 30 May 2009 17:39:50 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UHdo5t014399; Sat, 30 May 2009 17:39:50 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301739.n4UHdo5t014399@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 17:39:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193102 - in projects/pnet/sys: conf i386/conf kern net netatalk netinet netinet6 netipsec netipx netnatm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 17:39:51 -0000 Author: rwatson Date: Sat May 30 17:39:50 2009 New Revision: 193102 URL: http://svn.freebsd.org/changeset/base/193102 Log: The netisr2 code is now settling out, so replace the existing netisr code with it entirely, and disable various compatibility mode parts for the old code. More to do but this is the basic file move and make it build commit. Discussed with: bz Deleted: projects/pnet/sys/i386/conf/NETISR2 projects/pnet/sys/net/netisr2.c projects/pnet/sys/net/netisr2.h Modified: projects/pnet/sys/conf/NOTES projects/pnet/sys/conf/files projects/pnet/sys/conf/options projects/pnet/sys/kern/kern_poll.c projects/pnet/sys/net/netisr.c projects/pnet/sys/net/netisr.h projects/pnet/sys/net/rtsock.c projects/pnet/sys/netatalk/ddp_usrreq.c projects/pnet/sys/netinet/if_ether.c projects/pnet/sys/netinet/igmp.c projects/pnet/sys/netinet/ip_divert.c projects/pnet/sys/netinet/ip_input.c projects/pnet/sys/netinet6/ip6_input.c projects/pnet/sys/netipsec/ipsec_input.c projects/pnet/sys/netipx/ipx_input.c projects/pnet/sys/netnatm/natm_proto.c Modified: projects/pnet/sys/conf/NOTES ============================================================================== --- projects/pnet/sys/conf/NOTES Sat May 30 17:26:55 2009 (r193101) +++ projects/pnet/sys/conf/NOTES Sat May 30 17:39:50 2009 (r193102) @@ -512,11 +512,6 @@ options HWPMC_HOOKS # Other necessary # NETWORKING OPTIONS # -# Support for parallel netisr threads. -# -options NETISR2 - -# # Protocol families # options INET #Internet communications protocols Modified: projects/pnet/sys/conf/files ============================================================================== --- projects/pnet/sys/conf/files Sat May 30 17:26:55 2009 (r193101) +++ projects/pnet/sys/conf/files Sat May 30 17:39:50 2009 (r193102) @@ -2157,7 +2157,6 @@ net/if_vlan.c optional vlan net/mppcc.c optional netgraph_mppc_compression net/mppcd.c optional netgraph_mppc_compression net/netisr.c standard -net/netisr2.c optional netisr2 net/pfil.c optional ether | inet net/radix.c standard net/radix_mpath.c standard Modified: projects/pnet/sys/conf/options ============================================================================== --- projects/pnet/sys/conf/options Sat May 30 17:26:55 2009 (r193101) +++ projects/pnet/sys/conf/options Sat May 30 17:39:50 2009 (r193102) @@ -413,7 +413,6 @@ MBUF_STRESS_TEST MROUTING opt_mrouting.h NCP NETATALK opt_atalk.h -NETISR2 opt_netisr.h NFSLOCKD RADIX_MPATH opt_mpath.h ROUTETABLES opt_route.h Modified: projects/pnet/sys/kern/kern_poll.c ============================================================================== --- projects/pnet/sys/kern/kern_poll.c Sat May 30 17:26:55 2009 (r193101) +++ projects/pnet/sys/kern/kern_poll.c Sat May 30 17:39:50 2009 (r193102) @@ -28,7 +28,6 @@ #include __FBSDID("$FreeBSD$"); -#include "opt_netisr.h" #include "opt_route.h" #include "opt_device_polling.h" @@ -46,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include /* for IFF_* flags */ #include /* for NETISR_POLL */ -#include #include #include @@ -110,10 +108,8 @@ SYSCTL_NODE(_kern, OID_AUTO, polling, CT SYSCTL_UINT(_kern_polling, OID_AUTO, burst, CTLFLAG_RD, &poll_burst, 0, "Current polling burst size"); -#ifdef NETISR2 static int netisr_poll_scheduled; static int netisr_pollmore_scheduled; -#endif static int poll_burst_max_sysctl(SYSCTL_HANDLER_ARGS) { @@ -269,10 +265,6 @@ init_device_poll(void) { mtx_init(&poll_mtx, "polling", NULL, MTX_DEF); -#ifndef NETISR2 - netisr_register(NETISR_POLL, (netisr_t *)netisr_poll, NULL, 0); - netisr_register(NETISR_POLLMORE, (netisr_t *)netisr_pollmore, NULL, 0); -#endif } SYSINIT(device_poll, SI_SUB_CLOCKS, SI_ORDER_MIDDLE, init_device_poll, NULL); @@ -321,13 +313,9 @@ hardclock_device_poll(void) if (phase != 0) suspect++; phase = 1; -#ifdef NETISR2 netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; netisr2_sched_poll(); -#else - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); -#endif phase = 2; } if (pending_polls++ > 0) @@ -378,22 +366,16 @@ netisr_pollmore() int kern_load; mtx_lock(&poll_mtx); -#ifdef NETISR2 if (!netisr_pollmore_scheduled) { mtx_unlock(&poll_mtx); return; } netisr_pollmore_scheduled = 0; -#endif phase = 5; if (residual_burst > 0) { -#ifdef NETISR2 netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; netisr2_sched_poll(); -#else - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); -#endif mtx_unlock(&poll_mtx); /* will run immediately on return, followed by netisrs */ return; @@ -423,21 +405,16 @@ netisr_pollmore() poll_burst -= (poll_burst / 8); if (poll_burst < 1) poll_burst = 1; -#ifdef NETISR2 netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; netisr2_sched_poll(); -#else - schednetisrbits(1 << NETISR_POLL | 1 << NETISR_POLLMORE); -#endif phase = 6; } mtx_unlock(&poll_mtx); } /* - * netisr_poll is scheduled by schednetisr when appropriate, typically once - * per tick. + * netisr_poll is typically scheduled once per tick. */ void netisr_poll(void) @@ -446,13 +423,11 @@ netisr_poll(void) enum poll_cmd arg = POLL_ONLY; mtx_lock(&poll_mtx); -#ifdef NETISR2 if (!netisr_poll_scheduled) { mtx_unlock(&poll_mtx); return; } netisr_poll_scheduled = 0; -#endif phase = 3; if (residual_burst == 0) { /* first call in this tick */ microuptime(&poll_start_t); Modified: projects/pnet/sys/net/netisr.c ============================================================================== --- projects/pnet/sys/net/netisr.c Sat May 30 17:26:55 2009 (r193101) +++ projects/pnet/sys/net/netisr.c Sat May 30 17:39:50 2009 (r193102) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2001,2002,2003 Jonathan Lemon - * Copyright (c) 1997, Stefan Esser + * Copyright (c) 2007-2009 Robert N. M. Watson * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,233 +22,1069 @@ * 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$"); + +/* + * netisr2 is a packet dispatch service, allowing synchronous (directly + * dispatched) and asynchronous (deferred dispatch) processing of packets by + * registered protocol handlers. Callers pass a protocol identifier and + * packet to netisr2, along with a direct dispatch hint, and work will either + * be immediately processed with the registered handler, or passed to a + * kernel software interrupt (SWI) thread for deferred dispatch. Callers + * will generally select one or the other based on: + * + * - Might directly dispatching a netisr handler lead to code reentrance or + * lock recursion, such as entering the socket code from the socket code. + * - Might directly dispatching a netisr handler lead to recursive + * processing, such as when decapsulating several wrapped layers of tunnel + * information (IPSEC within IPSEC within ...). * - * $FreeBSD$ + * Maintaining ordering for protocol streams is a critical design concern. + * Enforcing ordering limits the opportunity for concurrency, but maintains + * the strong ordering requirements found in some protocols, such as TCP. Of + * related concern is CPU affinity--it is desirable to process all data + * associated with a particular stream on the same CPU over time in order to + * avoid acquiring locks associated with the connection on different CPUs, + * keep connection data in one cache, and to generally encourage associated + * user threads to live on the same CPU as the stream. It's also desirable + * to avoid lock migration and contention where locks are associated with + * more than one flow. + * + * netisr2 supports several policy variations, represented by the + * NETISR_POLICY_* constants, allowing protocols to play a varying role in + * identifying flows, assigning work to CPUs, etc. These are described in + * detail in netisr.h. */ +#include "opt_ddb.h" #include "opt_device_polling.h" -#include "opt_netisr.h" #include #include -#include -#include -#include #include #include +#include #include -#include +#include +#include #include -#include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include +#include -#include -#include +#ifdef DDB +#include +#endif #include -#include #include #include -volatile unsigned int netisr; /* scheduling bits for network */ +/*- + * Synchronize use and modification of the registered netisr data structures; + * acquire a read lock while modifying the set of registered protocols to + * prevent partially registered or unregistered protocols from being run. + * + * The following data structures and fields are protected by this lock: + * + * - The np array, including all fields of struct netisr_proto. + * - The nws array, including all fields of struct netisr_worker. + * - The nws_array array. + * + * Note: the NETISR2_LOCKING define controls whether read locks are acquired + * in packet processing paths requiring netisr registration stability. This + * is disabled by default as it can lead to a measurable performance + * degradation even with rmlocks (3%-6% for loopback ping-ping traffic), and + * because netisr registration and unregistration is extremely rare at + * runtime. If it becomes more common, this decision should be revisited. + * + * XXXRW: rmlocks don't support assertions. + */ +static struct rmlock netisr_rmlock; +#define NETISR_LOCK_INIT() rm_init_flags(&netisr_rmlock, "netisr", \ + RM_NOWITNESS) +#define NETISR_LOCK_ASSERT() +#define NETISR_RLOCK(tracker) rm_rlock(&netisr_rmlock, (tracker)) +#define NETISR_RUNLOCK(tracker) rm_runlock(&netisr_rmlock, (tracker)) +#define NETISR_WLOCK() rm_wlock(&netisr_rmlock) +#define NETISR_WUNLOCK() rm_wunlock(&netisr_rmlock) +/* #define NETISR2_LOCKING */ + +SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLAG_RW, 0, "netisr2"); + +/*- + * Three direct dispatch policies are supported: + * + * - Always defer: all work is scheduled for a netisr, regardless of context. + * (!direct_enable) + * + * - Hybrid: if the executing context allows direct dispatch, and we're + * running on the CPU the work would be done on, then direct dispatch if it + * wouldn't violate ordering constraints on the workstream. + * (direct_enable && !direct_force) + * + * - Always direct: if the executing context allows direct dispatch, always + * direct dispatch. (direct_enable && direct_force) + * + * Notice that changing the global policy could lead to short periods of + * misordered processing, but this is considered acceptable as compared to + * the complexity of enforcing ordering during policy changes. + */ +static int netisr_direct_force = 1; /* Always direct dispatch. */ +SYSCTL_INT(_net_isr2, OID_AUTO, direct_force, CTLFLAG_RW, + &netisr_direct_force, 0, "Force direct dispatch"); + +static int netisr_direct_enable = 1; /* Enable direct dispatch. */ +SYSCTL_INT(_net_isr2, OID_AUTO, direct_enable, CTLFLAG_RW, + &netisr_direct_enable, 0, "Enable direct dispatch"); + +/* + * Allow the administrator to limit the number of threads (CPUs) to use for + * netisr2. We don't check netisr_maxthreads before creating the thread for + * CPU 0, so in practice we ignore values <= 1. This must be set at boot. + * We will create at most one thread per CPU. + */ +static int netisr_maxthreads = 1; /* Max number of threads. */ +TUNABLE_INT("net.isr2.maxthreads", &netisr_maxthreads); +SYSCTL_INT(_net_isr2, OID_AUTO, maxthreads, CTLFLAG_RD, + &netisr_maxthreads, 0, + "Use at most this many CPUs for netisr2 processing"); + +static int netisr_bindthreads = 0; /* Bind threads to CPUs. */ +TUNABLE_INT("net.isr2.bindthreads", &netisr_bindthreads); +SYSCTL_INT(_net_isr2, OID_AUTO, bindthreads, CTLFLAG_RD, + &netisr_bindthreads, 0, "Bind netisr2 threads to CPUs."); + +/* + * Limit per-workstream queues to at most net.isr2.maxqlimit, both for + * initial configuration and later modification using netisr2_setqlimit(). + */ +#define NETISR_DEFAULT_MAXQLIMIT 10240 +static int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; +SYSCTL_INT(_net_isr2, OID_AUTO, maxqlimit, CTLFLAG_RD, + &netisr_maxqlimit, 0, + "Maximum netisr2 per-protocol, per-CPU queue depth."); + +/* + * Each protocol is described by a struct netisr_proto, which holds all + * global per-protocol information. This data structure is set up by + * netisr_register(), and derived from the public struct netisr_handler. + */ +struct netisr_proto { + const char *np_name; /* Character string protocol name. */ + netisr_t *np_handler; /* Protocol handler. */ + netisr_m2flow_t *np_m2flow; /* Query flow for untagged packet. */ + netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ + u_int np_qlimit; /* Maximum per-CPU queue depth. */ + u_int np_policy; /* Work placement policy. */ +}; + +#define NETISR_MAXPROT 32 /* Compile-time limit. */ + +/* + * The np array describes all registered protocols, indexed by protocol + * number. + */ +static struct netisr_proto np[NETISR_MAXPROT]; + +/* + * Protocol-specific work for each workstream is described by struct + * netisr_work. Each work descriptor consists of an mbuf queue and + * statistics. + */ +struct netisr_work { + /* + * Packet queue, linked by m_nextpkt. + */ + struct mbuf *nw_head; + struct mbuf *nw_tail; + u_int nw_len; + u_int nw_qlimit; + u_int nw_watermark; -struct netisr { - netisr_t *ni_handler; - struct ifqueue *ni_queue; - int ni_flags; -} netisrs[32]; + /* + * Statistics -- written unlocked, but mostly from curcpu. + */ + u_int64_t nw_dispatched; /* Number of direct dispatches. */ + u_int64_t nw_hybrid_dispatched; /* "" hybrid dispatches. */ + u_int64_t nw_qdrops; /* "" drops. */ + u_int64_t nw_queued; /* "" enqueues. */ + u_int64_t nw_handled; /* "" handled in worker. */ +}; -static void *net_ih; +/* + * Workstreams hold a set of ordered work across each protocol, and are + * described by netisr_workstream. Each workstream is associated with a + * worker thread, which in turn is pinned to a CPU. Work associated with a + * workstream can be processd in other threads during direct dispatch; + * concurrent processing is prevented by the NWS_RUNNING flag, which + * indicates that a thread is already processing the work queue. + */ +struct netisr_workstream { + struct intr_event *nws_intr_event; /* Handler for stream. */ + void *nws_swi_cookie; /* swi(9) cookie for stream. */ + struct mtx nws_mtx; /* Synchronize work. */ + u_int nws_cpu; /* CPU pinning. */ + u_int nws_flags; /* Wakeup flags. */ + u_int nws_pendingbits; /* Scheduled protocols. */ + /* + * Each protocol has per-workstream data. + */ + struct netisr_work nws_work[NETISR_MAXPROT]; +} __aligned(CACHE_LINE_SIZE); + +/* + * Per-CPU workstream data, indexed by CPU ID. + */ +static struct netisr_workstream nws[MAXCPU]; + +/* + * Map contiguous values between 0 and nws_count into CPU IDs appropriate for + * indexing the nws[] array. This allows constructions of the form + * nws[nws_array(arbitraryvalue % nws_count)]. + */ +static u_int nws_array[MAXCPU]; + +/* + * Number of registered workstreams. Will be at most the number of running + * CPUs once fully started. + */ +static u_int nws_count; + +/* + * Per-workstream flags. + */ +#define NWS_RUNNING 0x00000001 /* Currently running in a thread. */ +#define NWS_DISPATCHING 0x00000002 /* Currently being direct-dispatched. */ +#define NWS_SCHEDULED 0x00000004 /* Signal issued. */ + +/* + * Synchronization for each workstream: a mutex protects all mutable fields + * in each stream, including per-protocol state (mbuf queues). The SWI is + * woken up if asynchronous dispatch is required. + */ +#define NWS_LOCK(s) mtx_lock(&(s)->nws_mtx) +#define NWS_LOCK_ASSERT(s) mtx_assert(&(s)->nws_mtx, MA_OWNED) +#define NWS_UNLOCK(s) mtx_unlock(&(s)->nws_mtx) +#define NWS_SIGNAL(s) swi_sched((s)->nws_swi_cookie, 0) + +/* + * Utility routines for protocols that implement their own mapping of flows + * to CPUs. + */ +u_int +netisr2_get_cpucount(void) +{ + + return (nws_count); +} + +u_int +netisr2_get_cpuid(u_int cpunumber) +{ + + KASSERT(cpunumber < nws_count, ("netisr2_get_cpuid: %u > %u", + cpunumber, nws_count)); + + return (nws_array[cpunumber]); +} + +/* + * The default implementation of -> CPU ID mapping. + * + * Non-static so that protocols can use it to map their own work to specific + * CPUs in a manner consistent to netisr2 for affinity purposes. + */ +u_int +netisr2_default_flow2cpu(u_int flowid) +{ + + return (nws_array[flowid % nws_count]); +} + +/* + * Register a new netisr handler, which requires initializing per-protocol + * fields for each workstream. All netisr2 work is briefly suspended while + * the protocol is installed. + */ void -legacy_setsoftnet(void) +netisr2_register(const struct netisr_handler *nhp) { - swi_sched(net_ih, 0); + struct netisr_work *npwp; + const char *name; + u_int i, proto; + + proto = nhp->nh_proto; + name = nhp->nh_name; + + /* + * Test that the requested registration is valid. + */ + KASSERT(nhp->nh_name != NULL, + ("netisr2_register: nh_name NULL for %d", proto)); + KASSERT(nhp->nh_handler != NULL, + ("netisr2_register: nh_handler NULL for %s", name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_SOURCE || + nhp->nh_policy == NETISR_POLICY_FLOW || + nhp->nh_policy == NETISR_POLICY_CPU, + ("netisr2_register: unsupported nh_policy %u for %s", + nhp->nh_policy, name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_FLOW || + nhp->nh_m2flow == NULL, + ("netisr2_register: nh_policy != FLOW but m2flow defined for %s", + name)); + KASSERT(nhp->nh_policy == NETISR_POLICY_CPU || nhp->nh_m2cpuid == NULL, + ("netisr2_register: nh_policy != CPU but m2cpuid defined for %s", + name)); + KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpuid != NULL, + ("netisr2_register: nh_policy == CPU but m2cpuid not defined for " + "%s", name)); + KASSERT(nhp->nh_qlimit != 0, + ("netisr2_register: nh_qlimit 0 for %s", name)); + KASSERT(proto < NETISR_MAXPROT, + ("netisr2_register(%d, %s): protocol too big", proto, name)); + + /* + * Test that no existing registration exists for this protocol. + */ + NETISR_WLOCK(); + KASSERT(np[proto].np_name == NULL, + ("netisr2_register(%d, %s): name present", proto, name)); + KASSERT(np[proto].np_handler == NULL, + ("netisr2_register(%d, %s): handler present", proto, name)); + + np[proto].np_name = name; + np[proto].np_handler = nhp->nh_handler; + np[proto].np_m2flow = nhp->nh_m2flow; + np[proto].np_m2cpuid = nhp->nh_m2cpuid; + if (nhp->nh_qlimit > netisr_maxqlimit) { + printf("netisr2_register: %s requested queue limit %u " + "capped to net.isr2.maxqlimit %u\n", name, + nhp->nh_qlimit, netisr_maxqlimit); + np[proto].np_qlimit = netisr_maxqlimit; + } else + np[proto].np_qlimit = nhp->nh_qlimit; + np[proto].np_policy = nhp->nh_policy; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + bzero(npwp, sizeof(*npwp)); + npwp->nw_qlimit = nhp->nh_qlimit; + } + NETISR_WUNLOCK(); } +/* + * Clear drop counters across all workstreams for a protocol. + */ void -netisr_register(int num, netisr_t *handler, struct ifqueue *inq, int flags) +netisr2_clearqdrops(const struct netisr_handler *nhp) { - - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - KASSERT(flags == 0, ("netisr_register: bad flags 0x%x\n", flags)); - netisrs[num].ni_handler = handler; - netisrs[num].ni_queue = inq; - netisrs[num].ni_flags = flags; + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("netisr_clearqdrops(%d): protocol too big for %s", proto, name)); + + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("netisr_clearqdrops(%d): protocol not registered for %s", proto, + name)); + + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + npwp->nw_qdrops = 0; + } + NETISR_WUNLOCK(); } +/* + * Query the current drop counters across all workstreams for a protocol. + */ void -netisr_unregister(int num) +netisr2_getqdrops(const struct netisr_handler *nhp, u_int64_t *qdropp) { - struct netisr *ni; - - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - ni = &netisrs[num]; - ni->ni_handler = NULL; - if (ni->ni_queue != NULL) - IF_DRAIN(ni->ni_queue); - ni->ni_queue = NULL; + struct netisr_work *npwp; + struct rm_priotracker tracker; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + *qdropp = 0; + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("netisr_getqdrops(%d): protocol too big for %s", proto, name)); + + NETISR_RLOCK(&tracker); + KASSERT(np[proto].np_handler != NULL, + ("netisr_getqdrops(%d): protocol not registered for %s", proto, + name)); + + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + *qdropp += npwp->nw_qdrops; + } + NETISR_RUNLOCK(&tracker); } -struct isrstat { - int isrs_count; /* dispatch count */ - int isrs_directed; /* ...directly dispatched */ - int isrs_deferred; /* ...queued instead */ - int isrs_queued; /* intentionally queueued */ - int isrs_drop; /* dropped 'cuz no handler */ - int isrs_swi_count; /* swi_net handlers called */ -}; -static struct isrstat isrstat; +/* + * Query the current queue limit for per-workstream queues for a protocol. + */ +void +netisr2_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp) +{ + struct rm_priotracker tracker; +#ifdef INVARIANTS + const char *name; +#endif + u_int proto; + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("netisr_getqlimit(%d): protocol too big for %s", proto, name)); + + NETISR_RLOCK(&tracker); + KASSERT(np[proto].np_handler != NULL, + ("netisr_getqlimit(%d): protocol not registered for %s", proto, + name)); + *qlimitp = np[proto].np_qlimit; + NETISR_RUNLOCK(&tracker); +} -SYSCTL_NODE(_net, OID_AUTO, isr, CTLFLAG_RW, 0, "netisr counters"); +/* + * Update the queue limit across per-workstream queues for a protocol. We + * simply change the limits, and don't drain overflowed packets as they will + * (hopefully) take care of themselves shortly. + */ +int +netisr2_setqlimit(const struct netisr_handler *nhp, u_int qlimit) +{ + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + if (qlimit > netisr_maxqlimit) + return (EINVAL); + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("netisr_setqlimit(%d): protocol too big for %s", proto, name)); -static int netisr_direct = 1; -SYSCTL_INT(_net_isr, OID_AUTO, direct, CTLFLAG_RW, - &netisr_direct, 0, "enable direct dispatch"); -TUNABLE_INT("net.isr.direct", &netisr_direct); - -SYSCTL_INT(_net_isr, OID_AUTO, count, CTLFLAG_RD, - &isrstat.isrs_count, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, directed, CTLFLAG_RD, - &isrstat.isrs_directed, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, deferred, CTLFLAG_RD, - &isrstat.isrs_deferred, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, queued, CTLFLAG_RD, - &isrstat.isrs_queued, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, drop, CTLFLAG_RD, - &isrstat.isrs_drop, 0, ""); -SYSCTL_INT(_net_isr, OID_AUTO, swi_count, CTLFLAG_RD, - &isrstat.isrs_swi_count, 0, ""); - -/* - * Process all packets currently present in a netisr queue. Used to - * drain an existing set of packets waiting for processing when we - * begin direct dispatch, to avoid processing packets out of order. + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("netisr_setqlimit(%d): protocol not registered for %s", proto, + name)); + + np[proto].np_qlimit = qlimit; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + npwp->nw_qlimit = qlimit; + } + NETISR_WUNLOCK(); + return (0); +} + +/* + * Drain all packets currently held in a particular protocol work queue. */ static void -netisr_processqueue(struct netisr *ni) +netisr2_drain_proto(struct netisr_work *npwp) { struct mbuf *m; - for (;;) { - IF_DEQUEUE(ni->ni_queue, m); - if (m == NULL) - break; - VNET_ASSERT(m->m_pkthdr.rcvif != NULL); - CURVNET_SET(m->m_pkthdr.rcvif->if_vnet); - ni->ni_handler(m); - CURVNET_RESTORE(); + while ((m = npwp->nw_head) != NULL) { + npwp->nw_head = m->m_nextpkt; + m->m_nextpkt = NULL; + if (npwp->nw_head == NULL) + npwp->nw_tail = NULL; + npwp->nw_len--; + m_freem(m); } + KASSERT(npwp->nw_tail == NULL, ("netisr_drain_proto: tail")); + KASSERT(npwp->nw_len == 0, ("netisr_drain_proto: len")); } /* - * Call the netisr directly instead of queueing the packet, if possible. + * Remove the registration of a network protocol, which requires clearing + * per-protocol fields across all workstreams, including freeing all mbufs in + * the queues at time of unregister. All work in netisr2 is briefly + * suspended while this takes place. */ -#ifndef NETISR2 void -netisr_dispatch(int num, struct mbuf *m) +netisr2_unregister(const struct netisr_handler *nhp) { - struct netisr *ni; - - isrstat.isrs_count++; /* XXX redundant */ - KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), - ("bad isr %d", num)); - ni = &netisrs[num]; - if (ni->ni_queue == NULL) { - isrstat.isrs_drop++; - m_freem(m); - return; + struct netisr_work *npwp; +#ifdef INVARIANTS + const char *name; +#endif + u_int i, proto; + + proto = nhp->nh_proto; +#ifdef INVARIANTS + name = nhp->nh_name; +#endif + KASSERT(proto < NETISR_MAXPROT, + ("netisr_unregister(%d): protocol too big for %s", proto, name)); + + NETISR_WLOCK(); + KASSERT(np[proto].np_handler != NULL, + ("netisr_unregister(%d): protocol not registered for %s", proto, + name)); + + np[proto].np_name = NULL; + np[proto].np_handler = NULL; + np[proto].np_m2flow = NULL; + np[proto].np_m2cpuid = NULL; + np[proto].np_qlimit = 0; + np[proto].np_policy = 0; + for (i = 0; i < MAXCPU; i++) { + npwp = &nws[i].nws_work[proto]; + netisr2_drain_proto(npwp); + bzero(npwp, sizeof(*npwp)); + } + NETISR_WUNLOCK(); +} + +/* + * Look up the workstream given a packet and source identifier. Do this by + * checking the protocol's policy, and optionally call out to the protocol + * for assistance if required. + */ +static struct mbuf * +netisr2_select_cpuid(struct netisr_proto *npp, uintptr_t source, + struct mbuf *m, u_int *cpuidp) +{ + struct ifnet *ifp; + + NETISR_LOCK_ASSERT(); + + /* + * In the event we have only one worker, shortcut and deliver to it + * without further ado. + */ + if (nws_count == 1) { + *cpuidp = nws_array[0]; + return (m); } /* - * Directly dispatch handling of this packet, if permitted by global - * policy. Source ordering is maintained by virtue of callers - * consistently calling one of queued or direct dispatch. + * What happens next depends on the policy selected by the protocol. + * If we want to support per-interface policies, we should do that + * here first. */ - if (netisr_direct) { - isrstat.isrs_directed++; - ni->ni_handler(m); + switch (npp->np_policy) { + case NETISR_POLICY_CPU: + return (npp->np_m2cpuid(m, source, cpuidp)); + + case NETISR_POLICY_FLOW: + if (!(m->m_flags & M_FLOWID) && npp->np_m2flow != NULL) { + m = npp->np_m2flow(m, source); + if (m == NULL) + return (NULL); + } + if (m->m_flags & M_FLOWID) { + *cpuidp = + netisr2_default_flow2cpu(m->m_pkthdr.flowid); + return (m); + } + /* FALLTHROUGH */ + + case NETISR_POLICY_SOURCE: + ifp = m->m_pkthdr.rcvif; + if (ifp != NULL) + *cpuidp = nws_array[(ifp->if_index + source) % + nws_count]; + else + *cpuidp = nws_array[source % nws_count]; + return (m); + + default: + panic("netisr2_select_cpuid: invalid policy %u for %s", + npp->np_policy, npp->np_name); + } +} + +/* + * Process packets associated with a workstream and protocol. For reasons of + * fairness, we process up to one complete netisr queue at a time, moving the + * queue to a stack-local queue for processing, but do not loop refreshing + * from the global queue. The caller is responsible for deciding whether to + * loop, and for setting the NWS_RUNNING flag. The passed workstream will be + * locked on entry and relocked before return, but will be released while + * processing. The number of packets processed is returned. + */ +static u_int +netisr2_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) +{ + struct netisr_work local_npw, *npwp; + u_int handled; + struct mbuf *m; + + NWS_LOCK_ASSERT(nwsp); + + KASSERT(nwsp->nws_flags & NWS_RUNNING, + ("netisr_process_workstream_proto(%d): not running", proto)); + KASSERT(proto >= 0 && proto < NETISR_MAXPROT, + ("netisr_process_workstream_proto(%d): invalid proto\n", proto)); + + npwp = &nwsp->nws_work[proto]; + if (npwp->nw_len == 0) + return (0); + + /* + * Move the global work queue to a thread-local work queue. + * + * Notice that this means the effective maximum length of the queue + * is actually twice that of the maximum queue length specified in + * the protocol registration call. + */ + handled = npwp->nw_len; + local_npw = *npwp; + npwp->nw_head = NULL; + npwp->nw_tail = NULL; + npwp->nw_len = 0; + nwsp->nws_pendingbits &= ~(1 << proto); + NWS_UNLOCK(nwsp); + while ((m = local_npw.nw_head) != NULL) { + local_npw.nw_head = m->m_nextpkt; + m->m_nextpkt = NULL; + if (local_npw.nw_head == NULL) + local_npw.nw_tail = NULL; + local_npw.nw_len--; + np[proto].np_handler(m); + } + KASSERT(local_npw.nw_len == 0, + ("netisr_process_proto(%d): len %d", proto, local_npw.nw_len)); + NWS_LOCK(nwsp); + npwp->nw_handled += handled; + return (handled); +} + +/* + * SWI handler for netisr2 -- processes prackets in a set of workstreams that + * it owns, woken up by calls to NWS_SIGNAL(). If this workstream is already + * being direct dispatched, go back to sleep and wait for the dispatching + * thread to wake us up again. + */ +static void +swi_net(void *arg) +{ +#ifdef NETISR2_LOCKING + struct rm_priotracker tracker; +#endif + struct netisr_workstream *nwsp; + u_int bits, prot; + + nwsp = arg; + +#ifdef DEVICE_POLLING + KASSERT(nws_count == 1, + ("swi_net: device_polling but nws_count != 1")); + netisr_poll(); +#endif +#ifdef NETISR2_LOCKING + NETISR_RLOCK(&tracker); +#endif + NWS_LOCK(nwsp); + KASSERT(!(nwsp->nws_flags & NWS_RUNNING), ("swi_net: running")); + if (nwsp->nws_flags & NWS_DISPATCHING) + goto out; + nwsp->nws_flags |= NWS_RUNNING; + nwsp->nws_flags &= ~NWS_SCHEDULED; + while ((bits = nws->nws_pendingbits) != 0) { + while ((prot = ffs(bits)) != 0) { + prot--; + bits &= ~(1 << prot); + (void)netisr2_process_workstream_proto(nwsp, prot); + } + } + nwsp->nws_flags &= ~NWS_RUNNING; +out: + NWS_UNLOCK(nwsp); +#ifdef NETISR2_LOCKING + NETISR_RUNLOCK(&tracker); +#endif +#ifdef DEVICE_POLLING + netisr_pollmore(); +#endif +} + +static int +netisr2_queue_workstream(struct netisr_workstream *nwsp, u_int proto, + struct netisr_work *npwp, struct mbuf *m, int *dosignalp) +{ + + NWS_LOCK_ASSERT(nwsp); + + *dosignalp = 0; + if (npwp->nw_len < npwp->nw_qlimit) { + m->m_nextpkt = NULL; + if (npwp->nw_head == NULL) { + npwp->nw_head = m; + npwp->nw_tail = m; + } else { + npwp->nw_tail->m_nextpkt = m; + npwp->nw_tail = m; + } + npwp->nw_len++; + if (npwp->nw_len > npwp->nw_watermark) + npwp->nw_watermark = npwp->nw_len; + nwsp->nws_pendingbits |= (1 << proto); + if (!(nwsp->nws_flags & (NWS_SCHEDULED | NWS_RUNNING))) { + nwsp->nws_flags |= NWS_SCHEDULED; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat May 30 19:00:46 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C33A510656D4; Sat, 30 May 2009 19:00:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AED358FC12; Sat, 30 May 2009 19:00:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UJ0kJM016225; Sat, 30 May 2009 19:00:46 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UJ0knC016214; Sat, 30 May 2009 19:00:46 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301900.n4UJ0knC016214@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 19:00:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193106 - in projects/pnet/sys: kern net netatalk netinet netinet6 netipsec netipx netnatm sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 19:00:47 -0000 Author: rwatson Date: Sat May 30 19:00:46 2009 New Revision: 193106 URL: http://svn.freebsd.org/changeset/base/193106 Log: Further netisr2 -> netisr. Use __func__ (2). Suggested by: bz (2) Modified: projects/pnet/sys/kern/kern_poll.c projects/pnet/sys/net/netisr.c projects/pnet/sys/net/netisr.h projects/pnet/sys/net/rtsock.c projects/pnet/sys/netatalk/ddp_usrreq.c projects/pnet/sys/netinet/if_ether.c projects/pnet/sys/netinet/igmp.c projects/pnet/sys/netinet/ip_divert.c projects/pnet/sys/netinet/ip_input.c projects/pnet/sys/netinet6/ip6_input.c projects/pnet/sys/netipsec/ipsec_input.c projects/pnet/sys/netipx/ipx_input.c projects/pnet/sys/netnatm/natm_proto.c projects/pnet/sys/sys/pcpu.h Modified: projects/pnet/sys/kern/kern_poll.c ============================================================================== --- projects/pnet/sys/kern/kern_poll.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/kern/kern_poll.c Sat May 30 19:00:46 2009 (r193106) @@ -315,7 +315,7 @@ hardclock_device_poll(void) phase = 1; netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; - netisr2_sched_poll(); + netisr_sched_poll(); phase = 2; } if (pending_polls++ > 0) @@ -375,7 +375,7 @@ netisr_pollmore() if (residual_burst > 0) { netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; - netisr2_sched_poll(); + netisr_sched_poll(); mtx_unlock(&poll_mtx); /* will run immediately on return, followed by netisrs */ return; @@ -407,7 +407,7 @@ netisr_pollmore() poll_burst = 1; netisr_poll_scheduled = 1; netisr_pollmore_scheduled = 1; - netisr2_sched_poll(); + netisr_sched_poll(); phase = 6; } mtx_unlock(&poll_mtx); Modified: projects/pnet/sys/net/netisr.c ============================================================================== --- projects/pnet/sys/net/netisr.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/net/netisr.c Sat May 30 19:00:46 2009 (r193106) @@ -28,10 +28,10 @@ __FBSDID("$FreeBSD$"); /* - * netisr2 is a packet dispatch service, allowing synchronous (directly + * netisr is a packet dispatch service, allowing synchronous (directly * dispatched) and asynchronous (deferred dispatch) processing of packets by * registered protocol handlers. Callers pass a protocol identifier and - * packet to netisr2, along with a direct dispatch hint, and work will either + * packet to netisr, along with a direct dispatch hint, and work will either * be immediately processed with the registered handler, or passed to a * kernel software interrupt (SWI) thread for deferred dispatch. Callers * will generally select one or the other based on: @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); * to avoid lock migration and contention where locks are associated with * more than one flow. * - * netisr2 supports several policy variations, represented by the + * netisr supports several policy variations, represented by the * NETISR_POLICY_* constants, allowing protocols to play a varying role in * identifying flows, assigning work to CPUs, etc. These are described in * detail in netisr.h. @@ -97,7 +97,7 @@ __FBSDID("$FreeBSD$"); * - The nws array, including all fields of struct netisr_worker. * - The nws_array array. * - * Note: the NETISR2_LOCKING define controls whether read locks are acquired + * Note: the NETISR_LOCKING define controls whether read locks are acquired * in packet processing paths requiring netisr registration stability. This * is disabled by default as it can lead to a measurable performance * degradation even with rmlocks (3%-6% for loopback ping-ping traffic), and @@ -114,9 +114,9 @@ static struct rmlock netisr_rmlock; #define NETISR_RUNLOCK(tracker) rm_runlock(&netisr_rmlock, (tracker)) #define NETISR_WLOCK() rm_wlock(&netisr_rmlock) #define NETISR_WUNLOCK() rm_wunlock(&netisr_rmlock) -/* #define NETISR2_LOCKING */ +/* #define NETISR_LOCKING */ -SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLAG_RW, 0, "netisr2"); +SYSCTL_NODE(_net, OID_AUTO, isr, CTLFLAG_RW, 0, "netisr"); /*- * Three direct dispatch policies are supported: @@ -137,39 +137,39 @@ SYSCTL_NODE(_net, OID_AUTO, isr2, CTLFLA * the complexity of enforcing ordering during policy changes. */ static int netisr_direct_force = 1; /* Always direct dispatch. */ -SYSCTL_INT(_net_isr2, OID_AUTO, direct_force, CTLFLAG_RW, +SYSCTL_INT(_net_isr, OID_AUTO, direct_force, CTLFLAG_RW, &netisr_direct_force, 0, "Force direct dispatch"); static int netisr_direct_enable = 1; /* Enable direct dispatch. */ -SYSCTL_INT(_net_isr2, OID_AUTO, direct_enable, CTLFLAG_RW, +SYSCTL_INT(_net_isr, OID_AUTO, direct_enable, CTLFLAG_RW, &netisr_direct_enable, 0, "Enable direct dispatch"); /* * Allow the administrator to limit the number of threads (CPUs) to use for - * netisr2. We don't check netisr_maxthreads before creating the thread for + * netisr. We don't check netisr_maxthreads before creating the thread for * CPU 0, so in practice we ignore values <= 1. This must be set at boot. * We will create at most one thread per CPU. */ static int netisr_maxthreads = 1; /* Max number of threads. */ -TUNABLE_INT("net.isr2.maxthreads", &netisr_maxthreads); -SYSCTL_INT(_net_isr2, OID_AUTO, maxthreads, CTLFLAG_RD, +TUNABLE_INT("net.isr.maxthreads", &netisr_maxthreads); +SYSCTL_INT(_net_isr, OID_AUTO, maxthreads, CTLFLAG_RD, &netisr_maxthreads, 0, - "Use at most this many CPUs for netisr2 processing"); + "Use at most this many CPUs for netisr processing"); static int netisr_bindthreads = 0; /* Bind threads to CPUs. */ -TUNABLE_INT("net.isr2.bindthreads", &netisr_bindthreads); -SYSCTL_INT(_net_isr2, OID_AUTO, bindthreads, CTLFLAG_RD, - &netisr_bindthreads, 0, "Bind netisr2 threads to CPUs."); +TUNABLE_INT("net.isr.bindthreads", &netisr_bindthreads); +SYSCTL_INT(_net_isr, OID_AUTO, bindthreads, CTLFLAG_RD, + &netisr_bindthreads, 0, "Bind netisr threads to CPUs."); /* - * Limit per-workstream queues to at most net.isr2.maxqlimit, both for - * initial configuration and later modification using netisr2_setqlimit(). + * Limit per-workstream queues to at most net.isr.maxqlimit, both for initial + * configuration and later modification using netisr_setqlimit(). */ #define NETISR_DEFAULT_MAXQLIMIT 10240 static int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; -SYSCTL_INT(_net_isr2, OID_AUTO, maxqlimit, CTLFLAG_RD, +SYSCTL_INT(_net_isr, OID_AUTO, maxqlimit, CTLFLAG_RD, &netisr_maxqlimit, 0, - "Maximum netisr2 per-protocol, per-CPU queue depth."); + "Maximum netisr per-protocol, per-CPU queue depth."); /* * Each protocol is described by a struct netisr_proto, which holds all @@ -178,7 +178,7 @@ SYSCTL_INT(_net_isr2, OID_AUTO, maxqlimi */ struct netisr_proto { const char *np_name; /* Character string protocol name. */ - netisr_t *np_handler; /* Protocol handler. */ + netisr_handler_t *np_handler; /* Protocol handler. */ netisr_m2flow_t *np_m2flow; /* Query flow for untagged packet. */ netisr_m2cpuid_t *np_m2cpuid; /* Query CPU to process packet on. */ u_int np_qlimit; /* Maximum per-CPU queue depth. */ @@ -280,18 +280,18 @@ static u_int nws_count; * to CPUs. */ u_int -netisr2_get_cpucount(void) +netisr_get_cpucount(void) { return (nws_count); } u_int -netisr2_get_cpuid(u_int cpunumber) +netisr_get_cpuid(u_int cpunumber) { - KASSERT(cpunumber < nws_count, ("netisr2_get_cpuid: %u > %u", - cpunumber, nws_count)); + KASSERT(cpunumber < nws_count, ("%s: %u > %u", __func__, cpunumber, + nws_count)); return (nws_array[cpunumber]); } @@ -300,10 +300,10 @@ netisr2_get_cpuid(u_int cpunumber) * The default implementation of -> CPU ID mapping. * * Non-static so that protocols can use it to map their own work to specific - * CPUs in a manner consistent to netisr2 for affinity purposes. + * CPUs in a manner consistent to netisr for affinity purposes. */ u_int -netisr2_default_flow2cpu(u_int flowid) +netisr_default_flow2cpu(u_int flowid) { return (nws_array[flowid % nws_count]); @@ -311,11 +311,11 @@ netisr2_default_flow2cpu(u_int flowid) /* * Register a new netisr handler, which requires initializing per-protocol - * fields for each workstream. All netisr2 work is briefly suspended while + * fields for each workstream. All netisr work is briefly suspended while * the protocol is installed. */ void -netisr2_register(const struct netisr_handler *nhp) +netisr_register(const struct netisr_handler *nhp) { struct netisr_work *npwp; const char *name; @@ -328,46 +328,46 @@ netisr2_register(const struct netisr_han * Test that the requested registration is valid. */ KASSERT(nhp->nh_name != NULL, - ("netisr2_register: nh_name NULL for %d", proto)); + ("%s: nh_name NULL for %d", __func__, proto)); KASSERT(nhp->nh_handler != NULL, - ("netisr2_register: nh_handler NULL for %s", name)); + ("%s: nh_handler NULL for %s", __func__, name)); KASSERT(nhp->nh_policy == NETISR_POLICY_SOURCE || nhp->nh_policy == NETISR_POLICY_FLOW || nhp->nh_policy == NETISR_POLICY_CPU, - ("netisr2_register: unsupported nh_policy %u for %s", + ("%s: unsupported nh_policy %u for %s", __func__, nhp->nh_policy, name)); KASSERT(nhp->nh_policy == NETISR_POLICY_FLOW || nhp->nh_m2flow == NULL, - ("netisr2_register: nh_policy != FLOW but m2flow defined for %s", + ("%s: nh_policy != FLOW but m2flow defined for %s", __func__, name)); KASSERT(nhp->nh_policy == NETISR_POLICY_CPU || nhp->nh_m2cpuid == NULL, - ("netisr2_register: nh_policy != CPU but m2cpuid defined for %s", + ("%s: nh_policy != CPU but m2cpuid defined for %s", __func__, name)); KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpuid != NULL, - ("netisr2_register: nh_policy == CPU but m2cpuid not defined for " - "%s", name)); + ("%s: nh_policy == CPU but m2cpuid not defined for %s", __func__, + name)); KASSERT(nhp->nh_qlimit != 0, - ("netisr2_register: nh_qlimit 0 for %s", name)); + ("%s: nh_qlimit 0 for %s", __func__, name)); KASSERT(proto < NETISR_MAXPROT, - ("netisr2_register(%d, %s): protocol too big", proto, name)); + ("%s(%d, %s): protocol too big", __func__, proto, name)); /* * Test that no existing registration exists for this protocol. */ NETISR_WLOCK(); KASSERT(np[proto].np_name == NULL, - ("netisr2_register(%d, %s): name present", proto, name)); + ("%s(%d, %s): name present", __func__, proto, name)); KASSERT(np[proto].np_handler == NULL, - ("netisr2_register(%d, %s): handler present", proto, name)); + ("%s(%d, %s): handler present", __func__, proto, name)); np[proto].np_name = name; np[proto].np_handler = nhp->nh_handler; np[proto].np_m2flow = nhp->nh_m2flow; np[proto].np_m2cpuid = nhp->nh_m2cpuid; if (nhp->nh_qlimit > netisr_maxqlimit) { - printf("netisr2_register: %s requested queue limit %u " - "capped to net.isr2.maxqlimit %u\n", name, - nhp->nh_qlimit, netisr_maxqlimit); + printf("%s: %s requested queue limit %u capped to " + "net.isr.maxqlimit %u\n", __func__, name, nhp->nh_qlimit, + netisr_maxqlimit); np[proto].np_qlimit = netisr_maxqlimit; } else np[proto].np_qlimit = nhp->nh_qlimit; @@ -384,7 +384,7 @@ netisr2_register(const struct netisr_han * Clear drop counters across all workstreams for a protocol. */ void -netisr2_clearqdrops(const struct netisr_handler *nhp) +netisr_clearqdrops(const struct netisr_handler *nhp) { struct netisr_work *npwp; #ifdef INVARIANTS @@ -397,11 +397,11 @@ netisr2_clearqdrops(const struct netisr_ name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("netisr_clearqdrops(%d): protocol too big for %s", proto, name)); + ("%s(%d): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("netisr_clearqdrops(%d): protocol not registered for %s", proto, + ("%s(%d): protocol not registered for %s", __func__, proto, name)); for (i = 0; i < MAXCPU; i++) { @@ -415,7 +415,7 @@ netisr2_clearqdrops(const struct netisr_ * Query the current drop counters across all workstreams for a protocol. */ void -netisr2_getqdrops(const struct netisr_handler *nhp, u_int64_t *qdropp) +netisr_getqdrops(const struct netisr_handler *nhp, u_int64_t *qdropp) { struct netisr_work *npwp; struct rm_priotracker tracker; @@ -430,11 +430,11 @@ netisr2_getqdrops(const struct netisr_ha name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("netisr_getqdrops(%d): protocol too big for %s", proto, name)); + ("%s(%d): protocol too big for %s", __func__, proto, name)); NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, - ("netisr_getqdrops(%d): protocol not registered for %s", proto, + ("%s(%d): protocol not registered for %s", __func__, proto, name)); for (i = 0; i < MAXCPU; i++) { @@ -448,7 +448,7 @@ netisr2_getqdrops(const struct netisr_ha * Query the current queue limit for per-workstream queues for a protocol. */ void -netisr2_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp) +netisr_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp) { struct rm_priotracker tracker; #ifdef INVARIANTS @@ -461,11 +461,11 @@ netisr2_getqlimit(const struct netisr_ha name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("netisr_getqlimit(%d): protocol too big for %s", proto, name)); + ("%s(%d): protocol too big for %s", __func__, proto, name)); NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, - ("netisr_getqlimit(%d): protocol not registered for %s", proto, + ("%s(%d): protocol not registered for %s", __func__, proto, name)); *qlimitp = np[proto].np_qlimit; NETISR_RUNLOCK(&tracker); @@ -477,7 +477,7 @@ netisr2_getqlimit(const struct netisr_ha * (hopefully) take care of themselves shortly. */ int -netisr2_setqlimit(const struct netisr_handler *nhp, u_int qlimit) +netisr_setqlimit(const struct netisr_handler *nhp, u_int qlimit) { struct netisr_work *npwp; #ifdef INVARIANTS @@ -493,11 +493,11 @@ netisr2_setqlimit(const struct netisr_ha name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("netisr_setqlimit(%d): protocol too big for %s", proto, name)); + ("%s(%d): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("netisr_setqlimit(%d): protocol not registered for %s", proto, + ("%s(%d): protocol not registered for %s", __func__, proto, name)); np[proto].np_qlimit = qlimit; @@ -513,7 +513,7 @@ netisr2_setqlimit(const struct netisr_ha * Drain all packets currently held in a particular protocol work queue. */ static void -netisr2_drain_proto(struct netisr_work *npwp) +netisr_drain_proto(struct netisr_work *npwp) { struct mbuf *m; @@ -525,18 +525,18 @@ netisr2_drain_proto(struct netisr_work * npwp->nw_len--; m_freem(m); } - KASSERT(npwp->nw_tail == NULL, ("netisr_drain_proto: tail")); - KASSERT(npwp->nw_len == 0, ("netisr_drain_proto: len")); + KASSERT(npwp->nw_tail == NULL, ("%s: tail", __func__)); + KASSERT(npwp->nw_len == 0, ("%s: len", __func__)); } /* * Remove the registration of a network protocol, which requires clearing * per-protocol fields across all workstreams, including freeing all mbufs in - * the queues at time of unregister. All work in netisr2 is briefly - * suspended while this takes place. + * the queues at time of unregister. All work in netisr is briefly suspended + * while this takes place. */ void -netisr2_unregister(const struct netisr_handler *nhp) +netisr_unregister(const struct netisr_handler *nhp) { struct netisr_work *npwp; #ifdef INVARIANTS @@ -549,11 +549,11 @@ netisr2_unregister(const struct netisr_h name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("netisr_unregister(%d): protocol too big for %s", proto, name)); + ("%s(%d): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("netisr_unregister(%d): protocol not registered for %s", proto, + ("%s(%d): protocol not registered for %s", __func__, proto, name)); np[proto].np_name = NULL; @@ -564,7 +564,7 @@ netisr2_unregister(const struct netisr_h np[proto].np_policy = 0; for (i = 0; i < MAXCPU; i++) { npwp = &nws[i].nws_work[proto]; - netisr2_drain_proto(npwp); + netisr_drain_proto(npwp); bzero(npwp, sizeof(*npwp)); } NETISR_WUNLOCK(); @@ -576,7 +576,7 @@ netisr2_unregister(const struct netisr_h * for assistance if required. */ static struct mbuf * -netisr2_select_cpuid(struct netisr_proto *npp, uintptr_t source, +netisr_select_cpuid(struct netisr_proto *npp, uintptr_t source, struct mbuf *m, u_int *cpuidp) { struct ifnet *ifp; @@ -609,7 +609,7 @@ netisr2_select_cpuid(struct netisr_proto } if (m->m_flags & M_FLOWID) { *cpuidp = - netisr2_default_flow2cpu(m->m_pkthdr.flowid); + netisr_default_flow2cpu(m->m_pkthdr.flowid); return (m); } /* FALLTHROUGH */ @@ -624,7 +624,7 @@ netisr2_select_cpuid(struct netisr_proto return (m); default: - panic("netisr2_select_cpuid: invalid policy %u for %s", + panic("%s: invalid policy %u for %s", __func__, npp->np_policy, npp->np_name); } } @@ -639,7 +639,7 @@ netisr2_select_cpuid(struct netisr_proto * processing. The number of packets processed is returned. */ static u_int -netisr2_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) +netisr_process_workstream_proto(struct netisr_workstream *nwsp, u_int proto) { struct netisr_work local_npw, *npwp; u_int handled; @@ -648,9 +648,9 @@ netisr2_process_workstream_proto(struct NWS_LOCK_ASSERT(nwsp); KASSERT(nwsp->nws_flags & NWS_RUNNING, - ("netisr_process_workstream_proto(%d): not running", proto)); + ("%s(%d): not running", __func__, proto)); KASSERT(proto >= 0 && proto < NETISR_MAXPROT, - ("netisr_process_workstream_proto(%d): invalid proto\n", proto)); + ("%s(%d): invalid proto\n", __func__, proto)); npwp = &nwsp->nws_work[proto]; if (npwp->nw_len == 0) @@ -679,14 +679,14 @@ netisr2_process_workstream_proto(struct np[proto].np_handler(m); } KASSERT(local_npw.nw_len == 0, - ("netisr_process_proto(%d): len %d", proto, local_npw.nw_len)); + ("%s(%d): len %d", __func__, proto, local_npw.nw_len)); NWS_LOCK(nwsp); npwp->nw_handled += handled; return (handled); } /* - * SWI handler for netisr2 -- processes prackets in a set of workstreams that + * SWI handler for netisr -- processes prackets in a set of workstreams that * it owns, woken up by calls to NWS_SIGNAL(). If this workstream is already * being direct dispatched, go back to sleep and wait for the dispatching * thread to wake us up again. @@ -694,7 +694,7 @@ netisr2_process_workstream_proto(struct static void swi_net(void *arg) { -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING struct rm_priotracker tracker; #endif struct netisr_workstream *nwsp; @@ -704,10 +704,10 @@ swi_net(void *arg) #ifdef DEVICE_POLLING KASSERT(nws_count == 1, - ("swi_net: device_polling but nws_count != 1")); + ("%s: device_polling but nws_count != 1", __func__)); netisr_poll(); #endif -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_RLOCK(&tracker); #endif NWS_LOCK(nwsp); @@ -720,13 +720,13 @@ swi_net(void *arg) while ((prot = ffs(bits)) != 0) { prot--; bits &= ~(1 << prot); - (void)netisr2_process_workstream_proto(nwsp, prot); + (void)netisr_process_workstream_proto(nwsp, prot); } } nwsp->nws_flags &= ~NWS_RUNNING; out: NWS_UNLOCK(nwsp); -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_RUNLOCK(&tracker); #endif #ifdef DEVICE_POLLING @@ -735,7 +735,7 @@ out: } static int -netisr2_queue_workstream(struct netisr_workstream *nwsp, u_int proto, +netisr_queue_workstream(struct netisr_workstream *nwsp, u_int proto, struct netisr_work *npwp, struct mbuf *m, int *dosignalp) { @@ -768,24 +768,24 @@ netisr2_queue_workstream(struct netisr_w } static int -netisr2_queue_internal(u_int proto, struct mbuf *m, u_int cpuid) +netisr_queue_internal(u_int proto, struct mbuf *m, u_int cpuid) { struct netisr_workstream *nwsp; struct netisr_work *npwp; int dosignal, error; -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_LOCK_ASSERT(); #endif - KASSERT(cpuid < MAXCPU, ("netisr2_queue_internal: cpuid too big " - "(%u, %u)", cpuid, MAXCPU)); + KASSERT(cpuid < MAXCPU, ("%s: cpuid too big (%u, %u)", __func__, + cpuid, MAXCPU)); dosignal = 0; error = 0; nwsp = &nws[cpuid]; npwp = &nwsp->nws_work[proto]; NWS_LOCK(nwsp); - error = netisr2_queue_workstream(nwsp, proto, npwp, m, &dosignal); + error = netisr_queue_workstream(nwsp, proto, npwp, m, &dosignal); NWS_UNLOCK(nwsp); if (dosignal) NWS_SIGNAL(nwsp); @@ -793,28 +793,28 @@ netisr2_queue_internal(u_int proto, stru } int -netisr2_queue_src(u_int proto, uintptr_t source, struct mbuf *m) +netisr_queue_src(u_int proto, uintptr_t source, struct mbuf *m) { -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING struct rm_priotracker tracker; #endif u_int cpuid, error; KASSERT(proto < NETISR_MAXPROT, - ("netisr2_queue_src: invalid proto %d", proto)); + ("%s: invalid proto %d", __func__, proto)); -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_RLOCK(&tracker); #endif KASSERT(np[proto].np_handler != NULL, - ("netisr2_queue_src: invalid proto %d", proto)); + ("%s: invalid proto %d", __func__, proto)); - m = netisr2_select_cpuid(&np[proto], source, m, &cpuid); + m = netisr_select_cpuid(&np[proto], source, m, &cpuid); if (m != NULL) - error = netisr2_queue_internal(proto, m, cpuid); + error = netisr_queue_internal(proto, m, cpuid); else error = ENOBUFS; -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_RUNLOCK(&tracker); #endif return (error); @@ -824,17 +824,17 @@ int netisr_queue(u_int proto, struct mbuf *m) { - return (netisr2_queue_src(proto, 0, m)); + return (netisr_queue_src(proto, 0, m)); } /* - * Dispatch a packet for netisr2 processing, direct dispatch permitted by + * Dispatch a packet for netisr processing, direct dispatch permitted by * calling context. */ int -netisr2_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m) +netisr_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m) { -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING struct rm_priotracker tracker; #endif struct netisr_workstream *nwsp; @@ -846,15 +846,15 @@ netisr2_dispatch_src(u_int proto, uintpt * If direct dispatch is entirely disabled, fall back on queueing. */ if (!netisr_direct_enable) - return (netisr2_queue_src(proto, source, m)); + return (netisr_queue_src(proto, source, m)); KASSERT(proto < NETISR_MAXPROT, - ("netisr2_dispatch_src: invalid proto %u", proto)); -#ifdef NETISR2_LOCKING + ("%s: invalid proto %u", __func__, proto)); +#ifdef NETISR_LOCKING NETISR_RLOCK(&tracker); #endif KASSERT(np[proto].np_handler != NULL, - ("netisr2_dispatch_src: invalid proto %u", proto)); + ("%s: invalid proto %u", __func__, proto)); /* * If direct dispatch is forced, then unconditionally dispatch @@ -876,7 +876,7 @@ netisr2_dispatch_src(u_int proto, uintpt * dispatch if we're on the right CPU and the netisr worker isn't * already running. */ - m = netisr2_select_cpuid(&np[proto], source, m, &cpuid); + m = netisr_select_cpuid(&np[proto], source, m, &cpuid); if (m == NULL) { error = ENOBUFS; goto out_unlock; @@ -896,7 +896,7 @@ netisr2_dispatch_src(u_int proto, uintpt */ NWS_LOCK(nwsp); if (nwsp->nws_flags & (NWS_RUNNING | NWS_DISPATCHING | NWS_SCHEDULED)) { - error = netisr2_queue_workstream(nwsp, proto, npwp, m, + error = netisr_queue_workstream(nwsp, proto, npwp, m, &dosignal); NWS_UNLOCK(nws); if (dosignal) @@ -938,11 +938,11 @@ netisr2_dispatch_src(u_int proto, uintpt goto out_unpin; queue_fallback: - error = netisr2_queue_internal(proto, m, cpuid); + error = netisr_queue_internal(proto, m, cpuid); out_unpin: sched_unpin(); out_unlock: -#ifdef NETISR2_LOCKING +#ifdef NETISR_LOCKING NETISR_RUNLOCK(&tracker); #endif return (error); @@ -952,17 +952,17 @@ int netisr_dispatch(u_int proto, struct mbuf *m) { - return (netisr2_dispatch_src(proto, 0, m)); + return (netisr_dispatch_src(proto, 0, m)); } #ifdef DEVICE_POLLING /* - * Kernel polling borrows a netisr2 thread to run interface polling in; this - * function allows kernel polling to request that the netisr2 thread be + * Kernel polling borrows a netisr thread to run interface polling in; this + * function allows kernel polling to request that the netisr thread be * scheduled even if no packets are pending for protocols. */ void -netisr2_sched_poll(void) +netisr_sched_poll(void) { struct netisr_workstream *nwsp; @@ -972,25 +972,25 @@ netisr2_sched_poll(void) #endif static void -netisr2_start_swi(u_int cpuid, struct pcpu *pc) +netisr_start_swi(u_int cpuid, struct pcpu *pc) { char swiname[12]; struct netisr_workstream *nwsp; int error; nwsp = &nws[cpuid]; - mtx_init(&nwsp->nws_mtx, "netisr2_mtx", NULL, MTX_DEF); + mtx_init(&nwsp->nws_mtx, "netisr_mtx", NULL, MTX_DEF); nwsp->nws_cpu = cpuid; snprintf(swiname, sizeof(swiname), "netisr %d", cpuid); error = swi_add(&nwsp->nws_intr_event, swiname, swi_net, nwsp, SWI_NET, INTR_MPSAFE, &nwsp->nws_swi_cookie); if (error) - panic("netisr2_init: swi_add %d", error); - pc->pc_netisr2 = nwsp->nws_intr_event; + panic("%s: swi_add %d", __func__, error); + pc->pc_netisr = nwsp->nws_intr_event; if (netisr_bindthreads) { error = intr_event_bind(nwsp->nws_intr_event, cpuid); if (error != 0) - printf("netisr2_start_swi cpu %d: intr_event_bind: %d", + printf("%s: cpu %d: intr_event_bind: %d", __func__, cpuid, error); } NETISR_WLOCK(); @@ -1008,10 +1008,10 @@ netisr2_start_swi(u_int cpuid, struct pc * CPUs are started (for example, diskless boot). */ static void -netisr2_init(void *arg) +netisr_init(void *arg) { - KASSERT(curcpu == 0, ("netisr2_init: not on CPU 0")); + KASSERT(curcpu == 0, ("%s: not on CPU 0", __func__)); NETISR_LOCK_INIT(); if (netisr_maxthreads < 1) @@ -1028,16 +1028,16 @@ netisr2_init(void *arg) netisr_bindthreads = 0; #endif - netisr2_start_swi(curcpu, pcpu_find(curcpu)); + netisr_start_swi(curcpu, pcpu_find(curcpu)); } -SYSINIT(netisr2_init, SI_SUB_SOFTINTR, SI_ORDER_FIRST, netisr2_init, NULL); +SYSINIT(netisr_init, SI_SUB_SOFTINTR, SI_ORDER_FIRST, netisr_init, NULL); /* * Start worker threads for additional CPUs. No attempt to gracefully handle * work reassignment, we don't yet support dynamic reconfiguration. */ static void -netisr2_start(void *arg) +netisr_start(void *arg) { struct pcpu *pc; @@ -1048,15 +1048,15 @@ netisr2_start(void *arg) if (CPU_ABSENT(pc->pc_cpuid)) continue; /* Worker will already be present for boot CPU. */ - if (pc->pc_netisr2 != NULL) + if (pc->pc_netisr != NULL) continue; - netisr2_start_swi(pc->pc_cpuid, pc); + netisr_start_swi(pc->pc_cpuid, pc); } } -SYSINIT(netisr2_start, SI_SUB_SMP, SI_ORDER_MIDDLE, netisr2_start, NULL); +SYSINIT(netisr_start, SI_SUB_SMP, SI_ORDER_MIDDLE, netisr_start, NULL); #ifdef DDB -DB_SHOW_COMMAND(netisr2, db_show_netisr2) +DB_SHOW_COMMAND(netisr, db_show_netisr) { struct netisr_workstream *nwsp; struct netisr_work *nwp; Modified: projects/pnet/sys/net/netisr.h ============================================================================== --- projects/pnet/sys/net/netisr.h Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/net/netisr.h Sat May 30 19:00:46 2009 (r193106) @@ -57,22 +57,22 @@ /*- * Protocols express ordering constraints and affinity preferences by * implementing one or neither of nh_m2flow and nh_m2cpuid, which are used by - * netisr2 to determine which per-CPU workstream to assign mbufs to. + * netisr to determine which per-CPU workstream to assign mbufs to. * * The following policies may be used by protocols: * - * NETISR_POLICY_SOURCE - netisr2 should maintain source ordering without - * advice from the protocol. netisr2 will ignore any + * NETISR_POLICY_SOURCE - netisr should maintain source ordering without + * advice from the protocol. netisr will ignore any * flow IDs present on the mbuf for the purposes of * work placement. * - * NETISR_POLICY_FLOW - netisr2 should maintain flow ordering as defined by + * NETISR_POLICY_FLOW - netisr should maintain flow ordering as defined by * the mbuf header flow ID field. If the protocol - * implements nh_m2flow, then netisr2 will query the + * implements nh_m2flow, then netisr will query the * protocol in the event that the mbuf doesn't have a * flow ID, falling back on source ordering. * - * NETISR_POLICY_CPU - netisr2 will delegate all work placement decisions to + * NETISR_POLICY_CPU - netisr will delegate all work placement decisions to * the protocol, querying nh_m2cpuid for each packet. * * Protocols might make decisions about work placement based on an existing @@ -87,7 +87,7 @@ * can rebalance work. */ struct mbuf; -typedef void netisr_t (struct mbuf *m); +typedef void netisr_handler_t (struct mbuf *m); typedef struct mbuf *netisr_m2cpuid_t(struct mbuf *m, uintptr_t source, u_int *cpuid); typedef struct mbuf *netisr_m2flow_t(struct mbuf *m, uintptr_t source); @@ -101,7 +101,7 @@ typedef struct mbuf *netisr_m2flow_t(str */ struct netisr_handler { const char *nh_name; /* Character string protocol name. */ - netisr_t *nh_handler; /* Protocol handler. */ + netisr_handler_t *nh_handler; /* Protocol handler. */ netisr_m2flow_t *nh_m2flow; /* Query flow for untagged packet. */ netisr_m2cpuid_t *nh_m2cpuid; /* Query CPU to process mbuf on. */ u_int nh_proto; /* Integer protocol ID. */ @@ -112,15 +112,15 @@ struct netisr_handler { }; /* - * Register, unregister, and other netisr2 handler management functions. + * Register, unregister, and other netisr handler management functions. */ -void netisr2_clearqdrops(const struct netisr_handler *nhp); -void netisr2_getqdrops(const struct netisr_handler *nhp, +void netisr_clearqdrops(const struct netisr_handler *nhp); +void netisr_getqdrops(const struct netisr_handler *nhp, u_int64_t *qdropsp); -void netisr2_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp); -void netisr2_register(const struct netisr_handler *nhp); -int netisr2_setqlimit(const struct netisr_handler *nhp, u_int qlimit); -void netisr2_unregister(const struct netisr_handler *nhp); +void netisr_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp); +void netisr_register(const struct netisr_handler *nhp); +int netisr_setqlimit(const struct netisr_handler *nhp, u_int qlimit); +void netisr_unregister(const struct netisr_handler *nhp); /* * Process a packet destined for a protocol, and attempt direct dispatch. @@ -128,29 +128,27 @@ void netisr2_unregister(const struct net * variant. */ int netisr_dispatch(u_int proto, struct mbuf *m); +int netisr_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m); int netisr_queue(u_int proto, struct mbuf *m); -int netisr2_dispatch(u_int proto, struct mbuf *m); -int netisr2_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m); -int netisr2_queue(u_int proto, struct mbuf *m); -int netisr2_queue_src(u_int proto, uintptr_t source, struct mbuf *m); +int netisr_queue_src(u_int proto, uintptr_t source, struct mbuf *m); /* * Provide a default implementation of "map a ID to a cpu ID". */ -u_int netisr2_default_flow2cpu(u_int flowid); +u_int netisr_default_flow2cpu(u_int flowid); /* - * Utility routines to return the number of CPUs participting in netisr2, and + * Utility routines to return the number of CPUs participting in netisr, and * to return a mapping from a number to a CPU ID that can be used with the * scheduler. */ -u_int netisr2_get_cpucount(void); -u_int netisr2_get_cpuid(u_int cpunumber); +u_int netisr_get_cpucount(void); +u_int netisr_get_cpuid(u_int cpunumber); /* - * Interfaces between DEVICE_POLLING and netisr2. + * Interfaces between DEVICE_POLLING and netisr. */ -void netisr2_sched_poll(void); +void netisr_sched_poll(void); void netisr_poll(void); void netisr_pollmore(void); Modified: projects/pnet/sys/net/rtsock.c ============================================================================== --- projects/pnet/sys/net/rtsock.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/net/rtsock.c Sat May 30 19:00:46 2009 (r193106) @@ -128,13 +128,13 @@ sysctl_route_netisr_maxqlen(SYSCTL_HANDL { int error, qlimit; - netisr2_getqlimit(&rtsock_nh, &qlimit); + netisr_getqlimit(&rtsock_nh, &qlimit); error = sysctl_handle_int(oidp, &qlimit, 0, req); if (error || !req->newptr) return (error); if (qlimit < 1) return (EINVAL); - return (netisr2_setqlimit(&rtsock_nh, qlimit)); + return (netisr_setqlimit(&rtsock_nh, qlimit)); } SYSCTL_PROC(_net_route, OID_AUTO, netisr_maxqlen, CTLTYPE_INT|CTLFLAG_RW, 0, 0, sysctl_route_netisr_maxqlen, "I", @@ -147,7 +147,7 @@ rts_init(void) if (TUNABLE_INT_FETCH("net.route.netisr_maxqlen", &tmp)) rtsock_nh.nh_qlimit = tmp; - netisr2_register(&rtsock_nh); + netisr_register(&rtsock_nh); } SYSINIT(rtsock, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, rts_init, 0); Modified: projects/pnet/sys/netatalk/ddp_usrreq.c ============================================================================== --- projects/pnet/sys/netatalk/ddp_usrreq.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netatalk/ddp_usrreq.c Sat May 30 19:00:46 2009 (r193106) @@ -279,9 +279,9 @@ ddp_init(void) { DDP_LIST_LOCK_INIT(); - netisr2_register(&atalk1_nh); - netisr2_register(&atalk2_nh); - netisr2_register(&aarp_nh); + netisr_register(&atalk1_nh); + netisr_register(&atalk2_nh); + netisr_register(&aarp_nh); } #if 0 Modified: projects/pnet/sys/netinet/if_ether.c ============================================================================== --- projects/pnet/sys/netinet/if_ether.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netinet/if_ether.c Sat May 30 19:00:46 2009 (r193106) @@ -829,6 +829,6 @@ arp_init(void) arp_iattach(NULL); #endif - netisr2_register(&arp_nh); + netisr_register(&arp_nh); } SYSINIT(arp, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, arp_init, 0); Modified: projects/pnet/sys/netinet/igmp.c ============================================================================== --- projects/pnet/sys/netinet/igmp.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netinet/igmp.c Sat May 30 19:00:46 2009 (r193106) @@ -3542,7 +3542,7 @@ igmp_sysinit(void) m_raopt = igmp_ra_alloc(); - netisr2_register(&igmp_nh); + netisr_register(&igmp_nh); } static void @@ -3551,7 +3551,7 @@ igmp_sysuninit(void) CTR1(KTR_IGMPV3, "%s: tearing down", __func__); - netisr2_unregister(&igmp_nh); + netisr_unregister(&igmp_nh); m_free(m_raopt); m_raopt = NULL; Modified: projects/pnet/sys/netinet/ip_divert.c ============================================================================== --- projects/pnet/sys/netinet/ip_divert.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netinet/ip_divert.c Sat May 30 19:00:46 2009 (r193106) @@ -472,7 +472,7 @@ div_output(struct socket *so, struct mbu SOCK_UNLOCK(so); #endif /* Send packet to input processing via netisr */ - netisr2_queue_src(NETISR_IP, (uintptr_t)so, m); + netisr_queue_src(NETISR_IP, (uintptr_t)so, m); } return error; Modified: projects/pnet/sys/netinet/ip_input.c ============================================================================== --- projects/pnet/sys/netinet/ip_input.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netinet/ip_input.c Sat May 30 19:00:46 2009 (r193106) @@ -256,13 +256,13 @@ sysctl_netinet_intr_queue_maxlen(SYSCTL_ { int error, qlimit; - netisr2_getqlimit(&ip_nh, &qlimit); + netisr_getqlimit(&ip_nh, &qlimit); error = sysctl_handle_int(oidp, &qlimit, 0, req); if (error || !req->newptr) return (error); if (qlimit < 1) return (EINVAL); - return (netisr2_setqlimit(&ip_nh, qlimit)); + return (netisr_setqlimit(&ip_nh, qlimit)); } SYSCTL_PROC(_net_inet_ip, IPCTL_INTRQMAXLEN, intr_queue_maxlen, CTLTYPE_INT|CTLFLAG_RW, 0, 0, sysctl_netinet_intr_queue_maxlen, "I", @@ -274,14 +274,14 @@ sysctl_netinet_intr_queue_drops(SYSCTL_H u_int64_t qdrops_long; int error, qdrops; - netisr2_getqdrops(&ip_nh, &qdrops_long); + netisr_getqdrops(&ip_nh, &qdrops_long); qdrops = qdrops_long; error = sysctl_handle_int(oidp, &qdrops, 0, req); if (error || !req->newptr) return (error); if (qdrops != 0) return (EINVAL); - netisr2_clearqdrops(&ip_nh); + netisr_clearqdrops(&ip_nh); return (0); } @@ -392,7 +392,7 @@ ip_init(void) /* Initialize various other remaining things. */ IPQ_LOCK_INIT(); - netisr2_register(&ip_nh); + netisr_register(&ip_nh); ip_ft = flowtable_alloc(ip_output_flowtable_size, FL_PCPU); } Modified: projects/pnet/sys/netinet6/ip6_input.c ============================================================================== --- projects/pnet/sys/netinet6/ip6_input.c Sat May 30 18:39:22 2009 (r193105) +++ projects/pnet/sys/netinet6/ip6_input.c Sat May 30 19:00:46 2009 (r193106) @@ -304,7 +304,7 @@ ip6_init(void) "error %d\n", __func__, i); ip6_nh.nh_qlimit = V_ip6qmaxlen; - netisr2_register(&ip6_nh); + netisr_register(&ip6_nh); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat May 30 19:11:45 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8825B1065670; Sat, 30 May 2009 19:11:45 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 758F08FC12; Sat, 30 May 2009 19:11:45 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UJBjl0016453; Sat, 30 May 2009 19:11:45 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UJBjxN016451; Sat, 30 May 2009 19:11:45 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301911.n4UJBjxN016451@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 19:11:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193107 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 19:11:45 -0000 Author: rwatson Date: Sat May 30 19:11:45 2009 New Revision: 193107 URL: http://svn.freebsd.org/changeset/base/193107 Log: Fix signed vs. unsigned nits, typos, add additional lock assertions. Suggested by: bz Suggested by: Modified: projects/pnet/sys/net/netisr.c projects/pnet/sys/net/netisr.h Modified: projects/pnet/sys/net/netisr.c ============================================================================== --- projects/pnet/sys/net/netisr.c Sat May 30 19:00:46 2009 (r193106) +++ projects/pnet/sys/net/netisr.c Sat May 30 19:11:45 2009 (r193107) @@ -100,7 +100,7 @@ __FBSDID("$FreeBSD$"); * Note: the NETISR_LOCKING define controls whether read locks are acquired * in packet processing paths requiring netisr registration stability. This * is disabled by default as it can lead to a measurable performance - * degradation even with rmlocks (3%-6% for loopback ping-ping traffic), and + * degradation even with rmlocks (3%-6% for loopback ping-pong traffic), and * because netisr registration and unregistration is extremely rare at * runtime. If it becomes more common, this decision should be revisited. * @@ -166,7 +166,7 @@ SYSCTL_INT(_net_isr, OID_AUTO, bindthrea * configuration and later modification using netisr_setqlimit(). */ #define NETISR_DEFAULT_MAXQLIMIT 10240 -static int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; +static u_int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; SYSCTL_INT(_net_isr, OID_AUTO, maxqlimit, CTLFLAG_RD, &netisr_maxqlimit, 0, "Maximum netisr per-protocol, per-CPU queue depth."); @@ -328,7 +328,7 @@ netisr_register(const struct netisr_hand * Test that the requested registration is valid. */ KASSERT(nhp->nh_name != NULL, - ("%s: nh_name NULL for %d", __func__, proto)); + ("%s: nh_name NULL for %u", __func__, proto)); KASSERT(nhp->nh_handler != NULL, ("%s: nh_handler NULL for %s", __func__, name)); KASSERT(nhp->nh_policy == NETISR_POLICY_SOURCE || @@ -349,16 +349,16 @@ netisr_register(const struct netisr_hand KASSERT(nhp->nh_qlimit != 0, ("%s: nh_qlimit 0 for %s", __func__, name)); KASSERT(proto < NETISR_MAXPROT, - ("%s(%d, %s): protocol too big", __func__, proto, name)); + ("%s(%u, %s): protocol too big", __func__, proto, name)); /* * Test that no existing registration exists for this protocol. */ NETISR_WLOCK(); KASSERT(np[proto].np_name == NULL, - ("%s(%d, %s): name present", __func__, proto, name)); + ("%s(%u, %s): name present", __func__, proto, name)); KASSERT(np[proto].np_handler == NULL, - ("%s(%d, %s): handler present", __func__, proto, name)); + ("%s(%u, %s): handler present", __func__, proto, name)); np[proto].np_name = name; np[proto].np_handler = nhp->nh_handler; @@ -397,11 +397,11 @@ netisr_clearqdrops(const struct netisr_h name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("%s(%d): protocol too big for %s", __func__, proto, name)); + ("%s(%u): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("%s(%d): protocol not registered for %s", __func__, proto, + ("%s(%u): protocol not registered for %s", __func__, proto, name)); for (i = 0; i < MAXCPU; i++) { @@ -430,11 +430,11 @@ netisr_getqdrops(const struct netisr_han name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("%s(%d): protocol too big for %s", __func__, proto, name)); + ("%s(%u): protocol too big for %s", __func__, proto, name)); NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, - ("%s(%d): protocol not registered for %s", __func__, proto, + ("%s(%u): protocol not registered for %s", __func__, proto, name)); for (i = 0; i < MAXCPU; i++) { @@ -461,11 +461,11 @@ netisr_getqlimit(const struct netisr_han name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("%s(%d): protocol too big for %s", __func__, proto, name)); + ("%s(%u): protocol too big for %s", __func__, proto, name)); NETISR_RLOCK(&tracker); KASSERT(np[proto].np_handler != NULL, - ("%s(%d): protocol not registered for %s", __func__, proto, + ("%s(%u): protocol not registered for %s", __func__, proto, name)); *qlimitp = np[proto].np_qlimit; NETISR_RUNLOCK(&tracker); @@ -493,11 +493,11 @@ netisr_setqlimit(const struct netisr_han name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("%s(%d): protocol too big for %s", __func__, proto, name)); + ("%s(%u): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("%s(%d): protocol not registered for %s", __func__, proto, + ("%s(%u): protocol not registered for %s", __func__, proto, name)); np[proto].np_qlimit = qlimit; @@ -517,6 +517,9 @@ netisr_drain_proto(struct netisr_work *n { struct mbuf *m; + /* + * We would assert the lock on the workstream but it's not passed in. + */ while ((m = npwp->nw_head) != NULL) { npwp->nw_head = m->m_nextpkt; m->m_nextpkt = NULL; @@ -549,11 +552,11 @@ netisr_unregister(const struct netisr_ha name = nhp->nh_name; #endif KASSERT(proto < NETISR_MAXPROT, - ("%s(%d): protocol too big for %s", __func__, proto, name)); + ("%s(%u): protocol too big for %s", __func__, proto, name)); NETISR_WLOCK(); KASSERT(np[proto].np_handler != NULL, - ("%s(%d): protocol not registered for %s", __func__, proto, + ("%s(%u): protocol not registered for %s", __func__, proto, name)); np[proto].np_name = NULL; @@ -645,12 +648,13 @@ netisr_process_workstream_proto(struct n u_int handled; struct mbuf *m; + NETISR_LOCK_ASSERT(); NWS_LOCK_ASSERT(nwsp); KASSERT(nwsp->nws_flags & NWS_RUNNING, - ("%s(%d): not running", __func__, proto)); + ("%s(%u): not running", __func__, proto)); KASSERT(proto >= 0 && proto < NETISR_MAXPROT, - ("%s(%d): invalid proto\n", __func__, proto)); + ("%s(%u): invalid proto\n", __func__, proto)); npwp = &nwsp->nws_work[proto]; if (npwp->nw_len == 0) @@ -679,7 +683,7 @@ netisr_process_workstream_proto(struct n np[proto].np_handler(m); } KASSERT(local_npw.nw_len == 0, - ("%s(%d): len %d", __func__, proto, local_npw.nw_len)); + ("%s(%u): len %u", __func__, proto, local_npw.nw_len)); NWS_LOCK(nwsp); npwp->nw_handled += handled; return (handled); @@ -801,13 +805,13 @@ netisr_queue_src(u_int proto, uintptr_t u_int cpuid, error; KASSERT(proto < NETISR_MAXPROT, - ("%s: invalid proto %d", __func__, proto)); + ("%s: invalid proto %u", __func__, proto)); #ifdef NETISR_LOCKING NETISR_RLOCK(&tracker); #endif KASSERT(np[proto].np_handler != NULL, - ("%s: invalid proto %d", __func__, proto)); + ("%s: invalid proto %u", __func__, proto)); m = netisr_select_cpuid(&np[proto], source, m, &cpuid); if (m != NULL) @@ -981,7 +985,7 @@ netisr_start_swi(u_int cpuid, struct pcp nwsp = &nws[cpuid]; mtx_init(&nwsp->nws_mtx, "netisr_mtx", NULL, MTX_DEF); nwsp->nws_cpu = cpuid; - snprintf(swiname, sizeof(swiname), "netisr %d", cpuid); + snprintf(swiname, sizeof(swiname), "netisr %u", cpuid); error = swi_add(&nwsp->nws_intr_event, swiname, swi_net, nwsp, SWI_NET, INTR_MPSAFE, &nwsp->nws_swi_cookie); if (error) @@ -990,7 +994,7 @@ netisr_start_swi(u_int cpuid, struct pcp if (netisr_bindthreads) { error = intr_event_bind(nwsp->nws_intr_event, cpuid); if (error != 0) - printf("%s: cpu %d: intr_event_bind: %d", __func__, + printf("%s: cpu %u: intr_event_bind: %d", __func__, cpuid, error); } NETISR_WLOCK(); @@ -1004,7 +1008,7 @@ netisr_start_swi(u_int cpuid, struct pcp * of most fields in global data structures. * * Start a worker thread for the boot CPU so that we can support network - * traffic immediately in case the netowrk stack is used before additional + * traffic immediately in case the network stack is used before additional * CPUs are started (for example, diskless boot). */ static void @@ -1060,7 +1064,8 @@ DB_SHOW_COMMAND(netisr, db_show_netisr) { struct netisr_workstream *nwsp; struct netisr_work *nwp; - int cpu, first, proto; + int first, proto; + u_int cpu; db_printf("%3s %6s %5s %5s %5s %8s %8s %8s %8s\n", "CPU", "Proto", "Len", "WMark", "Max", "Disp", "HDisp", "Drop", "Queue"); Modified: projects/pnet/sys/net/netisr.h ============================================================================== --- projects/pnet/sys/net/netisr.h Sat May 30 19:00:46 2009 (r193106) +++ projects/pnet/sys/net/netisr.h Sat May 30 19:11:45 2009 (r193107) @@ -133,7 +133,7 @@ int netisr_queue(u_int proto, struct mbu int netisr_queue_src(u_int proto, uintptr_t source, struct mbuf *m); /* - * Provide a default implementation of "map a ID to a cpu ID". + * Provide a default implementation of "map an ID to a CPU ID". */ u_int netisr_default_flow2cpu(u_int flowid); From owner-svn-src-projects@FreeBSD.ORG Sat May 30 19:21:56 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F12B9106564A; Sat, 30 May 2009 19:21:56 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C50568FC15; Sat, 30 May 2009 19:21:56 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UJLuom016656; Sat, 30 May 2009 19:21:56 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UJLuBh016655; Sat, 30 May 2009 19:21:56 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905301921.n4UJLuBh016655@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 19:21:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193108 - projects/pnet/sys/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 19:21:57 -0000 Author: rwatson Date: Sat May 30 19:21:56 2009 New Revision: 193108 URL: http://svn.freebsd.org/changeset/base/193108 Log: Rather than asserting that protocols set a per-protocol queue limit during netisr registration, use a default value (256). If the default is greater than the maximum, truncate. Provide loader tunables to set both, but not at runtime. Modified: projects/pnet/sys/net/netisr.c Modified: projects/pnet/sys/net/netisr.c ============================================================================== --- projects/pnet/sys/net/netisr.c Sat May 30 19:11:45 2009 (r193107) +++ projects/pnet/sys/net/netisr.c Sat May 30 19:21:56 2009 (r193108) @@ -167,11 +167,24 @@ SYSCTL_INT(_net_isr, OID_AUTO, bindthrea */ #define NETISR_DEFAULT_MAXQLIMIT 10240 static u_int netisr_maxqlimit = NETISR_DEFAULT_MAXQLIMIT; +TUNABLE_INT("net.isr.maxqlimit", &netisr_maxqlimit); SYSCTL_INT(_net_isr, OID_AUTO, maxqlimit, CTLFLAG_RD, &netisr_maxqlimit, 0, "Maximum netisr per-protocol, per-CPU queue depth."); /* + * The default per-workstream queue limit for protocols that don't initialize + * the nh_qlimit field of their struct netisr_handler. If this is set above + * netisr_maxqlimit, we truncate it to the maximum during boot. + */ +#define NETISR_DEFAULT_DEFAULTQLIMIT 256 +static u_int netisr_defaultqlimit = NETISR_DEFAULT_DEFAULTQLIMIT; +TUNABLE_INT("net.isr.defaultqlimit", &netisr_defaultqlimit); +SYSCTL_INT(_net_isr, OID_AUTO, defaultqlimit, CTLFLAG_RD, + &netisr_defaultqlimit, 0, + "Default netisr per-protocol, per-CPU queue limit if not set by protocol"); + +/* * Each protocol is described by a struct netisr_proto, which holds all * global per-protocol information. This data structure is set up by * netisr_register(), and derived from the public struct netisr_handler. @@ -346,8 +359,6 @@ netisr_register(const struct netisr_hand KASSERT(nhp->nh_policy != NETISR_POLICY_CPU || nhp->nh_m2cpuid != NULL, ("%s: nh_policy == CPU but m2cpuid not defined for %s", __func__, name)); - KASSERT(nhp->nh_qlimit != 0, - ("%s: nh_qlimit 0 for %s", __func__, name)); KASSERT(proto < NETISR_MAXPROT, ("%s(%u, %s): protocol too big", __func__, proto, name)); @@ -364,7 +375,9 @@ netisr_register(const struct netisr_hand np[proto].np_handler = nhp->nh_handler; np[proto].np_m2flow = nhp->nh_m2flow; np[proto].np_m2cpuid = nhp->nh_m2cpuid; - if (nhp->nh_qlimit > netisr_maxqlimit) { + if (nhp->nh_qlimit == 0) + np[proto].np_qlimit = netisr_defaultqlimit; + else if (nhp->nh_qlimit > netisr_maxqlimit) { printf("%s: %s requested queue limit %u capped to " "net.isr.maxqlimit %u\n", __func__, name, nhp->nh_qlimit, netisr_maxqlimit); @@ -1022,6 +1035,8 @@ netisr_init(void *arg) netisr_maxthreads = 1; if (netisr_maxthreads > MAXCPU) netisr_maxthreads = MAXCPU; + if (netisr_defaultqlimit > netisr_maxqlimit) + netisr_defaultqlimit = netisr_maxqlimit; #ifdef DEVICE_POLLING /* * The device polling code is not yet aware of how to deal with From owner-svn-src-projects@FreeBSD.ORG Sat May 30 20:43:04 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2EAA1065672; Sat, 30 May 2009 20:43:03 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D60978FC0A; Sat, 30 May 2009 20:43:03 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4UKh3Ig018628; Sat, 30 May 2009 20:43:03 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4UKh3I9018619; Sat, 30 May 2009 20:43:03 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905302043.n4UKh3I9018619@svn.freebsd.org> From: Robert Watson Date: Sat, 30 May 2009 20:43:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193116 - in projects/pnet/sys: net netatalk netinet netinet6 netipx netnatm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2009 20:43:04 -0000 Author: rwatson Date: Sat May 30 20:43:03 2009 New Revision: 193116 URL: http://svn.freebsd.org/changeset/base/193116 Log: Where existing queue limits are IFQ_MAXLEN or similar-sounding numbers (50), use the netisr2 framework's default queue lengths. This is basically all network protocols using netisr except natm, which sets the limit to 1000. Modified: projects/pnet/sys/net/rtsock.c projects/pnet/sys/netatalk/ddp_usrreq.c projects/pnet/sys/netinet/if_ether.c projects/pnet/sys/netinet/igmp.c projects/pnet/sys/netinet/ip_input.c projects/pnet/sys/netinet6/ip6_input.c projects/pnet/sys/netinet6/vinet6.h projects/pnet/sys/netipx/ipx_input.c projects/pnet/sys/netnatm/natm_proto.c Modified: projects/pnet/sys/net/rtsock.c ============================================================================== --- projects/pnet/sys/net/rtsock.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/net/rtsock.c Sat May 30 20:43:03 2009 (r193116) @@ -119,7 +119,6 @@ static struct netisr_handler rtsock_nh = .nh_name = "rtsock", .nh_handler = rts_input, .nh_proto = NETISR_ROUTE, - .nh_qlimit = 256, .nh_policy = NETISR_POLICY_SOURCE, }; Modified: projects/pnet/sys/netatalk/ddp_usrreq.c ============================================================================== --- projects/pnet/sys/netatalk/ddp_usrreq.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netatalk/ddp_usrreq.c Sat May 30 20:43:03 2009 (r193116) @@ -74,7 +74,6 @@ static const struct netisr_handler atalk .nh_name = "atalk1", .nh_handler = at1intr, .nh_proto = NETISR_ATALK1, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_SOURCE, }; @@ -82,7 +81,6 @@ static const struct netisr_handler atalk .nh_name = "atalk2", .nh_handler = at2intr, .nh_proto = NETISR_ATALK2, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_SOURCE, }; @@ -90,7 +88,6 @@ static const struct netisr_handler aarp_ .nh_name = "aarp", .nh_handler = aarpintr, .nh_proto = NETISR_AARP, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_SOURCE, }; Modified: projects/pnet/sys/netinet/if_ether.c ============================================================================== --- projects/pnet/sys/netinet/if_ether.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netinet/if_ether.c Sat May 30 20:43:03 2009 (r193116) @@ -120,7 +120,6 @@ static const struct netisr_handler arp_n .nh_name = "arp", .nh_handler = arpintr, .nh_proto = NETISR_ARP, - .nh_qlimit = 50, .nh_policy = NETISR_POLICY_SOURCE, }; Modified: projects/pnet/sys/netinet/igmp.c ============================================================================== --- projects/pnet/sys/netinet/igmp.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netinet/igmp.c Sat May 30 20:43:03 2009 (r193116) @@ -148,7 +148,6 @@ static const struct netisr_handler igmp_ .nh_name = "igmp", .nh_handler = igmp_intr, .nh_proto = NETISR_IGMP, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_SOURCE, }; Modified: projects/pnet/sys/netinet/ip_input.c ============================================================================== --- projects/pnet/sys/netinet/ip_input.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netinet/ip_input.c Sat May 30 20:43:03 2009 (r193116) @@ -170,7 +170,6 @@ static struct netisr_handler ip_nh = { .nh_handler = ip_input, .nh_m2flow = ip_input_m2flow, .nh_proto = NETISR_IP, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_FLOW, }; Modified: projects/pnet/sys/netinet6/ip6_input.c ============================================================================== --- projects/pnet/sys/netinet6/ip6_input.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netinet6/ip6_input.c Sat May 30 20:43:03 2009 (r193116) @@ -125,7 +125,6 @@ static struct netisr_handler ip6_nh = { .nh_name = "ip6", .nh_handler = ip6_input, .nh_proto = NETISR_IPV6, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_FLOW, }; @@ -136,7 +135,6 @@ struct vnet_inet6 vnet_inet6_0; #endif #ifdef VIMAGE_GLOBALS -static int ip6qmaxlen; struct in6_ifaddr *in6_ifaddr; struct ip6stat ip6stat; @@ -193,7 +191,6 @@ ip6_init(void) struct ip6protosw *pr; int i; - V_ip6qmaxlen = IFQ_MAXLEN; V_in6_maxmtu = 0; #ifdef IP6_AUTO_LINKLOCAL V_ip6_auto_linklocal = IP6_AUTO_LINKLOCAL; @@ -303,7 +300,6 @@ ip6_init(void) printf("%s: WARNING: unable to register pfil hook, " "error %d\n", __func__, i); - ip6_nh.nh_qlimit = V_ip6qmaxlen; netisr_register(&ip6_nh); } Modified: projects/pnet/sys/netinet6/vinet6.h ============================================================================== --- projects/pnet/sys/netinet6/vinet6.h Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netinet6/vinet6.h Sat May 30 20:43:03 2009 (r193116) @@ -118,7 +118,6 @@ struct vnet_inet6 { int _icmp6_nodeinfo; int _udp6_sendspace; int _udp6_recvspace; - int _ip6qmaxlen; int _ip6_prefer_tempaddr; int _nd6_prune; @@ -224,7 +223,6 @@ extern struct vnet_inet6 vnet_inet6_0; #define V_ip6_use_tempaddr VNET_INET6(ip6_use_tempaddr) #define V_ip6_v6only VNET_INET6(ip6_v6only) #define V_ip6q VNET_INET6(ip6q) -#define V_ip6qmaxlen VNET_INET6(ip6qmaxlen) #define V_ip6stat VNET_INET6(ip6stat) #define V_ip6stealth VNET_INET6(ip6stealth) #define V_llinfo_nd6 VNET_INET6(llinfo_nd6) Modified: projects/pnet/sys/netipx/ipx_input.c ============================================================================== --- projects/pnet/sys/netipx/ipx_input.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netipx/ipx_input.c Sat May 30 20:43:03 2009 (r193116) @@ -129,7 +129,6 @@ static struct netisr_handler ipx_nh = { .nh_name = "ipx", .nh_handler = ipxintr, .nh_proto = NETISR_IPX, - .nh_qlimit = IFQ_MAXLEN, .nh_policy = NETISR_POLICY_SOURCE, }; Modified: projects/pnet/sys/netnatm/natm_proto.c ============================================================================== --- projects/pnet/sys/netnatm/natm_proto.c Sat May 30 20:11:23 2009 (r193115) +++ projects/pnet/sys/netnatm/natm_proto.c Sat May 30 20:43:03 2009 (r193116) @@ -92,7 +92,7 @@ static struct netisr_handler natm_nh = { .nh_name = "natm", .nh_handler = natmintr, .nh_proto = NETISR_NATM, - .nh_qlimit = 1000 /* IFQ_MAXLEN */, + .nh_qlimit = 1000, .nh_policy = NETISR_POLICY_SOURCE, };