commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnumach] 01/02: Imported Upstream version 1.6


From: Samuel Thibault
Subject: [gnumach] 01/02: Imported Upstream version 1.6
Date: Tue, 03 Nov 2015 21:51:26 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch master
in repository gnumach.

commit 603ea1b3f9d4e1be7eb63de84152db514eb0c97c
Author: Samuel Thibault <address@hidden>
Date:   Tue Nov 3 21:30:57 2015 +0000

    Imported Upstream version 1.6
---
 ChangeLog                      |  93 ++++++++++
 Makefile.in                    |  62 ++++---
 Makefrag.am                    |  11 +-
 Makerules.mig.am               |  21 ++-
 NEWS                           |  28 ++++
 build-aux/compile              |   2 +-
 build-aux/config.guess         |  47 ++++--
 build-aux/config.sub           |  36 ++--
 build-aux/depcomp              |   2 +-
 build-aux/install-sh           | 373 +++++++++++++++++++----------------------
 build-aux/mdate-sh             |   8 +-
 build-aux/missing              |   2 +-
 build-aux/test-driver          |  15 +-
 configure                      |  20 +--
 ddb/db_command.c               |   2 +
 ddb/db_output.c                |   2 +-
 device/cirbuf.c                |   2 +
 doc/mach.info                  | 240 +++++++++++++-------------
 doc/mach.info-1                |   8 +-
 doc/mach.info-2                |   4 +-
 doc/stamp-vti                  |   8 +-
 doc/version.texi               |   8 +-
 i386/i386/debug.h              |   2 +
 i386/i386/debug_i386.c         |  28 +++-
 include/mach/time_value.h.orig |  99 -----------
 kern/bootstrap.c               |  10 +-
 kern/mach_clock.c              |  12 +-
 kern/sched_prim.h              |   4 +-
 kern/slab.c                    |  41 ++++-
 kern/slab.h                    |   4 +
 kern/syscall_sw.h              |   6 +-
 version.m4                     |   2 +-
 32 files changed, 675 insertions(+), 527 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 89c75f0..576763d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,96 @@
+2015-10-31  Thomas Schwinge  <address@hidden>
+
+       GNU Mach 1.6
+       * version.m4 (AC_PACKAGE_VERSION): Set to 1.6.
+       * NEWS: Finalize for 1.6.
+
+2015-10-31  Thomas Schwinge  <address@hidden>
+
+       Rework *.msgids handling when neither client nor server stubs are 
required
+       Originally added in commit 255c47e669819f153c722c98a230f6fe4e6ece08, 
but "make
+       distcheck" didn't like that:
+
+           [...]
+           ERROR: files left in build directory after distclean:
+           ./ipc/notify.msgids
+           Makefile:7489: recipe for target 'distcleancheck' failed
+           make[1]: *** [distcleancheck] Error 1
+           make[1]: Leaving directory 
'[...]/gnumach/release.build/gnumach-1.5/_build/sub'
+           Makefile:7416: recipe for target 'distcheck' failed
+           make: *** [distcheck] Error 1
+
+       Instead of special-casing that, generalize the Makefile rules.
+
+       * Makefrag.am (nodist_lib_dep_tr_for_defs_a_SOURCES): Add
+       ipc/notify.none.defs.c.
+       (nodist_libkernel_a_SOURCES): Add ipc/notify.none.msgids.
+       (gnumach.msgids): Remove ipc/notify.msgids prerequisite.
+       * Makerules.mig.am (%.msgids): Remove rule, and instead...
+       (%.none.defs.c, %.none.msgids): ... add these rules.
+
+2015-10-05  Justus Winter  <address@hidden>
+
+       Update NEWS file
+
+2015-10-05  Samuel Thibault  <address@hidden>
+
+       Fix time going back in Xen case
+       when backward time correction happens to get bigger than the tick 
duration.
+
+       * kern/mach_clock.c (clock_interrupt): When `tickdelta' is bigger than 
`usec',
+       truncate it to `usec-1'.
+
+2015-10-05  Joshua Branson  <address@hidden>
+
+       Add generated mach documentation files to gitignore
+       * .gitignore: Add doc/mach.aux doc/mach.cp doc/mach.cps doc/mach.fn
+       doc/mach.fns doc/mach.ky doc/mach.log doc/mach.pdf doc/mach.pg 
doc/mach.toc
+       doc/mach.tp doc/mach.vr.
+
+2015-09-29  Justus Winter  <address@hidden>
+
+       kern/slab: print total used and reclaimable memory
+       * kern/slab.c (_slab_info): Print total used and reclaimable memory.
+
+       kern/slab: include flags in the slab information
+       * kern/slab.c (_slab_info): Include flags in the slab information.
+
+       ddb: fix line formatting
+       * ddb/db_output.c (db_putchar): Fix off-by-one, allowing one more
+       character to be printed before the newline is inserted.
+
+       ddb: add new command `show slabinfo'
+       * ddb/db_command.c (db_show_cmds): Add `slabinfo'.
+       * kern/slab.c (slab_info): Generalize so that it can be used with
+       different printf-like functions, and turn it into a static function.
+       (slab_info): New wrapper retaining the old behaviour.
+       (db_show_slab_info): New wrapper that uses `db_printf' instead.
+       * kern/slab.h (db_show_slab_info): New declaration.
+
+2015-09-27  Justus Winter  <address@hidden>
+
+       i386: trace syscalls of a single task
+       * i386/i386/debug_i386.c (syscall_trace_task): New variable.
+       (syscall_trace_print): If set, trace only syscalls from this task.
+
+       i386: improve syscall tracing
+       * kern/syscall_sw.h (mach_trap_t): Turn unused field into 
`mach_trap_name'.
+       (MACH_TRAP, MACH_TRAP_STACK): Record name.
+       * i386/i386/debug_i386.c (syscall_trace_print): Use the name and
+       format the arguments to look like c.
+
+       Fix build with -DDEBUG
+       * device/cirbuf.c: Add missing include.
+       * i386/i386/debug.h (dump_ss): Hide declaration from assembler.
+       * i386/i386/debug_i386.c: Fix include.
+       * kern/sched_prim.h: Add missing include, fix declaration.
+
+       kern/bootstrap: drop into the debugger
+       * kern/bootstrap.c (boot_script_prompt_task_resume): Drop into the
+       debugger instead of merely waiting for return using `safe_gets', which
+       disables interrupts, making it impossible to break into the debugger
+       using the magic keys.
+
 2015-09-19  Flávio Cruz  <address@hidden>
 
        Add macros to convert between time_value_t and timespec
diff --git a/Makefile.in b/Makefile.in
index 0f9511d..552ee63 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1209,6 +1209,7 @@ nodist_lib_dep_tr_for_defs_a_OBJECTS = 
vm/lib_dep_tr_for_defs_a-memory_object_us
        kern/lib_dep_tr_for_defs_a-gnumach.server.defs.$(OBJEXT) \
        kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT) \
        kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT) \
