Age | Commit message (Collapse) | Author |
|
In addition to physical pages, the slab allocator also consumes kernel
virtual memory, so reclaim pages on failure to allocate from a kernel map.
This method isn't foolproof but helps alleviate fragmentation.
* vm/vm_kern.c (kmem_alloc): Call slab_collect and retry allocation
once on failure.
(kmem_realloc): Likewise.
(kmem_alloc_wired): Likewise.
(kmem_alloc_wired): Likewise.
(kmem_alloc_aligned): Likewise.
|
|
* vm/vm_kern.c (projected_buffer_deallocate): Look for `map' being NULL
or kernel_map before locking it.
|
|
The return value from vm_map_min() is already of vm_offset_t type.
* vm/vm_kern.c (kmem_submap) (addr): Remove unnecessary cast.
|
|
* vm/vm_kern.c (kmem_alloc_pages, kmem_remap_pages): Remove forward declarations.
* vm/vm_kern.h (kmem_alloc_pages, kmem_remap_pages): Add prototypes.
|
|
* vm/vm_kern.c: Remove register qualifiers.
|
|
Unlike the zone allocator, the slab code can't be fed with an initial
chunk of memory. Some VM objects used early during startup now have to
be statically allocated, and kernel map entries need a special path
to avoid recursion when being allocated.
* vm/vm_map.c (vm_submap_object_store): New variable.
(vm_submap_object): Point to vm_submap_object_store.
(kentry_data_size): Initialize to arbitrary value.
(kentry_count): Remove variable.
(kentry_pagealloc): New function.
(vm_map_setup): Likewise.
(vm_map_create): Replace initialization with a call to vm_map_setup().
* vm/vm_map.h (vm_map_setup): New prototype.
* vm/vm_kern.c (kernel_map_store): New variable.
(kernel_map): Point to kernel_map_store.
(kmem_suballoc): Remove function. Replaced with...
(kmem_submap): New function.
(kmem_init): Call vm_map_setup() instead of vm_map_create().
* vm/vm_kern.h (kmem_suballoc): Remove prototype.
(kmem_submap): New prototype.
* vm/vm_object.c (kernel_object_store): New variable.
(kernel_object): Point to kernel_object_store.
(vm_object_template): Change type from vm_object_t to struct vm_object.
(_vm_object_setup): New function.
(_vm_object_allocate): Replace initialization with a call to
_vm_object_setup().
(vm_object_bootstrap): Don't allocate vm_object_template, and use it as
a structure instead of a pointer. Initialize kernel_object and
vm_submap_object with _vm_object_setup() instead of
_vm_object_allocate().
* vm/vm_resident.c (vm_page_bootstrap): Don't initialize
kentry_data_size.
* device/ds_routines.c (device_io_map_store): New variable.
(device_io_map): Point to device_io_map_store.
(mach_device_init): Call kmem_submap() instead of kmem_suballoc().
* ipc/ipc_init.c (ipc_kernel_map_store): New variable.
(ipc_kernel_map): Point to ipc_kernel_map_store.
|
|
* kern/printf.h (printf_once): New macro.
* ipc/mach_port.c (mach_port_names, mach_port_get_set_status): Warn when
returning KERN_RESOURCE_SHORTAGE.
* vm/vm_kern.c: Include printf.h.
(kmem_alloc, kmem_realloc, kmem_alloc_wired, kmem_alloc_aligned,
kmem_alloc_pageable): Warn when failing.
* vm/vm_resident.c (vm_page_grab_contiguous_pages): Warn when returning
KERN_RESOURCE_SHORTAGE.
|
|
* device/ds_routines.h (device_reference, device_deallocate): Add
function prototypes.
* kern/task.c (task_create): Moved unused i variable inside FAST_TAS.
* vm/vm_map.h (vm_map_copy_page_discard): Add function prototype.
* vm/vm_kern.c (projected_buffer_deallocate): Give &map->hdr
instead of map to _vm_map_clip_start and _vm_map_clip_end functions.
2008-12-01 Samuel Thibault <samuel.thibault@ens-lyon.org>
* device/device_emul.h (device_emulation_ops): Turn back reference,
dealloc, dev_to_port, write_trap and writev_trap into taking a void*,
as they do not always take a mach_device_t.
* device/ds_routines.c (mach_device_emulation_ops): Cast
mach_device_reference, mach_device_deallocate,
mach_convert_device_to_port, device_write_trap and device_writev_trap
to (void*) to make them accept a void* argument.
* linux/pcmcia-cs/glue/ds.c (device_deallocate): Rename function
into...
(ds_device_deallocate): ... this.
(dev_to_port): Call ds_device_deallocate instead of device_deallocate.
(linux_pcmcia_emulation_ops): Use ds_device_deallocate instead of
device_deallocate, cast mach_device_reference to (void*) to make it
accept a void* argument.
|
|
* linux/pcmcia-cs/glue/wireless_glue.h (schedule_task): Add parameter
to Debugger() call.
* kern/lock_mon.c (retry_simple_lock, retry_bit_lock): Likewise.
* kern/machine.c (Debugger): Remove declaration.
2008-07-19 Barry deFreese <bddebian@comcast.net>
* device/dev_hdr.h (dev_name_lookup, dev_set_indirection): Add
prototypes.
* device/dev_pager.c: Include <vm/vm_user.h>.
* device/ds_routines.c: Likewise.
* device/subrs.c: Likewise.
* device/device_init.c: Include <device/tty.h>.
* device/ds_routines.h (iowait): Add prototype.
* device/net_io.h (net_kmsg_collect): Add prototype.
* device/net_io.c (hash_ent_remove, net_free_dead_infp,
net_free_dead_entp, bpf_validate, bpf_eq, net_add_q_info,
bpf_match): Add forward declarations.
* device/subrs.h: New header.
* i386/i386/fpu.h: Include <sys/types.h>.
Change <i386/thread.h> include to <kern/thread.h>.
(fp_save, fp_load, fp_free, fpu_module_init, fpu_set_state,
fpu_get_state, fpnoextflt, fpextovrflt, fpexterrflt, init_fpu):
Add prototypes.
* i386/i386/gdt.h (gdt_init): Add prototype.
* i386/i386/io_map.c: Include <vm/pmap.h>.
* vm/vm_kern.c: Likewise.
* i386/i386/ktss.h (ktss_init): Add prototype.
* i386/i386/ldt.h (ldt_init): Add prototype.
* i386/i386/loose_ends.h: New header.
* i386/i386/loose_ends.c (delay): Complete prototype.
* i386/i386/model_dep.h (startrtclock): Add prototype.
* i386/i386/pcb.h (load_context, stack_attach, stack_detach,
switch_ktss): Add prototypes.
* i386/i386/pic.h (form_pic_mask, picinit): Add prototypes.
* i386/i386/pit.c: Include <i386/pic.h>.
* i386/i386at/kd_mouse.c: Likewise.
* i386/i386/pit.h (clkstart): Add prototype.
* i386/i386/trap.c: Include <i386/fpu.h>, <intel/read_fault.h>,
<vm/vm_fault.h>.
* i386/i386/trap.h (interrupted_pc): Add prototype.
* i386/i386/user_ldt.c: Include <i386/pcb.h>.
* i386/i386at/autoconf.h: New header.
* i386/i386at/com.h: New header.
* i386/i386at/com.c: Include <i386at/autoconf.h>, <i386at/com.h>.
* i386/i386at/idt.h (idt_init): Add prototype.
* i386/i386at/int_init.h: New header.
* i386/i386at/kd.c: Include <i386/loose_ends.h>.
* kern/debug.c: Likewise.
* i386/i386at/kd_event.c: Include <device/ds_routines.h>.
* i386/i386at/kd_mouse.c: Likewise.
* i386/i386at/kd_mouse.c: Include <device/subrs.h>, <i386at/com.h>.
* i386/i386at/lpr.c: Include <i386at/autoconf.h>
* i386/i386at/model_dep.c: Include: <i386/fpu.h>, <i386/gdt.h>,
<i386/ktss.h>, <i386/ldt.h>, <i386/pic.h>, <i386/pit.h>,
<i386at/autoconf.h>, <i386at/idt.h>, <i386at/int_init.h>,
<i386at/kd.h>, <i386at/rtc.h>.
* i386/i386at/rtc.h (readtodc, writetodc): Add prototypes.
* i386/intel/pmap.h: Include <mach/vm_prot.h>.
(pmap_bootstrap, pmap_unmap_page_zero, pmap_zero_page, pmap_copy_page,
kvtophys): Add prototypes.
* i386/intel/read_fault.h: New header.
* kern/ast.h (ast_init, ast_check): Add prototypes.
* kern/debug.c (Debugger): Move prototype to...
* kern/debug.h (Debugger): ... here.
* kern/eventcount.h (evc_notify_abort): Add prototype.
* kern/ipc_mig.c: Include <kern/syscall_subr.h>, <kern/ipc_tt.h>,
<device/ds_routines.h>
* kern/ipc_mig.h: New header.
* kern/ipc_tt.h (mach_reply_port): Add prototype.
* kern/machine.h: New header.
* kern/processor.h (pset_sys_bootstrap): Move prototype outside of
MACH_HOST check.
* kern/sched_prim.h (thread_bind, compute_priority,
thread_timeout_setup): Add prototypes.
* kern/startup.c: Include <kern/machine.h>, <machine/pcb.h>.
* kern/syscall_subr.c: Include <kern/syscall_subr.h>.
(thread_depress_abort): Remove prototype.
* kern/syscall_subr.h: Include <sys/types.h>, <mach/mach_types.h>
(thread_depress_abort): Add prototype.
* kern/syscall_sw.c: Include: <kern/debug.h>.
* kern/task.h (consider_task_collect): Add prototype.
* kern/thread.c: Include <kern/eventcount.h>, <kern/ipc_mig.h>,
<kern/syscall_subr.h>.
* kern/thread.h (stack_collect): Add prototype.
* linux/pcmcia-cs/glue/pcmcia_glue.h (Debugger): Remove prototype.
* util/putchar.c: Include <device/cons.h>.
* util/putchar.h: New header.
* util/puts.c: Include <device/cons.h>, <util/putchar.h>.
* vm/memory_object.c: Include <vm/vm_map.h>.
(memory_object_data_provided): Move function below
memory_object_data_supply definition.
* vm/vm_init.c: Include <vm/vm_fault.h>.
* vm/vm_kern.h (projected_buffer_in_range): Add prototype.
* vm/vm_map.c: Include <vm/pmap.h>, <vm/vm_resident.h>.
(vm_map_delete, vm_map_copyout_page_list, vm_map_copy_page_discard):
Add forward declaration.
* vm/vm_map.h (vm_map_copyin_object, vm_map_submap,
_vm_map_clip_start, _vm_map_clip_end): Add prototypes.
* vm/vm_pageout.c: Include <device/net_io.h>, <kern/task.h>,
<machine/locore.h>.
* vm/vm_resident.h: New header.
* vm/vm_user.c: Include <vm/vm_kern.h>.
* vm/pmap.h (pmap_pageable, pmap_map_bd): Add prototype.
|
|
* device/ds_routines.c: Include <machine/locore.h>
* ipc/ipc_kmsg.c: Likewise.
* kern/bootstrap.c: Likewise.
* kern/exception.c: Likewise.
* kern/ipc_mig.c: Likewise.
* kern/sched_prim.c: Likewise.
* kern/time_stamp.c: Likewise.
* vm/vm_kern.c: Likewise.
|
|
Fix a bunch of "unused variable" warnings.
* device/ds_routines.c (ds_device_open): Remove unused `namebuf'
variable.
* device/kmsg.c (kmsgread): Remove unused `err' variable.
* device/net_io.c (net_set_filter): Remove unused `j' variable.
* i386/i386/pcb.c (curr_gdt, curr_ktss): Artificially use parameter of
macro.
* i386/i386/pic.c (picinit): Remove unused `i' variable.
* i386/i386/pit.c (clkstart): Remove unused `flags' variable.
* i386/i386/trap.c (kernel_trap): Remove unused `exc' variable.
(user_trap): Remove unused `map' and `result' variables.
(v86_assist): Remove unused `size' variable.
* i386/i386at/i386at_ds_routines.c (ds_device_open): Remove unused
`dev' variable.
* i386/i386at/kd.c (kdintr): Remove unused `o_pri' variable.
(kdcngetc): Remove unused `i' variable.
* i386/i386at/kd_event.c (kbdgetstat, kbdsetstat): Remove unused
`result' variable.
* i386/i386at/kd_mouse.c (mousegetstat): Likewise.
* i386/i386at/lpr.c (lprattach): Remove unused `tp' variable.
(lprsetstat): Remove unused `dev_addr' and `s' variables.
* i386/intel/pmap.c (pmap_bootstrap): Remove unused `pteva' variable.
* ipc/ipc_kmsg.c (ipc_kmsg_copyin_body): Remove unused `mr' variable.
* kern/bootstrap.c (boot_script_exec_cmd): Remove unused
`boot_exec_info' and `user_map' variables.
* vm/vm_kern.c (projected_buffer_map): Remove unused `object'
variable.
|
|
Put "for panic()" in ChangeLog, not in source code.
|
|
[task #5726 --- ``GCC built-in functions'']
* include/printf.h: Move file...
* kern/printf.h: ... here.
* kern/debug.h (panic_init, panic): Add prototypes.
* chips/busses.c: Don't include `printf.h', include `kern/printf.h'
and `kern/debug.h'.
* ddb/db_command.c: Likewise.
* ddb/db_cond.c: Likewise.
* ddb/db_output.c: Likewise.
* device/cirbuf.c: Likewise.
* device/cons.c: Likewise.
* device/dev_name.c: Likewise.
* device/dev_pager.c: Likewise.
* device/device_init.c: Likewise.
* device/dk_label.c: Likewise.
* device/ds_routines.c: Likewise.
* device/net_io.c: Likewise.
* device/subrs.c: Likewise.
* i386/i386/debug_i386.c: Likewise.
* i386/i386/fpe_linkage.c: Likewise.
* i386/i386/fpu.c: Likewise.
* i386/i386/io_map.c: Likewise.
* i386/i386/kttd_interface.c: Likewise.
* i386/i386/mp_desc.c: Likewise.
* i386/i386/pcb.c: Likewise.
* i386/i386/pic.c: Likewise.
* i386/i386/trap.c: Likewise.
* i386/i386at/autoconf.c: Likewise.
* i386/i386at/com.c: Likewise.
* i386/i386at/i386at_ds_routines.c: Likewise.
* i386/i386at/kd.c: Likewise.
* i386/i386at/kd_event.c: Likewise.
* i386/i386at/kd_mouse.c: Likewise.
* i386/i386at/lpr.c: Likewise.
* i386/i386at/model_dep.c: Likewise.
* i386/intel/pmap.c: Likewise.
* ipc/ipc_entry.c: Likewise.
* ipc/ipc_hash.c: Likewise.
* ipc/ipc_kmsg.c: Likewise.
* ipc/ipc_mqueue.c: Likewise.
* ipc/ipc_notify.c: Likewise.
* ipc/ipc_object.c: Likewise.
* ipc/ipc_port.c: Likewise.
* ipc/ipc_pset.c: Likewise.
* ipc/ipc_right.c: Likewise.
* ipc/mach_msg.c: Likewise.
* ipc/mach_port.c: Likewise.
* ipc/mach_rpc.c: Likewise.
* kern/act.c: Likewise.
* kern/ast.c: Likewise.
* kern/bootstrap.c: Likewise.
* kern/debug.c: Likewise.
* kern/eventcount.c: Likewise.
* kern/exception.c: Likewise.
* kern/host.c: Likewise.
* kern/ipc_host.c: Likewise.
* kern/ipc_kobject.c: Likewise.
* kern/ipc_mig.c: Likewise.
* kern/ipc_sched.c: Likewise.
* kern/ipc_tt.c: Likewise.
* kern/kalloc.c: Likewise.
* kern/lock.c: Likewise.
* kern/mach_clock.c: Likewise.
* kern/machine.c: Likewise.
* kern/pc_sample.c: Likewise.
* kern/printf.c: Likewise.
* kern/processor.c: Likewise.
* kern/sched_prim.c: Likewise.
* kern/server_loop.ch: Likewise.
* kern/startup.c: Likewise.
* kern/task.c: Likewise.
* kern/thread.c: Likewise.
* kern/thread_swap.c: Likewise.
* kern/xpr.c: Likewise.
* kern/zalloc.c: Likewise.
* vm/memory_object.c: Likewise.
* vm/vm_debug.c: Likewise.
* vm/vm_fault.c: Likewise.
* vm/vm_kern.c: Likewise.
* vm/vm_map.c: Likewise.
* vm/vm_object.c: Likewise.
* vm/vm_object.h: Likewise.
* vm/vm_pageout.c: Likewise.
* vm/vm_resident.c: Likewise.
|
|
memcpy/memset cleanup.
* include/string.h: New file.
* include/mach/mig_support.h: Include `string.h'.
[MACH_KERNEL] (bcopy): Remove extern declaration.
[MACH_KERNEL] (memcpy): Remove macro.
* device/cirbuf.c: Include `string.h'.
(q_to_b, b_to_q): Replace bcopy() with memcpy() and bzero() with
memset(), clean memcpy() and memset() invocation.
* device/cons.c (cnputc): Likewise.
* device/dev_pager.c (device_pager_data_request_done): Likewise.
* device/ds_routines.c (device_write_get, ds_read_done): Likewise.
* device/kmsg.c: Likewise.
* device/net_io.c (net_filter, net_set_filter, net_getstat): Likewise.
* i386/i386/fpu.c (fpu_set_state, fpu_get_state) fp_load)
(fp_state_alloc): Likewise.
* i386/i386/iopb.c (io_tss_init, i386_io_port_list): Likewise.
* i386/i386/mp_desc.c (mp_desc_init): Likewise.
* i386/i386/pcb.c (pcb_init, thread_setstatus)
(thread_getstatus): Likewise.
* i386/i386/phys.c (pmap_zero_page, pmap_copy_page, copy_to_phys)
(copy_from_phys): Likewise.
* i386/i386/trap.c (v86_assist): Likewise.
* i386/i386/user_ldt.c (i386_set_ldt, i386_get_ldt): Likewise.
* i386/i386at/immc.c (immc_cnputc): Likewise.
* i386/i386at/kd_event.c (X_kdb_enter_init, X_kdb_exit_init): Likewise.
* i386/intel/pmap.c (pmap_init, pmap_page_table_page_alloc)
(pmap_create): Likewise.
* ipc/ipc_entry.c (ipc_entry_grow_table): Likewise.
* ipc/ipc_kmsg.c (ipc_kmsg_get_from_kernel)
(ipc_kmsg_put_to_kernel): Likewise.
* ipc/ipc_object.c (ipc_object_alloc, ipc_object_alloc_name): Likewise.
* ipc/ipc_port.c (ipc_port_dngrow): Likewise.
* ipc/ipc_space.c: Likewise.
* ipc/mach_debug.c (mach_port_space_info)
(mach_port_space_info): Likewise.
* kern/act.c (act_create): Likewise.
* kern/boot_script.c: Likewise.
* kern/bootstrap.c: Likewise.
* kern/eventcount.c (evc_init): Likewise.
* kern/host.c (host_info, host_processor_sets): Likewise.
* kern/lock.c (lock_init): Likewise.
* kern/lock_mon.c (lock_info_clear): Likewise.
* kern/mach_clock.c (mapable_time_init): Likewise.
* kern/pc_sample.c (get_sampled_pcs): Likewise.
* kern/processor.c (processor_set_things): Likewise.
* kern/syscall_emulation.c (task_set_emulation_vector_internal)
(task_get_emulation_vector, xxx_task_get_emulation_vector): Likewise.
* kern/task.c (task_threads): Likewise.
* kern/xpr.c (xprbootstrap): Likewise.
* kern/zalloc.c (host_zone_info): Likewise.
* vm/vm_debug.c (mach_vm_object_pages): Likewise.
* vm/vm_kern.c (projected_buffer_allocate, copyinmap)
(copyoutmap): Likewise.
* vm/vm_object.c (vm_object_bootstrap): Likewise.
* vm/vm_resident.c (vm_page_grab_contiguous_pages): Likewise.
|
|
Cleanup of GNU Mach's build system. The system dependend parts are now
handeled by the respective Makefile and no longer by the top-level one.
* configure, i386/configure, i386/linux/configure, linux/configure:
Regenerated.
* Makefile.in: Various cleanups.
(mach/machine, mach_machine): Targets removed.
(AWK, CC, CFLAGS, CPPFLAGS, DEFINES, INCLUDES, INSTALL, INSTALL_DATA)
(INSTALL_PROGRAM, LD, MIG, MIGFLAGS, NM): Variables moved into
Makerules.in.
Do not include $(sysdep)/Makefrag anymore.
(all, check, clean, distclean, mostlyclean, maintainer-clean, install)
(install-headers, install-kernel): Recurse into the system dependend
subdirectory.
(check): Add a basic test using mbchk.
(clean, distclean): Be more explicit in what to delete.
($(systype)/%): New target.
(kernel.o): Incorporate the system dependend archive.
(installed-sysdep-headers-names, $(installed-sysdep-headers-names)):
Variable and target moved into the system dependend Makefile.in.
(install-headers, mkheaderdirs): Don't care for the system dependend
header files.
(%.symc, %.symc.o, %.h, %_user.c, %_interface.h, %_server.c): Targets
moved into Makerules.in.
Inclusion of dependency files: Likewise.
(%.migs_d, %.migu_d, %.migsh_d, %.miguh_d, make-deps, %.d): Likewise.
Include Makerules.
* Makerules.in: New file, mainly based on Makefile.in.
* configure.in: Do not substitute cross_compiling and not explicitly
substitute LDFLAGS.
Check for cpp, ranlib, ar and mbchk.
Care for the mach/machine symbolic link.
Add Makerules as a config file.
* i386/Makefile.in: Various cleanups.
Merge i386/Makefrag and the system dependent stuff from Makefile.in
into this file.
(all, check, install, install-headers, install-kernel): Recurse into
the system dependend subdirectory.
(sysdep.o): transformed to the new target sysdep.a.
(linux/linux.o): Target removed.
(clean, distclean): Be more explicit in what to delete.
(linux/%): New target.
(install-headers): Install the system dependend header files.
(mkheaderdirs): New target.
Include the top-level Makerules.
* i386/Makefrag: File removed.
* i386/Makerules.in: New file.
* i386/configure.in: Synchronize AC_INIT to the top-level definition.
Do not check for ld and make.
Add Makerules as a config file.
* i386/linux/Makefile.in: Various cleanups.
Replace linux-objs with objfiles.
(check, install, install-headers, install-kernel): New empty targets.
Don't care about linux-flags if no_deps is true.
Inclusion of dependency files removed and instead...
Include the top-level Makerules.
* i386/linux/Makerules.in: New file.
* i386/linux/configure.ac: Synchronize AC_INIT to the top-level
definition.
Do not check for gcc and ld.
Do not explicitly substitute LDFLAGS.
Add Makerules as a config file.
* linux/configure.in: Synchronize AC_INIT to the top-level definition.
Do not create directories using a dummy file.
* linux/dummy.in: File removed.
* ddb/db_access.h: Include <machine/vm_param.h> instead of
"vm_param.h".
* kern/bootstrap.c: Likewise.
* kern/thread.c: Likewise.
* vm/vm_kern.c: Likewise.
* vm/vm_object.c: Likewise.
* vm/vm_resident.c: Likewise.
|
|
|