Age | Commit message (Collapse) | Author |
|
Currently, `thread_collect_scan' does nothing because `pcb_collect' is
a nop. Its body is exempt from compilation by means of the
preprocessor.
This is unfortunate as it increases the risk of bitrot, and we still
need to pay the price of rate-limiting thread_collect_scan.
* kern/thread.c (thread_collect_scan): Drop #if 0 around the body.
* vm/vm_pageout.c (vm_pageout_scan): Do not call
`consider_thread_collect' and document why.
|
|
* vm/vm_resident.c: Fix typo.
|
|
* ipc/mach_port.c (mach_port_destroy): Simplify expression. Reword warning.
(mach_port_deallocate): Likewise.
(mach_port_mod_refs): Also warn about errors when using this function.
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
Signed-off-by: Stefan Weil <sw@weilnetz.de>
|
|
* i386/i386/trap.c (kernel_trap): When current_thread is null, assume that
we are in kernel land.
|
|
If a sequence number larger than the sample control sequence number is
supplied, `nsamples' becomes negative. Handle this gracefully.
* kern/pc_sample.c (get_sampled_pcs): Handle bogus sequence number.
|
|
* ipc/ipc_kmsg.h (ikm_mark_bogus): New macro.
(ipc_kmsg_rmqueue_first_macro): Use `ikm_mark_bogus'.
* ipc/ipc_kmsg.c (ipc_kmsg_rmqueue): Likewise.
|
|
The previous limit was 256 bytes. That seems a little crummy by
todays standards, and we are frequently sending bigger packets
(e.g. every RPC containing a string_t on Hurd).
Use the page size for IKM_SAVED_KMSG_SIZE to make sure the page is
pinned to a single processor.
* ipc/ipc_kmsg.h (IKM_SAVED_KMSG_SIZE): Define to `PAGE_SIZE'.
|
|
* i386/i386/spl.S (spl7): Just set curr_ipl and cli.
(splx) [MACH_KDB || MACH_TTD]: When curr_ipl is 7, make sure that IF is cleared.
(splx): When staying at ipl7, do not enable interrupts.
(spl) [MACH_KDB || MACH_TTD]: When curr_ipl is 7, make sure that IF is cleared.
(spl): When new ipl is 7, branch to spl7.
* i386/i386/locore.S (TIME_TRAP_UENTRY, TIME_TRAP_SENTRY): Save flags, and
restore them instead of blindly using sti.
|
|
* Makefrag.am (EXTRA_DIST): Add kern/task_notify.cli.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
* linux/dev/arch/i386/kernel/irq.c (init_IRQ): Properly mask 8 bits of
PIT counter.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
* 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].
|
|
doc/mach.texi (vm_map): Document that vm_map uses the address as a
starting hint even when anywhere is TRUE.
|
|
This reverts commit 5ae510e35c54009626999a88f0f1cb34d6dfc94f.
|
|
* include/device/device_types.defs (device_t): Add a payload-aware
intran mutator.
|
|
* include/mach/notify.defs (notify_port_t): Add a payload-aware intran
mutator.
|
|
* include/mach/mach_types.defs (memory_object_t): Add a payload-aware
intran mutator.
* include/mach/memory_object.defs: Likewise in the inlined type
declarations.
|
|
* Makefile.am (clib-routines.o): Refuse to link only when multiarch is
detected.
|
|
We don't have support for this yet.
* Makefile.am (clib-routines.o): Check for the presence of
__init_cpu_features, and in such case refuse to continue.
|
|
* ipc/ipc_port.h (ipc_port_flag_protected_payload,
ipc_port_flag_protected_payload_set,
ipc_port_flag_protected_payload_clear): Use static inline qualifier instead
of extern inline.
|
|
This reverts commit b28e05e203e0739fa5db59c5af378b29eea7a232.
|
|
Previously, the section `Inherited Ports' was commented out. This was
done, as the functionality was unused by the Hurd. The functions
`mach_ports_register' and `mach_ports_lookup' were never removed, and
are exposed to user space.
This patch brings the documentation back and adds a remark at the top,
that the section documents the original intentions for this interface.
I chose bringing back the documentation over removing the
functionality because I like to make use of it as a method for service
discovery that is deliberately orthogonal to the way the service
lookup is usually done in the Hurd. This can be used to implement
robust low-level debugging facilities.
* doc/mach.texi: Restore section `Inherited Ports'.
|
|
|
|
* ipc/ipc_kmsg.c (ipc_kmsg_copyout_header): If a protected payload is
set for the destination port, provide it in msgh_protected_payload.
* ipc/mach_msg.c (mach_msg_trap): Likewise in the fast paths.
* doc/mach.texi (Message Receive): Document message semantics with
protected payloads.
|
|
* include/mach/message.h: Define MACH_MSG_TYPE_PROTECTED_PAYLOAD.
(MACH_MSG_TYPE_LAST): Adjust accordingly.
* doc/mach.texi (Message Format): Document
MACH_MSG_TYPE_PROTECTED_PAYLOAD.
|
|
* include/mach/message.h (mach_msg_header_t): Add
msgh_protected_payload as a union with msgh_local_port.
* doc/mach.texi (Message Format): Document msgh_protected_payload.
|
|
* include/mach/mach_port.defs: Add mach_port_{set,clear}_protected_payload.
* ipc/mach_port.c: Implement mach_port_{set,clear}_protected_payload.
* doc/mach.texi (Receive Rights): Document
mach_port_{set,clear}_protected_payload.
|
|
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.
|