summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh2
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d4
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c1
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh7
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c4
-rw-r--r--contrib/libcxxrt/stdexcept.cc5
-rw-r--r--lib/libnv/Makefile1
-rw-r--r--lib/libnv/nv.326
-rw-r--r--lib/libnv/nv.h2
-rw-r--r--lib/libnv/nvlist.c88
-rw-r--r--lib/libnv/nvpair.c32
-rw-r--r--libexec/rtld-elf/rtld.c8
-rw-r--r--share/man/man9/contigmalloc.99
-rw-r--r--share/misc/committers-src.dot4
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_gpio.c190
-rw-r--r--sys/boot/efi/libefi/efinet.c5
-rw-r--r--sys/cam/ctl/ctl.c74
-rw-r--r--sys/cam/scsi/scsi_all.h20
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c11
-rw-r--r--sys/conf/files.amd644
-rw-r--r--sys/conf/kern.mk1
-rw-r--r--sys/dev/alc/if_alc.c6
-rw-r--r--sys/dev/ofw/openfirm.c9
-rw-r--r--sys/libkern/strtoq.c2
-rw-r--r--sys/libkern/strtoul.c2
-rw-r--r--sys/libkern/strtouq.c2
-rw-r--r--sys/modules/aesni/Makefile3
-rw-r--r--sys/netinet/tcp_syncache.c1
-rw-r--r--sys/ufs/ffs/ffs_softdep.c23
-rw-r--r--sys/ufs/ffs/softdep.h2
-rwxr-xr-xtools/tools/nanobsd/rescue/build.sh11
-rw-r--r--tools/tools/nanobsd/rescue/common20
-rw-r--r--usr.bin/grep/Makefile15
-rw-r--r--usr.sbin/config/config.813
-rw-r--r--usr.sbin/config/main.c14
61 files changed, 457 insertions, 222 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl b/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl
index db15741..f32dbce 100755
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl
@@ -273,7 +273,7 @@ sub run_tests {
}
$fullname = "$dir/$name";
- $exe = "./$base.exe";
+ $exe = "$dir/$base.exe";
$exe_pid = -1;
if ($opt_a && ($status != 0 || $tag != 0 || $droptag != 0 ||
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d
index a42afb7..1ac1b45 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d
@@ -38,4 +38,4 @@
*
*/
-inline cyc_func_t i = "i am a cyclic function";
+inline dtrace_trap_func_t i = "i am a dtrace trap function";
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d
index 963b604..d67bdaf 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d
@@ -38,4 +38,4 @@
*
*/
-inline vfs_t *invalid = xlate<psinfo_t>(curthread->t_procp);
+inline struct vnode *invalid = xlate<psinfo_t>(curthread->td_proc);
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c
index 307106d..2a54d49 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c
@@ -14,6 +14,8 @@
*/
#include <sys/sdt.h>
+#include <stdio.h>
+#include <stdlib.h>
#include "usdt.h"
#define FMT "{" \
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d
index 9c0280c..abae0c1 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d
@@ -36,8 +36,10 @@
BEGIN
{
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Winvalid-pp-token"
h = '
';
+#pragma clang diagnostic pop
exit(0);
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d
index aef5dab..8cfbcc2 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d
@@ -36,7 +36,9 @@
BEGIN
{
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Winvalid-pp-token"
h = '';
exit(0);
+#pragma clang diagnostic pop
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d
index 68b4cd4..c83e0c5 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d
@@ -36,9 +36,11 @@
BEGIN
{
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Winvalid-pp-token"
h = "hello
there";
exit(0);
+#pragma clang diagnostic pop
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d
index 67f4462..cf209ef 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d
@@ -74,13 +74,13 @@ fbt:::return
(long long)curthread, pid, tid, (int)arg1, (int)arg0);
}
-mutex_enter:adaptive-acquire
+mtx_lock:adaptive-acquire
{
printf(" %u 0x%llX %d %d lock:0x%llX", timestamp,
(long long)curthread, pid, tid, arg0);
}
-mutex_exit:adaptive-release
+mtx_unlock:adaptive-release
{
printf(" %u 0x%llX %d %d lock:0x%llX", timestamp,
(long long) curthread, pid, tid, arg0);
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c
index bd89fff..dda3ef2 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c
@@ -28,6 +28,7 @@
#include <strings.h>
#include <rpc/rpc.h>
+#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h>
#include <rpcsvc/mount.h>
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d
index caf0a1d..67d4bd9 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d
@@ -40,5 +40,5 @@
BEGIN
{
- trace(offsetof(vnode_t, v_no_such_member));
+ trace(offsetof(struct vnode, v_no_such_member));
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c
index 23bbab2..28d0677 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c
@@ -27,6 +27,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
#include <signal.h>
+#include <stdlib.h>
#include <unistd.h>
int
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d
index f1b1197..5be6d30 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d
@@ -44,7 +44,7 @@ pid$1:a.out:waiting:entry
proc:::create
/pid == $1/
{
- child = args[0]->pr_pid;
+ child = args[0]->p_pid;
trace(pid);
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c
index 69df472..b3959c3 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c
@@ -26,6 +26,8 @@
#pragma ident "%Z%%M% %I% %E% SMI"
+#include <sys/types.h>
+#include <sys/wait.h>
#include <spawn.h>
#include <signal.h>
#include <stdio.h>
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c
index cfb88a8..12b3f72 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c
@@ -27,6 +27,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
#include <signal.h>
+#include <stdlib.h>
#include <unistd.h>
/*
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c
index b64aa05..ea5394e 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c
@@ -27,6 +27,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
#include <signal.h>
+#include <stdlib.h>
#include <unistd.h>
/*
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d
index b31bb7f..55054b5 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d
@@ -44,7 +44,7 @@ pid$1:a.out:waiting:entry
proc:::create
/pid == $1/
{
- child = args[0]->pr_pid;
+ child = args[0]->p_pid;
}
pid$1:a.out:go:
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c
index 1418f2a..765c285 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c
@@ -27,6 +27,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
#include <signal.h>
+#include <stdlib.h>
#include <unistd.h>
/*
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c
index bb571d2..756745d 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c
@@ -27,6 +27,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
#include <signal.h>
+#include <stdlib.h>
#include <unistd.h>
/*
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d
index 4f45885..bf2c6da 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d
@@ -25,7 +25,7 @@
BEGIN
{
- print((void)`p0);
+ print((void)`proc0);
}
BEGIN
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d
index e8125d4..6455dd6 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d
@@ -22,13 +22,13 @@
typedef struct pancakes {
int i;
string s;
- timespec_t t;
+ struct timespec t;
} pancakes_t;
translator pancakes_t < void *V > {
i = 2 * 10;
s = strjoin("I like ", "pancakes");
- t = *(timespec_t *)`dtrace_zero;
+ t = *(struct timespec *)`dtrace_zero;
};
BEGIN
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out
index 9b01402..ed04f0a 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out
@@ -1,7 +1,7 @@
pancakes_t {
int i = 0x14
string s = [ "I like pancakes" ]
- timespec_t t = {
+ struct timespec t = {
time_t tv_sec = 0
long tv_nsec = 0
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d
index 3f54321..1402b23 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d
@@ -44,7 +44,7 @@ BEGIN
i = 0;
}
-syscall::*lwp*:entry
+syscall::*wait*:entry
{
exit(0);
}
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh
index 5595c24..a81ddf9 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh
@@ -36,7 +36,7 @@ script()
{
$dtrace -s /dev/stdin <<EOF
proc:::signal-discard
- /args[1]->pr_pid == $child &&
+ /args[1]->p_pid == $child &&
args[1]->pr_psargs == "$longsleep" && args[2] == SIGHUP/
{
exit(0);
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh
index cd3c791..1caafcc 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh
@@ -42,7 +42,7 @@ script()
/*
* This is guaranteed to not race with signal-handle.
*/
- target = args[1]->pr_pid;
+ target = args[1]->p_pid;
}
proc:::signal-handle
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh
index 358d362..0fef3e3 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh
@@ -60,14 +60,14 @@ spinny &
child=$!
#
-# This is gutsy -- we're assuming that mutex_enter(9F) will show up in the
+# This is gutsy -- we're assuming that mtx_lock(9) will show up in the
# output. This is most likely _not_ to show up in the output if the
# platform does not support arbitrary resolution interval timers -- but
# the above script was stress-tested down to 100 hertz and still ran
# successfully on all platforms, so one is hopeful that this test will pass
# even in that case.
#
-script | tee /dev/fd/2 | grep mutex_enter > /dev/null
+script | tee /dev/fd/2 | grep mtx_lock > /dev/null
status=$?
kill $child
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh
index 4652ff3..f62f6ed 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh
@@ -63,7 +63,7 @@ child=$!
# The only thing we can be sure of is that some module named "unix" (or
# "genunix") did some work -- so that's all we'll check.
#
-script | tee /dev/fd/2 | grep unix > /dev/null
+script | tee /dev/fd/2 | grep kernel > /dev/null
status=$?
kill $child
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh
index 218a651..2bea32e 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh
@@ -63,7 +63,7 @@ child=$!
# This is the same gutsy test as that found in the func() test; see that
# test for the rationale.
#
-script | tee /dev/fd/2 | grep mutex_enter > /dev/null
+script | tee /dev/fd/2 | grep mtx_lock > /dev/null
status=$?
kill $child
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d
index 2fd69c6..036a652 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d
@@ -31,8 +31,8 @@
#pragma D option dynvarsize=1m
struct bar {
- int pid;
- kthread_t *curthread;
+ pid_t pid;
+ struct thread *curthread;
};
self struct bar foo[int];
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c
index 209160b..198d9db 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <sys/syscall.h>
+#include <unistd.h>
/*ARGSUSED*/
int
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh
index 1c155fe..e230b11 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh
@@ -106,11 +106,13 @@ cat > main.c <<EOF
#include <dlfcn.h>
#include <unistd.h>
#include <stdio.h>
+#include <signal.h>
int
main(int argc, char **argv)
{
void *live;
+ sigset_t mask;
if ((live = dlopen("./livelib.so", RTLD_LAZY | RTLD_LOCAL)) == NULL) {
printf("dlopen of livelib.so failed: %s\n", dlerror());
@@ -119,7 +121,8 @@ main(int argc, char **argv)
(void) dlclose(live);
- pause();
+ (void) sigemptyset(&mask);
+ (void) sigsuspend(&mask);
return (0);
}
@@ -133,7 +136,7 @@ fi
script() {
$dtrace -w -x bufsize=1k -c ./main -qs /dev/stdin <<EOF
- syscall::pause:entry
+ syscall::sigsuspend:entry
/pid == \$target/
{
system("$dtrace -l -P test_prov*");
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c
index ade7f83..e229c0c 100644
--- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c
@@ -26,6 +26,10 @@
#pragma ident "%Z%%M% %I% %E% SMI"
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <stdlib.h>
#include <unistd.h>
#include "forker.h"
diff --git a/contrib/libcxxrt/stdexcept.cc b/contrib/libcxxrt/stdexcept.cc
index 26b4ee7..c1cea39 100644
--- a/contrib/libcxxrt/stdexcept.cc
+++ b/contrib/libcxxrt/stdexcept.cc
@@ -82,19 +82,14 @@ const char* bad_typeid::what() const throw()
return "std::bad_typeid";
}
-__attribute__((weak))
bad_array_new_length::bad_array_new_length() throw() {}
-__attribute__((weak))
bad_array_new_length::~bad_array_new_length() {}
-__attribute__((weak))
bad_array_new_length::bad_array_new_length(const bad_array_new_length&) throw() {}
-__attribute__((weak))
bad_array_new_length& bad_array_new_length::operator=(const bad_array_new_length&) throw()
{
return *this;
}
-__attribute__((weak))
const char* bad_array_new_length::what() const throw()
{
return "std::bad_array_new_length";
diff --git a/lib/libnv/Makefile b/lib/libnv/Makefile
index e9371bc..c74c55c 100644
--- a/lib/libnv/Makefile
+++ b/lib/libnv/Makefile
@@ -61,6 +61,7 @@ MLINKS+=nv.3 nvlist_create.3 \
nv.3 nvlist_get_nvlist.3 \
nv.3 nvlist_get_descriptor.3 \
nv.3 nvlist_get_binary.3 \
+ nv.3 nvlist_get_parent.3 \
nv.3 nvlist_take_bool.3 \
nv.3 nvlist_take_number.3 \
nv.3 nvlist_take_string.3 \
diff --git a/lib/libnv/nv.3 b/lib/libnv/nv.3
index 29ba744..6ff6329 100644
--- a/lib/libnv/nv.3
+++ b/lib/libnv/nv.3
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 25, 2014
+.Dd January 30, 2015
.Dt NV 3
.Os
.Sh NAME
@@ -151,7 +151,7 @@
.Ft "const void *"
.Fn nvlist_get_binary "const nvlist_t *nvl" "const char *name" "size_t *sizep"
.Ft "const nvlist_t *"
-.Fn nvlist_get_parent "const nvlist_t *nvl"
+.Fn nvlist_get_parent "const nvlist_t *nvl" "void **cookiep"
.\"
.Ft bool
.Fn nvlist_take_bool "nvlist_t *nvl" "const char *name"
@@ -588,6 +588,28 @@ while ((name = nvlist_next(nvl, &type, &cookie)) != NULL) {
printf("\\n");
}
.Ed
+.Pp
+Iterating over every nested nvlist:
+.Bd -literal
+nvlist_t *nvl;
+const char *name;
+void *cookie;
+int type;
+
+nvl = nvlist_recv(sock);
+if (nvl == NULL)
+ err(1, "nvlist_recv() failed");
+
+cookie = NULL;
+do {
+ while ((name = nvlist_next(nvl, &type, &cookie)) != NULL) {
+ if (type == NV_TYPE_NVLIST) {
+ nvl = nvlist_get_nvlist(nvl, name);
+ cookie = NULL;
+ }
+ }
+} while ((nvl = nvlist_get_parent(nvl, &cookie)) != NULL);
+.Ed
.Sh SEE ALSO
.Xr close 2 ,
.Xr dup 2 ,
diff --git a/lib/libnv/nv.h b/lib/libnv/nv.h
index 1b55be1..9f0bb5d 100644
--- a/lib/libnv/nv.h
+++ b/lib/libnv/nv.h
@@ -83,7 +83,7 @@ nvlist_t *nvlist_xfer(int sock, nvlist_t *nvl);
const char *nvlist_next(const nvlist_t *nvl, int *typep, void **cookiep);
-const nvlist_t *nvlist_get_parent(const nvlist_t *nvl);
+const nvlist_t *nvlist_get_parent(const nvlist_t *nvl, void **cookiep);
/*
* The nvlist_exists functions check if the given name (optionally of the given
diff --git a/lib/libnv/nvlist.c b/lib/libnv/nvlist.c
index b495441..839f607 100644
--- a/lib/libnv/nvlist.c
+++ b/lib/libnv/nvlist.c
@@ -159,15 +159,19 @@ nvlist_get_nvpair_parent(const nvlist_t *nvl)
}
const nvlist_t *
-nvlist_get_parent(const nvlist_t *nvl)
+nvlist_get_parent(const nvlist_t *nvl, void **cookiep)
{
+ nvpair_t *nvp;
NVLIST_ASSERT(nvl);
- if (nvl->nvl_parent == NULL)
+ nvp = nvl->nvl_parent;
+ if (cookiep != NULL)
+ *cookiep = nvp;
+ if (nvp == NULL)
return (NULL);
- return (nvpair_nvlist(nvl->nvl_parent));
+ return (nvpair_nvlist(nvp));
}
void
@@ -352,7 +356,9 @@ nvlist_dump_error_check(const nvlist_t *nvl, int fd, int level)
void
nvlist_dump(const nvlist_t *nvl, int fd)
{
- nvpair_t *nvp;
+ const nvlist_t *tmpnvl;
+ nvpair_t *nvp, *tmpnvp;
+ void *cookie;
int level;
level = 0;
@@ -382,14 +388,17 @@ nvlist_dump(const nvlist_t *nvl, int fd)
break;
case NV_TYPE_NVLIST:
dprintf(fd, "\n");
- nvl = nvpair_get_nvlist(nvp);
- if (nvlist_dump_error_check(nvl, fd, level + 1)) {
- nvl = nvlist_get_parent(nvl);
+ tmpnvl = nvpair_get_nvlist(nvp);
+ if (nvlist_dump_error_check(tmpnvl, fd, level + 1))
break;
+ tmpnvp = nvlist_first_nvpair(tmpnvl);
+ if (tmpnvp != NULL) {
+ nvl = tmpnvl;
+ nvp = tmpnvp;
+ level++;
+ continue;
}
- level += 1;
- nvp = nvlist_first_nvpair(nvl);
- continue;
+ break;
case NV_TYPE_DESCRIPTOR:
dprintf(fd, " %d\n", nvpair_get_descriptor(nvp));
break;
@@ -411,11 +420,12 @@ nvlist_dump(const nvlist_t *nvl, int fd)
}
while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
- nvp = nvlist_get_nvpair_parent(nvl);
- if (nvp == NULL)
+ cookie = NULL;
+ nvl = nvlist_get_parent(nvl, &cookie);
+ if (nvl == NULL)
return;
- nvl = nvlist_get_parent(nvl);
- level --;
+ nvp = cookie;
+ level--;
}
}
}
@@ -434,7 +444,9 @@ nvlist_fdump(const nvlist_t *nvl, FILE *fp)
size_t
nvlist_size(const nvlist_t *nvl)
{
- const nvpair_t *nvp;
+ const nvlist_t *tmpnvl;
+ const nvpair_t *nvp, *tmpnvp;
+ void *cookie;
size_t size;
NVLIST_ASSERT(nvl);
@@ -448,19 +460,24 @@ nvlist_size(const nvlist_t *nvl)
if (nvpair_type(nvp) == NV_TYPE_NVLIST) {
size += sizeof(struct nvlist_header);
size += nvpair_header_size() + 1;
- nvl = nvpair_get_nvlist(nvp);
- PJDLOG_ASSERT(nvl->nvl_error == 0);
- nvp = nvlist_first_nvpair(nvl);
- continue;
+ tmpnvl = nvpair_get_nvlist(nvp);
+ PJDLOG_ASSERT(tmpnvl->nvl_error == 0);
+ tmpnvp = nvlist_first_nvpair(tmpnvl);
+ if (tmpnvp != NULL) {
+ nvl = tmpnvl;
+ nvp = tmpnvp;
+ continue;
+ }
} else {
size += nvpair_size(nvp);
}
while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
- nvp = nvlist_get_nvpair_parent(nvl);
- if (nvp == NULL)
+ cookie = NULL;
+ nvl = nvlist_get_parent(nvl, &cookie);
+ if (nvl == NULL)
goto out;
- nvl = nvlist_get_parent(nvl);
+ nvp = cookie;
}
}
@@ -574,7 +591,9 @@ nvlist_xpack(const nvlist_t *nvl, int64_t *fdidxp, size_t *sizep)
{
unsigned char *buf, *ptr;
size_t left, size;
- nvpair_t *nvp;
+ const nvlist_t *tmpnvl;
+ nvpair_t *nvp, *tmpnvp;
+ void *cookie;
NVLIST_ASSERT(nvl);
@@ -617,10 +636,18 @@ nvlist_xpack(const nvlist_t *nvl, int64_t *fdidxp, size_t *sizep)
ptr = nvpair_pack_string(nvp, ptr, &left);
break;
case NV_TYPE_NVLIST:
- nvl = nvpair_get_nvlist(nvp);
- nvp = nvlist_first_nvpair(nvl);
- ptr = nvlist_pack_header(nvl, ptr, &left);
- continue;
+ tmpnvl = nvpair_get_nvlist(nvp);
+ ptr = nvlist_pack_header(tmpnvl, ptr, &left);
+ if (ptr == NULL)
+ goto out;
+ tmpnvp = nvlist_first_nvpair(tmpnvl);
+ if (tmpnvp != NULL) {
+ nvl = tmpnvl;
+ nvp = tmpnvp;
+ continue;
+ }
+ ptr = nvpair_pack_nvlist_up(ptr, &left);
+ break;
case NV_TYPE_DESCRIPTOR:
ptr = nvpair_pack_descriptor(nvp, ptr, fdidxp, &left);
break;
@@ -635,13 +662,14 @@ nvlist_xpack(const nvlist_t *nvl, int64_t *fdidxp, size_t *sizep)
return (NULL);
}
while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
- nvp = nvlist_get_nvpair_parent(nvl);
- if (nvp == NULL)
+ cookie = NULL;
+ nvl = nvlist_get_parent(nvl, &cookie);
+ if (nvl == NULL)
goto out;
+ nvp = cookie;
ptr = nvpair_pack_nvlist_up(ptr, &left);
if (ptr == NULL)
goto out;
- nvl = nvlist_get_parent(nvl);
}
}
diff --git a/lib/libnv/nvpair.c b/lib/libnv/nvpair.c
index 4f0bd72..a2da8cc 100644
--- a/lib/libnv/nvpair.c
+++ b/lib/libnv/nvpair.c
@@ -1100,6 +1100,7 @@ nvpair_t *
nvpair_movev_string(char *value, const char *namefmt, va_list nameap)
{
nvpair_t *nvp;
+ int serrno;
if (value == NULL) {
errno = EINVAL;
@@ -1108,8 +1109,11 @@ nvpair_movev_string(char *value, const char *namefmt, va_list nameap)
nvp = nvpair_allocv(NV_TYPE_STRING, (uint64_t)(uintptr_t)value,
strlen(value) + 1, namefmt, nameap);
- if (nvp == NULL)
+ if (nvp == NULL) {
+ serrno = errno;
free(value);
+ errno = serrno;
+ }
return (nvp);
}
@@ -1137,28 +1141,46 @@ nvpair_movev_nvlist(nvlist_t *value, const char *namefmt, va_list nameap)
nvpair_t *
nvpair_movev_descriptor(int value, const char *namefmt, va_list nameap)
{
+ nvpair_t *nvp;
+ int serrno;
if (value < 0 || !fd_is_valid(value)) {
errno = EBADF;
return (NULL);
}
- return (nvpair_allocv(NV_TYPE_DESCRIPTOR, (uint64_t)value,
- sizeof(int64_t), namefmt, nameap));
+ nvp = nvpair_allocv(NV_TYPE_DESCRIPTOR, (uint64_t)value,
+ sizeof(int64_t), namefmt, nameap);
+ if (nvp == NULL) {
+ serrno = errno;
+ close(value);
+ errno = serrno;
+ }
+
+ return (nvp);
}
nvpair_t *
nvpair_movev_binary(void *value, size_t size, const char *namefmt,
va_list nameap)
{
+ nvpair_t *nvp;
+ int serrno;
if (value == NULL || size == 0) {
errno = EINVAL;
return (NULL);
}
- return (nvpair_allocv(NV_TYPE_BINARY, (uint64_t)(uintptr_t)value, size,
- namefmt, nameap));
+ nvp = nvpair_allocv(NV_TYPE_BINARY, (uint64_t)(uintptr_t)value, size,
+ namefmt, nameap);
+ if (nvp == NULL) {
+ serrno = errno;
+ free(value);
+ errno = serrno;
+ }
+
+ return (nvp);
}
bool
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 7b19f5a..ebb70a5 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -876,7 +876,6 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_Dyn **dyn_rpath,
const Elf32_Word *hashval;
Elf32_Word bkt, nmaskwords;
int bloom_size32;
- bool nmw_power2;
int plttype = DT_REL;
*dyn_rpath = NULL;
@@ -986,16 +985,15 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_Dyn **dyn_rpath,
obj->symndx_gnu = hashtab[1];
nmaskwords = hashtab[2];
bloom_size32 = (__ELF_WORD_SIZE / 32) * nmaskwords;
- /* Number of bitmask words is required to be power of 2 */
- nmw_power2 = ((nmaskwords & (nmaskwords - 1)) == 0);
obj->maskwords_bm_gnu = nmaskwords - 1;
obj->shift2_gnu = hashtab[3];
obj->bloom_gnu = (Elf_Addr *) (hashtab + 4);
obj->buckets_gnu = hashtab + 4 + bloom_size32;
obj->chain_zero_gnu = obj->buckets_gnu + obj->nbuckets_gnu -
obj->symndx_gnu;
- obj->valid_hash_gnu = nmw_power2 && obj->nbuckets_gnu > 0 &&
- obj->buckets_gnu != NULL;
+ /* Number of bitmask words is required to be power of 2 */
+ obj->valid_hash_gnu = powerof2(nmaskwords) &&
+ obj->nbuckets_gnu > 0 && obj->buckets_gnu != NULL;
}
break;
diff --git a/share/man/man9/contigmalloc.9 b/share/man/man9/contigmalloc.9
index ba1f428..a1d447f 100644
--- a/share/man/man9/contigmalloc.9
+++ b/share/man/man9/contigmalloc.9
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 19, 2007
+.Dd January 29, 2015
.Dt CONTIGMALLOC 9
.Os
.Sh NAME
@@ -100,6 +100,13 @@ However, unless
.Dv M_NOWAIT
is specified, it may select a page for reclamation that must first be
written to backing storage, causing it to sleep.
+.Pp
+The
+.Fn contigfree
+function does not accept
+.Dv NULL
+as an address input, unlike
+.Xr free 9 .
.Sh RETURN VALUES
The
.Fn contigmalloc
diff --git a/share/misc/committers-src.dot b/share/misc/committers-src.dot
index 3171242..5dd7e7f 100644
--- a/share/misc/committers-src.dot
+++ b/share/misc/committers-src.dot
@@ -153,6 +153,7 @@ eivind [label="Eivind Eklund\neivind@FreeBSD.org\n1997/02/02"]
emaste [label="Ed Maste\nemaste@FreeBSD.org\n2005/10/04"]
emax [label="Maksim Yevmenkin\nemax@FreeBSD.org\n2003/10/12"]
eri [label="Ermal Luci\neri@FreeBSD.org\n2008/06/11"]
+erj [label="Eric Joyner\nerj@FreeBSD.org\n2014/12/14"]
fabient [label="Fabien Thomas\nfabient@FreeBSD.org\n2009/03/16"]
fanf [label="Tony Finch\nfanf@FreeBSD.org\n2002/05/05"]
fjoe [label="Max Khon\nfjoe@FreeBSD.org\n2001/08/06"]
@@ -440,6 +441,7 @@ gnn -> lstewart
gnn -> np
gnn -> davide
gnn -> arybchik
+gnn -> erj
grehan -> bryanv
@@ -485,6 +487,8 @@ jb -> sson
jdp -> fjoe
+jfv -> erj
+
jhb -> arr
jhb -> avg
jhb -> jch
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
index 0ade78f..43a1ddc 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
@@ -62,10 +62,20 @@ __FBSDID("$FreeBSD$");
#define dprintf(fmt, args...)
#endif
+#define BCM_GPIO_IRQS 4
#define BCM_GPIO_PINS 54
#define BCM_GPIO_DEFAULT_CAPS (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | \
GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)
+static struct resource_spec bcm_gpio_res_spec[] = {
+ { SYS_RES_MEMORY, 0, RF_ACTIVE },
+ { SYS_RES_IRQ, 0, RF_ACTIVE },
+ { SYS_RES_IRQ, 1, RF_ACTIVE },
+ { SYS_RES_IRQ, 2, RF_ACTIVE },
+ { SYS_RES_IRQ, 3, RF_ACTIVE },
+ { -1, 0, 0 }
+};
+
struct bcm_gpio_sysctl {
struct bcm_gpio_softc *sc;
uint32_t pin;
@@ -74,8 +84,7 @@ struct bcm_gpio_sysctl {
struct bcm_gpio_softc {
device_t sc_dev;
struct mtx sc_mtx;
- struct resource * sc_mem_res;
- struct resource * sc_irq_res;
+ struct resource * sc_res[BCM_GPIO_IRQS + 1];
bus_space_tag_t sc_bst;
bus_space_handle_t sc_bsh;
void * sc_intrhand;
@@ -494,39 +503,6 @@ bcm_gpio_pin_toggle(device_t dev, uint32_t pin)
}
static int
-bcm_gpio_get_ro_pins(struct bcm_gpio_softc *sc)
-{
- int i, len;
- pcell_t pins[BCM_GPIO_PINS];
- phandle_t gpio;
-
- /* Find the gpio node to start. */
- gpio = ofw_bus_get_node(sc->sc_dev);
-
- len = OF_getproplen(gpio, "broadcom,read-only");
- if (len < 0 || len > sizeof(pins))
- return (-1);
-
- if (OF_getprop(gpio, "broadcom,read-only", &pins, len) < 0)
- return (-1);
-
- sc->sc_ro_npins = len / sizeof(pcell_t);
-
- device_printf(sc->sc_dev, "read-only pins: ");
- for (i = 0; i < sc->sc_ro_npins; i++) {
- sc->sc_ro_pins[i] = fdt32_to_cpu(pins[i]);
- if (i > 0)
- printf(",");
- printf("%d", sc->sc_ro_pins[i]);
- }
- if (i > 0)
- printf(".");
- printf("\n");
-
- return (0);
-}
-
-static int
bcm_gpio_func_proc(SYSCTL_HANDLER_ARGS)
{
char buf[16];
@@ -545,7 +521,9 @@ bcm_gpio_func_proc(SYSCTL_HANDLER_ARGS)
error = sysctl_handle_string(oidp, buf, sizeof(buf), req);
if (error != 0 || req->newptr == NULL)
return (error);
-
+ /* Ignore changes on read-only pins. */
+ if (bcm_gpio_pin_is_ro(sc, sc_sysctl->pin))
+ return (0);
/* Parse the user supplied string and check for a valid pin function. */
if (bcm_gpio_str_func(buf, &nfunc) != 0)
return (EINVAL);
@@ -595,63 +573,82 @@ bcm_gpio_sysctl_init(struct bcm_gpio_softc *sc)
}
static int
+bcm_gpio_get_ro_pins(struct bcm_gpio_softc *sc, phandle_t node,
+ const char *propname, const char *label)
+{
+ int i, need_comma, npins, range_start, range_stop;
+ pcell_t *pins;
+
+ /* Get the property data. */
+ npins = OF_getencprop_alloc(node, propname, sizeof(*pins),
+ (void **)&pins);
+ if (npins < 0)
+ return (-1);
+ if (npins == 0) {
+ free(pins, M_OFWPROP);
+ return (0);
+ }
+ for (i = 0; i < npins; i++)
+ sc->sc_ro_pins[i + sc->sc_ro_npins] = pins[i];
+ sc->sc_ro_npins += npins;
+ need_comma = 0;
+ device_printf(sc->sc_dev, "%s pins: ", label);
+ range_start = range_stop = pins[0];
+ for (i = 1; i < npins; i++) {
+ if (pins[i] != range_stop + 1) {
+ if (need_comma)
+ printf(",");
+ if (range_start != range_stop)
+ printf("%d-%d", range_start, range_stop);
+ else
+ printf("%d", range_start);
+ range_start = range_stop = pins[i];
+ need_comma = 1;
+ } else
+ range_stop++;
+ }
+ if (need_comma)
+ printf(",");
+ if (range_start != range_stop)
+ printf("%d-%d.\n", range_start, range_stop);
+ else
+ printf("%d.\n", range_start);
+ free(pins, M_OFWPROP);
+
+ return (0);
+}
+
+static int
bcm_gpio_get_reserved_pins(struct bcm_gpio_softc *sc)
{
- int i, j, len, npins;
- pcell_t pins[BCM_GPIO_PINS];
+ char *name;
phandle_t gpio, node, reserved;
- char name[32];
+ ssize_t len;
/* Get read-only pins. */
- if (bcm_gpio_get_ro_pins(sc) != 0)
- return (-1);
-
- /* Find the gpio/reserved pins node to start. */
gpio = ofw_bus_get_node(sc->sc_dev);
- node = OF_child(gpio);
-
- /*
- * Find reserved node
- */
+ if (bcm_gpio_get_ro_pins(sc, gpio, "broadcom,read-only",
+ "read-only") != 0)
+ return (-1);
+ /* Traverse the GPIO subnodes to find the reserved pins node. */
reserved = 0;
+ node = OF_child(gpio);
while ((node != 0) && (reserved == 0)) {
- len = OF_getprop(node, "name", name,
- sizeof(name) - 1);
- name[len] = 0;
+ len = OF_getprop_alloc(node, "name", 1, (void **)&name);
+ if (len == -1)
+ return (-1);
if (strcmp(name, "reserved") == 0)
reserved = node;
+ free(name, M_OFWPROP);
node = OF_peer(node);
}
-
if (reserved == 0)
return (-1);
-
/* Get the reserved pins. */
- len = OF_getproplen(reserved, "broadcom,pins");
- if (len < 0 || len > sizeof(pins))
+ if (bcm_gpio_get_ro_pins(sc, reserved, "broadcom,pins",
+ "reserved") != 0)
return (-1);
- if (OF_getprop(reserved, "broadcom,pins", &pins, len) < 0)
- return (-1);
-
- npins = len / sizeof(pcell_t);
-
- j = 0;
- device_printf(sc->sc_dev, "reserved pins: ");
- for (i = 0; i < npins; i++) {
- if (i > 0)
- printf(",");
- printf("%d", fdt32_to_cpu(pins[i]));
- /* Some pins maybe already on the list of read-only pins. */
- if (bcm_gpio_pin_is_ro(sc, fdt32_to_cpu(pins[i])))
- continue;
- sc->sc_ro_pins[j++ + sc->sc_ro_npins] = fdt32_to_cpu(pins[i]);
- }
- sc->sc_ro_npins += j;
- if (i > 0)
- printf(".");
- printf("\n");
-
return (0);
}
@@ -672,34 +669,20 @@ bcm_gpio_probe(device_t dev)
static int
bcm_gpio_attach(device_t dev)
{
- struct bcm_gpio_softc *sc = device_get_softc(dev);
- uint32_t func;
- int i, j, rid;
+ int i, j;
phandle_t gpio;
+ struct bcm_gpio_softc *sc;
+ uint32_t func;
+ sc = device_get_softc(dev);
sc->sc_dev = dev;
-
mtx_init(&sc->sc_mtx, "bcm gpio", "gpio", MTX_DEF);
-
- rid = 0;
- sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
- RF_ACTIVE);
- if (!sc->sc_mem_res) {
- device_printf(dev, "cannot allocate memory window\n");
- return (ENXIO);
- }
-
- sc->sc_bst = rman_get_bustag(sc->sc_mem_res);
- sc->sc_bsh = rman_get_bushandle(sc->sc_mem_res);
-
- rid = 0;
- sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
- RF_ACTIVE);
- if (!sc->sc_irq_res) {
- bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
- device_printf(dev, "cannot allocate interrupt\n");
- return (ENXIO);
+ if (bus_alloc_resources(dev, bcm_gpio_res_spec, sc->sc_res) != 0) {
+ device_printf(dev, "cannot allocate resources\n");
+ goto fail;
}
+ sc->sc_bst = rman_get_bustag(sc->sc_res[0]);
+ sc->sc_bsh = rman_get_bushandle(sc->sc_res[0]);
/* Find our node. */
gpio = ofw_bus_get_node(sc->sc_dev);
@@ -717,8 +700,6 @@ bcm_gpio_attach(device_t dev)
/* Initialize the software controlled pins. */
for (i = 0, j = 0; j < BCM_GPIO_PINS; j++) {
- if (bcm_gpio_pin_is_ro(sc, j))
- continue;
snprintf(sc->sc_gpio_pins[i].gp_name, GPIOMAXNAME,
"pin %d", j);
func = bcm_gpio_get_function(sc, j);
@@ -737,10 +718,9 @@ bcm_gpio_attach(device_t dev)
return (bus_generic_attach(dev));
fail:
- if (sc->sc_irq_res)
- bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res);
- if (sc->sc_mem_res)
- bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
+ bus_release_resources(dev, bcm_gpio_res_spec, sc->sc_res);
+ mtx_destroy(&sc->sc_mtx);
+
return (ENXIO);
}
diff --git a/sys/boot/efi/libefi/efinet.c b/sys/boot/efi/libefi/efinet.c
index 3f08ed2..f1e6143 100644
--- a/sys/boot/efi/libefi/efinet.c
+++ b/sys/boot/efi/libefi/efinet.c
@@ -99,8 +99,11 @@ dump_mode(EFI_SIMPLE_NETWORK_MODE *mode)
static int
efinet_match(struct netif *nif, void *machdep_hint)
{
+ struct devdesc *dev = machdep_hint;
- return (1);
+ if (dev->d_unit - 1 == nif->nif_unit)
+ return (1);
+ return(0);
}
static int
diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c
index 3565177..fb66b45 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -31,7 +31,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
- * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl.c#8 $
+ * $Id$
*/
/*
* CAM Target Layer, a SCSI device emulation subsystem.
@@ -446,6 +446,8 @@ static int ctl_scsiio_lun_check(struct ctl_lun *lun,
struct ctl_scsiio *ctsio);
//static int ctl_check_rtr(union ctl_io *pending_io, struct ctl_softc *softc);
static void ctl_failover(void);
+static void ctl_clear_ua(struct ctl_softc *ctl_softc, uint32_t initidx,
+ ctl_ua_type ua_type);
static int ctl_scsiio_precheck(struct ctl_softc *ctl_softc,
struct ctl_scsiio *ctsio);
static int ctl_scsiio(struct ctl_scsiio *ctsio);
@@ -9433,6 +9435,7 @@ ctl_request_sense(struct ctl_scsiio *ctsio)
{
struct scsi_request_sense *cdb;
struct scsi_sense_data *sense_ptr;
+ struct ctl_softc *ctl_softc;
struct ctl_lun *lun;
uint32_t initidx;
int have_error;
@@ -9441,6 +9444,7 @@ ctl_request_sense(struct ctl_scsiio *ctsio)
cdb = (struct scsi_request_sense *)ctsio->cdb;
+ ctl_softc = control_softc;
lun = (struct ctl_lun *)ctsio->io_hdr.ctl_private[CTL_PRIV_LUN].ptr;
CTL_DEBUG_PRINT(("ctl_request_sense\n"));
@@ -9526,6 +9530,14 @@ ctl_request_sense(struct ctl_scsiio *ctsio)
ua_type = ctl_build_ua(lun, initidx, sense_ptr, sense_format);
if (ua_type != CTL_UA_NONE)
have_error = 1;
+ if (ua_type == CTL_UA_LUN_CHANGE) {
+ mtx_unlock(&lun->lun_lock);
+ mtx_lock(&ctl_softc->ctl_lock);
+ ctl_clear_ua(ctl_softc, initidx, ua_type);
+ mtx_unlock(&ctl_softc->ctl_lock);
+ mtx_lock(&lun->lun_lock);
+ }
+
}
mtx_unlock(&lun->lun_lock);
@@ -9593,6 +9605,9 @@ ctl_cmddt_inquiry(struct ctl_scsiio *ctsio)
}
#endif
+/*
+ * SCSI VPD page 0x00, the Supported VPD Pages page.
+ */
static int
ctl_inquiry_evpd_supported(struct ctl_scsiio *ctsio, int alloc_len)
{
@@ -9665,6 +9680,9 @@ ctl_inquiry_evpd_supported(struct ctl_scsiio *ctsio, int alloc_len)
return (CTL_RETVAL_COMPLETE);
}
+/*
+ * SCSI VPD page 0x80, the Unit Serial Number page.
+ */
static int
ctl_inquiry_evpd_serial(struct ctl_scsiio *ctsio, int alloc_len)
{
@@ -9721,6 +9739,9 @@ ctl_inquiry_evpd_serial(struct ctl_scsiio *ctsio, int alloc_len)
}
+/*
+ * SCSI VPD page 0x86, the Extended INQUIRY Data page.
+ */
static int
ctl_inquiry_evpd_eid(struct ctl_scsiio *ctsio, int alloc_len)
{
@@ -9758,10 +9779,33 @@ ctl_inquiry_evpd_eid(struct ctl_scsiio *ctsio, int alloc_len)
else
eid_ptr->device = (SID_QUAL_LU_OFFLINE << 5) | T_DIRECT;
eid_ptr->page_code = SVPD_EXTENDED_INQUIRY_DATA;
- eid_ptr->page_length = data_len - 4;
+ scsi_ulto2b(data_len - 4, eid_ptr->page_length);
+ /*
+ * We support head of queue, ordered and simple tags.
+ */
eid_ptr->flags2 = SVPD_EID_HEADSUP | SVPD_EID_ORDSUP | SVPD_EID_SIMPSUP;
+ /*
+ * Volatile cache supported.
+ */
eid_ptr->flags3 = SVPD_EID_V_SUP;
+ /*
+ * This means that we clear the REPORTED LUNS DATA HAS CHANGED unit
+ * attention for a particular IT nexus on all LUNs once we report
+ * it to that nexus once. This bit is required as of SPC-4.
+ */
+ eid_ptr->flags4 = SVPD_EID_LUICLT;
+
+ /*
+ * XXX KDM in order to correctly answer this, we would need
+ * information from the SIM to determine how much sense data it
+ * can send. So this would really be a path inquiry field, most
+ * likely. This can be set to a maximum of 252 according to SPC-4,
+ * but the hardware may or may not be able to support that much.
+ * 0 just means that the maximum sense data length is not reported.
+ */
+ eid_ptr->max_sense_length = 0;
+
ctl_set_success(ctsio);
ctsio->io_hdr.flags |= CTL_FLAG_ALLOCATED;
ctsio->be_move_done = ctl_config_move_done;
@@ -9820,6 +9864,9 @@ ctl_inquiry_evpd_mpp(struct ctl_scsiio *ctsio, int alloc_len)
return (CTL_RETVAL_COMPLETE);
}
+/*
+ * SCSI VPD page 0x83, the Device Identification page.
+ */
static int
ctl_inquiry_evpd_devid(struct ctl_scsiio *ctsio, int alloc_len)
{
@@ -10235,6 +10282,9 @@ ctl_inquiry_evpd_lbp(struct ctl_scsiio *ctsio, int alloc_len)
return (CTL_RETVAL_COMPLETE);
}
+/*
+ * INQUIRY with the EVPD bit set.
+ */
static int
ctl_inquiry_evpd(struct ctl_scsiio *ctsio)
{
@@ -10299,6 +10349,9 @@ err:
return (retval);
}
+/*
+ * Standard INQUIRY data.
+ */
static int
ctl_inquiry_std(struct ctl_scsiio *ctsio)
{
@@ -11468,6 +11521,23 @@ ctl_failover(void)
mtx_unlock(&softc->ctl_lock);
}
+static void
+ctl_clear_ua(struct ctl_softc *ctl_softc, uint32_t initidx,
+ ctl_ua_type ua_type)
+{
+ struct ctl_lun *lun;
+ ctl_ua_type *pu;
+
+ mtx_assert(&ctl_softc->ctl_lock, MA_OWNED);
+
+ STAILQ_FOREACH(lun, &ctl_softc->lun_list, links) {
+ mtx_lock(&lun->lun_lock);
+ pu = lun->pending_ua[initidx / CTL_MAX_INIT_PER_PORT];
+ pu[initidx % CTL_MAX_INIT_PER_PORT] &= ~ua_type;
+ mtx_unlock(&lun->lun_lock);
+ }
+}
+
static int
ctl_scsiio_precheck(struct ctl_softc *softc, struct ctl_scsiio *ctsio)
{
diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h
index d536a74..dfd0db0 100644
--- a/sys/cam/scsi/scsi_all.h
+++ b/sys/cam/scsi/scsi_all.h
@@ -2112,10 +2112,15 @@ struct scsi_vpd_extended_inquiry_data
uint8_t device;
uint8_t page_code;
#define SVPD_EXTENDED_INQUIRY_DATA 0x86
- uint8_t reserved;
- uint8_t page_length;
+ uint8_t page_length[2];
uint8_t flags1;
-#define SVPD_EID_AM 0xC0
+
+ /* These values are for direct access devices */
+#define SVPD_EID_AM_MASK 0xC0
+#define SVPD_EID_AM_DEFER 0x80
+#define SVPD_EID_AM_IMMED 0x40
+#define SVPD_EID_AM_UNDEFINED 0x00
+#define SVPD_EID_AM_RESERVED 0xc0
#define SVPD_EID_SPT 0x38
#define SVPD_EID_SPT_1 0x00
#define SVPD_EID_SPT_12 0x08
@@ -2124,9 +2129,14 @@ struct scsi_vpd_extended_inquiry_data
#define SVPD_EID_SPT_3 0x20
#define SVPD_EID_SPT_23 0x28
#define SVPD_EID_SPT_123 0x38
+
+ /* These values are for sequential access devices */
+#define SVPD_EID_SA_SPT_LBP 0x08
+
#define SVPD_EID_GRD_CHK 0x04
#define SVPD_EID_APP_CHK 0x02
#define SVPD_EID_REF_CHK 0x01
+
uint8_t flags2;
#define SVPD_EID_UASK_SUP 0x20
#define SVPD_EID_GROUP_SUP 0x10
@@ -2147,6 +2157,10 @@ struct scsi_vpd_extended_inquiry_data
#define SVPD_EID_CBCS 0x01
uint8_t flags6;
#define SVPD_EID_MULTI_I_T_FW 0x0F
+#define SVPD_EID_MC_VENDOR_SPEC 0x00
+#define SVPD_EID_MC_MODE_1 0x01
+#define SVPD_EID_MC_MODE_2 0x02
+#define SVPD_EID_MC_MODE_3 0x03
uint8_t est[2];
uint8_t flags7;
#define SVPD_EID_POA_SUP 0x80
diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
index be2b27d..b44de1d 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
@@ -295,7 +295,7 @@ fasttrap_sigtrap(proc_t *p, kthread_t *t, uintptr_t pc)
ksi->ksi_code = TRAP_DTRACE;
ksi->ksi_addr = (caddr_t)pc;
PROC_LOCK(p);
- (void) tdksignal(t, SIGTRAP, ksi);
+ (void) tdsendsignal(p, t, SIGTRAP, ksi);
PROC_UNLOCK(p);
#endif
}
@@ -1296,8 +1296,13 @@ fasttrap_pid_disable(void *arg, dtrace_id_t id, void *parg)
*/
if ((p = pfind(probe->ftp_pid)) != NULL) {
#ifdef __FreeBSD__
- _PHOLD(p);
- PROC_UNLOCK(p);
+ if (p->p_flag & P_WEXIT) {
+ PROC_UNLOCK(p);
+ p = NULL;
+ } else {
+ _PHOLD(p);
+ PROC_UNLOCK(p);
+ }
#endif
}
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index bbbe827..996a0cf 100644
--- a/sys/conf/files.amd64
+++ b/sys/conf/files.amd64
@@ -131,12 +131,12 @@ crypto/aesni/aeskeys_amd64.S optional aesni
crypto/aesni/aesni.c optional aesni
aesni_ghash.o optional aesni \
dependency "$S/crypto/aesni/aesni_ghash.c" \
- compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
+ compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
no-implicit-rule \
clean "aesni_ghash.o"
aesni_wrap.o optional aesni \
dependency "$S/crypto/aesni/aesni_wrap.c" \
- compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -maes ${.IMPSRC}" \
+ compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes ${.IMPSRC}" \
no-implicit-rule \
clean "aesni_wrap.o"
crypto/blowfish/bf_enc.c optional crypto | ipsec
diff --git a/sys/conf/kern.mk b/sys/conf/kern.mk
index bfc4473..7739dc5 100644
--- a/sys/conf/kern.mk
+++ b/sys/conf/kern.mk
@@ -23,6 +23,7 @@ NO_WSHIFT_COUNT_OVERFLOW= -Wno-shift-count-overflow
NO_WSELF_ASSIGN= -Wno-self-assign
NO_WUNNEEDED_INTERNAL_DECL= -Wno-unneeded-internal-declaration
NO_WSOMETIMES_UNINITIALIZED= -Wno-error-sometimes-uninitialized
+NO_WCAST_QUAL= -Wno-cast-qual
# Several other warnings which might be useful in some cases, but not severe
# enough to error out the whole kernel build. Display them anyway, so there is
# some incentive to fix them eventually.
diff --git a/sys/dev/alc/if_alc.c b/sys/dev/alc/if_alc.c
index 2db8675..d730eee 100644
--- a/sys/dev/alc/if_alc.c
+++ b/sys/dev/alc/if_alc.c
@@ -114,11 +114,11 @@ static struct alc_ident alc_ident_table[] = {
{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8161, 9 * 1024,
"Atheros AR8161 PCIe Gigabit Ethernet" },
{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8162, 9 * 1024,
- "Atheros AR8161 PCIe Fast Ethernet" },
+ "Atheros AR8162 PCIe Fast Ethernet" },
{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8171, 9 * 1024,
- "Atheros AR8161 PCIe Gigabit Ethernet" },
+ "Atheros AR8171 PCIe Gigabit Ethernet" },
{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8172, 9 * 1024,
- "Atheros AR8161 PCIe Fast Ethernet" },
+ "Atheros AR8172 PCIe Fast Ethernet" },
{ VENDORID_ATHEROS, DEVICEID_ATHEROS_E2200, 9 * 1024,
"Killer E2200 Gigabit Ethernet" },
{ 0, 0, 0, NULL}
diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c
index 5bcf3d1..7da5e58 100644
--- a/sys/dev/ofw/openfirm.c
+++ b/sys/dev/ofw/openfirm.c
@@ -459,11 +459,16 @@ OF_getencprop_alloc(phandle_t package, const char *name, int elsz, void **buf)
int i;
retval = OF_getprop_alloc(package, name, elsz, buf);
- if (retval == -1 || retval*elsz % 4 != 0)
+ if (retval == -1)
return (-1);
+ if (retval * elsz % 4 != 0) {
+ free(*buf, M_OFWPROP);
+ *buf = NULL;
+ return (-1);
+ }
cell = *buf;
- for (i = 0; i < retval*elsz/4; i++)
+ for (i = 0; i < retval * elsz / 4; i++)
cell[i] = be32toh(cell[i]);
return (retval);
diff --git a/sys/libkern/strtoq.c b/sys/libkern/strtoq.c
index ea4e7ed..d855056 100644
--- a/sys/libkern/strtoq.c
+++ b/sys/libkern/strtoq.c
@@ -125,6 +125,6 @@ strtoq(const char *nptr, char **endptr, int base)
} else if (neg)
acc = -acc;
if (endptr != 0)
- *((const char **)endptr) = any ? s - 1 : nptr;
+ *endptr = __DECONST(char *, any ? s - 1 : nptr);
return (acc);
}
diff --git a/sys/libkern/strtoul.c b/sys/libkern/strtoul.c
index 5c97ca9..f7399dc 100644
--- a/sys/libkern/strtoul.c
+++ b/sys/libkern/strtoul.c
@@ -103,6 +103,6 @@ strtoul(nptr, endptr, base)
} else if (neg)
acc = -acc;
if (endptr != 0)
- *((const char **)endptr) = any ? s - 1 : nptr;
+ *endptr = __DECONST(char *, any ? s - 1 : nptr);
return (acc);
}
diff --git a/sys/libkern/strtouq.c b/sys/libkern/strtouq.c
index 5877396..f8303a0 100644
--- a/sys/libkern/strtouq.c
+++ b/sys/libkern/strtouq.c
@@ -102,6 +102,6 @@ strtouq(const char *nptr, char **endptr, int base)
} else if (neg)
acc = -acc;
if (endptr != 0)
- *((const char **)endptr) = any ? s - 1 : nptr;
+ *endptr = __DECONST(char *, any ? s - 1 : nptr);
return (acc);
}
diff --git a/sys/modules/aesni/Makefile b/sys/modules/aesni/Makefile
index 6fdfc7e..bfba745 100644
--- a/sys/modules/aesni/Makefile
+++ b/sys/modules/aesni/Makefile
@@ -22,3 +22,6 @@ aesni_wrap.o: aesni_wrap.c
${CTFCONVERT_CMD}
.include <bsd.kmod.mk>
+
+CWARNFLAGS.aesni_ghash.c= ${NO_WCAST_QUAL}
+CWARNFLAGS.aesni_wrap.c= ${NO_WCAST_QUAL}
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c
index c7570e2..7d97ae0 100644
--- a/sys/netinet/tcp_syncache.c
+++ b/sys/netinet/tcp_syncache.c
@@ -1742,6 +1742,7 @@ syncookie_mac(struct in_conninfo *inc, tcp_seq irs, uint8_t flags,
}
SipHash_Update(&ctx, &inc->inc_fport, sizeof(inc->inc_fport));
SipHash_Update(&ctx, &inc->inc_lport, sizeof(inc->inc_lport));
+ SipHash_Update(&ctx, &irs, sizeof(irs));
SipHash_Update(&ctx, &flags, sizeof(flags));
SipHash_Update(&ctx, &secmod, sizeof(secmod));
SipHash_Final((u_int8_t *)&siphash, &ctx);
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index a95e1ca..79783c8 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -1377,6 +1377,10 @@ softdep_flush(addr)
mp = (struct mount *)addr;
ump = VFSTOUFS(mp);
atomic_add_int(&stat_flush_threads, 1);
+ ACQUIRE_LOCK(ump);
+ ump->softdep_flags &= ~FLUSH_STARTING;
+ wakeup(&ump->softdep_flushtd);
+ FREE_LOCK(ump);
if (print_threads) {
if (stat_flush_threads == 1)
printf("Running %s at pid %d\n", bufdaemonproc->p_comm,
@@ -1389,7 +1393,7 @@ softdep_flush(addr)
VFSTOUFS(mp)->softdep_jblocks->jb_suspended))
kthread_suspend_check();
ACQUIRE_LOCK(ump);
- if ((ump->softdep_flags & FLUSH_CLEANUP) == 0)
+ while ((ump->softdep_flags & (FLUSH_CLEANUP | FLUSH_EXIT)) == 0)
msleep(&ump->softdep_flushtd, LOCK_PTR(ump), PVM,
"sdflush", hz / 2);
ump->softdep_flags &= ~FLUSH_CLEANUP;
@@ -1421,8 +1425,7 @@ worklist_speedup(mp)
LOCK_OWNED(ump);
if ((ump->softdep_flags & (FLUSH_CLEANUP | FLUSH_EXIT)) == 0) {
ump->softdep_flags |= FLUSH_CLEANUP;
- if (ump->softdep_flushtd->td_wchan == &ump->softdep_flushtd)
- wakeup(&ump->softdep_flushtd);
+ wakeup(&ump->softdep_flushtd);
}
}
@@ -1471,10 +1474,7 @@ softdep_speedup(ump)
(FLUSH_CLEANUP | FLUSH_EXIT)) == 0) {
altump->softdep_flags |= FLUSH_CLEANUP;
altump->um_softdep->sd_cleanups++;
- if (altump->softdep_flushtd->td_wchan ==
- &altump->softdep_flushtd) {
- wakeup(&altump->softdep_flushtd);
- }
+ wakeup(&altump->softdep_flushtd);
}
FREE_LOCK(altump);
}
@@ -2491,9 +2491,18 @@ softdep_mount(devvp, mp, fs, cred)
/*
* Start our flushing thread in the bufdaemon process.
*/
+ ACQUIRE_LOCK(ump);
+ ump->softdep_flags |= FLUSH_STARTING;
+ FREE_LOCK(ump);
kproc_kthread_add(&softdep_flush, mp, &bufdaemonproc,
&ump->softdep_flushtd, 0, 0, "softdepflush", "%s worker",
mp->mnt_stat.f_mntonname);
+ ACQUIRE_LOCK(ump);
+ while ((ump->softdep_flags & FLUSH_STARTING) != 0) {
+ msleep(&ump->softdep_flushtd, LOCK_PTR(ump), PVM, "sdstart",
+ hz / 2);
+ }
+ FREE_LOCK(ump);
/*
* When doing soft updates, the counters in the
* superblock may have gotten out of sync. Recomputation
diff --git a/sys/ufs/ffs/softdep.h b/sys/ufs/ffs/softdep.h
index 514f054..d95ae60 100644
--- a/sys/ufs/ffs/softdep.h
+++ b/sys/ufs/ffs/softdep.h
@@ -1063,6 +1063,8 @@ struct mount_softdeps {
*/
#define FLUSH_EXIT 0x0001 /* time to exit */
#define FLUSH_CLEANUP 0x0002 /* need to clear out softdep structures */
+#define FLUSH_STARTING 0x0004 /* flush thread not yet started */
+
/*
* Keep the old names from when these were in the ufsmount structure.
*/
diff --git a/tools/tools/nanobsd/rescue/build.sh b/tools/tools/nanobsd/rescue/build.sh
index 4c109ff..7d2ed80 100755
--- a/tools/tools/nanobsd/rescue/build.sh
+++ b/tools/tools/nanobsd/rescue/build.sh
@@ -23,20 +23,23 @@ fi
sh ../nanobsd.sh $* -c ${CFG}
+if [ \! -d /usr/obj/Rescue ]; then
+ mkdir -p /usr/obj/Rescue
+fi
F32="/usr/obj/Rescue/rescue_${today}_x32"
D32="/usr/obj/nanobsd.rescue_i386"
if [ -f "${D32}/_.disk.full" ]; then
- mv "${D32}/_.disk.full" "${F32}.img"
+ cp "${D32}/_.disk.full" "${F32}.img"
fi
if [ -f "${D32}/_.disk.iso" ]; then
- mv "${D32}/_.disk.iso" "${F32}.iso"
+ cp "${D32}/_.disk.iso" "${F32}.iso"
fi
F64="/usr/obj/Rescue/rescue_${today}_x64"
D64="/usr/obj/nanobsd.rescue_amd64"
if [ -f "${D64}/_.disk.full" ]; then
- mv "${D64}/_.disk.full" "${F64}.img"
+ cp "${D64}/_.disk.full" "${F64}.img"
fi
if [ -f "${D64}/_.disk.iso" ]; then
- mv "${D64}/_.disk.iso" "${F64}.iso"
+ cp "${D64}/_.disk.iso" "${F64}.iso"
fi
diff --git a/tools/tools/nanobsd/rescue/common b/tools/tools/nanobsd/rescue/common
index 3fd06c8..908455e 100644
--- a/tools/tools/nanobsd/rescue/common
+++ b/tools/tools/nanobsd/rescue/common
@@ -31,9 +31,19 @@ CONF_INSTALL='
CONF_WORLD='
#TARGET_ARCH=i386
CFLAGS=-O -pipe
+WITHOUT_TESTS=YES
ALL_MODULES=YES
'
+# Functions
+toLower() {
+ echo $1 | tr "[:upper:]" "[:lower:]"
+}
+
+toUpper() {
+ echo $1 | tr "[:lower:]" "[:upper:]"
+}
+
#customize_cmd cust_comconsole
customize_cmd cust_allow_ssh_root
customize_cmd cust_install_files
@@ -93,16 +103,22 @@ last_orders () (
pprint 2 "last orders"
(
cd ${NANO_WORLDDIR}
- echo "/dev/iso9660/${NANO_LABEL} / cd9660 ro,noatime 0 0" > etc/fstab
+ #makefs converts labels to uppercase anyways
+ BIGLABEL=`toUpper "${NANO_LABEL}"`
+ echo "/dev/iso9660/${BIGLABEL} / cd9660 ro,noatime 0 0" > etc/fstab
echo "tmpfs /boot/zfs tmpfs rw,size=1048576,mode=777 0 0" >> etc/fstab
echo "ports:/usr/ports /usr/ports nfs rw,noauto,noatime,bg,soft,intr,nfsv3 0 0" >> etc/fstab
# echo "/dev/ad1s1a /scratch ufs rw,noauto,noatime 0 0" >> etc/fstab
rm -f conf/default/etc/remount
touch conf/default/etc/.keepme
touch conf/default/var/.keepme
+ mkdir bootpool
+ mkdir mnt/a
+ mkdir mnt/b
+ mkdir mnt/c
cd ..
makefs -t cd9660 -o rockridge \
- -o label="${NANO_LABEL}" -o publisher="RMX" \
+ -o label="${BIGLABEL}" -o publisher="RMX" \
-o bootimage="i386;_.w/boot/cdboot" -o no-emul-boot _.disk.iso _.w/
)
)
diff --git a/usr.bin/grep/Makefile b/usr.bin/grep/Makefile
index fd27687..38df85a 100644
--- a/usr.bin/grep/Makefile
+++ b/usr.bin/grep/Makefile
@@ -31,13 +31,7 @@ MLINKS= grep.1 egrep.1 \
grep.1 fgrep.1 \
grep.1 zgrep.1 \
grep.1 zegrep.1 \
- grep.1 zfgrep.1 \
- grep.1 xzgrep.1 \
- grep.1 xzegrep.1 \
- grep.1 xzfgrep.1 \
- grep.1 lzgrep.1 \
- grep.1 lzegrep.1 \
- grep.1 lzfgrep.1
+ grep.1 zfgrep.1
.endif
LIBADD= z
@@ -51,6 +45,13 @@ LINKS+= ${BINDIR}/${PROG} ${BINDIR}/xzgrep \
${BINDIR}/${PROG} ${BINDIR}/lzgrep \
${BINDIR}/${PROG} ${BINDIR}/lzegrep \
${BINDIR}/${PROG} ${BINDIR}/lzfgrep
+
+MLINKS+= grep.1 xzgrep.1 \
+ grep.1 xzegrep.1 \
+ grep.1 xzfgrep.1 \
+ grep.1 lzgrep.1 \
+ grep.1 lzegrep.1 \
+ grep.1 lzfgrep.1
.else
CFLAGS+= -DWITHOUT_LZMA
.endif
diff --git a/usr.sbin/config/config.8 b/usr.sbin/config/config.8
index bfaded9..dcfbc62 100644
--- a/usr.sbin/config/config.8
+++ b/usr.sbin/config/config.8
@@ -39,6 +39,7 @@
.Op Fl CVgp
.Op Fl I Ar path
.Op Fl d Ar destdir
+.Op Fl s Ar srcdir
.Ar SYSTEM_NAME
.Nm
.Op Fl x Ar kernel
@@ -85,6 +86,10 @@ Note that
does not append
.Ar SYSTEM_NAME
to the directory given.
+.It Fl s Ar srcdir
+Use
+.Ar srcdir
+as the source directory, instead of the default one.
.It Fl m
Print the MACHINE and MACHINE_ARCH values for this
kernel and exit.
@@ -143,6 +148,14 @@ header files,
definitions of
the number of various devices that will be compiled into the system.
.Pp
+The
+.Nm
+utility looks for kernel sources in the directory
+.Pa ../..
+or the one given with the
+.Fl s
+option.
+.Pp
After running
.Nm ,
it is necessary to run
diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c
index ff18d3c..8875142 100644
--- a/usr.sbin/config/main.c
+++ b/usr.sbin/config/main.c
@@ -116,7 +116,7 @@ main(int argc, char **argv)
printmachine = 0;
kernfile = NULL;
SLIST_INIT(&includepath);
- while ((ch = getopt(argc, argv, "CI:d:gmpVx:")) != -1)
+ while ((ch = getopt(argc, argv, "CI:d:gmpsVx:")) != -1)
switch (ch) {
case 'C':
filebased = 1;
@@ -144,6 +144,12 @@ main(int argc, char **argv)
case 'p':
profiling++;
break;
+ case 's':
+ if (*srcdir == '\0')
+ strlcpy(srcdir, optarg, sizeof(srcdir));
+ else
+ errx(EXIT_FAILURE, "src directory already set");
+ break;
case 'V':
printf("%d\n", CONFIGVERS);
exit(0);
@@ -180,7 +186,8 @@ main(int argc, char **argv)
len = strlen(destdir);
while (len > 1 && destdir[len - 1] == '/')
destdir[--len] = '\0';
- get_srcdir();
+ if (*srcdir == '\0')
+ get_srcdir();
} else {
strlcpy(destdir, CDIR, sizeof(destdir));
strlcat(destdir, PREFIX, sizeof(destdir));
@@ -275,7 +282,8 @@ static void
usage(void)
{
- fprintf(stderr, "usage: config [-CgmpV] [-d destdir] sysname\n");
+ fprintf(stderr,
+ "usage: config [-CgmpV] [-d destdir] [-s srcdir] sysname\n");
fprintf(stderr, " config -x kernel\n");
exit(EX_USAGE);
}
OpenPOWER on IntegriCloud