From owner-svn-src-projects@FreeBSD.ORG Sat Feb 14 19:24:46 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7B4756F5; Sat, 14 Feb 2015 19:24:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 62927B03; Sat, 14 Feb 2015 19:24:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t1EJOkww030088; Sat, 14 Feb 2015 19:24:46 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t1EJOcrE030052; Sat, 14 Feb 2015 19:24:38 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201502141924.t1EJOcrE030052@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 14 Feb 2015 19:24:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r278777 - in projects/building-blocks: bin/pkill/tests cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io etc/rc.d lib/libc/gen lib/libc/include lib/libc/regex lib/libc/sys lib/libi... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 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, 14 Feb 2015 19:24:46 -0000 Author: ngie Date: Sat Feb 14 19:24:38 2015 New Revision: 278777 URL: https://svnweb.freebsd.org/changeset/base/278777 Log: MFhead @ r278776 Deleted: projects/building-blocks/lib/libiconv/ Modified: projects/building-blocks/bin/pkill/tests/pgrep-j_test.sh projects/building-blocks/bin/pkill/tests/pkill-j_test.sh projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.c projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.d projects/building-blocks/etc/rc.d/LOGIN projects/building-blocks/etc/rc.d/local_unbound projects/building-blocks/etc/rc.d/utx projects/building-blocks/lib/libc/gen/_spinlock_stub.c projects/building-blocks/lib/libc/gen/dlopen.3 projects/building-blocks/lib/libc/gen/ulimit.c projects/building-blocks/lib/libc/include/libc_private.h projects/building-blocks/lib/libc/regex/regcomp.c projects/building-blocks/lib/libc/sys/interposing_table.c projects/building-blocks/lib/libproc/proc_sym.c projects/building-blocks/lib/libthr/thread/thr_private.h projects/building-blocks/lib/libthr/thread/thr_spinlock.c projects/building-blocks/lib/libthr/thread/thr_syscalls.c projects/building-blocks/sbin/sysctl/sysctl.8 projects/building-blocks/sbin/sysctl/sysctl.c projects/building-blocks/share/mk/bsd.lib.mk projects/building-blocks/share/mk/bsd.prog.mk projects/building-blocks/sys/amd64/amd64/db_disasm.c projects/building-blocks/sys/arm/arm/cpuinfo.c projects/building-blocks/sys/cam/ctl/ctl_backend_block.c projects/building-blocks/sys/cam/ctl/ctl_backend_ramdisk.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_beacon.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd_inc.h projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_gpio.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_keycache.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_osprey22.ini projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_power.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_recv_ds.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_xmit.c projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9340.ini projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9580.ini projects/building-blocks/sys/contrib/vchiq/interface/compat/vchi_bsd.h projects/building-blocks/sys/dev/ath/if_ath_pci.c projects/building-blocks/sys/dev/dwc/if_dwc.c projects/building-blocks/sys/dev/netmap/netmap.c projects/building-blocks/sys/dev/oce/oce_mbox.c projects/building-blocks/sys/dev/smc/if_smc.c projects/building-blocks/sys/dev/vt/font/vt_mouse_cursor.c projects/building-blocks/sys/dev/wpi/if_wpi.c projects/building-blocks/sys/dev/wpi/if_wpireg.h projects/building-blocks/sys/i386/i386/db_disasm.c projects/building-blocks/sys/kern/imgact_elf.c projects/building-blocks/sys/kern/sysv_shm.c projects/building-blocks/sys/kern/vfs_subr.c projects/building-blocks/sys/net/if_bridge.c projects/building-blocks/sys/netgraph/ng_base.c projects/building-blocks/sys/ofed/include/linux/gfp.h projects/building-blocks/sys/ofed/include/linux/kernel.h projects/building-blocks/sys/ofed/include/linux/kref.h projects/building-blocks/sys/ofed/include/linux/pci.h projects/building-blocks/sys/sys/disk.h projects/building-blocks/sys/sys/sockbuf.h projects/building-blocks/sys/x86/acpica/madt.c projects/building-blocks/sys/x86/include/vmware.h projects/building-blocks/tools/tools/netmap/pkt-gen.c projects/building-blocks/usr.bin/gcore/elfcore.c projects/building-blocks/usr.sbin/flowctl/flowctl.c projects/building-blocks/usr.sbin/freebsd-update/freebsd-update.sh projects/building-blocks/usr.sbin/gssd/Makefile projects/building-blocks/usr.sbin/gssd/gssd.c projects/building-blocks/usr.sbin/pw/tests/pw_usernext.sh Directory Properties: projects/building-blocks/ (props changed) projects/building-blocks/cddl/ (props changed) projects/building-blocks/cddl/contrib/opensolaris/ (props changed) projects/building-blocks/etc/ (props changed) projects/building-blocks/lib/libc/ (props changed) projects/building-blocks/sbin/ (props changed) projects/building-blocks/share/ (props changed) projects/building-blocks/sys/ (props changed) Modified: projects/building-blocks/bin/pkill/tests/pgrep-j_test.sh ============================================================================== --- projects/building-blocks/bin/pkill/tests/pgrep-j_test.sh Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/bin/pkill/tests/pgrep-j_test.sh Sat Feb 14 19:24:38 2015 (r278777) @@ -4,17 +4,7 @@ jail_name_to_jid() { local check_name="$1" - ( - line="$(jls -n 2> /dev/null | grep name=$check_name )" - for nv in $line; do - local name="${nv%=*}" - if [ "${name}" = "jid" ]; then - eval $nv - echo $jid - break - fi - done - ) + jls -j "$check_name" -s 2>/dev/null | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g' } base=pgrep_j_test @@ -37,10 +27,19 @@ jail -c path=/ name=${base}_1_1 ip4.addr jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \ command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount & -jid1=$(jail_name_to_jid ${base}_1_1) -jid2=$(jail_name_to_jid ${base}_1_2) -jid="${jid1},${jid2}" -pid1="$(pgrep -f -x -j $jid "$sleep $sleep_amount" | sort)" +for i in `seq 1 10`; do + jid1=$(jail_name_to_jid ${base}_1_1) + jid2=$(jail_name_to_jid ${base}_1_2) + jid="${jid1},${jid2}" + case "$jid" in + [0-9]+,[0-9]+) + break + ;; + esac + sleep 0.1 +done + +pid1="$(pgrep -f -x -j "$jid" "$sleep $sleep_amount" | sort)" pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \ $(cat ${PWD}/${base}_1_2.pid) | sort) if [ "$pid1" = "$pid2" ]; then @@ -50,6 +49,7 @@ else fi [ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid) [ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid) +wait name="pgrep -j any" sleep_amount=6 @@ -70,6 +70,7 @@ else fi [ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid) [ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid) +wait name="pgrep -j none" sleep_amount=7 Modified: projects/building-blocks/bin/pkill/tests/pkill-j_test.sh ============================================================================== --- projects/building-blocks/bin/pkill/tests/pkill-j_test.sh Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/bin/pkill/tests/pkill-j_test.sh Sat Feb 14 19:24:38 2015 (r278777) @@ -4,99 +4,90 @@ jail_name_to_jid() { local check_name="$1" - ( - line="$(jls -n 2> /dev/null | grep name=$check_name )" - for nv in $line; do - local name="${nv%=*}" - if [ "${name}" = "jid" ]; then - eval $nv - echo $jid - break - fi - done - ) + jls -j "$check_name" -s 2>/dev/null | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g' } base=pkill_j_test +if [ `id -u` -ne 0 ]; then + echo "1..0 # skip Test needs uid 0." + exit 0 +fi + echo "1..3" +sleep=$(pwd)/sleep.txt +ln -sf /bin/sleep $sleep + name="pkill -j " -if [ `id -u` -eq 0 ]; then - sleep=$(pwd)/sleep.txt - ln -sf /bin/sleep $sleep - jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \ - command=daemon -p ${PWD}/${base}_1_1.pid $sleep 5 & +sleep_amount=5 +jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \ + command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount & + +jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \ + command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount & - jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \ - command=daemon -p ${PWD}/${base}_1_2.pid $sleep 5 & +$sleep $sleep_amount & - $sleep 5 & - sleep 0.5 +for i in `seq 1 10`; do jid1=$(jail_name_to_jid ${base}_1_1) jid2=$(jail_name_to_jid ${base}_1_2) jid="${jid1},${jid2}" - if pkill -f -j "$jid" $sleep && sleep 0.5 && - ! -f ${PWD}/${base}_1_1.pid && - ! -f ${PWD}/${base}_1_2.pid ; then - echo "ok 1 - $name" - else - echo "not ok 1 - $name" - fi 2>/dev/null - rm -f $sleep - [ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid) - [ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid) - wait + case "$jid" in + [0-9]+,[0-9]+) + break + ;; + esac + sleep 0.1 +done + +if pkill -f -j "$jid" $sleep && sleep 0.5 && + ! -f ${PWD}/${base}_1_1.pid && + ! -f ${PWD}/${base}_1_2.pid ; then + echo "ok 1 - $name" else - echo "ok 1 - $name # skip Test needs uid 0." -fi + echo "not ok 1 - $name" +fi 2>/dev/null +[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid) +[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid) +wait name="pkill -j any" -if [ `id -u` -eq 0 ]; then - sleep=$(pwd)/sleep.txt - ln -sf /bin/sleep $sleep - jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \ - command=daemon -p ${PWD}/${base}_2_1.pid $sleep 5 & - - jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \ - command=daemon -p ${PWD}/${base}_2_2.pid $sleep 5 & - - $sleep 5 & - sleep 0.5 - chpid3=$! - if pkill -f -j any $sleep && sleep 0.5 && - [ ! -f ${PWD}/${base}_2_1.pid -a - ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then - echo "ok 2 - $name" - else - echo "not ok 2 - $name" - fi 2>/dev/null - rm -f $sleep - [ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid) - [ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid) - wait +sleep_amount=6 +jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \ + command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount & + +jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \ + command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount & + +$sleep $sleep_amount & +chpid3=$! +sleep 0.5 +if pkill -f -j any $sleep && sleep 0.5 && + [ ! -f ${PWD}/${base}_2_1.pid -a + ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then + echo "ok 2 - $name" else - echo "ok 2 - $name # skip Test needs uid 0." -fi + echo "not ok 2 - $name" +fi 2>/dev/null +[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid) +[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid) +wait name="pkill -j none" -if [ `id -u` -eq 0 ]; then - sleep=$(pwd)/sleep.txt - ln -sf /bin/sleep $sleep - daemon -p ${PWD}/${base}_3_1.pid $sleep 5 - jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \ - command=daemon -p ${PWD}/${base}_3_2.pid $sleep 5 & - sleep 1 - if pkill -f -j none "$sleep 5" && sleep 1 && - [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then - echo "ok 3 - $name" - else - ls ${PWD}/*.pid - echo "not ok 3 - $name" - fi 2>/dev/null - rm -f $sleep - [ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid) - [ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid) +sleep_amount=7 +daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount +jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \ + command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount & +sleep 1 +if pkill -f -j none "$sleep $sleep_amount" && sleep 1 && + [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then + echo "ok 3 - $name" else - echo "ok 3 - $name # skip Test needs uid 0." -fi + ls ${PWD}/*.pid + echo "not ok 3 - $name" +fi 2>/dev/null +[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid) +[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid) + +rm -f $sleep Modified: projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.c ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.c Sat Feb 14 19:24:38 2015 (r278777) @@ -26,6 +26,8 @@ #pragma ident "%Z%%M% %I% %E% SMI" +#include + #include #include #include @@ -69,7 +71,7 @@ main(int argc, char *argv[]) */ if (sigsetjmp(env, 1) == 0) { for (;;) - (void) ioctl(-1, -1, NULL); + (void) ioctl(-1, 0, NULL); } /* @@ -80,20 +82,19 @@ main(int argc, char *argv[]) fds[n++] = open(file, O_WRONLY); fds[n++] = open(file, O_RDWR); - fds[n++] = open(file, O_RDWR | O_APPEND | O_CREAT | O_DSYNC | - O_LARGEFILE | O_NOCTTY | O_NONBLOCK | O_NDELAY | O_RSYNC | - O_SYNC | O_TRUNC | O_XATTR, 0666); + fds[n++] = open(file, O_RDWR | O_APPEND | O_CREAT | + O_NOCTTY | O_NONBLOCK | O_NDELAY | O_SYNC | O_TRUNC | 0666); fds[n++] = open(file, O_RDWR); (void) lseek(fds[n - 1], 123, SEEK_SET); /* * Once we have all the file descriptors in the state we want to test, - * issue a bogus ioctl() on each fd with cmd -1 and arg NULL to whack + * issue a bogus ioctl() on each fd with cmd 0 and arg NULL to whack * our DTrace script into recording the content of the fds[] array. */ for (i = 0; i < n; i++) - (void) ioctl(fds[i], -1, NULL); + (void) ioctl(fds[i], 0, NULL); assert(n <= sizeof (fds) / sizeof (fds[0])); exit(0); Modified: projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.d ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.d Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/io/tst.fds.d Sat Feb 14 19:24:38 2015 (r278777) @@ -36,7 +36,7 @@ syscall::ioctl:entry } syscall::ioctl:entry -/pid == $1 && arg0 != -1u && arg1 == -1u && arg2 == NULL/ +/pid == $1 && arg0 != -1u && arg1 == 0 && arg2 == NULL/ { printf("fds[%d] fi_name = %s\n", arg0, fds[arg0].fi_name); printf("fds[%d] fi_dirname = %s\n", arg0, fds[arg0].fi_dirname); Modified: projects/building-blocks/etc/rc.d/LOGIN ============================================================================== --- projects/building-blocks/etc/rc.d/LOGIN Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/etc/rc.d/LOGIN Sat Feb 14 19:24:38 2015 (r278777) @@ -4,7 +4,7 @@ # # PROVIDE: LOGIN -# REQUIRE: DAEMON utx +# REQUIRE: DAEMON # This is a dummy dependency to ensure user services such as xdm, # inetd, cron and kerberos are started after everything else, in case Modified: projects/building-blocks/etc/rc.d/local_unbound ============================================================================== --- projects/building-blocks/etc/rc.d/local_unbound Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/etc/rc.d/local_unbound Sat Feb 14 19:24:38 2015 (r278777) @@ -5,6 +5,7 @@ # PROVIDE: local_unbound DNS # REQUIRE: FILESYSTEMS netif resolv routing +# BEFORE: NETWORKING # KEYWORD: shutdown . /etc/rc.subr Modified: projects/building-blocks/etc/rc.d/utx ============================================================================== --- projects/building-blocks/etc/rc.d/utx Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/etc/rc.d/utx Sat Feb 14 19:24:38 2015 (r278777) @@ -5,6 +5,7 @@ # PROVIDE: utx # REQUIRE: DAEMON FILESYSTEMS +# BEFORE: LOGIN # KEYWORD: shutdown . /etc/rc.subr Modified: projects/building-blocks/lib/libc/gen/_spinlock_stub.c ============================================================================== --- projects/building-blocks/lib/libc/gen/_spinlock_stub.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/gen/_spinlock_stub.c Sat Feb 14 19:24:38 2015 (r278777) @@ -33,51 +33,48 @@ __FBSDID("$FreeBSD$"); #include #include "spinlock.h" +#include "libc_private.h" long _atomic_lock_stub(volatile long *); void _spinlock_stub(spinlock_t *); void _spinunlock_stub(spinlock_t *); void _spinlock_debug_stub(spinlock_t *, char *, int); -/* - * Declare weak definitions in case the application is not linked - * with libpthread. - */ __weak_reference(_atomic_lock_stub, _atomic_lock); -__weak_reference(_spinlock_stub, _spinlock); -__weak_reference(_spinunlock_stub, _spinunlock); -__weak_reference(_spinlock_debug_stub, _spinlock_debug); - -/* - * This function is a stub for the _atomic_lock function in libpthread. - */ + long _atomic_lock_stub(volatile long *lck __unused) { return (0L); } +__weak_reference(_spinlock, _spinlock_debug); +#pragma weak _spinlock +void +_spinlock(spinlock_t *lck) +{ + + ((void (*)(spinlock_t *lck))__libc_interposing[INTERPOS_spinlock]) + (lck); -/* - * This function is a stub for the spinlock function in libpthread. - */ +} + +#pragma weak _spinlock void -_spinlock_stub(spinlock_t *lck __unused) +_spinunlock(spinlock_t *lck) { + + ((void (*)(spinlock_t *lck))__libc_interposing[INTERPOS_spinunlock]) + (lck); + } -/* - * This function is a stub for the spinunlock function in libpthread. - */ void -_spinunlock_stub(spinlock_t *lck __unused) +__libc_spinlock_stub(spinlock_t *lck __unused) { } -/* - * This function is a stub for the debug spinlock function in libpthread. - */ void -_spinlock_debug_stub(spinlock_t *lck __unused, char *fname __unused, int lineno __unused) +__libc_spinunlock_stub(spinlock_t *lck __unused) { } Modified: projects/building-blocks/lib/libc/gen/dlopen.3 ============================================================================== --- projects/building-blocks/lib/libc/gen/dlopen.3 Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/gen/dlopen.3 Sat Feb 14 19:24:38 2015 (r278777) @@ -32,7 +32,7 @@ .\" @(#) dlopen.3 1.6 90/01/31 SMI .\" $FreeBSD$ .\" -.Dd December 21, 2011 +.Dd February 14, 2015 .Dt DLOPEN 3 .Os .Sh NAME @@ -236,7 +236,7 @@ as follows, in the given order: The referencing object itself (or the object from which the call to .Fn dlsym is made), if that object was linked using the -.Fl Wsymbolic +.Fl Bsymbolic option to .Xr ld 1 . .It Modified: projects/building-blocks/lib/libc/gen/ulimit.c ============================================================================== --- projects/building-blocks/lib/libc/gen/ulimit.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/gen/ulimit.c Sat Feb 14 19:24:38 2015 (r278777) @@ -53,13 +53,13 @@ ulimit(int cmd, ...) va_start(ap, cmd); arg = va_arg(ap, long); va_end(ap); - if (arg > RLIM_INFINITY / 512 || arg < 0) - arg = RLIM_INFINITY / 512; limit.rlim_max = limit.rlim_cur = (rlim_t)arg * 512; /* The setrlimit() function sets errno to EPERM if needed. */ if (setrlimit(RLIMIT_FSIZE, &limit) == -1) return (-1); + if (arg * 512 > LONG_MAX) + return (LONG_MAX); return (arg); } else { errno = EINVAL; Modified: projects/building-blocks/lib/libc/include/libc_private.h ============================================================================== --- projects/building-blocks/lib/libc/include/libc_private.h Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/include/libc_private.h Sat Feb 14 19:24:38 2015 (r278777) @@ -95,6 +95,9 @@ do { \ _SPINUNLOCK(&__stdio_thread_lock); \ } while (0) +void __libc_spinlock_stub(struct _spinlock *); +void __libc_spinunlock_stub(struct _spinlock *); + /* * Indexes into the pthread jump table. * @@ -216,6 +219,8 @@ enum { INTERPOS_write, INTERPOS_writev, INTERPOS__pthread_mutex_init_calloc_cb, + INTERPOS_spinlock, + INTERPOS_spinunlock, INTERPOS_MAX }; Modified: projects/building-blocks/lib/libc/regex/regcomp.c ============================================================================== --- projects/building-blocks/lib/libc/regex/regcomp.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/regex/regcomp.c Sat Feb 14 19:24:38 2015 (r278777) @@ -192,6 +192,7 @@ regcomp(regex_t * __restrict preg, struct parse *p = &pa; int i; size_t len; + size_t maxlen; #ifdef REDEBUG # define GOODFLAGS(f) (f) #else @@ -213,7 +214,23 @@ regcomp(regex_t * __restrict preg, g = (struct re_guts *)malloc(sizeof(struct re_guts)); if (g == NULL) return(REG_ESPACE); + /* + * Limit the pattern space to avoid a 32-bit overflow on buffer + * extension. Also avoid any signed overflow in case of conversion + * so make the real limit based on a 31-bit overflow. + * + * Likely not applicable on 64-bit systems but handle the case + * generically (who are we to stop people from using ~715MB+ + * patterns?). + */ + maxlen = ((size_t)-1 >> 1) / sizeof(sop) * 2 / 3; + if (len >= maxlen) { + free((char *)g); + return(REG_ESPACE); + } p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ + assert(p->ssize >= len); + p->strip = (sop *)malloc(p->ssize * sizeof(sop)); p->slen = 0; if (p->strip == NULL) { Modified: projects/building-blocks/lib/libc/sys/interposing_table.c ============================================================================== --- projects/building-blocks/lib/libc/sys/interposing_table.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libc/sys/interposing_table.c Sat Feb 14 19:24:38 2015 (r278777) @@ -73,6 +73,8 @@ interpos_func_t __libc_interposing[INTER SLOT(write, __sys_write), SLOT(writev, __sys_writev), SLOT(_pthread_mutex_init_calloc_cb, _pthread_mutex_init_calloc_cb_stub), + SLOT(spinlock, __libc_spinlock_stub), + SLOT(spinunlock, __libc_spinunlock_stub), }; #undef SLOT Modified: projects/building-blocks/lib/libproc/proc_sym.c ============================================================================== --- projects/building-blocks/lib/libproc/proc_sym.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libproc/proc_sym.c Sat Feb 14 19:24:38 2015 (r278777) @@ -82,6 +82,21 @@ fail: strlcpy(buf, symbol, len); } +static int +find_dbg_obj(const char *path) +{ + int fd; + char dbg_path[PATH_MAX]; + + snprintf(dbg_path, sizeof(dbg_path), + "/usr/lib/debug/%s.debug", path); + fd = open(dbg_path, O_RDONLY); + if (fd > 0) + return (fd); + else + return (open(path, O_RDONLY)); +} + static void proc_rdl2prmap(rd_loadobj_t *rdl, prmap_t *map) { @@ -295,7 +310,7 @@ proc_addr2sym(struct proc_handle *p, uin if ((map = proc_addr2map(p, addr)) == NULL) return (-1); - if ((fd = open(map->pr_mapname, O_RDONLY, 0)) < 0) { + if ((fd = find_dbg_obj(map->pr_mapname)) < 0) { DPRINTF("ERROR: open %s failed", map->pr_mapname); goto err0; } @@ -443,7 +458,7 @@ proc_name2sym(struct proc_handle *p, con DPRINTFX("ERROR: couldn't find object %s", object); goto err0; } - if ((fd = open(map->pr_mapname, O_RDONLY, 0)) < 0) { + if ((fd = find_dbg_obj(map->pr_mapname)) < 0) { DPRINTF("ERROR: open %s failed", map->pr_mapname); goto err0; } @@ -539,7 +554,7 @@ proc_iter_symbyaddr(struct proc_handle * if ((map = proc_name2map(p, object)) == NULL) return (-1); - if ((fd = open(map->pr_mapname, O_RDONLY)) < 0) { + if ((fd = find_dbg_obj(map->pr_mapname)) < 0) { DPRINTF("ERROR: open %s failed", map->pr_mapname); goto err0; } Modified: projects/building-blocks/lib/libthr/thread/thr_private.h ============================================================================== --- projects/building-blocks/lib/libthr/thread/thr_private.h Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libthr/thread/thr_private.h Sat Feb 14 19:24:38 2015 (r278777) @@ -928,6 +928,10 @@ int __thr_sigwait(const sigset_t *set, i int __thr_sigwaitinfo(const sigset_t *set, siginfo_t *info); int __thr_swapcontext(ucontext_t *oucp, const ucontext_t *ucp); +struct _spinlock; +void __thr_spinunlock(struct _spinlock *lck); +void __thr_spinlock(struct _spinlock *lck); + struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *); Modified: projects/building-blocks/lib/libthr/thread/thr_spinlock.c ============================================================================== --- projects/building-blocks/lib/libthr/thread/thr_spinlock.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libthr/thread/thr_spinlock.c Sat Feb 14 19:24:38 2015 (r278777) @@ -61,7 +61,7 @@ static void init_spinlock(spinlock_t *lc */ void -_spinunlock(spinlock_t *lck) +__thr_spinunlock(spinlock_t *lck) { struct spinlock_extra *_extra; @@ -70,7 +70,7 @@ _spinunlock(spinlock_t *lck) } void -_spinlock(spinlock_t *lck) +__thr_spinlock(spinlock_t *lck) { struct spinlock_extra *_extra; @@ -84,12 +84,6 @@ _spinlock(spinlock_t *lck) THR_UMUTEX_LOCK(_get_curthread(), &_extra->lock); } -void -_spinlock_debug(spinlock_t *lck, char *fname __unused, int lineno __unused) -{ - _spinlock(lck); -} - static void init_spinlock(spinlock_t *lck) { Modified: projects/building-blocks/lib/libthr/thread/thr_syscalls.c ============================================================================== --- projects/building-blocks/lib/libthr/thread/thr_syscalls.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/lib/libthr/thread/thr_syscalls.c Sat Feb 14 19:24:38 2015 (r278777) @@ -597,6 +597,8 @@ __thr_interpose_libc(void) SLOT(wait4); SLOT(write); SLOT(writev); + SLOT(spinlock); + SLOT(spinunlock); #undef SLOT *(__libc_interposing_slot( INTERPOS__pthread_mutex_init_calloc_cb)) = Modified: projects/building-blocks/sbin/sysctl/sysctl.8 ============================================================================== --- projects/building-blocks/sbin/sysctl/sysctl.8 Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sbin/sysctl/sysctl.8 Sat Feb 14 19:24:38 2015 (r278777) @@ -28,7 +28,7 @@ .\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd December 13, 2012 +.Dd February 12, 2015 .Dt SYSCTL 8 .Os .Sh NAME @@ -37,11 +37,13 @@ .Sh SYNOPSIS .Nm .Op Fl bdehiNnoRTqx +.Op Fl B Ar bufsize .Op Fl f Ar filename .Ar name Ns Op = Ns Ar value .Ar ... .Nm .Op Fl bdehNnoRTqx +.Op Fl B Ar bufsize .Fl a .Sh DESCRIPTION The @@ -68,6 +70,15 @@ the command line. Force the value of the variable(s) to be output in raw, binary format. No names are printed and no terminating newlines are output. This is mostly useful with a single variable. +.It Fl B Ar bufsize +Set the buffer size to read from the +.Nm +to +.Ar bufsize . +This is necessary for a +.Nm +that has variable length, and the probe value of 0 is a valid length, such as +.Va kern.arandom . .It Fl d Print the description of the variable instead of its value. .It Fl e @@ -128,7 +139,7 @@ Suppress some warnings generated by .Nm to standard error. .It Fl T -Display only variables that are setable via loader (CTLFLAG_TUN). +Display only variables that are settable via loader (CTLFLAG_TUN). .It Fl W Display only writable variables that are not statistical. Useful for determining the set of runtime tunable sysctls. Modified: projects/building-blocks/sbin/sysctl/sysctl.c ============================================================================== --- projects/building-blocks/sbin/sysctl/sysctl.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sbin/sysctl/sysctl.c Sat Feb 14 19:24:38 2015 (r278777) @@ -71,7 +71,7 @@ static const char rcsid[] = static const char *conffile; -static int aflag, bflag, dflag, eflag, hflag, iflag; +static int aflag, bflag, Bflag, dflag, eflag, hflag, iflag; static int Nflag, nflag, oflag, qflag, Tflag, Wflag, xflag; static int oidfmt(int *, int, char *, u_int *); @@ -112,8 +112,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n", - "usage: sysctl [-bdehiNnoqTWx] [-f filename] name[=value] ...", - " sysctl [-bdehNnoqTWx] -a"); + "usage: sysctl [-bdehiNnoqTWx] [ -B ] [-f filename] name[=value] ...", + " sysctl [-bdehNnoqTWx] [ -B ] -a"); exit(1); } @@ -127,7 +127,7 @@ main(int argc, char **argv) setbuf(stdout,0); setbuf(stderr,0); - while ((ch = getopt(argc, argv, "Aabdef:hiNnoqTwWxX")) != -1) { + while ((ch = getopt(argc, argv, "AabB:def:hiNnoqTwWxX")) != -1) { switch (ch) { case 'A': /* compatibility */ @@ -139,6 +139,9 @@ main(int argc, char **argv) case 'b': bflag = 1; break; + case 'B': + Bflag = strtol(optarg, NULL, 0); + break; case 'd': dflag = 1; break; @@ -222,7 +225,7 @@ parse(const char *string, int lineno) unsigned int uintval; long longval; unsigned long ulongval; - size_t newsize = 0; + size_t newsize = Bflag; int64_t i64val; uint64_t u64val; int mib[CTL_MAXNAME]; @@ -815,9 +818,13 @@ show_var(int *oid, int nlen) return (0); } /* find an estimate of how much we need for this var */ - j = 0; - i = sysctl(oid, nlen, 0, &j, 0, 0); - j += j; /* we want to be sure :-) */ + if (Bflag) + j = Bflag; + else { + j = 0; + i = sysctl(oid, nlen, 0, &j, 0, 0); + j += j; /* we want to be sure :-) */ + } val = oval = malloc(j + 1); if (val == NULL) { Modified: projects/building-blocks/share/mk/bsd.lib.mk ============================================================================== --- projects/building-blocks/share/mk/bsd.lib.mk Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/share/mk/bsd.lib.mk Sat Feb 14 19:24:38 2015 (r278777) @@ -286,7 +286,7 @@ _EXTRADEPEND: mv $$TMP ${DEPENDFILE} .if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) .if defined(DPADD) && !empty(DPADD) - echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE} + echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE} .endif .endif Modified: projects/building-blocks/share/mk/bsd.prog.mk ============================================================================== --- projects/building-blocks/share/mk/bsd.prog.mk Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/share/mk/bsd.prog.mk Sat Feb 14 19:24:38 2015 (r278777) @@ -168,15 +168,15 @@ CLEANFILES+= ${OBJS} _EXTRADEPEND: .if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib) .if defined(DPADD) && !empty(DPADD) - echo ${PROG}: ${DPADD} >> ${DEPENDFILE} + echo ${PROG_FULL}: ${DPADD} >> ${DEPENDFILE} .endif .else - echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE} + echo ${PROG_FULL}: ${LIBC} ${DPADD} >> ${DEPENDFILE} .if defined(PROG_CXX) .if ${COMPILER_TYPE} == "clang" && empty(CXXFLAGS:M-stdlib=libstdc++) - echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE} + echo ${PROG_FULL}: ${LIBCPLUSPLUS} >> ${DEPENDFILE} .else - echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} + echo ${PROG_FULL}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} .endif .endif .endif Modified: projects/building-blocks/sys/amd64/amd64/db_disasm.c ============================================================================== --- projects/building-blocks/sys/amd64/amd64/db_disasm.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/amd64/amd64/db_disasm.c Sat Feb 14 19:24:38 2015 (r278777) @@ -250,6 +250,26 @@ static const struct inst db_inst_0f0x[] /*0f*/ { "", FALSE, NONE, 0, 0 }, }; +static const struct inst db_inst_0f1x[] = { +/*10*/ { "", FALSE, NONE, 0, 0 }, +/*11*/ { "", FALSE, NONE, 0, 0 }, +/*12*/ { "", FALSE, NONE, 0, 0 }, +/*13*/ { "", FALSE, NONE, 0, 0 }, +/*14*/ { "", FALSE, NONE, 0, 0 }, +/*15*/ { "", FALSE, NONE, 0, 0 }, +/*16*/ { "", FALSE, NONE, 0, 0 }, +/*17*/ { "", FALSE, NONE, 0, 0 }, + +/*18*/ { "", FALSE, NONE, 0, 0 }, +/*19*/ { "", FALSE, NONE, 0, 0 }, +/*1a*/ { "", FALSE, NONE, 0, 0 }, +/*1b*/ { "", FALSE, NONE, 0, 0 }, +/*1c*/ { "", FALSE, NONE, 0, 0 }, +/*1d*/ { "", FALSE, NONE, 0, 0 }, +/*1e*/ { "", FALSE, NONE, 0, 0 }, +/*1f*/ { "nopl", TRUE, SDEP, 0, "nopw" }, +}; + static const struct inst db_inst_0f2x[] = { /*20*/ { "mov", TRUE, LONG, op2(CR,El), 0 }, /*21*/ { "mov", TRUE, LONG, op2(DR,El), 0 }, @@ -431,7 +451,7 @@ static const struct inst db_inst_0fcx[] static const struct inst * const db_inst_0f[] = { db_inst_0f0x, - 0, + db_inst_0f1x, db_inst_0f2x, db_inst_0f3x, db_inst_0f4x, Modified: projects/building-blocks/sys/arm/arm/cpuinfo.c ============================================================================== --- projects/building-blocks/sys/arm/arm/cpuinfo.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/arm/arm/cpuinfo.c Sat Feb 14 19:24:38 2015 (r278777) @@ -58,9 +58,13 @@ cpuinfo_init(void) /* ARMv4T CPU */ cpuinfo.architecture = 1; cpuinfo.revision = (cpuinfo.midr >> 16) & 0x7F; - } + } else { + /* ARM new id scheme */ + cpuinfo.architecture = (cpuinfo.midr >> 16) & 0x0F; + cpuinfo.revision = (cpuinfo.midr >> 20) & 0x0F; + } } else { - /* must be new id scheme */ + /* non ARM -> must be new id scheme */ cpuinfo.architecture = (cpuinfo.midr >> 16) & 0x0F; cpuinfo.revision = (cpuinfo.midr >> 20) & 0x0F; } Modified: projects/building-blocks/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- projects/building-blocks/sys/cam/ctl/ctl_backend_block.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/cam/ctl/ctl_backend_block.c Sat Feb 14 19:24:38 2015 (r278777) @@ -1874,7 +1874,7 @@ ctl_be_block_open_dev(struct ctl_be_bloc struct cdev *dev; struct cdevsw *devsw; char *value; - int error, atomic, maxio; + int error, atomic, maxio, unmap; off_t ps, pss, po, pos, us, uss, uo, uos; params = &be_lun->params; @@ -1899,7 +1899,6 @@ ctl_be_block_open_dev(struct ctl_be_bloc maxio = CTLBLK_MAX_IO_SIZE; } be_lun->lun_flush = ctl_be_block_flush_dev; - be_lun->unmap = ctl_be_block_unmap_dev; be_lun->getattr = ctl_be_block_getattr_dev; error = VOP_GETATTR(be_lun->vn, &vattr, NOCRED); @@ -2030,6 +2029,24 @@ ctl_be_block_open_dev(struct ctl_be_bloc be_lun->atomicblock = atomic / be_lun->blocksize; be_lun->opttxferlen = maxio / be_lun->blocksize; + + if (be_lun->dispatch == ctl_be_block_dispatch_zvol) { + unmap = 1; + } else { + struct diocgattr_arg arg; + + strlcpy(arg.name, "GEOM::candelete", sizeof(arg.name)); + arg.len = sizeof(arg.value.i); + error = devsw->d_ioctl(dev, DIOCGATTR, + (caddr_t)&arg, FREAD, curthread); + unmap = (error == 0) ? arg.value.i : 0; + } + value = ctl_get_opt(&be_lun->ctl_be_lun.options, "unmap"); + if (value != NULL) + unmap = (strcmp(value, "on") == 0); + if (unmap) + be_lun->unmap = ctl_be_block_unmap_dev; + return (0); } @@ -2182,7 +2199,7 @@ ctl_be_block_create(struct ctl_be_block_ char num_thread_str[16]; char tmpstr[32]; char *value; - int retval, num_threads, unmap; + int retval, num_threads; int tmp_num_threads; params = &req->reqdata.create; @@ -2275,16 +2292,12 @@ ctl_be_block_create(struct ctl_be_block_ } num_threads = tmp_num_threads; } - unmap = (be_lun->dispatch == ctl_be_block_dispatch_zvol); - value = ctl_get_opt(&be_lun->ctl_be_lun.options, "unmap"); - if (value != NULL) - unmap = (strcmp(value, "on") == 0); be_lun->flags = CTL_BE_BLOCK_LUN_UNCONFIGURED; be_lun->ctl_be_lun.flags = CTL_LUN_FLAG_PRIMARY; if (be_lun->vn == NULL) be_lun->ctl_be_lun.flags |= CTL_LUN_FLAG_OFFLINE; - if (unmap) + if (be_lun->unmap != NULL) be_lun->ctl_be_lun.flags |= CTL_LUN_FLAG_UNMAP; if (be_lun->dispatch != ctl_be_block_dispatch_dev) be_lun->ctl_be_lun.flags |= CTL_LUN_FLAG_SERSEQ_READ; @@ -2668,6 +2681,8 @@ ctl_be_block_modify(struct ctl_be_block_ * XXX: Note that this field is being updated without locking, * which might cause problems on 32-bit architectures. */ + if (be_lun->unmap != NULL) + be_lun->ctl_be_lun.flags |= CTL_LUN_FLAG_UNMAP; be_lun->ctl_be_lun.maxlba = (be_lun->size_blocks == 0) ? 0 : (be_lun->size_blocks - 1); be_lun->ctl_be_lun.blocksize = be_lun->blocksize; Modified: projects/building-blocks/sys/cam/ctl/ctl_backend_ramdisk.c ============================================================================== --- projects/building-blocks/sys/cam/ctl/ctl_backend_ramdisk.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/cam/ctl/ctl_backend_ramdisk.c Sat Feb 14 19:24:38 2015 (r278777) @@ -588,10 +588,10 @@ ctl_backend_ramdisk_create(struct ctl_be be_lun->softc = softc; - unmap = 0; + unmap = 1; value = ctl_get_opt(&be_lun->ctl_be_lun.options, "unmap"); if (value != NULL && strcmp(value, "on") == 0) - unmap = 1; + unmap = (strcmp(value, "on") == 0); be_lun->flags = CTL_BE_RAMDISK_LUN_UNCONFIGURED; be_lun->ctl_be_lun.flags = CTL_LUN_FLAG_PRIMARY; Modified: projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h ============================================================================== --- projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h Sat Feb 14 19:24:38 2015 (r278777) @@ -576,6 +576,9 @@ struct ath_hal_9300 { u_int8_t ah_tx_chainmask; /* tx chain mask */ u_int8_t ah_rx_chainmask; /* rx chain mask */ + /* optional tx chainmask */ + u_int8_t ah_tx_chainmaskopt; + u_int8_t ah_tx_cal_chainmask; /* tx cal chain mask */ u_int8_t ah_rx_cal_chainmask; /* rx cal chain mask */ @@ -845,6 +848,7 @@ struct ath_hal_9300 { HAL_BOOL ah_aic_enabled; u_int32_t ah_aic_sram[ATH_AIC_MAX_BT_CHANNEL]; #endif + #endif /* ATH_SUPPORT_MCI */ u_int8_t ah_cac_quiet_enabled; #if ATH_WOW_OFFLOAD @@ -852,6 +856,14 @@ struct ath_hal_9300 { u_int32_t ah_mcast_filter_u32_set; #endif HAL_BOOL ah_reduced_self_gen_mask; + HAL_BOOL ah_chip_reset_done; + HAL_BOOL ah_abort_txdma_norx; + /* store previous passive RX Cal info */ + HAL_BOOL ah_skip_rx_iq_cal; + HAL_BOOL ah_rx_cal_complete; /* previous rx cal completed or not */ + u_int32_t ah_rx_cal_chan; /* chan on which rx cal is done */ + u_int32_t ah_rx_cal_chan_flag; + u_int32_t ah_rx_cal_corr[AR9300_MAX_CHAINS]; /* Local additions for FreeBSD */ /* @@ -877,7 +889,6 @@ struct ath_hal_9300 { struct ar9300NfLimits nf_2GHz; struct ar9300NfLimits nf_5GHz; struct ar9300NfLimits *nfp; - }; #define AH9300(_ah) ((struct ath_hal_9300 *)(_ah)) @@ -1194,7 +1205,8 @@ extern HAL_BOOL ar9300_get_channel_edge extern HAL_BOOL ar9300_fill_capability_info(struct ath_hal *ah); extern void ar9300_beacon_init(struct ath_hal *ah, - u_int32_t next_beacon, u_int32_t beacon_period, HAL_OPMODE opmode); + u_int32_t next_beacon, u_int32_t beacon_period, + u_int32_t beacon_period_fraction, HAL_OPMODE opmode); extern void ar9300_set_sta_beacon_timers(struct ath_hal *ah, const HAL_BEACON_STATE *); @@ -1217,12 +1229,21 @@ extern HAL_BOOL ar9300_set_key_cache_en extern HAL_BOOL ar9300_set_key_cache_entry(struct ath_hal *ah, u_int16_t entry, const HAL_KEYVAL *k, const u_int8_t *mac, int xor_key); extern HAL_BOOL ar9300_print_keycache(struct ath_hal *ah); +#if ATH_SUPPORT_KEYPLUMB_WAR +extern HAL_BOOL ar9300_check_key_cache_entry(struct ath_hal *ah, u_int16_t entry, + const HAL_KEYVAL *k, int xorKey); +#endif extern void ar9300_get_mac_address(struct ath_hal *ah, u_int8_t *mac); extern HAL_BOOL ar9300_set_mac_address(struct ath_hal *ah, const u_int8_t *); extern void ar9300_get_bss_id_mask(struct ath_hal *ah, u_int8_t *mac); extern HAL_BOOL ar9300_set_bss_id_mask(struct ath_hal *, const u_int8_t *); extern HAL_STATUS ar9300_select_ant_config(struct ath_hal *ah, u_int32_t cfg); +#if 0 +extern u_int32_t ar9300_ant_ctrl_common_get(struct ath_hal *ah, HAL_BOOL is_2ghz); +#endif +extern HAL_BOOL ar9300_ant_swcom_sel(struct ath_hal *ah, u_int8_t ops, + u_int32_t *common_tbl1, u_int32_t *common_tbl2); extern HAL_BOOL ar9300_set_regulatory_domain(struct ath_hal *ah, u_int16_t reg_domain, HAL_STATUS *stats); extern u_int ar9300_get_wireless_modes(struct ath_hal *ah); @@ -1397,6 +1418,8 @@ extern HAL_BOOL ar9300_set_tx_power_limi u_int16_t extra_txpow, u_int16_t tpc_in_db); extern void ar9300_chain_noise_floor(struct ath_hal *ah, int16_t *nf_buf, struct ieee80211_channel *chan, int is_scan); +extern int16_t ar9300_get_nf_from_reg(struct ath_hal *ah, struct ieee80211_channel *chan, int wait_time); +extern int ar9300_get_rx_nf_offset(struct ath_hal *ah, struct ieee80211_channel *chan, int8_t *nf_pwr, int8_t *nf_cal); extern HAL_BOOL ar9300_load_nf(struct ath_hal *ah, int16_t nf[]); extern HAL_RFGAIN ar9300_get_rfgain(struct ath_hal *ah); @@ -1681,6 +1704,8 @@ extern void ar9300_tx99_start(struct ath extern void ar9300_tx99_stop(struct ath_hal *ah); #endif /* ATH_SUPPORT_HTC */ #endif /* ATH_TX99_DIAG */ +extern HAL_BOOL ar9300_set_ctl_pwr(struct ath_hal *ah, u_int8_t *ctl_array); +extern void ar9300_set_txchainmaskopt(struct ath_hal *ah, u_int8_t mask); enum { AR9300_COEFF_TX_TYPE = 0, Modified: projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c ============================================================================== --- projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c Sat Feb 14 19:21:04 2015 (r278776) +++ projects/building-blocks/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c Sat Feb 14 19:24:38 2015 (r278777) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***