Age | Commit message (Collapse) | Author |
|
Add a field ip_protected_payload and a flag ip_has_protected_payload
to struct ipc_port.
Clear the protected payload when a receive port is moved from one ipc
space to another. This is done to retain the old behavior of
mach_msg, so that a port name is sent in the msgh_local_port field.
If the new owner of that receive right wishes to use the protected
payload mechanism, it has to be explicitly set again.
* ipc/ipc_port.h (struct ipc_port): Add field ip_protected_payload.
(ipc_port_set_protected_payload): Add function declaration.
(ipc_port_clear_protected_payload): Likewise.
(ipc_port_flag_protected_payload): Add accessor for the protected
payload flag.
(ipc_port_flag_protected_payload_set): Likewise.
(ipc_port_flag_protected_payload_clear): Likewise.
* ipc/ipc_port.c (ipc_port_init): Initialize protected payload.
(ipc_port_print): Print protected_payload.
(ipc_port_set_protected_payload): New function.
(ipc_port_clear_protected_payload): Likewise.
(ipc_port_destroy): Clear the payload when moving a receive port.
* ipc/ipc_right.c (ipc_right_copyin): Likewise.
(ipc_right_copyout): Likewise.
* ipc/ipc_object.c (ipc_object_copyin_from_kernel): Likewise.
* ipc/ipc_object.h (IO_BITS_PROTECTED_PAYLOAD): New bitmask.
(IO_BITS_OTYPE): Adjust accordingly.
|
|
* ipc/ipc_table.h: Document that table sizes must be powers of two.
* ipc/ipc_hash.c (IH_LOCAL_HASH): Use fast modulo operation.
|
|
* kern/slab.c (kmem_cache_compute_sizes): Initialize optimal_size and
assert that a size is selected.
|
|
* kern/sched_prim.c (recompute_priorities): Fix type.
* kern/sched_prim.h (recompute_priorities): Likewise.
|
|
Previously, it was impossible to hand e.g. the master device port to
more than one bootstrap task. Fix this by creating the send right as
it is inserted into the target task.
* kern/bootstrap.c (bootstrap_create): Do not create the send rights
here...
(boot_script_insert_right): ... but here.
|
|
|
|
* ddb/db_elf.c: New file.
* ddb/db_elf.h: Likewise.
* Makefrag.am (libkernel_a_SOURCES): Add db_elf.{c,h}.
* ddb/db_sym.c (dummy_db_sym_init): New stub db_sym_init function.
(db_sym_switch): Add ELF functions.
* ddb/db_sym.h (SYMTAB_ELF): New macro.
(elf_db_sym_init): New declaration.
* i386/i386at/model_dep.c (c_boot_entry): Get ELF section header
information from the multiboot structure, and call elf_db_sym_init.
|
|
* ddb/db_command.c (db_show_all_cmds): Add `tasks'.
* ddb/db_print.c (db_show_all_tasks): New function.
* ddb/db_print.h (db_show_all_tasks): New prototype.
|
|
* i386/i386/trap.c (user_trap): On T_DEBUG, record the content of dr6 in
PCB, and clear it.
|
|
As vm_allocate does.
* vm/vm_user.c (vm_map): When `anywhere' is true, set `address' to the
minimum address of the `target_map'.
|
|
linux/src/drivers/net/sundance.c (start_tx): Fix format string according
to parameter.
|
|
This targets having always at least 8% free memory instead of just 1%.
This has shown improving buildd stability a lot. Also increase the
reserved amount to nowadays standards.
* vm/vm_pageout.c (VM_PAGE_FREE_TARGET): Increase to 10%.
(VM_PAGE_FREE_MIN): Increase to 8%.
(VM_PAGE_FREE_RESERVED): Increase to 500 pages.
(VM_PAGEOUT_RESERVED_INTERNAL): Increase to 150 pages.
(VM_PAGEOUT_RESERVED_REALLY): Increase to 100 pages.
|
|
* vm/vm_pageout.c (vm_pageout): Set the priority to 0.
|
|
This has shown needed on buildds with several disks and network
interfaces.
* xen/grant.c (NR_GRANT_PAGES): Increase from 4 to 8.
|
|
* i386/i386at/com.c (comintr): Fix computation of '@'.
|
|
* i386/i386at/com.c (comintr): Use 'A'-1 instead of '@'.
|
|
* i386/i386at/com.c (comintr): Invoke the debugger if ctrl-alt-d is
pressed.
* i386/i386at/com.h (kdb_kintr): Add declaration.
|
|
* i386/i386at/acpi.c (grub_machine_acpi_get_rsdpv2): Drop debugging
prints.
|
|
Since we need it to access some BIOS information, e.g. at ACPI shutdown. When
the kernel VM is not starting at 0, there is already nothing mapped there in
user tasks, anyway.
* i386/i386at/model_dep.c (machine_init) [VM_MIN_KERNEL_ADDRESS != 0]:
Do not call pmap_unmap_page_zero.
* i386/intel/pmap.c (pmap_unmap_page_zero): Warn that unmapping page
zero may break some BIOS functions.
|
|
|
|
|
|
This is a mostly verbatim copy of acpihalt.c from GRUB2 with a little
bit of glue code.
* i386/Makefrag.am (libkernel_a_SOURCES): Add the new files.
* i386/grub/acpi.h: Verbatim copy from GRUB2.
* i386/grub/compiler.h: Likewise.
* i386/grub/cpu/io.h: Likewise.
* i386/grub/cpu/time.h: Likewise.
* i386/grub/cpu/types.h: Likewise.
* i386/grub/err.h: Likewise.
* i386/grub/misc.h: Likewise.
* i386/grub/mm.h: Likewise.
* i386/grub/symbol.h: Likewise.
* i386/grub/time.h: Likewise.
* i386/grub/types.h: Likewise.
* i386/i386at/acpi.c: Likewise.
* i386/i386at/acpihalt.c: Likewise.
(grub_acpi_halt): Map physical addresses.
* i386/i386at/acpihalt.h: New file.
* i386/grub/glue.h: Some glue macros.
* i386/grub/i18n.h: Stub out i18n.
* i386/i386at/grub_glue.c: Some glue code.
* i386/i386at/model_dep.c (halt_all_cpus): Use grub_acpi_halt.
|
|
io_map_cached is like io_map, but reuses the old mapping if it is
applicable.
* i386/i386/io_map.c: Add io_map_cached.
|
|
* doc/mach.texi (Kernel Debugger Commands): Explain the floating point
flag.
|
|
As a convenience for the nice people using our debugger, remap some
keys to the readline-like shortcuts supported by dde.
* i386/i386at/kd.c (kdcnmaygetc): Remap some keys.
|
|
* i386/i386at/kd.c (key_map): Remove superfluous newlines so that
every entry fits into one line. This way line numbers can be used as
an index into the map.
|
|
* ddb/db_print.c (db_print_thread): Use db_thread_stat to format the
flags.
|
|
* ddb/db_print.c (db_print_task): Print task name if available.
* i386/i386/db_interface.c (db_task_name): Likewise.
* i386/i386/db_machdep.h (DB_GNUMACH_TASK_NAME): Remove unused definition.
|
|
* kern/taks.c (task_init): Set the name of the kernel task to 'gnumach'.
|
|
Previously, all net_rcv_msg-messages sent by net_deliver were
malformed. It never was a problem in practice, since the messages are
not complex and thus the kernel does not try to parse the message.
struct net_rcv_msg contains an additional field of type boolean_t.
This field has no associated type descriptor, so it must not be
included in the message.
* device/net_io.c (net_deliver): Account for the extra field in the
msgh_size calculation.
|
|
* i386/i386/xen.h (mb, rmb, wmb): Add memory clobber.
|
|
* i386/include/mach/i386/cthreads.h: Rewrite old-style #endif FOO
directives.
* include/device/tape_status.h: Likewise.
* include/mach/alert.h: Likewise.
* include/mach/boot.h: Likewise.
* include/mach/default_pager_types.defs: Likewise.
* include/mach/default_pager_types.h: Likewise.
* include/mach/multiboot.h: Likewise.
* include/mach/notify.defs: Likewise.
* include/mach_debug/pc_info.h: Likewise.
* kern/act.h: Likewise.
* kern/refcount.h: Likewise.
* kern/shuttle.h: Likewise.
|
|
In order to use MIG translation functions to lookup memory objects,
preprocessor macros have been introduced into the definition of
memory_object_t in 50cc5152.
The procedure definitions contain inlined type definitions in order to
change the type of the argument in question (i.e. to make it
polymorphic). The inline definitions however lack the destructor
function, leading to reference leaks when a reference is acquired in
the intran function.
* include/mach/memory_object.defs: Add the destructor functions to the
inlined type definitions.
|
|
* ddb/db_command.c (db_command_table): Add "halt" command.
* i386/i386/db_interface.h (db_halt_cpu): New declaration.
* i386/i386at/model_dep.c (db_halt_cpu): New function.
|
|
Currently, the size of struct vm_map is 68 bytes. By using a bit
field for the boolean flags, it can be made fit into a cache line.
* vm/vm_map.h (struct vm_map): Use a bit field for the boolean flags
wait_for_space and wiring_required.
|
|
Commit b6dab094 introduced a way to include the MIG-generated server
files for the machine specific interface in ipc_kobject.c.
This broke out-of-tree builds. Here, 'machine' is a symlink to
'../i386/i386', it points into the source tree. The MIG-generated
files however are put in the build tree in i386/i386.
* i386/i386/machine_routines.h (MACHINE_SERVER_HEADER): Fix path.
|
|
GNU MIG recently gained support for emitting x_server_routine
declarations in the generated server header file. Using this
declaration, the x_server_routine functions can be inlined into the
ipc_kobject_server function.
* kern/ipc_kobject.c: Include the MIG-generated server headers for the
machine-dependent interfaces.
(ipc_kobject_server): Drop the simple declaration of
MACHINE_SERVER_ROUTINE.
* i386/i386/machine_routines.h (MACHINE_SERVER_HEADER): New
definition.
|
|
Previously, the definition of the host_slab_info RPC was guarded with
MACH_VM_DEBUG, even though it is not at all concerned with the VM
subsystem. Furthermore, there was no "skip" directive for
host_slab_info.
The function host_slab_info is guarded with MACH_DEBUG. The server
for the RPCs in mach_debug.defs is only used if MACH_DEBUG is
defined. There is no need to guard host_slab_info.
* include/mach_debug/mach_debug.defs (host_slab_info): Unconditionally
include the RPC.
|
|
The task_set_name RPC introduced in 877a319c changed
include/mach/gnumach.defs to include mach_debug/mach_debug_types.defs.
Previously though, the debug headers were not installed.
* Makefrag.am: Install the mach_debug header files.
|
|
The number of priorities has been changed from 32 to 50 in
6a234201081156e6d5742e7eeabb68418b518fad.
* doc/mach.texi: Update accordingly.
|
|
* configure.ac (MIG): Error out if MiG was not found.
|
|
* kern/bootstrap.c (boot_script_task_create): Set the name of newly
created tasks.
|
|
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.
|
|
Make the intran, outtran and destructor functions mutable using
preprocessor macros. Make it possible to inject imports using the
DEVICE_IMPORTS macro. This way, userspace servers can provide their
own translation functions.
* include/device/device_types.defs: Honor DEVICE_IMPORTS.
(device_t): Make the translation mutable using preprocessor macros.
|
|
Make the intran, outtran and destructor functions mutable using
preprocessor macros. Make it possible to inject imports using the
NOTIFY_IMPORTS macro. This way, userspace servers can provide their
own translation functions.
* include/mach/notify.defs: Honor NOTIFY_IMPORTS.
(notify_port_t): Make the translation mutable using preprocessor macros.
|
|
Convert from K&R style function definitions to ANSI style
function definitions.
* ddb/db_access.c: Convert function prototypes from K&R to ANSI.
* ddb/db_aout.c: Likewise.
* ddb/db_break.c: Likewise.
* ddb/db_command.c: Likewise.
* ddb/db_cond.c: Likewise.
* ddb/db_examine.c: Likewise.
* ddb/db_expr.c: Likewise.
* ddb/db_ext_symtab.c: Likewise.
* ddb/db_input.c: Likewise.
* ddb/db_lex.c: Likewise.
* ddb/db_macro.c: Likewise.
* ddb/db_mp.c: Likewise.
* ddb/db_output.c: Likewise.
* ddb/db_print.c: Likewise.
* ddb/db_run.c: Likewise.
* ddb/db_sym.c: Likewise.
* ddb/db_task_thread.c: Likewise.
* ddb/db_trap.c: Likewise.
* ddb/db_variables.c: Likewise.
* ddb/db_watch.c: Likewise.
* device/blkio.c: Likewise.
* device/chario.c: Likewise.
* device/dev_lookup.c: Likewise.
* device/dev_name.c: Likewise.
* device/dev_pager.c: Likewise.
* device/ds_routines.c: Likewise.
* device/net_io.c: Likewise.
* device/subrs.c: Likewise.
* i386/i386/db_interface.c: Likewise.
* i386/i386/fpu.c: Likewise.
* i386/i386/io_map.c: Likewise.
* i386/i386/loose_ends.c: Likewise.
* i386/i386/mp_desc.c: Likewise.
* i386/i386/pcb.c: Likewise.
* i386/i386/phys.c: Likewise.
* i386/i386/trap.c: Likewise.
* i386/i386/user_ldt.c: Likewise.
* i386/i386at/com.c: Likewise.
* i386/i386at/kd.c: Likewise.
* i386/i386at/kd_event.c: Likewise.
* i386/i386at/kd_mouse.c: Likewise.
* i386/i386at/kd_queue.c: Likewise.
* i386/i386at/lpr.c: Likewise.
* i386/i386at/model_dep.c: Likewise.
* i386/i386at/rtc.c: Likewise.
* i386/intel/pmap.c: Likewise.
* i386/intel/read_fault.c: Likewise.
* ipc/ipc_entry.c: Likewise.
* ipc/ipc_hash.c: Likewise.
* ipc/ipc_kmsg.c: Likewise.
* ipc/ipc_marequest.c: Likewise.
* ipc/ipc_mqueue.c: Likewise.
* ipc/ipc_notify.c: Likewise.
* ipc/ipc_port.c: Likewise.
* ipc/ipc_right.c: Likewise.
* ipc/mach_debug.c: Likewise.
* ipc/mach_msg.c: Likewise.
* ipc/mach_port.c: Likewise.
* ipc/mach_rpc.c: Likewise.
* kern/act.c: Likewise.
* kern/exception.c: Likewise.
* kern/ipc_mig.c: Likewise.
* kern/ipc_tt.c: Likewise.
* kern/lock_mon.c: Likewise.
* kern/mach_clock.c: Likewise.
* kern/machine.c: Likewise.
* kern/printf.c: Likewise.
* kern/priority.c: Likewise.
* kern/startup.c: Likewise.
* kern/syscall_emulation.c: Likewise.
* kern/syscall_subr.c: Likewise.
* kern/thread_swap.c: Likewise.
* kern/time_stamp.c: Likewise.
* kern/timer.c: Likewise.
* kern/xpr.c: Likewise.
* vm/memory_object.c: Likewise.
* vm/vm_debug.c: Likewise.
* vm/vm_external.c: Likewise.
* vm/vm_fault.c: Likewise.
* vm/vm_kern.c: Likewise.
* vm/vm_map.c: Likewise.
* vm/vm_pageout.c: Likewise.
* vm/vm_user.c: Likewise.
|
|
* linux/dev/glue/block.c (device_set_status): Fix prototype.
|
|
* device/conf.h: Include <sys/types.h>, <mach/port.h>, <mach/vm_prot.h>.
Predefine struct io_req, io_req_t and io_return_t.
(dev_ops): Add explicit prototypes for d_open, d_close, d_read, d_write,
d_getstat, d_setstat, d_mmap, d_port_death.
(nulldev_open, nulldev_close, nulldev_read, nulldev_write,
nulldev_getstat, nulldev_setstat, nulldev_portdeath): Add prototypes.
(nomap): Fix prototype.
* device/dev_name.c (nulldev_open, nulldev_close, nulldev_read,
nulldev_write, nulldev_getstat, nulldev_setstat, nulldev_portdeath): New
functions.
(nomap): Fix prototype.
* device/ds_routines.c (dev_close): Pass 0 as flag parameter.
* device/kmsg.c (kmsgclose): Drop return value.
* device/kmsg.h (kmsgclose): Fix prototype.
* i386/i386at/com.c (comopen): Fix prototype.
(comclose): Fix prototype, drop return value.
(comread, comwrite): Fix prototype.
* i386/i386at/com.h (comopen, comclose, comread, comwrite): Fix
prototype.
* i386/i386at/conf.c (dev_ops): Use nulldev_open, nulldev_close,
nulldev_read, nulldev_write, nulldev_getstat, nulldev_setstat,
nulldev_portdeath where appropriate.
* i386/i386at/kd.c (kdclose, kdread, kdwrite, kdmmap): Fix prototype.
* i386/i386at/kd.h (kdclose, kdread, kdwrite, kdmmap): Likewise.
* i386/i386at/kd_event.c (kbdopen): Likewise.
* i386/i386at/kd_event.h (kbdopen): Likewise.
* i386/i386at/kd_mouse.c (mouseopen): Likewise.
* i386/i386at/kd_mouse.h (mouseopen): Likewise.
* i386/i386at/lpr.c (lpropen, lprclose, lprread, lprwrite): Likewise.
* i386/i386at/lpr.h (lpropen, lprclose, lprread, lprwrite): Likewise.
* i386/i386at/mem.c (memmmap): Likewise.
* i386/i386at/mem.h (memmmap): Likewise.
* i386/i386at/model_dep.c (timemmap): Likewise.
* i386/i386at/model_dep.h (timemmap): Likewise.
* kern/mach_clock.c (timeopen, timeclose): Likewise.
* kern/mach_clock.h: Include <sys/types.h>, predefine struct io_req and
io_req_t.
(timeopen, timeclose): Fix prototype.
|
|
CGA and MONO cards are more than hard to find nowadays, and some buggy BIOSes
claim running them nowadays...
* i386/i386at/kd.c (kd_xga_init): Do not handle CGA and MONO cases any
more, which thus default to EGA/VGA.
|
|
* i386/i386at/kd.c (kd_xga_init): Use CM_EGA_VGA behavior as default
case for unknown values of CMOS data.
|