+       ipc/lib_dep_tr_for_defs_a-notify.none.defs.$(OBJEXT) \
        $(am__objects_1)
 lib_dep_tr_for_defs_a_OBJECTS =  \
        $(nodist_lib_dep_tr_for_defs_a_OBJECTS)
@@ -2482,11 +2483,7 @@ noinst_LIBRARIES = libkernel.a lib_dep_tr_for_defs.a 
$(am__append_5) \
        $(am__append_99)
 TESTS = tests/test-mbchk
 info_TEXINFOS = doc/mach.texi
-#      kern/mach.server.defs
-#      kern/mach4.server.defs
-#      kern/gnumach.server.defs
-#      kern/mach_debug.server.defs
-#      kern/mach_host.server.defs
+#      ipc/notify.none.defs
 
 # rpctrace can make use of that.
 MOSTLYCLEANFILES = $(nodist_libkernel_a_SOURCES) \
@@ -2641,7 +2638,8 @@ nodist_libkernel_a_SOURCES = version.c 
vm/memory_object_user.user.h \
        kern/gnumach.server.msgids kern/mach_debug.server.h \
        kern/mach_debug.server.c kern/mach_debug.server.msgids \
        kern/mach_host.server.h kern/mach_host.server.c \
-       kern/mach_host.server.msgids $(am__append_122)
+       kern/mach_host.server.msgids ipc/notify.none.msgids \
+       $(am__append_122)
 gnumach_o_LDADD = libkernel.a $(am__append_6) $(am__append_100)
 gnumach_SOURCES = 
 gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
@@ -2662,6 +2660,14 @@ gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
 #      device/device.server.defs
 #      device/device_pager.server.defs
 #      ipc/mach_port.server.defs
+#      kern/mach.server.defs
+#      kern/mach4.server.defs
+#      kern/gnumach.server.defs
+#      kern/mach_debug.server.defs
+#      kern/mach_host.server.defs
+
+# Stand-alone rule to generate the list of message ids when neither
+# the client nor the server stubs are required.
 nodist_lib_dep_tr_for_defs_a_SOURCES =  \
        vm/memory_object_user.user.defs.c \
        vm/memory_object_default.user.defs.c \
@@ -2671,7 +2677,8 @@ nodist_lib_dep_tr_for_defs_a_SOURCES =  \
        device/device_pager.server.defs.c ipc/mach_port.server.defs.c \
        kern/mach.server.defs.c kern/mach4.server.defs.c \
        kern/gnumach.server.defs.c kern/mach_debug.server.defs.c \
-       kern/mach_host.server.defs.c $(am__append_121)
+       kern/mach_host.server.defs.c ipc/notify.none.defs.c \
+       $(am__append_121)
 # Preprocess only.
 lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
        -E
@@ -3054,6 +3061,8 @@ 
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT):  \
        kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
 kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT):  \
        kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.$(OBJEXT):  \
+       ipc/$(am__dirstamp) ipc/$(DEPDIR)/$(am__dirstamp)
 i386/i386/$(am__dirstamp):
        @$(MKDIR_P) i386/i386
        @: > i386/i386/$(am__dirstamp)
@@ -4259,6 +4268,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@@ -4719,6 +4729,20 @@ kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj: 
kern/mach_host.server.defs
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) 
$(CFLAGS) -c -o kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj `if test 
-f 'kern/mach_host.server.defs.c'; then $(CYGPATH_W) 
'kern/mach_host.server.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/mach_host.server.defs.c'; fi`
 
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.o: ipc/notify.none.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o -MD -MP -MF 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo -c -o 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o `test -f 'ipc/notify.none.defs.c' 
|| echo '$(srcdir)/'`ipc/notify.none.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='ipc/notify.none.defs.c' 
object='ipc/lib_dep_tr_for_defs_a-notify.none.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o `test -f 'ipc/notify.none.defs.c' 
|| echo '$(srcdir)/'`ipc/notify.none.defs.c
+
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj: ipc/notify.none.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj -MD -MP -MF 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo -c -o 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj `if test -f 
'ipc/notify.none.defs.c'; then $(CYGPATH_W) 'ipc/notify.none.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/ipc/notify.none.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo 
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='ipc/notify.none.defs.c' 
object='ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj `if test -f 
'ipc/notify.none.defs.c'; then $(CYGPATH_W) 'ipc/notify.none.defs.c'; else 
$(CYGPATH_W) '$(srcdir)/ipc/notify.none.defs.c'; fi`
+
 i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o: 
i386/i386/mach_i386.server.defs.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o -MD -MP -MF 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo -c -o 
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o `test -f 
'i386/i386/mach_i386.server.defs.c' || echo 
'$(srcdir)/'`i386/i386/mach_i386.server.defs.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo 
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Po
@@ -7831,29 +7855,28 @@ uninstall-am: uninstall-dvi-am 
uninstall-exec_bootPROGRAMS \
 %.server.defs.c: %.srv
        $(AM_V_at) rm -f $@
        $(AM_V_GEN) cp -p $< $@
-%.user.defs.c: %.cli
-       $(AM_V_at) rm -f $@
-       $(AM_V_GEN) cp -p $< $@
 %.server.h %.server.c %.server.msgids: 
lib_dep_tr_for_defs_a-%.server.defs.$(OBJEXT)
        $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)    \
          -sheader $*.server.h -server $*.server.c              \
          -list $*.server.msgids                                \
          < $<
+%.user.defs.c: %.cli
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
 %.user.h %.user.c %.user.msgids: lib_dep_tr_for_defs_a-%.user.defs.$(OBJEXT)
        $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS)    \
          -user $*.user.c -header $*.user.h                     \
          -list $*.user.msgids                                  \
          < $<
-
-vpath %.defs $(top_srcdir)
-
 # Stand-alone rule to generate the list of message ids when neither
 # the client nor the server stubs are required.
-%.msgids: %.defs
-       $(MIGCOM_V) $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -E $<     \
-       | $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)              \
-         -sheader /dev/null -server /dev/null                  \
-         -list "$*.msgids"
+%.none.defs.c: %.defs
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
+%.none.msgids: lib_dep_tr_for_defs_a-%.none.defs.$(OBJEXT)
+       $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS)                    \
+         -list $*.none.msgids                                  \
+         < $<
 
 # This is how it should be done, but this is not integrated into GNU Automake
 # and is missing automatic inter-file dependency management because of that.
@@ -7916,8 +7939,7 @@ echo-%:
 install-data-hook:
        rm -f '$(DESTDIR)$(include_machdir)'/machine
        ln -s '$(systype)' '$(DESTDIR)$(include_machdir)'/machine
-gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) \
-               ipc/notify.msgids
+gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES))
        $(AM_V_at) cat $^ > address@hidden
        $(AM_V_GEN) mv address@hidden $@
 dist-hook: dist-hook-linux
diff --git a/Makefrag.am b/Makefrag.am
index b9d96c5..823ece5 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -545,11 +545,18 @@ nodist_libkernel_a_SOURCES += \
 #      kern/mach_debug.server.defs
 #      kern/mach_host.server.defs
 
+# Stand-alone rule to generate the list of message ids when neither
+# the client nor the server stubs are required.
+nodist_lib_dep_tr_for_defs_a_SOURCES += \
+       ipc/notify.none.defs.c
+nodist_libkernel_a_SOURCES += \
+       ipc/notify.none.msgids
+#      ipc/notify.none.defs
+
 # rpctrace can make use of that.
 MOSTLYCLEANFILES += \
        gnumach.msgids
-gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) \
-               ipc/notify.msgids
+gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES))
        $(AM_V_at) cat $^ > address@hidden
        $(AM_V_GEN) mv address@hidden $@
 # `exec_' prefix, so that we don't try to build that file during when running
