| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
Added device_open_new and device_open_new_request and reused the old MiG
ID for xxx_device_set_status which has not been in used in the past
decade.
Note that device_open_new is gated on defining
DEVICE_ENABLE_DEVICE_OPEN_NEW because otherwise some hurd servers
wouldn't compile anymore unless patched. This macro allows us to control
the rollout.
Message-Id: <ZEi1LV+9ShuXqtcr@jupiter.tail36e24.ts.net>
|
|
|
|
|
|
|
|
|
| |
It would be very tricky for the server to manage deallocation for
device_read, and does not seem useful anyway. device_reply.defs already
has it.
* include/device/device.defs (device_read): Add dealloc flag for the data
array.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows privileged userland drivers to get notifications of hardware
interrupts.
Initial work by Zheng Da, reworked by Damien Zammit and myself.
* Makefrag.am (libkernel_a_SOURCES): Add device/intr.c and
device/intr.h.
(include_device_HEADERS): Add include/device/notify.defs and
include/device/notify.h.
* device/dev_hdr.h (name_equal): Add declaration.
* device/ds_routines.c: Include <device/intr.h>
(ds_device_intr_register, ds_device_intr_ack): New functions.
* device/intr.c, device/intr.h: New files.
* doc/mach.texi (Device Interrupt): New section.
* i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386/irq.c and
i386/i386/irq.h.
* i386/i386/irq.c, i386/i386/irq.h: New files.
* i386/i386at/conf.c: Include <device/intr.h>.
(irqname): New macro.
(dev_name_list): Add irq device.
* include/device/device.defs (device_intr_register, device_intr_ack):
New RPCs.
* include/device/notify.defs, include/device/notify.h: New files.
* kern/startup.c: Include <device/intr.h>
(start_kernel_threads): Start intr_thread thread.
* linux/dev/arch/i386/kernel/irq.c: Include <device/intr.h>
(linux_action): Add user_intr field.
(linux_intr): Call user_intr action if any.
(mask_irq, unmask_irq): Move functions to i386/i386/pic.c
(__disable_irq, __enable_irq): Move functions to i386/i386/irq.c.
(install_user_intr_handler): New function.
(request_irq): Initialize user_intr field.
* linux/src/include/asm-i386/irq.h (__disable_irq, __enable_irq): Remove
prototypes.
* i386/i386/pic.c (mask_irq, unmask_irq): New functions.
* i386/i386/pic.h (mask_irq, unmask_irq): New prototypes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, every userspace server implementing the device protocol
filtered the device definitions to replace the device_t type with
mach_port_send_t to make the device argument of device_open
polymorphic. Rather than doing that, which makes it impossible to use
translation functions, fix the definition of device_open.
* include/device/device.defs (device_open): Redefine the device
argument to make it polymorphic unless a outran function is specified.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* kern/compat_xxx_defs.h: Remove file.
* Makefrag.am (libkernel_a_SOURCES): Remove `kern/compat_xxx_defs.h'.
* include/mach/mach_types.defs (xxx_emulation_vector_t): Remove type.
* device/device.srv: Do not simport <kern/compat_xxx_defs.h>.
* kern/mach.srv: Likewise.
* kern/mach_host.srv: Likewise.
* include/device/device.defs [MACH_KERNEL]: Do not simport
<kern/compat_xxx_defs.h>.
(xxx_device_set_status, xxx_device_get_status)
(xxx_device_set_filter): Replace routine declarations with skip
directives.
* include/mach/mach.defs [MACH_KERNEL]: Do not simport
<kern/compat_xxx_defs.h>.
(xxx_memory_object_lock_request, xxx_task_get_emulation_vector)
(xxx_task_set_emulation_vector, xxx_host_info, xxx_slot_info)
(xxx_cpu_control, xxx_task_info, xxx_thread_get_state)
(xxx_thread_set_state, xxx_thread_info): Replace routine declarations
with skip directive.
* include/mach/mach_host.defs [MACH_KERNEL]: Do not simport
<kern/compat_xxx_defs.h>.
(yyy_host_info, yyy_processor_info, yyy_processor_control)
(xxx_processor_set_default_priv, yyy_processor_set_info): Replace
routine declarations with skip directive.
* kern/ipc_host.c (xxx_processor_set_default_priv): Remove function.
* kern/machine.c (xxx_host_info, xxx_slot_info)
(xxx_cpu_control): Likewise.
* kern/syscall_emulation.c (xxx_task_set_emulation_vector)
(xxx_task_get_emulation_vector): Likewise.
* vm/memory_object.c (xxx_memory_object_lock_request): Likewise.
|
|
|