summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefrag.am1
-rw-r--r--device/ds_routines.c4
-rw-r--r--include/device/device.defs20
-rw-r--r--include/device/notify.defs36
-rw-r--r--include/device/notify.h2
-rw-r--r--include/mach/experimental.defs38
-rw-r--r--kern/ipc_kobject.c1
-rw-r--r--vm/vm_user.c14
8 files changed, 56 insertions, 60 deletions
diff --git a/Makefrag.am b/Makefrag.am
index ea612275..9307f7a5 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -363,7 +363,6 @@ include_device_HEADERS = \
include/device/device_types.h \
include/device/disk_status.h \
include/device/net_status.h \
- include/device/notify.defs \
include/device/notify.h \
include/device/tape_status.h \
include/device/tty_status.h
diff --git a/device/ds_routines.c b/device/ds_routines.c
index 1cc38f98..cc1b244b 100644
--- a/device/ds_routines.c
+++ b/device/ds_routines.c
@@ -322,7 +322,7 @@ ds_device_map (device_t dev, vm_prot_t prot, vm_offset_t offset,
/* TODO: missing deregister support */
io_return_t
-ds_device_intr_register (ipc_port_t master_port, int line,
+experimental_device_intr_register (ipc_port_t master_port, int line,
int id, int flags, ipc_port_t receive_port)
{
#ifdef MACH_XEN
@@ -1843,7 +1843,7 @@ device_writev_trap (mach_device_t device, dev_mode_t mode,
}
kern_return_t
-ds_device_intr_enable(ipc_port_t master_port, int line, char status)
+experimental_device_intr_enable(ipc_port_t master_port, int line, char status)
{
#ifdef MACH_XEN
return D_INVALID_OPERATION;
diff --git a/include/device/device.defs b/include/device/device.defs
index dca1be4e..409146f5 100644
--- a/include/device/device.defs
+++ b/include/device/device.defs
@@ -142,23 +142,3 @@ routine device_set_filter(
in filter : filter_array_t
);
-routine device_intr_register(
- master_port : mach_port_t;
- in line : int;
- in id : int;
- in flags : int;
- in receive_port : mach_port_send_t
- );
-
-/*
- * enable/disable the specified line.
- */
-/* XXX: Naming a function taht can disable something "xxx_enable" is confusing. */
-/* Is the disable part actually used at all? AIUI, the kernel IRQ handler
-should always disable the line; and the userspace driver only has to
-reenable it, after acknowledging and handling the interrupt...
-*/
-routine device_intr_enable(
- master_port : mach_port_t;
- line : int;
- status : char);
diff --git a/include/device/notify.defs b/include/device/notify.defs
deleted file mode 100644
index ea374d26..00000000
--- a/include/device/notify.defs
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Mach Operating System
- * Copyright (c) 1991,1990,1989 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 Software.Distribution@CS.CMU.EDU
- * 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.
- */
-
-subsystem notify 100;
-
-#include <mach/std_types.defs>
-
-serverprefix do_;
-serverdemux device_intr_notify_server;
-
-simpleroutine device_intr_notify(
- notify : notify_port_t;
- name : int);
diff --git a/include/device/notify.h b/include/device/notify.h
index b6907b03..91d518ca 100644
--- a/include/device/notify.h
+++ b/include/device/notify.h
@@ -29,6 +29,6 @@ typedef struct
int line;
} device_intr_notification_t;
-#define DEVICE_INTR_NOTIFY 100
+#define DEVICE_INTR_NOTIFY 424242
#endif /* _MACH_DEVICE_NOTIFY_H_ */
diff --git a/include/mach/experimental.defs b/include/mach/experimental.defs
index ddcbea5f..9a2f28db 100644
--- a/include/mach/experimental.defs
+++ b/include/mach/experimental.defs
@@ -13,3 +13,41 @@ subsystem
serverprefix experimental_;
/* This is free for experimenting RPCs, with no backward compatibility guarantees. */
+
+type notify_port_t = MACH_MSG_TYPE_MOVE_SEND_ONCE
+ ctype: mach_port_t;
+
+skip; /*simpleroutine mach_intr_notify(
+ notify : notify_port_t;
+ name : int);*/
+
+routine device_intr_register(
+ master_port : mach_port_t;
+ in line : int;
+ in id : int;
+ in flags : int;
+ in receive_port : mach_port_send_t
+ );
+
+/*
+ * enable/disable the specified line.
+ */
+/* XXX: Naming a function taht can disable something "xxx_enable" is confusing. */
+/* Is the disable part actually used at all? AIUI, the kernel IRQ handler
+should always disable the line; and the userspace driver only has to
+reenable it, after acknowledging and handling the interrupt...
+*/
+routine device_intr_enable(
+ master_port : mach_port_t;
+ line : int;
+ status : char);
+
+/*
+ * This routine is for compatibility with old userland drivers.
+ */
+routine vm_allocate_contiguous(
+ host_priv : host_priv_t;
+ target_task : vm_task_t;
+ out vaddr : vm_address_t;
+ out paddr : vm_address_t;
+ size : vm_size_t);
diff --git a/kern/ipc_kobject.c b/kern/ipc_kobject.c
index 5ced4037..c65458ba 100644
--- a/kern/ipc_kobject.c
+++ b/kern/ipc_kobject.c
@@ -160,6 +160,7 @@ ipc_kobject_server(request)
* to perform the kernel function
*/
{
+ extern mig_routine_t experimental_server_routine();
check_simple_locks();
if ((routine = mach_server_routine(&request->ikm_header)) != 0
|| (routine = mach_port_server_routine(&request->ikm_header)) != 0
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 4d5728c8..b13ba8dc 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -659,3 +659,17 @@ kern_return_t vm_allocate_contiguous(
return KERN_SUCCESS;
}
+
+kern_return_t experimental_vm_allocate_contiguous(host_priv, map, result_vaddr, result_paddr, size)
+ host_t host_priv;
+ vm_map_t map;
+ vm_address_t *result_vaddr;
+ vm_address_t *result_paddr;
+ vm_size_t size;
+{
+ rpc_phys_addr_t paddr;
+ kern_return_t ret;
+ ret = vm_allocate_contiguous(host_priv, map, result_vaddr, &paddr, size, 0, ~0ULL, 0);
+ *result_paddr = paddr;
+ return ret;
+}