diff --git a/Makerules.mig.am b/Makerules.mig.am
index 085b247..8ae6555 100644
--- a/Makerules.mig.am
+++ b/Makerules.mig.am
@@ -74,29 +74,28 @@ lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
 %.server.defs.c: %.srv
        $(AM_V_at) rm -f $@
        $(AM_V_GEN) cp -p $< $@
-%.user.defs.c: %.cli
-       $(AM_V_at) rm -f $@
-       $(AM_V_GEN) cp -p $< $@
 %.server.h %.server.c %.server.msgids: 
lib_dep_tr_for_defs_a-%.server.defs.$(OBJEXT)
        $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)    \
          -sheader $*.server.h -server $*.server.c              \
          -list $*.server.msgids                                \
          < $<
+%.user.defs.c: %.cli
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
 %.user.h %.user.c %.user.msgids: lib_dep_tr_for_defs_a-%.user.defs.$(OBJEXT)
        $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS)    \
          -user $*.user.c -header $*.user.h                     \
          -list $*.user.msgids                                  \
          < $<
-
-vpath %.defs $(top_srcdir)
-
 # Stand-alone rule to generate the list of message ids when neither
 # the client nor the server stubs are required.
-%.msgids: %.defs
-       $(MIGCOM_V) $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -E $<     \
-       | $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS)              \
-         -sheader /dev/null -server /dev/null                  \
-         -list "$*.msgids"
+%.none.defs.c: %.defs
+       $(AM_V_at) rm -f $@
+       $(AM_V_GEN) cp -p $< $@
+%.none.msgids: lib_dep_tr_for_defs_a-%.none.defs.$(OBJEXT)
+       $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS)                    \
+         -list $*.none.msgids                                  \
+         < $<
 
 # This is how it should be done, but this is not integrated into GNU Automake
 # and is missing automatic inter-file dependency management because of that.
diff --git a/NEWS b/NEWS
index 5d220fa..e8bb33f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,31 @@
+Version 1.6 (2015-10-31)
+
+The code has been updated to work with newer versions of the compiler,
+and numerous bugs have been fixed throughout the code.
+
+The lock debugging infrastructure has been revived and improved, and
+many locking issues have been fixed.
+
+The IPC tables and the hash table mapping objects to IPC entries have
+been replaced by radix trees.  This addresses a scalability issue, as
+IPC tables required huge amounts of continuous virtual kernel memory.
+
+The kernel now allows non-privileged users to wire a small amount of
+memory.
+
+A bug hindering the eviction of inactive pages by the pageout daemon
+has been identified and fixed.
+
+The kernel now keeps timestamps relative to the system boot time.
+Among other things this fixes bogus uptime readings if the system time
+is altered.
+
+A reference leak in the exception handling mechanism has been
+identified and fixed.
+
+ANSI escape sequences are now handled when using `printf'.  This fixes
+the formatting of messages printed by various Linux drivers.
+
 Version 1.5 (2015-04-10)
 
 Numerous cleanups and stylistic fixes of the code base.  Several
diff --git a/build-aux/compile b/build-aux/compile
index 531136b..a85b723 100755
--- a/build-aux/compile
+++ b/build-aux/compile
@@ -3,7 +3,7 @@
 
 scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <address@hidden>.
 #
 # This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 1f5c50c..1659250 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-03-23'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -24,12 +24,12 @@ timestamp='2014-03-23'
 # program.  This Exception is an additional permission under section 7
 # of the GNU General Public License, version 3 ("GPLv3").
 #
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
 # 
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 #
-# Please send patches with a ChangeLog entry to address@hidden
+# Please send patches to <address@hidden>.
 
 
 me=`echo "$0" | sed -e 's,.*/,,'`
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -168,20 +168,27 @@ case 
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
        sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+           /sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || \
+           echo unknown)`
        case "${UNAME_MACHINE_ARCH}" in
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
            sh5el) machine=sh5le-unknown ;;
+           earmv*)
+               arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 
's,^e\(armv[0-9]\).*$,\1,'`
+               endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 
's,^.*\(eb\)$,\1,p'`
+               machine=${arch}${endian}-unknown
+               ;;
            *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
        esac
        # The Operating System including object format, if it has switched
        # to ELF recently, or will in the future.
        case "${UNAME_MACHINE_ARCH}" in
-           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+           arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
                eval $set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
                        | grep -q __ELF__
@@ -197,6 +204,13 @@ case 
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                os=netbsd
                ;;
        esac
+       # Determine ABI tags.
+       case "${UNAME_MACHINE_ARCH}" in
+           earm*)
+               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+               abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+               ;;
+       esac
        # The OS release
        # Debian GNU/NetBSD machines have a different userland, and
        # thus, need a distinct triplet. However, they do not need
@@ -207,13 +221,13 @@ case 
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                release='-gnu'
                ;;
            *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. 
