[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnumach] 01/02: Imported Upstream version 1.4+git20141211
From: |
Samuel Thibault |
Subject: |
[gnumach] 01/02: Imported Upstream version 1.4+git20141211 |
Date: |
Thu, 11 Dec 2014 00:16:04 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to branch master
in repository gnumach.
commit 38f3ad84a0c2b0e2492f100321f3cf09e527a174
Author: Samuel Thibault <address@hidden>
Date: Wed Dec 10 23:37:18 2014 +0000
Imported Upstream version 1.4+git20141211
---
ChangeLog | 162 ++++++++++++++++++++++++
Makefile.in | 84 ++++++++-----
Makefrag.am | 11 +-
build-aux/config.guess | 192 ++++-------------------------
build-aux/config.sub | 30 +++--
build-aux/missing | 4 +-
build-aux/test-driver | 20 ++-
configure | 20 +--
doc/mach.info | 240 ++++++++++++++++++------------------
doc/mach.info-1 | 24 ++--
doc/mach.info-2 | 4 +-
doc/mach.texi | 2 +-
doc/stamp-vti | 6 +-
doc/version.texi | 6 +-
i386/i386/db_interface.c | 23 +++-
include/device/device.defs | 8 +-
include/device/device_reply.defs | 8 +-
include/device/device_request.defs | 8 +-
include/mach/gnumach.defs | 12 ++
include/mach/mach.defs | 4 +
include/mach/mach_host.defs | 4 +
include/mach/mach_port.defs | 9 +-
include/mach/mach_types.defs | 2 -
include/mach/port.h | 2 +
include/mach/std_types.defs | 8 +-
include/mach/task_notify.defs | 36 ++++++
ipc/mach_port.c | 40 ------
kern/counters.c | 3 +-
kern/counters.h | 3 +-
kern/ipc_sched.c | 4 +-
kern/sched_prim.c | 8 +-
kern/task.c | 70 +++++++++--
kern/task.h | 1 +
kern/task_notify.cli | 7 ++
linux/dev/arch/i386/kernel/irq.c | 2 +-
linux/dev/drivers/block/genhd.c | 26 ++++
linux/pcmcia-cs/clients/axnet_cs.c | 2 +-
linux/src/drivers/block/ide.c | 22 +++-
linux/src/drivers/block/ide.h | 1 +
linux/src/drivers/net/3c507.c | 4 +-
linux/src/drivers/net/3c509.c | 2 +-
linux/src/drivers/net/3c515.c | 4 +-
linux/src/drivers/net/ac3200.c | 2 +-
linux/src/drivers/net/apricot.c | 2 +-
linux/src/drivers/net/at1700.c | 2 +-
linux/src/drivers/net/de4x5.c | 2 +-
linux/src/drivers/net/de600.c | 2 +-
linux/src/drivers/net/de620.c | 2 +-
linux/src/drivers/net/depca.c | 2 +-
linux/src/drivers/net/e2100.c | 2 +-
linux/src/drivers/net/eepro.c | 2 +-
linux/src/drivers/net/eepro100.c | 2 +-
linux/src/drivers/net/eexpress.c | 2 +-
linux/src/drivers/net/ewrk3.c | 2 +-
linux/src/drivers/net/fmv18x.c | 2 +-
linux/src/drivers/net/hp-plus.c | 2 +-
linux/src/drivers/net/hp.c | 2 +-
linux/src/drivers/net/lance.c | 2 +-
linux/src/drivers/net/ne.c | 2 +-
linux/src/drivers/net/pcnet32.c | 2 +-
linux/src/drivers/net/seeq8005.c | 2 +-
linux/src/drivers/net/smc-ultra.c | 2 +-
linux/src/drivers/net/smc-ultra32.c | 2 +-
linux/src/drivers/net/wd.c | 2 +-
version.m4 | 2 +-
vm/vm_user.c | 5 +-
66 files changed, 699 insertions(+), 480 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b3681aa..c764b0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,165 @@
+2014-12-11 Samuel Thibault <address@hidden>
+
+ Ship missing file
+ * Makefrag.am (EXTRA_DIST): Add kern/task_notify.cli.
+
+2014-12-09 Justus Winter <address@hidden>
+
+ include: add X_IMPORTS to ipc definitions
+ This makes it possible to inject imports.
+
+ * include/mach/gnumach.defs: Make it possible to inject imports.
+ * include/mach/mach.defs: Likewise.
+ * include/mach/mach_host.defs: Likewise.
+
+2014-12-09 Justus Winter <address@hidden>
+
+ kern: provide notifications about new tasks
+ These notifications are sent to the port registered via
+ `register_new_task_notification' and provide a robust parental
+ relation between tasks to a userspace server.
+
+ * Makefrag.am: Add task_notify.defs.
+ * include/mach/gnumach.defs: Add register_new_task_notification.
+ * include/mach/task_notify.defs: New file.
+ * kern/task.c (new_task_notification): New variable.
+ (task_create): Send new task notifications.
+ (register_new_task_notification): Add server function.
+ * kern/task_notify.cli: New file.
+
+2014-12-09 Justus Winter <address@hidden>
+
+ Retire procedure `old_mach_port_get_receive_status'
+ Retire the compatibility RPC `old_mach_port_get_receive_status' that
+ works like `mach_port_get_receive_status' but returns an
+ `old_mach_port_status' object that lacks the `mps_seqno' field.
+
+ Do not remove the type yet, so we do not break anyones build. The RPC
+ stubs currently distributed with the glibc require it.
+
+ * include/mach/mach_port.defs (old_mach_port_get_receive_status): Drop
RPC.
+ * include/mach/mach_types.defs (old_mach_port_status_t): Drop type.
+ * include/mach/port.h (old_mach_port_status_t): Add note to remove
+ this for the 1.6 release.
+ * ipc/mach_port.c (old_mach_port_get_receive_status): Drop function.
+
+2014-12-07 Samuel Thibault <address@hidden>
+
+ Fix pthread_create warning on translator termination
+ This was due to task_terminate not actually properly suspending threads
+ before disable the task port, which was thus preventing pthread_create
+ from being able to create a stack. Thanks Gabriele Giacone for finding
+ out a reproducer of this.
+
+ * kern/task.h (task_hold_locked): New declaration.
+ * kern/task.c (task_hold): Move the locked part of the code into...
+ (task_hold_locked): ... new function.
+ (task_terminate): Call task_hold_locked just before deactivating the
+ task. Call ipc_task_disable after waiting for threads to actually
+ suspend with task_dowait.
+
+2014-12-01 Justus Winter <address@hidden>
+
+ kern: disable all counters by default
+ Make all five non-conditional counters conditional ones. Casual
+ checking revealed that the hits-to-miss ratio is excellent.
+
+ * kern/counters.c: Make all counters conditional.
+ * kern/counters.h: Likewise.
+ * kern/ipc_sched.c: Likewise.
+ * kern/sched_prim.c: Likewise.
+
+2014-11-28 Justus Winter <address@hidden>
+
+ include: make `mach_port_t' payload-aware
+ Honor a new macro `MACH_PAYLOAD_TO_PORT' to inject a translation
+ function mapping payloads to port names in the definition of
+ `mach_port_t'.
+
+ * include/mach/std_types.defs (mach_port_t): Honor
+ `MACH_PAYLOAD_TO_PORT'.
+ * include/device/device.defs (reply_port_t): Likewise.
+ * include/device/device_reply.defs (reply_port_t): Likewise.
+ * include/device/device_request.defs (reply_port_t): Likewise.
+
+2014-11-23 Samuel Thibault <address@hidden>
+
+ Fix programming PIT counter
+ * linux/dev/arch/i386/kernel/irq.c (init_IRQ): Properly mask 8 bits of
+ PIT counter.
+
+2014-11-21 David Michael <address@hidden>
+
+ Correct GCC's -Wformat-security issues
+ * linux/pcmcia-cs/clients/axnet_cs.c (axdev_init): Add a format string
+ literal where printk only has a single variable argument.
+ * linux/src/drivers/net/3c507.c (el16_probe1): Likewise.
+ * linux/src/drivers/net/3c509.c (el3_probe): Likewise.
+ * linux/src/drivers/net/3c515.c (init_module): Likewise.
+ (tc515_probe): Likewise.
+ * linux/src/drivers/net/ac3200.c (ac_probe1): Likewise.
+ * linux/src/drivers/net/apricot.c (apricot_probe): Likewise.
+ * linux/src/drivers/net/at1700.c (at1700_probe1): Likewise.
+ * linux/src/drivers/net/de4x5.c (de4x5_hw_init): Likewise.
+ * linux/src/drivers/net/de600.c (de600_probe): Likewise.
+ * linux/src/drivers/net/de620.c (de620_probe): Likewise.
+ * linux/src/drivers/net/depca.c (depca_hw_init): Likewise.
+ * linux/src/drivers/net/e2100.c (e21_probe1): Likewise.
+ * linux/src/drivers/net/eepro.c (eepro_probe1): Likewise.
+ * linux/src/drivers/net/eepro100.c (speedo_found1): Likewise.
+ * linux/src/drivers/net/eexpress.c (eexp_hw_probe): Likewise.
+ * linux/src/drivers/net/ewrk3.c (ewrk3_hw_init): Likewise.
+ * linux/src/drivers/net/fmv18x.c (fmv18x_probe1): Likewise.
+ * linux/src/drivers/net/hp-plus.c (hpp_probe1): Likewise.
+ * linux/src/drivers/net/hp.c (hp_probe1): Likewise.
+ * linux/src/drivers/net/lance.c (lance_probe1): Likewise.
+ * linux/src/drivers/net/ne.c (ne_probe1): Likewise.
+ * linux/src/drivers/net/pcnet32.c (pcnet32_probe1): Likewise.
+ * linux/src/drivers/net/seeq8005.c (seeq8005_probe1): Likewise.
+ * linux/src/drivers/net/smc-ultra.c (ultra_probe1): Likewise.
+ * linux/src/drivers/net/smc-ultra32.c (ultra32_probe1): Likewise.
+ * linux/src/drivers/net/wd.c (wd_probe1): Likewise.
+
+2014-11-16 Samuel Thibault <address@hidden>
+
+ Only set debug registers when they are used
+ * i386/i386/db_interface.c (zero_dr): New variable
+ (db_load_context): Do not set debug registers to zero when they are
already
+ zero.
+ (db_dr): When kernel debug registers get zero, record that the debug
+ registers have been zeroed.
+
+2014-11-13 Samuel Thibault <address@hidden>
+
+ Add nodma options
+ Some very slow qemu instances would eventually trigger DMA timeouts,
+ let's give a way to disable DMA there, it does not actually slow down
+ operations anyway.
+
+ * linux/src/drivers/block/ide.h (ide_drive_s): Add nodma field.
+ * linux/src/drivers/block/ide.c (do_identify): Do not call
+ dmaproc(ide_dma_check) when nodma is 1.
+ (ide_setup): Add nodma option.
+
+2014-11-12 Samuel Thibault <address@hidden>
+
+ Pass ide and hd kernel options to ide driver
+ * linux/dev/drivers/block/genhd.c: Include <linux/hdreg.h> and
+ <alloca.h>
+ (device_setup): Look for ide and hd options, and call ide_setup with
+ them.
+ * linux/src/drivers/block/ide.c (ide_setup) [MACH]: Parse hd[0-7]
instead
+ of hd[a-h].
+
+2014-11-10 Samuel Thibault <address@hidden>
+
+ Fix documentation for vm_map
+ doc/mach.texi (vm_map): Document that vm_map uses the address as a
+ starting hint even when anywhere is TRUE.
+
+ Revert "Make vm_map really ignore `address' when `anywhere' is true"
+ This reverts commit 5ae510e35c54009626999a88f0f1cb34d6dfc94f.
+
2014-11-03 Justus Winter <address@hidden>
include: add a payload-aware intran mutator for device_t
diff --git a/Makefile.in b/Makefile.in
index a3870ca..db851e2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1207,6 +1207,7 @@ nodist_lib_dep_tr_for_defs_a_OBJECTS =
vm/lib_dep_tr_for_defs_a-memory_object_us
vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.$(OBJEXT) \
device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT) \
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT) \
+ kern/lib_dep_tr_for_defs_a-task_notify.user.defs.$(OBJEXT) \
device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT) \
device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT) \
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT) \
@@ -1500,7 +1501,7 @@ nodist_libkernel_a_OBJECTS = version.$(OBJEXT) \
vm/memory_object_default.user.$(OBJEXT) \
device/device_reply.user.$(OBJEXT) \
device/memory_object_reply.user.$(OBJEXT) \
- device/device.server.$(OBJEXT) \
+ kern/task_notify.user.$(OBJEXT) device/device.server.$(OBJEXT) \
device/device_pager.server.$(OBJEXT) \
ipc/mach_port.server.$(OBJEXT) kern/mach.server.$(OBJEXT) \
kern/mach4.server.$(OBJEXT) kern/gnumach.server.$(OBJEXT) \
@@ -2439,11 +2440,12 @@ DIST_SUBDIRS =
#
EXTRA_DIST = gensym.awk ipc/mach_port.srv kern/mach.srv kern/mach4.srv \
kern/gnumach.srv kern/mach_debug.srv kern/mach_host.srv \
- vm/memory_object_default.cli vm/memory_object_user.cli \
- device/device.srv device/device_pager.srv \
- device/device_reply.cli device/memory_object_reply.cli include \
- $(am__append_13) $(am__append_20) $(am__append_24) \
- $(am__append_26) $(am__append_30) $(am__append_41) \
+ kern/task_notify.cli vm/memory_object_default.cli \
+ vm/memory_object_user.cli device/device.srv \
+ device/device_pager.srv device/device_reply.cli \
+ device/memory_object_reply.cli include $(am__append_13) \
+ $(am__append_20) $(am__append_24) $(am__append_26) \
+ $(am__append_30) $(am__append_41) \
linux/src/drivers/scsi/NCR5380.c \
linux/src/drivers/scsi/NCR5380.h linux/src/drivers/net/8390.h \
linux/src/drivers/net/kern_compat.h linux/pcmcia-cs/glue/ds.c \
@@ -2615,19 +2617,20 @@ nodist_libkernel_a_SOURCES = version.c
vm/memory_object_user.user.h \
device/device_reply.user.msgids \
device/memory_object_reply.user.h \
device/memory_object_reply.user.c \
- device/memory_object_reply.user.msgids device/device.server.h \
- device/device.server.c device/device.server.msgids \
- device/device_pager.server.h device/device_pager.server.c \
- device/device_pager.server.msgids ipc/mach_port.server.h \
- ipc/mach_port.server.c ipc/mach_port.server.msgids \
- kern/mach.server.h kern/mach.server.c kern/mach.server.msgids \
- kern/mach4.server.h kern/mach4.server.c \
- kern/mach4.server.msgids kern/gnumach.server.h \
- kern/gnumach.server.c 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)
+ device/memory_object_reply.user.msgids kern/task_notify.user.h \
+ kern/task_notify.user.c kern/task_notify.user.msgids \
+ device/device.server.h device/device.server.c \
+ device/device.server.msgids device/device_pager.server.h \
+ device/device_pager.server.c device/device_pager.server.msgids \
+ ipc/mach_port.server.h ipc/mach_port.server.c \
+ ipc/mach_port.server.msgids kern/mach.server.h \
+ kern/mach.server.c kern/mach.server.msgids kern/mach4.server.h \
+ kern/mach4.server.c kern/mach4.server.msgids \
+ kern/gnumach.server.h kern/gnumach.server.c \
+ 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)
gnumach_o_LDADD = libkernel.a $(am__append_6) $(am__append_100)
gnumach_SOURCES =
gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
@@ -2653,11 +2656,11 @@ nodist_lib_dep_tr_for_defs_a_SOURCES = \
vm/memory_object_default.user.defs.c \
device/device_reply.user.defs.c \
device/memory_object_reply.user.defs.c \
- device/device.server.defs.c 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/task_notify.user.defs.c device/device.server.defs.c \
+ 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)
# Preprocess only.
lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
-E
@@ -2690,6 +2693,7 @@ include_mach_HEADERS = \
include/mach/mach.defs \
include/mach/mach4.defs \
include/mach/gnumach.defs \
+ include/mach/task_notify.defs \
include/mach/mach_host.defs \
include/mach/mach_port.defs \
include/mach/mach_types.defs \
@@ -3006,6 +3010,14 @@
device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT): \
device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT): \
device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+kern/$(am__dirstamp):
+ @$(MKDIR_P) kern
+ @: > kern/$(am__dirstamp)
+kern/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) kern/$(DEPDIR)
+ @: > kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.$(OBJEXT): \
+ kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT): \
device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT): \
@@ -3018,12 +3030,6 @@ ipc/$(DEPDIR)/$(am__dirstamp):
@: > ipc/$(DEPDIR)/$(am__dirstamp)
ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT): \
ipc/$(am__dirstamp) ipc/$(DEPDIR)/$(am__dirstamp)
-kern/$(am__dirstamp):
- @$(MKDIR_P) kern
- @: > kern/$(am__dirstamp)
-kern/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) kern/$(DEPDIR)
- @: > kern/$(DEPDIR)/$(am__dirstamp)
kern/lib_dep_tr_for_defs_a-mach.server.defs.$(OBJEXT): \
kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
kern/lib_dep_tr_for_defs_a-mach4.server.defs.$(OBJEXT): \
@@ -3432,6 +3438,8 @@ device/device_reply.user.$(OBJEXT):
device/$(am__dirstamp) \
device/$(DEPDIR)/$(am__dirstamp)
device/memory_object_reply.user.$(OBJEXT): device/$(am__dirstamp) \
device/$(DEPDIR)/$(am__dirstamp)
+kern/task_notify.user.$(OBJEXT): kern/$(am__dirstamp) \
+ kern/$(DEPDIR)/$(am__dirstamp)
device/device.server.$(OBJEXT): device/$(am__dirstamp) \
device/$(DEPDIR)/$(am__dirstamp)
device/device_pager.server.$(OBJEXT): device/$(am__dirstamp) \
@@ -4267,6 +4275,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@
@@ -4291,6 +4300,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@
@@ -4572,6 +4582,20 @@
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj: device/memory_ob
@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 device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj
`if test -f 'device/memory_object_reply.user.defs.c'; then $(CYGPATH_W)
'device/memory_object_reply.user.defs.c'; else $(CYGPATH_W)
'$(srcdir)/device/memory_object_reply.user.defs.c'; fi`
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o:
kern/task_notify.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o -MD -MP -MF
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo -c -o
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o `test -f
'kern/task_notify.user.defs.c' || echo '$(srcdir)/'`kern/task_notify.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv)
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@
$(AM_V_CC)source='kern/task_notify.user.defs.c'
object='kern/lib_dep_tr_for_defs_a-task_notify.user.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
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o `test -f
'kern/task_notify.user.defs.c' || echo '$(srcdir)/'`kern/task_notify.user.defs.c
+
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj:
kern/task_notify.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj -MD -MP -MF
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo -c -o
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj `if test -f
'kern/task_notify.user.defs.c'; then $(CYGPATH_W)
'kern/task_notify.user.defs.c'; else $(CYGPATH_W)
'$(srcdir)/kern/task_notify.user.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv)
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@
$(AM_V_CC)source='kern/task_notify.user.defs.c'
object='kern/lib_dep_tr_for_defs_a-task_notify.user.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
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj `if test -f
'kern/task_notify.user.defs.c'; then $(CYGPATH_W)
'kern/task_notify.user.defs.c'; else $(CYGPATH_W)
'$(srcdir)/kern/task_notify.user.defs.c'; fi`
+
device/lib_dep_tr_for_defs_a-device.server.defs.o: device/device.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
device/lib_dep_tr_for_defs_a-device.server.defs.o -MD -MP -MF
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo -c -o
device/lib_dep_tr_for_defs_a-device.server.defs.o `test -f
'device/device.server.defs.c' || echo '$(srcdir)/'`device/device.server.defs.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv)
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Po
diff --git a/Makefrag.am b/Makefrag.am
index 5e98b21..9166143 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -221,7 +221,8 @@ EXTRA_DIST += \
kern/mach4.srv \
kern/gnumach.srv \
kern/mach_debug.srv \
- kern/mach_host.srv
+ kern/mach_host.srv \
+ kern/task_notify.cli
#
@@ -364,6 +365,7 @@ include_mach_HEADERS = \
include/mach/mach.defs \
include/mach/mach4.defs \
include/mach/gnumach.defs \
+ include/mach/task_notify.defs \
include/mach/mach_host.defs \
include/mach/mach_port.defs \
include/mach/mach_types.defs \
@@ -488,6 +490,13 @@ nodist_libkernel_a_SOURCES += \
# device/device_reply.user.defs
# device/memory_object_reply.user.defs
+nodist_lib_dep_tr_for_defs_a_SOURCES += \
+ kern/task_notify.user.defs.c
+nodist_libkernel_a_SOURCES += \
+ kern/task_notify.user.h \
+ kern/task_notify.user.c \
+ kern/task_notify.user.msgids
+
# Server stubs.
nodist_lib_dep_tr_for_defs_a_SOURCES += \
device/device.server.defs.c \
diff --git a/build-aux/config.guess b/build-aux/config.guess
index b79252d..1f5c50c 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-2013 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2013-06-10'
+timestamp='2014-03-23'
# 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
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 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."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's,
,,g'`
;;
esac
@@ -826,7 +826,7 @@ EOF
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
- i*:MSYS*:*)
+ *:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@@ -969,10 +969,10 @@ EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
- or1k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-${LIBC}
exit ;;
- or32:Linux:*:*)
+ or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
@@ -1260,16 +1260,26 @@ EOF
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif')
| \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
@@ -1361,154 +1371,6 @@ EOF
exit ;;
esac
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
cat >&2 <<EOF
$0: unable to guess system type
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9633db7..bba4efb 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2014 Free Software Foundation, Inc.
-timestamp='2013-08-10'
+timestamp='2014-09-11'
# 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
@@ -68,7 +68,7 @@ Report bugs and patches to <address@hidden>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 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."
@@ -265,6 +265,7 @@ case $basic_machine in
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@ case $basic_machine in
| nds32 | nds32le | nds32be \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | open8 \
- | or1k | or32 \
+ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | 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 \
@@ -324,7 +327,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -381,6 +384,7 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@ case $basic_machine in
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
+ | or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -822,6 +829,10 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -1367,14 +1378,14 @@ case $os in
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems*
\
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* |
-tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1592,9 +1603,6 @@ case $basic_machine in
mips*-*)
os=-elf
;;
- or1k-*)
- os=-elf
- ;;
or32-*)
os=-coff
;;
diff --git a/build-aux/missing b/build-aux/missing
index cdea514..db98974 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -1,7 +1,7 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <address@hidden>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
;;
autom4te*)
echo "You might have modified some maintainer files that require"
- echo "the 'automa4te' program to be rebuilt."
+ echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
diff --git a/build-aux/test-driver b/build-aux/test-driver
index 32bf39e..d306056 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -1,7 +1,7 @@
#! /bin/sh
# test-driver - basic testsuite driver script.
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
#
@@ -44,13 +44,12 @@ print_usage ()
Usage:
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
[--expect-failure={yes|no}] [--color-tests={yes|no}]
- [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+ [--enable-hard-errors={yes|no}] [--]
+ TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
END
}
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
test_name= # Used for reporting.
log_file= # Where to save the output of the test script.
trs_file= # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@ while test $# -gt 0; do
--enable-hard-errors) enable_hard_errors=$2; shift;;
--) shift; break;;
-*) usage_error "invalid option: '$1'";;
+ *) break;;
esac
shift
done
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file" = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+ usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+ usage_error "missing argument"
+fi
+
if test $color_tests = yes; then
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
red='[0;31m' # Red.
diff --git a/configure b/configure
index c1562af..01a7e98 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.4+git20141109.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.4+git20141211.
#
# Report bugs to <address@hidden>.
#
@@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU Mach'
PACKAGE_TARNAME='gnumach'
-PACKAGE_VERSION='1.4+git20141109'
-PACKAGE_STRING='GNU Mach 1.4+git20141109'
+PACKAGE_VERSION='1.4+git20141211'
+PACKAGE_STRING='GNU Mach 1.4+git20141211'
PACKAGE_BUGREPORT='address@hidden'
PACKAGE_URL=''
@@ -1584,7 +1584,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.4+git20141109 to adapt to many kinds of
systems.
+\`configure' configures GNU Mach 1.4+git20141211 to adapt to many kinds of
systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1654,7 +1654,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Mach 1.4+git20141109:";;
+ short | recursive ) echo "Configuration of GNU Mach 1.4+git20141211:";;
esac
cat <<\_ACEOF
@@ -2002,7 +2002,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Mach configure 1.4+git20141109
+GNU Mach configure 1.4+git20141211
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2094,7 +2094,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.4+git20141109, which was
+It was created by GNU Mach $as_me 1.4+git20141211, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2960,7 +2960,7 @@ fi
# Define the identity of the package.
PACKAGE='gnumach'
- VERSION='1.4+git20141109'
+ VERSION='1.4+git20141211'
# Some tools Automake needs.
@@ -12110,7 +12110,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.4+git20141109, which was
+This file was extended by GNU Mach $as_me 1.4+git20141211, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12181,7 +12181,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.4+git20141109
+GNU Mach config.status 1.4+git20141211
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/doc/mach.info b/doc/mach.info
index 74ffab5..9376a69 100644
--- a/doc/mach.info
+++ b/doc/mach.info
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+ This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
@@ -39,126 +39,126 @@ END-INFO-DIR-ENTRY
Indirect:
-mach.info-1: 1641
-mach.info-2: 302527
+mach.info-1: 1642
+mach.info-2: 302547
Tag Table:
(Indirect)
-Node: Top1641
-Node: Introduction11280
-Node: Audience12111
-Node: Features13146
-Node: Overview14973
-Node: History16166
-Node: Installing16311
-Node: Binary Distributions17536
-Node: Compilation18344
-Node: Configuration19577
-Node: Cross-Compilation35988
-Node: Bootstrap36769
-Ref: Bootstrap-Footnote-137212
-Node: Bootloader37449
-Ref: Bootloader-Footnote-138729
-Node: Modules38815
-Node: Inter Process Communication39642
-Node: Major Concepts40265
-Node: Messaging Interface44070
-Node: Mach Message Call44800
-Node: Message Format48115
-Node: Exchanging Port Rights59307
-Ref: Exchanging Port Rights-Footnote-164869
-Node: Memory65041
-Ref: Memory-Footnote-168135
-Node: Message Send68477
-Ref: Message Send-Footnote-175499
-Node: Message Receive75782
-Ref: Message Receive-Footnote-185434
-Node: Atomicity85715
-Node: Port Manipulation Interface88489
-Node: Port Creation90044
-Node: Port Destruction94833
-Node: Port Names97976
-Node: Port Rights102223
-Node: Ports and other Tasks106012
-Node: Receive Rights110105
-Node: Port Sets117036
-Node: Request Notifications119439
-Node: Inherited Ports124243
-Node: Virtual Memory Interface127927
-Node: Memory Allocation129180
-Node: Memory Deallocation131705
-Node: Data Transfer133169
-Node: Memory Attributes136695
-Node: Mapping Memory Objects146114
-Node: Memory Statistics149406
-Node: External Memory Management150980
-Node: Memory Object Server151685
-Node: Memory Object Creation154394
-Node: Memory Object Termination158400
-Node: Memory Objects and Data161339
-Node: Memory Object Locking178485
-Node: Memory Object Attributes184380
-Node: Default Memory Manager190217
-Node: Threads and Tasks195939
-Node: Thread Interface196276
-Node: Thread Creation197272
-Node: Thread Termination198389
-Node: Thread Information198860
-Node: Thread Settings204959
-Node: Thread Execution206193
-Node: Scheduling213486
-Node: Thread Priority213841
-Node: Hand-Off Scheduling216475
-Node: Scheduling Policy221600
-Node: Thread Special Ports222932
-Node: Exceptions225378
-Node: Task Interface226248
-Node: Task Creation227260
-Node: Task Termination228595
-Node: Task Information229197
-Node: Task Execution236099
-Node: Task Special Ports240512
-Node: Syscall Emulation244366
-Node: Profiling245597
-Node: Host Interface249360
-Node: Host Ports250345
-Node: Host Information252418
-Node: Host Time257801
-Node: Host Reboot260468
-Node: Processors and Processor Sets261020
-Node: Processor Set Interface261998
-Node: Processor Set Ports262765
-Node: Processor Set Access263595
-Node: Processor Set Creation265855
-Node: Processor Set Destruction266882
-Node: Tasks and Threads on Sets267803
-Node: Processor Set Priority272970
-Node: Processor Set Policy274260
-Node: Processor Set Info275874
-Node: Processor Interface279687
-Node: Hosted Processors280412
-Node: Processor Control281403
-Node: Processors and Sets282869
-Node: Processor Info284747
-Node: Device Interface287489
-Node: Device Reply Server289104
-Node: Device Open290396
-Node: Device Close292519
-Node: Device Read293098
-Node: Device Write296017
-Node: Device Map298822
-Node: Device Status299713
-Node: Device Filter302527
-Node: Kernel Debugger308274
-Node: Operation309001
-Node: Commands311978
-Node: Variables325763
-Node: Expressions327151
-Node: Copying328500
-Node: Documentation License347729
-Node: GNU Free Documentation License348318
-Node: CMU License370717
-Node: Concept Index371952
-Node: Function and Data Index375798
+Node: Top1642
+Node: Introduction11282
+Node: Audience12113
+Node: Features13148
+Node: Overview14975
+Node: History16168
+Node: Installing16313
+Node: Binary Distributions17538
+Node: Compilation18346
+Node: Configuration19579
+Node: Cross-Compilation35990
+Node: Bootstrap36771
+Ref: Bootstrap-Footnote-137214
+Node: Bootloader37451
+Ref: Bootloader-Footnote-138731
+Node: Modules38817
+Node: Inter Process Communication39644
+Node: Major Concepts40267
+Node: Messaging Interface44072
+Node: Mach Message Call44802
+Node: Message Format48117
+Node: Exchanging Port Rights59309
+Ref: Exchanging Port Rights-Footnote-164871
+Node: Memory65043
+Ref: Memory-Footnote-168137
+Node: Message Send68479
+Ref: Message Send-Footnote-175501
+Node: Message Receive75784
+Ref: Message Receive-Footnote-185436
+Node: Atomicity85717
+Node: Port Manipulation Interface88491
+Node: Port Creation90046
+Node: Port Destruction94835
+Node: Port Names97978
+Node: Port Rights102225
+Node: Ports and other Tasks106014
+Node: Receive Rights110107
+Node: Port Sets117038
+Node: Request Notifications119441
+Node: Inherited Ports124245
+Node: Virtual Memory Interface127929
+Node: Memory Allocation129182
+Node: Memory Deallocation131707
+Node: Data Transfer133171
+Node: Memory Attributes136697
+Node: Mapping Memory Objects146116
+Node: Memory Statistics149425
+Node: External Memory Management150999
+Node: Memory Object Server151704
+Node: Memory Object Creation154413
+Node: Memory Object Termination158419
+Node: Memory Objects and Data161358
+Node: Memory Object Locking178504
+Node: Memory Object Attributes184399
+Node: Default Memory Manager190236
+Node: Threads and Tasks195958
+Node: Thread Interface196295
+Node: Thread Creation197291
+Node: Thread Termination198408
+Node: Thread Information198879
+Node: Thread Settings204978
+Node: Thread Execution206212
+Node: Scheduling213505
+Node: Thread Priority213860
+Node: Hand-Off Scheduling216494
+Node: Scheduling Policy221619
+Node: Thread Special Ports222951
+Node: Exceptions225397
+Node: Task Interface226267
+Node: Task Creation227279
+Node: Task Termination228614
+Node: Task Information229216
+Node: Task Execution236118
+Node: Task Special Ports240531
+Node: Syscall Emulation244385
+Node: Profiling245616
+Node: Host Interface249379
+Node: Host Ports250364
+Node: Host Information252437
+Node: Host Time257820
+Node: Host Reboot260487
+Node: Processors and Processor Sets261039
+Node: Processor Set Interface262017
+Node: Processor Set Ports262784
+Node: Processor Set Access263614
+Node: Processor Set Creation265874
+Node: Processor Set Destruction266901
+Node: Tasks and Threads on Sets267822
+Node: Processor Set Priority272989
+Node: Processor Set Policy274279
+Node: Processor Set Info275893
+Node: Processor Interface279706
+Node: Hosted Processors280431
+Node: Processor Control281422
+Node: Processors and Sets282888
+Node: Processor Info284766
+Node: Device Interface287508
+Node: Device Reply Server289123
+Node: Device Open290415
+Node: Device Close292538
+Node: Device Read293117
+Node: Device Write296036
+Node: Device Map298841
+Node: Device Status299732
+Node: Device Filter302547
+Node: Kernel Debugger308294
+Node: Operation309021
+Node: Commands311998
+Node: Variables325783
+Node: Expressions327171
+Node: Copying328520
+Node: Documentation License347749
+Node: GNU Free Documentation License348338
+Node: CMU License370737
+Node: Concept Index371972
+Node: Function and Data Index375818
End Tag Table
diff --git a/doc/mach.info-1 b/doc/mach.info-1
index f1132ef..1d4eaec 100644
--- a/doc/mach.info-1
+++ b/doc/mach.info-1
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+ This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
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 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+ This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
@@ -3347,14 +3347,14 @@ File: mach.info, Node: Mapping Memory Objects, Next:
Memory Statistics, Prev:
memory exception.
TARGET_TASK is the task to be affected. The starting address is
- ADDRESS. If the ANYWHERE option is used, this address is ignored.
- The address actually allocated will be returned in ADDRESS. SIZE
- is the number of bytes to allocate (rounded by the system in a
- machine dependent way). The alignment restriction is specified by
- MASK. Bits asserted in this mask must not be asserted in the
- address returned. If ANYWHERE is set, the kernel should find and
- allocate any region of the specified size, and return the address
- of the resulting region in ADDRESS.
+ ADDRESS. If the ANYWHERE option is used, this address is used as a
+ starting hint. The address actually allocated will be returned in
+ ADDRESS. SIZE is the number of bytes to allocate (rounded by the
+ system in a machine dependent way). The alignment restriction is
+ specified by MASK. Bits asserted in this mask must not be asserted
+ in the address returned. If ANYWHERE is set, the kernel should
+ find and allocate any region of the specified size, and return the
+ address of the resulting region in ADDRESS.
MEMORY_OBJECT is the port that represents the memory object: used
by user tasks in 'vm_map'; used by the make requests for data or
diff --git a/doc/mach.info-2 b/doc/mach.info-2
index 0a1f50e..44eefb1 100644
--- a/doc/mach.info-2
+++ b/doc/mach.info-2
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+ This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/mach.texi b/doc/mach.texi
index 4cde9fe..59872c9 100644
--- a/doc/mach.texi
+++ b/doc/mach.texi
@@ -3366,7 +3366,7 @@ exception.
@var{target_task} is the task to be affected. The starting address is
@var{address}. If the @var{anywhere} option is used, this address is
-ignored. The address actually allocated will be returned in
+used as a starting hint. The address actually allocated will be returned in
@var{address}. @var{size} is the number of bytes to allocate (rounded by
the system in a machine dependent way). The alignment restriction is
specified by @var{mask}. Bits asserted in this mask must not be
diff --git a/doc/stamp-vti b/doc/stamp-vti
index b08fcac..939aba4 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
address@hidden UPDATED 8 November 2014
address@hidden UPDATED 10 November 2014
@set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141109
address@hidden VERSION 1.4+git20141109
address@hidden EDITION 1.4+git20141211
address@hidden VERSION 1.4+git20141211
diff --git a/doc/version.texi b/doc/version.texi
index b08fcac..939aba4 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED 8 November 2014
address@hidden UPDATED 10 November 2014
@set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141109
address@hidden VERSION 1.4+git20141109
address@hidden EDITION 1.4+git20141211
address@hidden VERSION 1.4+git20141211
diff --git a/i386/i386/db_interface.c b/i386/i386/db_interface.c
index b442b86..b3fac0b 100644
--- a/i386/i386/db_interface.c
+++ b/i386/i386/db_interface.c
@@ -63,6 +63,8 @@
/* Whether the kernel uses any debugging register. */
static boolean_t kernel_dr;
#endif
+/* Whether the current debug registers are zero. */
+static boolean_t zero_dr;
void db_load_context(pcb_t pcb)
{
@@ -74,13 +76,20 @@ void db_load_context(pcb_t pcb)
return;
}
#endif
+ /* Else set user debug registers, if any */
+ unsigned int *dr = pcb->ims.ids.dr;
+ boolean_t will_zero_dr = !dr[0] && !dr[1] && !dr[2] && !dr[3] && !dr[7];
+
+ if (!(zero_dr && will_zero_dr))
+ {
+ set_dr0(dr[0]);
+ set_dr1(dr[1]);
+ set_dr2(dr[2]);
+ set_dr3(dr[3]);
+ set_dr7(dr[7]);
+ zero_dr = will_zero_dr;
+ }
- /* Else set user debug registers */
- set_dr0(pcb->ims.ids.dr[0]);
- set_dr1(pcb->ims.ids.dr[1]);
- set_dr2(pcb->ims.ids.dr[2]);
- set_dr3(pcb->ims.ids.dr[3]);
- set_dr7(pcb->ims.ids.dr[7]);
#if MACH_KDB
splx(s);
#endif
@@ -163,7 +172,9 @@ void db_dr (
if (kernel_dr) {
if (!ids.dr[0] && !ids.dr[1] && !ids.dr[2] && !ids.dr[3]) {
/* Not used any more, switch back to user debugging registers */
+ set_dr7 (0);
kernel_dr = FALSE;
+ zero_dr = TRUE;
db_load_context(current_thread()->pcb);
}
}
diff --git a/include/device/device.defs b/include/device/device.defs
index 5fdf1bd..409146f 100644
--- a/include/device/device.defs
+++ b/include/device/device.defs
@@ -45,7 +45,13 @@ subsystem
serverprefix ds_;
type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
- ctype: mach_port_t;
+ ctype: mach_port_t
+#ifndef KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+ intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
routine device_open(
master_port : mach_port_t;
diff --git a/include/device/device_reply.defs b/include/device/device_reply.defs
index 3415677..5a32507 100644
--- a/include/device/device_reply.defs
+++ b/include/device/device_reply.defs
@@ -54,7 +54,13 @@ serverdemux seqnos_device_reply_server;
#endif /* SEQNOS */
type reply_port_t = polymorphic|MACH_MSG_TYPE_PORT_SEND_ONCE
- ctype: mach_port_t;
+ ctype: mach_port_t
+#ifndef KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+ intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
simpleroutine device_open_reply(
reply_port : reply_port_t;
diff --git a/include/device/device_request.defs
b/include/device/device_request.defs
index e8aab2a..7ea8637 100644
--- a/include/device/device_request.defs
+++ b/include/device/device_request.defs
@@ -37,7 +37,13 @@ subsystem device_request 2800; /* to match device.defs
*/
serverprefix ds_;
type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE
- ctype: mach_port_t;
+ ctype: mach_port_t
+#ifndef KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+ intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
simpleroutine device_open_request(
device_server_port : mach_port_t;
diff --git a/include/mach/gnumach.defs b/include/mach/gnumach.defs
index 6cfbb0d..dd4da87 100644
--- a/include/mach/gnumach.defs
+++ b/include/mach/gnumach.defs
@@ -29,6 +29,10 @@ subsystem
#include <mach/mach_types.defs>
#include <mach_debug/mach_debug_types.defs>
+#ifdef GNUMACH_IMPORTS
+GNUMACH_IMPORTS
+#endif
+
type vm_cache_statistics_data_t = struct[11] of integer_t;
/*
@@ -72,3 +76,11 @@ simpleroutine thread_terminate_release(
simpleroutine task_set_name(
task : task_t;
name : kernel_debug_name_t);
+
+/*
+ * Register a port to which a notification about newly created tasks
+ * are sent.
+ */
+routine register_new_task_notification(
+ host_priv : host_priv_t;
+ notification : mach_port_send_t);
diff --git a/include/mach/mach.defs b/include/mach/mach.defs
index 5851080..3786f65 100644
--- a/include/mach/mach.defs
+++ b/include/mach/mach.defs
@@ -46,6 +46,10 @@ userprefix r_;
#include <mach/std_types.defs>
#include <mach/mach_types.defs>
+#ifdef MACH_IMPORTS
+MACH_IMPORTS
+#endif
+
skip; /* old port_allocate */
skip; /* old port_deallocate */
skip; /* old port_enable */
diff --git a/include/mach/mach_host.defs b/include/mach/mach_host.defs
index 2644146..6699a50 100644
--- a/include/mach/mach_host.defs
+++ b/include/mach/mach_host.defs
@@ -47,6 +47,10 @@ subsystem
#include <mach/std_types.defs>
#include <mach/mach_types.defs>
+#ifdef MACH_HOST_IMPORTS
+MACH_HOST_IMPORTS
+#endif
+
/*
* Get list of processors on this host.
*/
diff --git a/include/mach/mach_port.defs b/include/mach/mach_port.defs
index c7e8526..c21c34b 100644
--- a/include/mach/mach_port.defs
+++ b/include/mach/mach_port.defs
@@ -176,14 +176,7 @@ routine mach_port_mod_refs(
right : mach_port_right_t;
delta : mach_port_delta_t);
-/*
- * Temporary compatibility call.
- */
-
-routine old_mach_port_get_receive_status(
- task : ipc_space_t;
- name : mach_port_name_t;
- out status : old_mach_port_status_t);
+skip; /* old old_mach_port_get_receive_status */
/*
* Only valid for receive rights.
diff --git a/include/mach/mach_types.defs b/include/mach/mach_types.defs
index 85ad653..8e68d38 100644
--- a/include/mach/mach_types.defs
+++ b/include/mach/mach_types.defs
@@ -60,8 +60,6 @@ serverprefix SERVERPREFIX;
type mach_port_status_t = struct[9] of integer_t;
-type old_mach_port_status_t = struct[8] of integer_t; /* compatibility */
-
type task_t = mach_port_t
ctype: mach_port_t
#if KERNEL_SERVER
diff --git a/include/mach/port.h b/include/mach/port.h
index 53f6071..3036a92 100644
--- a/include/mach/port.h
+++ b/include/mach/port.h
@@ -137,6 +137,8 @@ typedef struct mach_port_status {
/*
* Compatibility definitions, for code written
* before there was an mps_seqno field.
+ *
+ * XXX: Remove this before releasing Gnumach 1.6.
*/
typedef struct old_mach_port_status {
diff --git a/include/mach/std_types.defs b/include/mach/std_types.defs
index 00d1a69..a1f156d 100644
--- a/include/mach/std_types.defs
+++ b/include/mach/std_types.defs
@@ -49,7 +49,13 @@ type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE
ctype: vm_offset_t;
-type mach_port_t = MACH_MSG_TYPE_COPY_SEND;
+type mach_port_t = MACH_MSG_TYPE_COPY_SEND
+#ifndef KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+ intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
type mach_port_array_t = array[] of mach_port_t;
type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME
diff --git a/include/mach/task_notify.defs b/include/mach/task_notify.defs
new file mode 100644
index 0000000..5485d4e
--- /dev/null
+++ b/include/mach/task_notify.defs
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 Free Software Foundation
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+subsystem
+#if KERNEL_SERVER
+ KernelServer
+#endif /* KERNEL_SERVER */
+#if KERNEL_USER
+ KernelUser
+#endif /* KERNEL_USER */
+ task_notify 4400;
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+
+/* These notifications are sent to the port registered via
+ `register_new_task_notification' and provide a robust parental
+ relation between tasks. */
+simpleroutine mach_notify_new_task(
+ notify : mach_port_t;
+ task : task_t;
+ parent : task_t);
diff --git a/ipc/mach_port.c b/ipc/mach_port.c
index 4ff39f2..c7d9b81 100644
--- a/ipc/mach_port.c
+++ b/ipc/mach_port.c
@@ -744,46 +744,6 @@ mach_port_mod_refs(
}
/*
- * Routine: old_mach_port_get_receive_status [kernel call]
- * Purpose:
- * Compatibility for code written before sequence numbers.
- * Retrieves mucho info about a receive right.
- * Conditions:
- * Nothing locked.
- * Returns:
- * KERN_SUCCESS Retrieved status.
- * KERN_INVALID_TASK The space is null.
- * KERN_INVALID_TASK The space is dead.
- * KERN_INVALID_NAME The name doesn't denote a right.
- * KERN_INVALID_RIGHT Name doesn't denote receive rights.
- */
-
-kern_return_t
-old_mach_port_get_receive_status(
- ipc_space_t space,
- mach_port_t name,
- old_mach_port_status_t *statusp)
-{
- mach_port_status_t status;
- kern_return_t kr;
-
- kr = mach_port_get_receive_status(space, name, &status);
- if (kr != KERN_SUCCESS)
- return kr;
-
- statusp->mps_pset = status.mps_pset;
- statusp->mps_mscount = status.mps_mscount;
- statusp->mps_qlimit = status.mps_qlimit;
- statusp->mps_msgcount = status.mps_msgcount;
- statusp->mps_sorights = status.mps_sorights;
- statusp->mps_srights = status.mps_srights;
- statusp->mps_pdrequest = status.mps_pdrequest;
- statusp->mps_nsrequest = status.mps_nsrequest;
-
- return KERN_SUCCESS;
-}
-
-/*
* Routine: mach_port_set_qlimit [kernel call]
* Purpose:
* Changes a receive right's queue limit.
diff --git a/kern/counters.c b/kern/counters.c
index a9d450e..74fd42d 100644
--- a/kern/counters.c
+++ b/kern/counters.c
@@ -32,13 +32,12 @@
* This makes them easier to examine with ddb.
*/
+#if MACH_COUNTERS
mach_counter_t c_thread_invoke_hits = 0;
mach_counter_t c_thread_invoke_misses = 0;
mach_counter_t c_thread_invoke_csw = 0;
mach_counter_t c_thread_handoff_hits = 0;
mach_counter_t c_thread_handoff_misses = 0;
-
-#if MACH_COUNTERS
mach_counter_t c_threads_current = 0;
mach_counter_t c_threads_max = 0;
mach_counter_t c_threads_min = 0;
diff --git a/kern/counters.h b/kern/counters.h
index 474c6a2..bfa9b44 100644
--- a/kern/counters.h
+++ b/kern/counters.h
@@ -55,13 +55,12 @@
typedef unsigned int mach_counter_t;
+#if MACH_COUNTERS
extern mach_counter_t c_thread_invoke_hits;
extern mach_counter_t c_thread_invoke_misses;
extern mach_counter_t c_thread_invoke_csw;
extern mach_counter_t c_thread_handoff_hits;
extern mach_counter_t c_thread_handoff_misses;
-
-#if MACH_COUNTERS
extern mach_counter_t c_threads_current;
extern mach_counter_t c_threads_max;
extern mach_counter_t c_threads_min;
diff --git a/kern/ipc_sched.c b/kern/ipc_sched.c
index d5b9263..cc1672d 100644
--- a/kern/ipc_sched.c
+++ b/kern/ipc_sched.c
@@ -214,7 +214,7 @@ thread_handoff(
thread_unlock(new);
(void) splx(s);
- counter_always(c_thread_handoff_misses++);
+ counter(c_thread_handoff_misses++);
return FALSE;
}
@@ -278,6 +278,6 @@ thread_handoff(
after_old_thread:
(void) splx(s);
- counter_always(c_thread_handoff_hits++);
+ counter(c_thread_handoff_hits++);
return TRUE;
}
diff --git a/kern/sched_prim.c b/kern/sched_prim.c
index 66eb9c9..89fb1dc 100644
--- a/kern/sched_prim.c
+++ b/kern/sched_prim.c
@@ -726,7 +726,7 @@ boolean_t thread_invoke(
* running out of stack.
*/
- counter_always(c_thread_invoke_hits++);
+ counter(c_thread_invoke_hits++);
(void) spl0();
call_continuation(new_thread->swap_func);
/*NOTREACHED*/
@@ -738,7 +738,7 @@ boolean_t thread_invoke(
*/
thread_swapin(new_thread);
thread_unlock(new_thread);
- counter_always(c_thread_invoke_misses++);
+ counter(c_thread_invoke_misses++);
return FALSE;
case 0:
@@ -759,7 +759,7 @@ boolean_t thread_invoke(
{
thread_swapin(new_thread);
thread_unlock(new_thread);
- counter_always(c_thread_invoke_misses++);
+ counter(c_thread_invoke_misses++);
return FALSE;
}
}
@@ -788,7 +788,7 @@ boolean_t thread_invoke(
* changing address spaces. It updates active_threads.
* It returns only if a continuation is not supplied.
*/
- counter_always(c_thread_invoke_csw++);
+ counter(c_thread_invoke_csw++);
old_thread = switch_context(old_thread, continuation, new_thread);
/*
diff --git a/kern/task.c b/kern/task.c
index 20acc6a..a11fb8e 100644
--- a/kern/task.c
+++ b/kern/task.c
@@ -50,12 +50,16 @@
#include <kern/sched_prim.h> /* for thread_wakeup */
#include <kern/ipc_tt.h>
#include <kern/syscall_emulation.h>
+#include <kern/task_notify.user.h>
#include <vm/vm_kern.h> /* for kernel_map, ipc_kernel_map */
#include <machine/machspl.h> /* for splsched */
task_t kernel_task = TASK_NULL;
struct kmem_cache task_cache;
+/* Where to send notifications about newly created tasks. */
+ipc_port_t new_task_notification = NULL;
+
void task_init(void)
{
kmem_cache_init(&task_cache, "task", sizeof(struct task), 0,
@@ -169,6 +173,14 @@ kern_return_t task_create(
snprintf (new_task->name, sizeof new_task->name, "%p", new_task);
+ if (new_task_notification != NULL) {
+ task_reference (new_task);
+ task_reference (parent_task);
+ mach_notify_new_task (new_task_notification,
+ convert_task_to_port (new_task),
+ convert_task_to_port (parent_task));
+ }
+
ipc_task_enable(new_task);
*child_task = new_task;
@@ -272,6 +284,7 @@ kern_return_t task_terminate(
thread_terminate(cur_thread);
return KERN_FAILURE;
}
+ task_hold_locked(task);
task->active = FALSE;
queue_remove(list, cur_thread, thread_t, thread_list);
thread_unlock(cur_thread);
@@ -325,6 +338,7 @@ kern_return_t task_terminate(
task_unlock(task);
return KERN_FAILURE;
}
+ task_hold_locked(task);
task->active = FALSE;
task_unlock(task);
}
@@ -335,9 +349,8 @@ kern_return_t task_terminate(
* If this is the current task, the current thread will
* be left running.
*/
- ipc_task_disable(task);
- (void) task_hold(task);
(void) task_dowait(task,TRUE); /* may block */
+ ipc_task_disable(task);
/*
* Terminate each thread in the task.
@@ -402,20 +415,18 @@ kern_return_t task_terminate(
* Suspend execution of the specified task.
* This is a recursive-style suspension of the task, a count of
* suspends is maintained.
+ *
+ * CONDITIONS: the task is locked and active.
*/
-kern_return_t task_hold(
+void task_hold_locked(
task_t task)
{
queue_head_t *list;
thread_t thread, cur_thread;
- cur_thread = current_thread();
+ assert(task->active);
- task_lock(task);
- if (!task->active) {
- task_unlock(task);
- return KERN_FAILURE;
- }
+ cur_thread = current_thread();
task->suspend_count++;
@@ -429,6 +440,26 @@ kern_return_t task_hold(
if (thread != cur_thread)
thread_hold(thread);
}
+}
+
+/*
+ * task_hold:
+ *
+ * Suspend execution of the specified task.
+ * This is a recursive-style suspension of the task, a count of
+ * suspends is maintained.
+ */
+kern_return_t task_hold(
+ task_t task)
+{
+ task_lock(task);
+ if (!task->active) {
+ task_unlock(task);
+ return KERN_FAILURE;
+ }
+
+ task_hold_locked(task);
+
task_unlock(task);
return KERN_SUCCESS;
}
@@ -1230,3 +1261,24 @@ task_ras_control(
#endif /* FAST_TAS */
return ret;
}
+
+/*
+ * register_new_task_notification
+ *
+ * Register a port to which a notification about newly created
+ * tasks are sent.
+ */
+kern_return_t
+register_new_task_notification(
+ const host_t host,
+ ipc_port_t notification)
+{
+ if (host == HOST_NULL)
+ return KERN_INVALID_HOST;
+
+ if (new_task_notification != NULL)
+ return KERN_NO_ACCESS;
+
+ new_task_notification = notification;
+ return KERN_SUCCESS;
+}
diff --git a/kern/task.h b/kern/task.h
index 3c10dc0..2a4c28f 100644
--- a/kern/task.h
+++ b/kern/task.h
@@ -182,6 +182,7 @@ extern void consider_task_collect(void);
extern void task_init(void);
extern void task_reference(task_t);
extern void task_deallocate(task_t);
+extern void task_hold_locked(task_t);
extern kern_return_t task_hold(task_t);
extern kern_return_t task_dowait(task_t, boolean_t);
extern kern_return_t task_release(task_t);
diff --git a/kern/task_notify.cli b/kern/task_notify.cli
new file mode 100644
index 0000000..c6c85d9
--- /dev/null
+++ b/kern/task_notify.cli
@@ -0,0 +1,7 @@
+/* XXX */
+
+/* This is a client presentation file. */
+
+#define KERNEL_USER 1
+
+#include <mach/task_notify.defs>
diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c
index 68bf0c4..7753814 100644
--- a/linux/dev/arch/i386/kernel/irq.c
+++ b/linux/dev/arch/i386/kernel/irq.c
@@ -695,7 +695,7 @@ init_IRQ (void)
* Program counter 0 of 8253 to interrupt hz times per second.
*/
outb_p (PIT_C0 | PIT_SQUAREMODE | PIT_READMODE, PITCTL_PORT);
- outb_p (latch && 0xff, PITCTR0_PORT);
+ outb_p (latch & 0xff, PITCTR0_PORT);
outb (latch >> 8, PITCTR0_PORT);
/*
diff --git a/linux/dev/drivers/block/genhd.c b/linux/dev/drivers/block/genhd.c
index 95b499b..3a86138 100644
--- a/linux/dev/drivers/block/genhd.c
+++ b/linux/dev/drivers/block/genhd.c
@@ -27,6 +27,8 @@
#ifdef CONFIG_BLK_DEV_INITRD
#include <linux/blk.h>
#endif
+#include <linux/hdreg.h>
+#include <alloca.h>
#include <asm/system.h>
@@ -768,12 +770,36 @@ static void setup_dev(struct gendisk *dev)
void device_setup(void)
{
extern void console_map_init(void);
+ extern char *kernel_cmdline;
+ char *c, *param, *white;
struct gendisk *p;
int nr=0;
#ifdef MACH
linux_intr_pri = SPL6;
#endif
+ for (c = kernel_cmdline; c; )
+ {
+ param = strstr(c, " ide");
+ if (!param)
+ param = strstr(c, " hd");
+ if (!param)
+ break;
+ if (param) {
+ param++;
+ white = strchr(param, ' ');
+ if (!white) {
+ ide_setup(param);
+ c = NULL;
+ } else {
+ char *word = alloca(white - param + 1);
+ strncpy(word, param, white - param);
+ word[white-param] = '\0';
+ ide_setup(word);
+ c = white + 1;
+ }
+ }
+ }
#ifndef MACH
chr_dev_init();
#endif
diff --git a/linux/pcmcia-cs/clients/axnet_cs.c
b/linux/pcmcia-cs/clients/axnet_cs.c
index bcd79b0..2e7d9ed 100644
--- a/linux/pcmcia-cs/clients/axnet_cs.c
+++ b/linux/pcmcia-cs/clients/axnet_cs.c
@@ -1814,7 +1814,7 @@ static void set_multicast_list(struct net_device *dev)
static int axdev_init(struct net_device *dev)
{
if (ei_debug > 1)
- printk(version_8390);
+ printk("%s", version_8390);
if (dev->priv == NULL)
{
diff --git a/linux/src/drivers/block/ide.c b/linux/src/drivers/block/ide.c
index 9b9ecc2..41a2601 100644
--- a/linux/src/drivers/block/ide.c
+++ b/linux/src/drivers/block/ide.c
@@ -2526,7 +2526,7 @@ static inline void do_identify (ide_drive_t *drive, byte
cmd)
drive->media = ide_tape;
drive->present = 1;
drive->removable = 1;
- if (drive->autotune != 2 &&
HWIF(drive)->dmaproc != NULL) {
+ if (drive->autotune != 2 &&
HWIF(drive)->dmaproc != NULL && !drive->nodma) {
if
(!HWIF(drive)->dmaproc(ide_dma_check, drive))
printk(", DMA");
}
@@ -2653,7 +2653,7 @@ static inline void do_identify (ide_drive_t *drive, byte
cmd)
if (drive->mult_req || ((id->multsect_valid & 1) &&
id->multsect))
drive->special.b.set_multmode = 1;
}
- if (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL) {
+ if (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL &&
!drive->nodma) {
if (!(HWIF(drive)->dmaproc(ide_dma_check, drive))) {
if ((id->field_valid & 4) && (id->dma_ultra &
(id->dma_ultra >> 8) & 7))
printk(", UDMA");
@@ -3108,6 +3108,7 @@ static int match_parm (char *s, const char *keywords[],
int vals[], int max_vals
* Not fully supported by all chipset types,
* and quite likely to cause trouble with
* older/odd IDE drives.
+ * "hdx=nodma" : disallow DMA for the drive
*
* "idebus=xx" : inform IDE driver of VESA/PCI bus speed in Mhz,
* where "xx" is between 20 and 66 inclusive,
@@ -3152,7 +3153,11 @@ void ide_setup (char *s)
ide_hwif_t *hwif;
ide_drive_t *drive;
unsigned int hw, unit;
+#ifdef MACH
+ const char max_drive = '0' + ((MAX_HWIFS * MAX_DRIVES) - 1);
+#else
const char max_drive = 'a' + ((MAX_HWIFS * MAX_DRIVES) - 1);
+#endif
const char max_hwif = '0' + (MAX_HWIFS - 1);
printk("ide_setup: %s", s);
@@ -3161,11 +3166,19 @@ void ide_setup (char *s)
/*
* Look for drive options: "hdx="
*/
+#ifdef MACH
+ if (s[0] == 'h' && s[1] == 'd' && s[2] >= '0' && s[2] <= max_drive) {
+#else
if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
+#endif
const char *hd_words[] = {"none", "noprobe", "nowerr", "cdrom",
"serialize", "autotune", "noautotune",
- "slow", "ide-scsi", NULL};
+ "slow", "ide-scsi", "nodma", NULL};
+#ifdef MACH
+ unit = s[2] - '0';
+#else
unit = s[2] - 'a';
+#endif
hw = unit / MAX_DRIVES;
unit = unit % MAX_DRIVES;
hwif = &ide_hwifs[hw];
@@ -3200,6 +3213,9 @@ void ide_setup (char *s)
case -9: /* "ide-scsi" */
drive->ide_scsi = 1;
goto done;
+ case -10: /* "nodma" */
+ drive->nodma = 1;
+ goto done;
case 3: /* cyl,head,sect */
drive->media = ide_disk;
drive->cyl = drive->bios_cyl = vals[0];
diff --git a/linux/src/drivers/block/ide.h b/linux/src/drivers/block/ide.h
index edeedc9..28e371b 100644
--- a/linux/src/drivers/block/ide.h
+++ b/linux/src/drivers/block/ide.h
@@ -344,6 +344,7 @@ typedef struct ide_drive_s {
unsigned nobios : 1; /* flag: do not probe bios for drive */
unsigned slow : 1; /* flag: slow data port */
unsigned autotune : 2; /* 1=autotune, 2=noautotune, 0=default
*/
+ unsigned nodma : 1; /* disk should not use dma for
read/write */
#if FAKE_FDISK_FOR_EZDRIVE
unsigned remap_0_to_1 : 1; /* flag: partitioned with ezdrive */
#endif /* FAKE_FDISK_FOR_EZDRIVE */
diff --git a/linux/src/drivers/net/3c507.c b/linux/src/drivers/net/3c507.c
index 63f85a4..58ba2d7 100644
--- a/linux/src/drivers/net/3c507.c
+++ b/linux/src/drivers/net/3c507.c
@@ -354,7 +354,7 @@ int el16_probe1(struct device *dev, int ioaddr)
dev = init_etherdev(0, sizeof(struct net_local));
if (net_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("%s: 3c507 at %#x,", dev->name, ioaddr);
@@ -410,7 +410,7 @@ int el16_probe1(struct device *dev, int ioaddr)
dev->if_port ? "ex" : "in", dev->mem_start, dev->mem_end-1);
if (net_debug)
- printk(version);
+ printk("%s", version);
/* Initialize the device structure. */
dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/3c509.c b/linux/src/drivers/net/3c509.c
index f884288..727595c 100644
--- a/linux/src/drivers/net/3c509.c
+++ b/linux/src/drivers/net/3c509.c
@@ -314,7 +314,7 @@ int el3_probe(struct device *dev)
el3_root_dev = dev;
if (el3_debug > 0)
- printk(version);
+ printk("%s", version);
/* The EL3-specific entries in the device structure. */
dev->open = &el3_open;
diff --git a/linux/src/drivers/net/3c515.c b/linux/src/drivers/net/3c515.c
index fd6ec50..52f4703 100644
--- a/linux/src/drivers/net/3c515.c
+++ b/linux/src/drivers/net/3c515.c
@@ -404,7 +404,7 @@ init_module(void)
if (debug >= 0)
vortex_debug = debug;
if (vortex_debug)
- printk(version);
+ printk("%s", version);
root_vortex_dev = NULL;
cards_found = vortex_scan(0);
@@ -419,7 +419,7 @@ int tc515_probe(struct device *dev)
cards_found = vortex_scan(dev);
if (vortex_debug > 0 && cards_found)
- printk(version);
+ printk("%s", version);
return cards_found ? 0 : -ENODEV;
}
diff --git a/linux/src/drivers/net/ac3200.c b/linux/src/drivers/net/ac3200.c
index 0337bab..600949f 100644
--- a/linux/src/drivers/net/ac3200.c
+++ b/linux/src/drivers/net/ac3200.c
@@ -208,7 +208,7 @@ static int ac_probe1(int ioaddr, struct device *dev)
dev->mem_start, dev->mem_end-1);
if (ei_debug > 0)
- printk(version);
+ printk("%s", version);
ei_status.reset_8390 = &ac_reset_8390;
ei_status.block_input = &ac_block_input;
diff --git a/linux/src/drivers/net/apricot.c b/linux/src/drivers/net/apricot.c
index d106e50..57fccaf 100644
--- a/linux/src/drivers/net/apricot.c
+++ b/linux/src/drivers/net/apricot.c
@@ -720,7 +720,7 @@ int apricot_probe(struct device *dev)
dev->irq = 10;
printk(" IRQ %d.\n", dev->irq);
- if (i596_debug > 0) printk(version);
+ if (i596_debug > 0) printk("%s", version);
/* The APRICOT-specific entries in the device structure. */
dev->open = &i596_open;
diff --git a/linux/src/drivers/net/at1700.c b/linux/src/drivers/net/at1700.c
index 9e42ab4..f4025f4 100644
--- a/linux/src/drivers/net/at1700.c
+++ b/linux/src/drivers/net/at1700.c
@@ -258,7 +258,7 @@ int at1700_probe1(struct device *dev, int ioaddr)
outb(0x00, ioaddr + CONFIG_1);
if (net_debug)
- printk(version);
+ printk("%s", version);
/* Initialize the device structure. */
dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/de4x5.c b/linux/src/drivers/net/de4x5.c
index a66f056..c85bcdb 100644
--- a/linux/src/drivers/net/de4x5.c
+++ b/linux/src/drivers/net/de4x5.c
@@ -1308,7 +1308,7 @@ de4x5_hw_init(struct device *dev, u_long iobase))
}
if (de4x5_debug & DEBUG_VERSION) {
- printk(version);
+ printk("%s", version);
}
/* The DE4X5-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/de600.c b/linux/src/drivers/net/de600.c
index 2488cd7..ce96942 100644
--- a/linux/src/drivers/net/de600.c
+++ b/linux/src/drivers/net/de600.c
@@ -644,7 +644,7 @@ de600_probe(struct device *dev)
printk("%s: D-Link DE-600 pocket adapter", dev->name);
/* Alpha testers must have the version number to report bugs. */
if (de600_debug > 1)
- printk(version);
+ printk("%s", version);
/* probe for adapter */
rx_page = 0;
diff --git a/linux/src/drivers/net/de620.c b/linux/src/drivers/net/de620.c
index ec63910..0e0c552 100644
--- a/linux/src/drivers/net/de620.c
+++ b/linux/src/drivers/net/de620.c
@@ -843,7 +843,7 @@ de620_probe(struct device *dev)
dev->irq = irq;
if (de620_debug)
- printk(version);
+ printk("%s", version);
printk("D-Link DE-620 pocket adapter");
diff --git a/linux/src/drivers/net/depca.c b/linux/src/drivers/net/depca.c
index e1b0342..2048812 100644
--- a/linux/src/drivers/net/depca.c
+++ b/linux/src/drivers/net/depca.c
@@ -649,7 +649,7 @@ depca_hw_init(struct device *dev, u_long ioaddr)
}
if (!status) {
if (depca_debug > 1) {
- printk(version);
+ printk("%s", version);
}
/* The DEPCA-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/e2100.c b/linux/src/drivers/net/e2100.c
index 7ba12d3..537295a 100644
--- a/linux/src/drivers/net/e2100.c
+++ b/linux/src/drivers/net/e2100.c
@@ -162,7 +162,7 @@ int e21_probe1(struct device *dev, int ioaddr)
outb(0, ioaddr + E21_ASIC); /* and disable the secondary interface.
*/
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
/* We should have a "dev" from Space.c or the static module table. */
if (dev == NULL) {
diff --git a/linux/src/drivers/net/eepro.c b/linux/src/drivers/net/eepro.c
index 2c3a6b2..3d4fc57 100644
--- a/linux/src/drivers/net/eepro.c
+++ b/linux/src/drivers/net/eepro.c
@@ -498,7 +498,7 @@ eepro_probe1(struct device *dev, short ioaddr)
}
if (net_debug)
- printk(version);
+ printk("%s", version);
/* Grab the region so we can find another board if
autoIRQ fails. */
request_region(ioaddr, EEPRO_IO_EXTENT, "eepro");
diff --git a/linux/src/drivers/net/eepro100.c b/linux/src/drivers/net/eepro100.c
index 6909cdc..d03462c 100644
--- a/linux/src/drivers/net/eepro100.c
+++ b/linux/src/drivers/net/eepro100.c
@@ -726,7 +726,7 @@ static void *speedo_found1(struct pci_dev *pdev, void
*init_dev,
eeprom[8], eeprom[9]>>8, eeprom[9] & 0xff);
for (i = 0; i < 4; i++)
if (eeprom[5] & (1<<i))
- printk(connectors[i]);
+ printk("%s", connectors[i]);
printk("\n"KERN_INFO" Primary interface chip %s PHY #%d.\n",
phys[(eeprom[6]>>8)&15], eeprom[6] & 0x1f);
if (eeprom[7] & 0x0700)
diff --git a/linux/src/drivers/net/eexpress.c b/linux/src/drivers/net/eexpress.c
index d706550..9c816ee 100644
--- a/linux/src/drivers/net/eexpress.c
+++ b/linux/src/drivers/net/eexpress.c
@@ -794,7 +794,7 @@ static int eexp_hw_probe(struct device *dev, unsigned short
ioaddr)
}
if (net_debug)
- printk(version);
+ printk("%s", version);
dev->open = eexp_open;
dev->stop = eexp_close;
dev->hard_start_xmit = eexp_xmit;
diff --git a/linux/src/drivers/net/ewrk3.c b/linux/src/drivers/net/ewrk3.c
index f91315f..07b0f13 100644
--- a/linux/src/drivers/net/ewrk3.c
+++ b/linux/src/drivers/net/ewrk3.c
@@ -589,7 +589,7 @@ ewrk3_hw_init(struct device *dev, u_long iobase)
if (!status) {
if (ewrk3_debug > 1) {
- printk(version);
+ printk("%s", version);
}
/* The EWRK3-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/fmv18x.c b/linux/src/drivers/net/fmv18x.c
index 121dd0b..b29ddf0 100644
--- a/linux/src/drivers/net/fmv18x.c
+++ b/linux/src/drivers/net/fmv18x.c
@@ -249,7 +249,7 @@ int fmv18x_probe1(struct device *dev, short ioaddr)
outb(dev->if_port, ioaddr + MODE13);
if (net_debug)
- printk(version);
+ printk("%s", version);
/* Initialize the device structure. */
dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/hp-plus.c b/linux/src/drivers/net/hp-plus.c
index c8e3611..c2b7116 100644
--- a/linux/src/drivers/net/hp-plus.c
+++ b/linux/src/drivers/net/hp-plus.c
@@ -164,7 +164,7 @@ int hpp_probe1(struct device *dev, int ioaddr)
}
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("%s: %s at %#3x,", dev->name, name, ioaddr);
diff --git a/linux/src/drivers/net/hp.c b/linux/src/drivers/net/hp.c
index 741924f..6ddbfd2 100644
--- a/linux/src/drivers/net/hp.c
+++ b/linux/src/drivers/net/hp.c
@@ -136,7 +136,7 @@ int hp_probe1(struct device *dev, int ioaddr)
}
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("%s: %s (ID %02x) at %#3x,", dev->name, name, board_id, ioaddr);
diff --git a/linux/src/drivers/net/lance.c b/linux/src/drivers/net/lance.c
index f64f0fe..fe3cf68 100644
--- a/linux/src/drivers/net/lance.c
+++ b/linux/src/drivers/net/lance.c
@@ -674,7 +674,7 @@ int lance_probe1(struct device *dev, int ioaddr, int irq,
int options)
}
if (lance_debug > 0 && did_version++ == 0)
- printk(version);
+ printk("%s", version);
/* The LANCE-specific entries in the device structure. */
dev->open = lance_open;
diff --git a/linux/src/drivers/net/ne.c b/linux/src/drivers/net/ne.c
index 825b768..ea2f929 100644
--- a/linux/src/drivers/net/ne.c
+++ b/linux/src/drivers/net/ne.c
@@ -291,7 +291,7 @@ static int ne_probe1(struct device *dev, int ioaddr)
}
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("NE*000 ethercard probe at %#3x:", ioaddr);
diff --git a/linux/src/drivers/net/pcnet32.c b/linux/src/drivers/net/pcnet32.c
index 02e7098..da0e870 100644
--- a/linux/src/drivers/net/pcnet32.c
+++ b/linux/src/drivers/net/pcnet32.c
@@ -344,7 +344,7 @@ static int pcnet32_probe1(struct device *dev, unsigned int
ioaddr, unsigned char
dev->irq = irq_line;
if (pcnet32_debug > 0)
- printk(version);
+ printk("%s", version);
/* The PCNET32-specific entries in the device structure. */
dev->open = &pcnet32_open;
diff --git a/linux/src/drivers/net/seeq8005.c b/linux/src/drivers/net/seeq8005.c
index c4d4852..4adebde 100644
--- a/linux/src/drivers/net/seeq8005.c
+++ b/linux/src/drivers/net/seeq8005.c
@@ -274,7 +274,7 @@ static int seeq8005_probe1(struct device *dev, int ioaddr)
dev = init_etherdev(0, sizeof(struct net_local));
if (net_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("%s: %s found at %#3x, ", dev->name, "seeq8005", ioaddr);
diff --git a/linux/src/drivers/net/smc-ultra.c
b/linux/src/drivers/net/smc-ultra.c
index 074a235..f593aeb 100644
--- a/linux/src/drivers/net/smc-ultra.c
+++ b/linux/src/drivers/net/smc-ultra.c
@@ -156,7 +156,7 @@ int ultra_probe1(struct device *dev, int ioaddr)
dev = init_etherdev(0, 0);
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";
diff --git a/linux/src/drivers/net/smc-ultra32.c
b/linux/src/drivers/net/smc-ultra32.c
index f616e25..6cde4c2 100644
--- a/linux/src/drivers/net/smc-ultra32.c
+++ b/linux/src/drivers/net/smc-ultra32.c
@@ -153,7 +153,7 @@ int ultra32_probe1(struct device *dev, int ioaddr)
}
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
model_name = "SMC Ultra32";
diff --git a/linux/src/drivers/net/wd.c b/linux/src/drivers/net/wd.c
index a737a01..dd87902 100644
--- a/linux/src/drivers/net/wd.c
+++ b/linux/src/drivers/net/wd.c
@@ -137,7 +137,7 @@ int wd_probe1(struct device *dev, int ioaddr)
}
if (ei_debug && version_printed++ == 0)
- printk(version);
+ printk("%s", version);
printk("%s: WD80x3 at %#3x, ", dev->name, ioaddr);
for (i = 0; i < 6; i++)
diff --git a/version.m4 b/version.m4
index 0eea40c..56a7174 100644
--- a/version.m4
+++ b/version.m4
@@ -1,4 +1,4 @@
m4_define([AC_PACKAGE_NAME],[GNU Mach])
-m4_define([AC_PACKAGE_VERSION],[1.4+git20141109])
+m4_define([AC_PACKAGE_VERSION],[1.4+git20141211])
m4_define([AC_PACKAGE_BUGREPORT],address@hidden)
m4_define([AC_PACKAGE_TARNAME],[gnumach])
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 1d8f37b..f7c87cc 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -336,10 +336,7 @@ kern_return_t vm_map(
if (size == 0)
return KERN_INVALID_ARGUMENT;
- if (anywhere)
- *address = vm_map_min(target_map);
- else
- *address = trunc_page(*address);
+ *address = trunc_page(*address);
size = round_page(size);
if (!IP_VALID(memory_object)) {
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/gnumach.git