-f1,2`
                ;;
        esac
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
+       echo "${machine}-${os}${release}${abi}"
        exit ;;
     *:Bitrig:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -235,6 +249,9 @@ case 
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:MirBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
        exit ;;
+    *:Sortix:*:*)
+       echo ${UNAME_MACHINE}-unknown-sortix
+       exit ;;
     alpha:OSF1:*:*)
        case $UNAME_RELEASE in
        *4.0)
@@ -579,8 +596,9 @@ EOF
        else
                IBM_ARCH=powerpc
        fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
+       if [ -x /usr/bin/lslpp ] ; then
+               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
        else
                IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
        fi
@@ -932,6 +950,9 @@ EOF
     crisv32:Linux:*:*)
        echo ${UNAME_MACHINE}-axis-linux-${LIBC}
        exit ;;
+    e2k:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
     frv:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
@@ -1020,7 +1041,7 @@ EOF
        echo ${UNAME_MACHINE}-dec-linux-${LIBC}
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
        exit ;;
     xtensa*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
diff --git a/build-aux/config.sub b/build-aux/config.sub
index bba4efb..1acc966 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-09-11'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ timestamp='2014-09-11'
 # of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches with a ChangeLog entry to address@hidden
+# Please send patches to <address@hidden>.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -68,7 +68,7 @@ Report bugs and patches to <address@hidden>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | 
kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -255,12 +255,13 @@ case $basic_machine in
        | arc | arceb \
        | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
        | avr | avr32 \
+       | ba \
        | be32 | be64 \
        | bfin \
        | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
+       | e2k | epiphany \
+       | fido | fr30 | frv | ft32 \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | hexagon \
        | i370 | i860 | i960 | ia64 \
@@ -305,7 +306,7 @@ case $basic_machine in
        | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | 
sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -313,6 +314,7 @@ case $basic_machine in
        | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
        | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+       | visium \
        | we32k \
        | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
@@ -327,6 +329,9 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
+       leon|leon[3-9])
+               basic_machine=sparc-$basic_machine
+               ;;
        m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
@@ -372,12 +377,13 @@ case $basic_machine in
        | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
+       | ba-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
+       | e2k-* | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -424,12 +430,13 @@ case $basic_machine in
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
        | pyramid-* \
+       | riscv32-* | riscv64-* \
        | rl78-* | romp-* | rs6000-* | rx-* \
        | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* 
| sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | 
sparclet-* \
        | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
        | tahoe-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
        | tile*-* \
@@ -437,6 +444,7 @@ case $basic_machine in
        | ubicom32-* \
        | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
        | vax-* \
+       | visium-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
@@ -513,6 +521,9 @@ case $basic_machine in
                basic_machine=i386-pc
                os=-aros
                ;;
+        asmjs)
+               basic_machine=asmjs-unknown
+               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -774,6 +785,9 @@ case $basic_machine in
                basic_machine=m68k-isi
                os=-sysv
                ;;
+       leon-*|leon[3-9]-*)
+               basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+               ;;
        m68knommu)
                basic_machine=m68k-unknown
                os=-linux
@@ -1365,7 +1379,7 @@ case $os in
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | 
-solaris* \
              | -sym* | -kopensolaris* | -plan9* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
+             | -aos* | -aros* | -cloudabi* | -sortix* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/build-aux/depcomp b/build-aux/depcomp
index 4ebd5b3..fc98710 100755
--- a/build-aux/depcomp
+++ b/build-aux/depcomp
@@ -3,7 +3,7 @@
 
 scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/build-aux/install-sh b/build-aux/install-sh
index 377bb86..59990a1 100755
--- a/build-aux/install-sh
+++ b/build-aux/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2014-09-12.12; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
+tab='  '
 nl='
 '
-IFS=" ""       $nl"
+IFS=" $tab$nl"
 
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
 
-# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
 dst_arg=
 
 copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-       shift;;
+        shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-       case $mode in
-         *' '* | *'    '* | *'
-'*       | *'*'* | *'?'* | *'['*)
-           echo "$0: invalid mode: $mode" >&2
-           exit 1;;
-       esac
-       shift;;
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
 
     -o) chowncmd="$chownprog $2"
-       shift;;
+        shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t) dst_arg=$2
-       # Protect names problematic for 'test' and other utilities.
-       case $dst_arg in
-         -* | [=\(\)!]) dst_arg=./$dst_arg;;
-       esac
-       shift;;
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
 
-    -T) no_target_directory=true;;
+    -T) is_target_a_directory=never;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --)        shift
-       break;;
+    --) shift
+        break;;
 
-    -*)        echo "$0: invalid option: $1" >&2
-       exit 1;;
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
   do_exit='(exit $ret); exit $ret'
   trap "ret=129; $do_exit" 1
   trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
 
     *[0-7])
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw='% 200'
+        u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw=,u+rw
+        u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -269,41 +274,15 @@ do
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-       echo "$0: $dst_arg: Is a directory" >&2
-       exit 1
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-       (dirname "$dst") 2>/dev/null ||
-       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-            X"$dst" : 'X\(//\)[^/]' \| \
-            X"$dst" : 'X\(//\)$' \| \
-            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-       echo X"$dst" |
-           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)[^/].*/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\).*/{
-                  s//\1/
-                  q
-                }
-                s/.*/./; q'
-      `
-
+      dstdir=`dirname "$dst"`
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -314,74 +293,81 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-       # Create intermediate dirs using mode 755 as modified by the umask.
-       # This is like FreeBSD 'install' as of 1997-10-28.
-       umask=`umask`
-       case $stripcmd.$umask in
-         # Optimize common cases.
-         *[2367][2367]) mkdir_umask=$umask;;
-         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-         *[0-7])
-           mkdir_umask=`expr $umask + 22 \
-             - $umask % 100 % 40 + $umask % 20 \
-             - $umask % 10 % 4 + $umask % 2
-           `;;
-         *) mkdir_umask=$umask,go-w;;
-       esac
-
-       # With -d, create the new directory with the user-specified mode.
-       # Otherwise, rely on $mkdir_umask.
-       if test -n "$dir_arg"; then
-         mkdir_mode=-m$mode
-       else
-         mkdir_mode=
-       fi
-
-       posix_mkdir=false
-       case $umask in
-         *[123567][0-7][0-7])
-           # POSIX mkdir -p sets u+wx bits regardless of umask, which
-           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-           ;;
-         *)
-           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-           if (umask $mkdir_umask &&
-               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-           then
-             if test -z "$dir_arg" || {
-                  # Check for POSIX incompatibilities with -m.
-                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                  # other-writable bit of parent directory when it shouldn't.
-                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
-                  case $ls_ld_tmpdir in
-                    d????-?r-*) different_mode=700;;
-                    d????-?--*) different_mode=755;;
-                    *) false;;
-                  esac &&
-                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                  }
-                }
-             then posix_mkdir=:
-             fi
-             rmdir "$tmpdir/d" "$tmpdir"
-           else
-             # Remove any dirs left behind by ancient mkdir implementations.
-             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-           fi
-           trap '' 0;;
-       esac;;
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 
2>/dev/null; exit $ret' 0
+
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
+            if (umask $mkdir_umask &&
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 
2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
     esac
 
     if
       $posix_mkdir && (
-       umask $mkdir_umask &&
-       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -391,53 +377,51 @@ do
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-       /*) prefix='/';;
-       [-=\(\)!]*) prefix='./';;
-       *)  prefix='';;
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
       esac
 
-      eval "$initialize_posix_glob"
-
       oIFS=$IFS
       IFS=/
-      $posix_glob set -f
+      set -f
       set fnord $dstdir
       shift
-      $posix_glob set +f
+      set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-       test X"$d" = X && continue
-
-       prefix=$prefix$d
-       if test -d "$prefix"; then
-         prefixes=
-       else
-         if $posix_mkdir; then
-           (umask=$mkdir_umask &&
-            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-           # Don't fail if two instances are running concurrently.
-           test -d "$prefix" || exit 1
-         else
-           case $prefix in
-             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-             *) qprefix=$prefix;;
-           esac
-           prefixes="$prefixes '$qprefix'"
-         fi
-       fi
-       prefix=$prefix/
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-       # Don't fail if two instances are running concurrently.
-       (umask $mkdir_umask &&
-        eval "\$doit_exec \$mkdirprog $prefixes") ||
-         test -d "$dstdir" || exit 1
-       obsolete_mkdir_used=true
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -472,15 +456,12 @@ do
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
+       set +f &&
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -493,24 +474,24 @@ do
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-       # Now remove or move aside any old file at destination location.
-       # We try this two ways since rm can't unlink itself on some
-       # systems and the destination file might be busy for other
-       # reasons.  In this case, the final cleanup might fail but the new
-       # file should still install successfully.
-       {
-         test ! -f "$dst" ||
-         $doit $rmcmd -f "$dst" 2>/dev/null ||
-         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-         } ||
-         { echo "$0: cannot unlink or rename $dst" >&2
-           (exit 1); exit 1
-         }
-       } &&
-
-       # Now rename the file to the real destination.
-       $doit $mvcmd "$dsttmp" "$dst"
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
index b3719cf..9e2c0c9 100755
--- a/build-aux/mdate-sh
+++ b/build-aux/mdate-sh
@@ -1,9 +1,9 @@
 #!/bin/sh
 # Get modification time of a file or directory and pretty-print it.
 
-scriptversion=2010-08-21.06; # UTC
+scriptversion=2015-04-09.19; # UTC
 
-# Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# Copyright (C) 1995-2014 Free Software Foundation, Inc.
 # written by Ulrich Drepper <address@hidden>, June 1995
 #
 # This program is free software; you can redistribute it and/or modify
@@ -74,6 +74,10 @@ export LC_ALL
 LC_TIME=C
 export LC_TIME
 
+# Use UTC to get reproducible result
+TZ=UTC
+export TZ
+
 # GNU ls changes its time format in response to the TIME_STYLE
 # variable.  Since we cannot assume 'unset' works, revert this
 # variable to its documented default.
diff --git a/build-aux/missing b/build-aux/missing
index db98974..f62bbae 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -3,7 +3,7 @@
 
 scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <address@hidden>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/test-driver b/build-aux/test-driver
index d306056..8e575b0 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -3,7 +3,7 @@
 
 scriptversion=2013-07-13.22; # UTC
 
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -106,11 +106,14 @@ trap "st=143; $do_exit" 15
 # Test script is run here.
 "$@" >$log_file 2>&1
 estatus=$?
+
 if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
 fi
 
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
   0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
   0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
   77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
@@ -119,6 +122,12 @@ case $estatus:$expect_failure in
   *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
 esac
 
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
 # Report outcome to console.
 echo "${col}${res}${std}: $test_name"
 
diff --git a/configure b/configure
index c52ed8d..8f70834 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Mach 1.5+git20150922.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.6.
 #
 # Report bugs to <address@hidden>.
 #
@@ -579,8 +579,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GNU Mach'
 PACKAGE_TARNAME='gnumach'
-PACKAGE_VERSION='1.5+git20150922'
-PACKAGE_STRING='GNU Mach 1.5+git20150922'
+PACKAGE_VERSION='1.6'
+PACKAGE_STRING='GNU Mach 1.6'
 PACKAGE_BUGREPORT='address@hidden'
 PACKAGE_URL=''
 
@@ -1595,7 +1595,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU Mach 1.5+git20150922 to adapt to many kinds of 
systems.
+\`configure' configures GNU Mach 1.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1666,7 +1666,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU Mach 1.5+git20150922:";;
+     short | recursive ) echo "Configuration of GNU Mach 1.6:";;
    esac
   cat <<\_ACEOF
 
@@ -2014,7 +2014,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU Mach configure 1.5+git20150922
+GNU Mach configure 1.6
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2106,7 +2106,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU Mach $as_me 1.5+git20150922, which was
+It was created by GNU Mach $as_me 1.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2972,7 +2972,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gnumach'
- VERSION='1.5+git20150922'
+ VERSION='1.6'
 
 
 # Some tools Automake needs.
@@ -12128,7 +12128,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU Mach $as_me 1.5+git20150922, which was
+This file was extended by GNU Mach $as_me 1.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -12199,7 +12199,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GNU Mach config.status 1.5+git20150922
+GNU Mach config.status 1.6
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/ddb/db_command.c b/ddb/db_command.c
index 5651667..721f04f 100644
--- a/ddb/db_command.c
+++ b/ddb/db_command.c
@@ -57,6 +57,7 @@
 #include <machine/db_interface.h>
 #include <kern/debug.h>
 #include <kern/thread.h>
+#include <kern/slab.h>
 #include <ipc/ipc_pset.h> /* 4proto */
 #include <ipc/ipc_port.h> /* 4proto */
 
@@ -327,6 +328,7 @@ struct db_command db_show_cmds[] = {
        { "kmsg",       ipc_kmsg_print,         0,      0 },
        { "msg",        ipc_msg_print,          0,      0 },
        { "ipc_port",   db_show_port_id,        0,      0 },
+       { "slabinfo",   db_show_slab_info,      0,      0 },
        { (char *)0, }
 };
 
diff --git a/ddb/db_output.c b/ddb/db_output.c
index be5319d..a34e807 100644
--- a/ddb/db_output.c
+++ b/ddb/db_output.c
@@ -146,7 +146,7 @@ db_putchar(int c)           /* character to output */
            cnputc(c);
            db_output_position++;
            if (db_max_width >= DB_MIN_MAX_WIDTH
-               && db_output_position >= db_max_width-1) {
+               && db_output_position >= db_max_width) {
                /* auto new line */
                cnputc('\n');
                db_output_position = 0;
diff --git a/device/cirbuf.c b/device/cirbuf.c
index dfb06df..391297c 100644
--- a/device/cirbuf.c
+++ b/device/cirbuf.c
@@ -42,6 +42,8 @@
 /* if c_cl == c_cf - 1, buffer is full */
 
 #if    DEBUG
+#include <mach/boolean.h>
+
 boolean_t cb_check_enable = FALSE;
 #define        CB_CHECK(cb) if (cb_check_enable) cb_check(cb)
 
diff --git a/doc/mach.info b/doc/mach.info
index 24666d3..a6d817b 100644
--- a/doc/mach.info
+++ b/doc/mach.info
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+   This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
@@ -39,126 +39,126 @@ END-INFO-DIR-ENTRY
 
 
 Indirect:
-mach.info-1: 1643
-mach.info-2: 302570
+mach.info-1: 1629
+mach.info-2: 302528
 
 Tag Table:
 (Indirect)
-Node: Top1643
-Node: Introduction11284
-Node: Audience12115
-Node: Features13150
-Node: Overview14977
-Node: History16170
-Node: Installing16315
-Node: Binary Distributions17540
-Node: Compilation18348
-Node: Configuration19581
-Node: Cross-Compilation35992
-Node: Bootstrap36773
-Ref: Bootstrap-Footnote-137216
-Node: Bootloader37453
-Ref: Bootloader-Footnote-138733
-Node: Modules38819
-Node: Inter Process Communication39646
-Node: Major Concepts40269
-Node: Messaging Interface44074
-Node: Mach Message Call44804
-Node: Message Format48119
-Node: Exchanging Port Rights59311
-Ref: Exchanging Port Rights-Footnote-164873
-Node: Memory65045
-Ref: Memory-Footnote-168139
-Node: Message Send68481
-Ref: Message Send-Footnote-175503
-Node: Message Receive75786
-Ref: Message Receive-Footnote-185438
-Node: Atomicity85719
-Node: Port Manipulation Interface88493
-Node: Port Creation90048
-Node: Port Destruction94837
-Node: Port Names97980
-Node: Port Rights102227
-Node: Ports and other Tasks106016
-Node: Receive Rights110109
-Node: Port Sets117040
-Node: Request Notifications119443
-Node: Inherited Ports124247
-Node: Virtual Memory Interface127931
-Node: Memory Allocation129184
-Node: Memory Deallocation131709
-Node: Data Transfer133173
-Node: Memory Attributes136699
-Node: Mapping Memory Objects146138
-Node: Memory Statistics149447
-Node: External Memory Management151021
-Node: Memory Object Server151726
-Node: Memory Object Creation154435
-Node: Memory Object Termination158441
-Node: Memory Objects and Data161380
-Node: Memory Object Locking178526
-Node: Memory Object Attributes184421
-Node: Default Memory Manager190258
-Node: Threads and Tasks195980
-Node: Thread Interface196317
-Node: Thread Creation197313
-Node: Thread Termination198430
-Node: Thread Information198901
-Node: Thread Settings205000
-Node: Thread Execution206234
-Node: Scheduling213527
-Node: Thread Priority213882
-Node: Hand-Off Scheduling216516
-Node: Scheduling Policy221641
-Node: Thread Special Ports222973
-Node: Exceptions225419
-Node: Task Interface226289
-Node: Task Creation227301
-Node: Task Termination228636
-Node: Task Information229238
-Node: Task Execution236140
-Node: Task Special Ports240553
-Node: Syscall Emulation244407
-Node: Profiling245638
-Node: Host Interface249401
-Node: Host Ports250386
-Node: Host Information252459
-Node: Host Time257842
-Node: Host Reboot260509
-Node: Processors and Processor Sets261061
-Node: Processor Set Interface262039
-Node: Processor Set Ports262806
-Node: Processor Set Access263636
-Node: Processor Set Creation265896
-Node: Processor Set Destruction266923
-Node: Tasks and Threads on Sets267844
-Node: Processor Set Priority273011
-Node: Processor Set Policy274301
-Node: Processor Set Info275915
-Node: Processor Interface279728
-Node: Hosted Processors280453
-Node: Processor Control281444
-Node: Processors and Sets282910
-Node: Processor Info284788
-Node: Device Interface287530
-Node: Device Reply Server289145
-Node: Device Open290437
-Node: Device Close292560
-Node: Device Read293139
-Node: Device Write296058
-Node: Device Map298863
-Node: Device Status299754
-Node: Device Filter302570
-Node: Kernel Debugger308317
-Node: Operation309044
-Node: Commands312021
-Node: Variables325806
-Node: Expressions327194
-Node: Copying328543
-Node: Documentation License347772
-Node: GNU Free Documentation License348361
-Node: CMU License370760
-Node: Concept Index371995
-Node: Function and Data Index375841
+Node: Top1629
+Node: Introduction11256
+Node: Audience12087
+Node: Features13122
+Node: Overview14949
+Node: History16142
+Node: Installing16287
+Node: Binary Distributions17512
+Node: Compilation18320
+Node: Configuration19553
+Node: Cross-Compilation35964
+Node: Bootstrap36745
+Ref: Bootstrap-Footnote-137188
+Node: Bootloader37425
+Ref: Bootloader-Footnote-138705
+Node: Modules38791
+Node: Inter Process Communication39618
+Node: Major Concepts40241
+Node: Messaging Interface44046
+Node: Mach Message Call44776
+Node: Message Format48091
+Node: Exchanging Port Rights59283
+Ref: Exchanging Port Rights-Footnote-164845
+Node: Memory65017
+Ref: Memory-Footnote-168111
+Node: Message Send68453
+Ref: Message Send-Footnote-175475
+Node: Message Receive75758
+Ref: Message Receive-Footnote-185410
+Node: Atomicity85691
+Node: Port Manipulation Interface88465
+Node: Port Creation90020
+Node: Port Destruction94809
+Node: Port Names97952
+Node: Port Rights102199
+Node: Ports and other Tasks105988
+Node: Receive Rights110081
+Node: Port Sets117012
+Node: Request Notifications119415
+Node: Inherited Ports124219
+Node: Virtual Memory Interface127903
+Node: Memory Allocation129156
+Node: Memory Deallocation131681
+Node: Data Transfer133145
+Node: Memory Attributes136671
+Node: Mapping Memory Objects146110
+Node: Memory Statistics149419
+Node: External Memory Management150993
+Node: Memory Object Server151698
+Node: Memory Object Creation154407
+Node: Memory Object Termination158413
+Node: Memory Objects and Data161352
+Node: Memory Object Locking178498
+Node: Memory Object Attributes184393
+Node: Default Memory Manager190230
+Node: Threads and Tasks195952
+Node: Thread Interface196289
+Node: Thread Creation197285
+Node: Thread Termination198402
+Node: Thread Information198873
+Node: Thread Settings204972
+Node: Thread Execution206206
+Node: Scheduling213499
+Node: Thread Priority213854
+Node: Hand-Off Scheduling216488
+Node: Scheduling Policy221613
+Node: Thread Special Ports222945
+Node: Exceptions225391
+Node: Task Interface226261
+Node: Task Creation227273
+Node: Task Termination228608
+Node: Task Information229210
+Node: Task Execution236112
+Node: Task Special Ports240525
+Node: Syscall Emulation244379
+Node: Profiling245610
+Node: Host Interface249373
+Node: Host Ports250358
+Node: Host Information252431
+Node: Host Time257814
+Node: Host Reboot260481
+Node: Processors and Processor Sets261033
+Node: Processor Set Interface262011
+Node: Processor Set Ports262778
+Node: Processor Set Access263608
+Node: Processor Set Creation265868
+Node: Processor Set Destruction266895
+Node: Tasks and Threads on Sets267816
+Node: Processor Set Priority272983
+Node: Processor Set Policy274273
+Node: Processor Set Info275887
+Node: Processor Interface279700
+Node: Hosted Processors280425
+Node: Processor Control281416
+Node: Processors and Sets282882
+Node: Processor Info284760
+Node: Device Interface287502
+Node: Device Reply Server289117
+Node: Device Open290409
+Node: Device Close292532
+Node: Device Read293111
+Node: Device Write296030
+Node: Device Map298835
+Node: Device Status299726
+Node: Device Filter302528
+Node: Kernel Debugger308275
+Node: Operation309002
+Node: Commands311979
+Node: Variables325764
+Node: Expressions327152
+Node: Copying328501
+Node: Documentation License347730
+Node: GNU Free Documentation License348319
+Node: CMU License370718
+Node: Concept Index371953
+Node: Function and Data Index375799
 
 End Tag Table
diff --git a/doc/mach.info-1 b/doc/mach.info-1
index 3965a56..9c8a62f 100644
--- a/doc/mach.info-1
+++ b/doc/mach.info-1
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+   This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
@@ -45,8 +45,8 @@ Main Menu
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+   This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
diff --git a/doc/mach.info-2 b/doc/mach.info-2
index 9804275..77f3fee 100644
--- a/doc/mach.info-2
+++ b/doc/mach.info-2
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+   This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
diff --git a/doc/stamp-vti b/doc/stamp-vti
index dbd2e99..bf58005 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
address@hidden UPDATED 12 September 2015
address@hidden UPDATED-MONTH September 2015
address@hidden EDITION 1.5+git20150922
address@hidden VERSION 1.5+git20150922
address@hidden UPDATED 30 October 2015
address@hidden UPDATED-MONTH October 2015
address@hidden EDITION 1.6
address@hidden VERSION 1.6
diff --git a/doc/version.texi b/doc/version.texi
index dbd2e99..bf58005 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED 12 September 2015
address@hidden UPDATED-MONTH September 2015
address@hidden EDITION 1.5+git20150922
address@hidden VERSION 1.5+git20150922
address@hidden UPDATED 30 October 2015
address@hidden UPDATED-MONTH October 2015
address@hidden EDITION 1.6
address@hidden VERSION 1.6
diff --git a/i386/i386/debug.h b/i386/i386/debug.h
index e94649b..84397ba 100644
--- a/i386/i386/debug.h
+++ b/i386/i386/debug.h
@@ -23,10 +23,12 @@
 #ifndef _I386_DEBUG_
 #define _I386_DEBUG_
 
+#ifndef __ASSEMBLER__
 /* Dump a saved state.
    Probably a good idea to have this around
    even when DEBUG isn't turned on.  */
 void dump_ss(const struct i386_saved_state *st);
+#endif /* __ASSEMBLER__ */
 
 #ifdef DEBUG
 
diff --git a/i386/i386/debug_i386.c b/i386/i386/debug_i386.c
index 7657808..233caa7 100644
--- a/i386/i386/debug_i386.c
+++ b/i386/i386/debug_i386.c
@@ -128,21 +128,37 @@ debug_trace_dump(void)
        splx(s);
 }
 
-#include "syscall_sw.h"
+#include <kern/syscall_sw.h>
 
 int syscall_trace = 0;
+task_t syscall_trace_task;
 
 int
 syscall_trace_print(int syscallvec, ...)
 {
        int syscallnum = syscallvec >> 4;
        int i;
+       const mach_trap_t *trap = &mach_trap_table[syscallnum];
+
+       if (syscall_trace_task && syscall_trace_task != current_task())
+               goto out;
+
+       printf("0x%08x:0x%08x:%s(",
+              current_task(), current_thread(), trap->mach_trap_name);
+       for (i = 0; i < trap->mach_trap_arg_count; i++) {
+               unsigned long value = (&syscallvec)[1+i];
+               /* Use a crude heuristic to format pointers.  */
+               if (value > 1024)
+                       printf("0x%08x", value);
+               else
+                       printf("%d", value);
+
+               if (i + 1 < trap->mach_trap_arg_count)
+                       printf(", ");
+       }
+       printf(")\n");
 
-       printf("syscall -%d:", syscallnum);
-       for (i = 0; i < mach_trap_table[syscallnum].mach_trap_arg_count; i++)
-               printf(" %08x", (&syscallvec)[1+i]);
-       printf("\n");
-
+ out:
        return syscallvec;
 }
 
diff --git a/include/mach/time_value.h.orig b/include/mach/time_value.h.orig
deleted file mode 100644
index 0dfe382..0000000
--- a/include/mach/time_value.h.orig
+++ /dev/null
@@ -1,99 +0,0 @@
-/* 
- * Mach Operating System
- * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
- * All Rights Reserved.
- * 
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- * 
- * Carnegie Mellon requests users of this software to return to
- * 
- *  Software Distribution Coordinator  or  address@hidden
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- * 
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-
-#ifndef        _MACH_TIME_VALUE_H_
-#define        _MACH_TIME_VALUE_H_
-
-#include <mach/machine/vm_types.h>
-
-/*
- *     Time value returned by kernel.
- */
-
-struct time_value {
-       integer_t       seconds;
-       integer_t       microseconds;
-};
-typedef        struct time_value       time_value_t;
-
-/*
- *     Macros to manipulate time values.  Assume that time values
- *     are normalized (microseconds <= 999999).
- */
-#define        TIME_MICROS_MAX (1000000)
-
-#define time_value_assert(val)                 \
-  assert(0 <= (val)->microseconds && (val)->microseconds < TIME_MICROS_MAX);
-
-#define        time_value_add_usec(val, micros)        {       \
-       time_value_assert(val);                         \
-       if (((val)->microseconds += (micros))           \
-               >= TIME_MICROS_MAX) {                   \
-           (val)->microseconds -= TIME_MICROS_MAX;     \
-           (val)->seconds++;                           \
-       }                                               \
-       time_value_assert(val);                         \
-}
-
-#define        time_value_sub_usec(val, micros)        {       \
-       time_value_assert(val);                         \
-       if (((val)->microseconds -= (micros)) < 0) {    \
-           (val)->microseconds += TIME_MICROS_MAX;     \
-           (val)->seconds--;                           \
-       }                                               \
-       time_value_assert(val);                         \
-}
-
-#define        time_value_add(result, addend) {                        \
-    time_value_assert(addend);                                 \
-    (result)->seconds += (addend)->seconds;                    \
-    time_value_add_usec(result, (addend)->microseconds);       \
-  }
-
-#define        time_value_sub(result, subtrahend) {                    \
-    time_value_assert(subtrahend);                             \
-    (result)->seconds -= (subtrahend)->seconds;                        \
-    time_value_sub_usec(result, (subtrahend)->microseconds);   \
-  }
-
-/*
- *     Time value available through the mapped-time interface.
- *     Read this mapped value with
- *             do {
- *                     secs = mtime->seconds;
- *                     __sync_synchronize();
- *                     usecs = mtime->microseconds;
- *                     __sync_synchronize();
- *             } while (secs != mtime->check_seconds);
- */
-
-typedef struct mapped_time_value {
-       integer_t seconds;
-       integer_t microseconds;
-       integer_t check_seconds;
-} mapped_time_value_t;
-
-#endif /* _MACH_TIME_VALUE_H_ */
diff --git a/kern/bootstrap.c b/kern/bootstrap.c
index aad0fb1..249c605 100644
--- a/kern/bootstrap.c
+++ b/kern/bootstrap.c
@@ -824,10 +824,18 @@ boot_script_task_resume (struct cmd *cmd)
 int
 boot_script_prompt_task_resume (struct cmd *cmd)
 {
+#if ! MACH_KDB
   char xx[5];
+#endif
+
+  printf ("Pausing for %s...\n", cmd->path);
 
-  printf ("Hit return to resume %s...", cmd->path);
+#if ! MACH_KDB
+  printf ("Hit <return> to resume bootstrap.");
   safe_gets (xx, sizeof xx);
+#else
+  SoftDebugger("Hit `c<return>' to resume bootstrap.");
+#endif
 
   return boot_script_task_resume (cmd);
 }
diff --git a/kern/mach_clock.c b/kern/mach_clock.c
index dba2320..c6e2d9d 100644
--- a/kern/mach_clock.c
+++ b/kern/mach_clock.c
@@ -232,8 +232,16 @@ void clock_interrupt(
                int     delta;
 
                if (timedelta < 0) {
-                   delta = usec - tickdelta;
-                   timedelta += tickdelta;
+                   if (usec > tickdelta) {
+                       delta = usec - tickdelta;
+                       timedelta += tickdelta;
+                   } else {
+                       /* Not enough time has passed, defer overflowing
+                        * correction for later, keep only one microsecond
+                        * delta */
+                       delta = 1;
+                       timedelta += usec - 1;
+                   }
                }
                else {
                    delta = usec + tickdelta;
diff --git a/kern/sched_prim.h b/kern/sched_prim.h
index bb1865c..dfb2f54 100644
--- a/kern/sched_prim.h
+++ b/kern/sched_prim.h
@@ -176,7 +176,9 @@ void do_thread_scan(void);
 thread_t choose_pset_thread(processor_t myprocessor, processor_set_t pset);
 
 #if DEBUG
-void checkrq(run_queue_t rq, char *msg);
+#include <kern/sched.h>        /* for run_queue_t */
+
+void checkrq(run_queue_t rq, const char *msg);
 void thread_check(thread_t th, run_queue_t rq);
 #endif /* DEBUG */
 
diff --git a/kern/slab.c b/kern/slab.c
index 1114cfa..4f32c8e 100644
--- a/kern/slab.c
+++ b/kern/slab.c
@@ -1433,15 +1433,18 @@ void kfree(vm_offset_t data, vm_size_t size)
     }
 }
 
-void slab_info(void)
+static void _slab_info(int (printx)(const char *fmt, ...))
 {
     struct kmem_cache *cache;
-    vm_size_t mem_usage, mem_reclaimable;
+    vm_size_t mem_usage, mem_reclaimable, mem_total, mem_total_reclaimable;
+
+    mem_total = 0;
+    mem_total_reclaimable = 0;
 
-    printf("cache                  obj slab  bufs   objs   bufs "
-           "   total reclaimable\n"
-           "name                  size size /slab  usage  count "
-           "  memory      memory\n");
+    printx("cache                         obj slab  bufs   objs   bufs"
+           "    total reclaimable\n"
+           "name                 flags   size size /slab  usage  count"
+           "   memory      memory\n");
 
     simple_lock(&kmem_cache_list_lock);
 
@@ -1451,17 +1454,39 @@ void slab_info(void)
         mem_usage = (cache->nr_slabs * cache->slab_size) >> 10;
         mem_reclaimable = (cache->nr_free_slabs * cache->slab_size) >> 10;
 
-        printf("%-19s %6lu %3luk  %4lu %6lu %6lu %7uk %10uk\n",
-               cache->name, cache->obj_size, cache->slab_size >> 10,
+        printx("%-20s %04x %7lu %3luk  %4lu %6lu %6lu %7uk %10uk\n",
+               cache->name, cache->flags, cache->obj_size,
+               cache->slab_size >> 10,
                cache->bufs_per_slab, cache->nr_objs, cache->nr_bufs,
                mem_usage, mem_reclaimable);
 
         simple_unlock(&cache->lock);
+
+        mem_total += mem_usage;
+        mem_total_reclaimable += mem_reclaimable;
     }
 
     simple_unlock(&kmem_cache_list_lock);
+
+    printx("total: %uk, reclaimable: %uk\n",
+           mem_total, mem_total_reclaimable);
 }
 
+void slab_info(void)
+{
+    _slab_info(printf);
+}
+
+#if MACH_KDB
+#include <ddb/db_output.h>
+
+ void db_show_slab_info(void)
+{
+    _slab_info(db_printf);
+}
+
+#endif /* MACH_KDB */
+
 #if MACH_DEBUG
 kern_return_t host_slab_info(host_t host, cache_info_array_t *infop,
                              unsigned int *infoCntp)
diff --git a/kern/slab.h b/kern/slab.h
index c7be169..77db7c1 100644
--- a/kern/slab.h
+++ b/kern/slab.h
@@ -253,4 +253,8 @@ void slab_collect(void);
  */
 void slab_info(void);
 
+#if MACH_KDB
+void db_show_slab_info(void);
+#endif /* MACH_KDB */
+
 #endif /* _KERN_SLAB_H */
diff --git a/kern/syscall_sw.h b/kern/syscall_sw.h
index 87fc1bb..1edf1c7 100644
--- a/kern/syscall_sw.h
+++ b/kern/syscall_sw.h
@@ -37,15 +37,15 @@ typedef struct {
        int             mach_trap_arg_count;
        int             (*mach_trap_function)();
        boolean_t       mach_trap_stack;
-       int             mach_trap_unused;
+       const char      *mach_trap_name;
 } mach_trap_t;
 
 extern mach_trap_t     mach_trap_table[];
 extern int             mach_trap_count;
 
 #define        MACH_TRAP(name, arg_count)              \
-               { (arg_count), (int (*)()) (name), FALSE, 0 }
+               { (arg_count), (int (*)()) (name), FALSE, #name }
 #define        MACH_TRAP_STACK(name, arg_count)        \
-               { (arg_count), (int (*)()) (name), TRUE, 0 }
+               { (arg_count), (int (*)()) (name), TRUE, #name }
 
 #endif /* _KERN_SYSCALL_SW_H_ */
diff --git a/version.m4 b/version.m4
index e545ca6..ef5ee1e 100644
--- a/version.m4
+++ b/version.m4
@@ -1,4 +1,4 @@
 m4_define([AC_PACKAGE_NAME],[GNU Mach])
-m4_define([AC_PACKAGE_VERSION],[1.5+git20150922])
+m4_define([AC_PACKAGE_VERSION],[1.6])
 m4_define([AC_PACKAGE_BUGREPORT],address@hidden)
 m4_define([AC_PACKAGE_TARNAME],[gnumach])

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/gnumach.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]