Age | Commit message (Collapse) | Author |
|
Use strncpy instead of strcpy to copy the name of a symbol into the
symtab structure. Make sure that the string is properly terminated.
Found using Coverity.
* ddb/db_sym.c (db_add_symbol_table): Use strncpy instead of strcpy,
ensure string termination.
|
|
The slab allocator relies on the fact that kmem_cache_error does not
return. Previously, kmem_error was using printf. Use panic instead.
Found using the Clang Static Analyzer.
* kern/slab.c (kmem_error): Use panic instead of printf.
|
|
* kern/slab.c (kmem_cache_error): Use kmem_warn instead of kmem_error
to print the cache name and its address.
|
|
* i386/i386/fpu.c (fpu_set_state, fpu_get_state): Fix size of
`user_fp_regs' access.
|
|
* i386/i386at/kd.c (kdintr, kd_senddata, kd_sendcmd, kd_getgata,
kd_cmdreg_read, kd_cmdreg_write, kd_mouse_drain): Move semi colon of
empty while loops on a single line to make it more visible.
|
|
Found by coverity.
* i386/i386/fpu.c (fpu_set_state, fpu_get_state): Fix out of bound
`user_fp_regs' access.
|
|
* i386/i386at/kd_mouse.c (mouseopen): Fix typo.
|
|
|
|
Found by Coverity
* i386/i386at/kd_mouse.c (mouseopen): Add missing break.
|
|
* include/mach/debug.defs: New file.
* include/mach/debug.h: Likewise.
|
|
* ipc/mach_port.c (mach_port_destroy): Use the name of the task for
error messages.
(mach_port_deallocate): Likewise.
|
|
* kern/task.c (task_create): Initialize name with the address of the task.
* kern/task.h (TASK_NAME_SIZE): New definition.
(struct task): Add field name.
|
|
* kern/printf.c (snprintf): New function.
* kern/printf.h (snprintf): New declaration.
|
|
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.
|
|
It is not clear to me why the declaration was put there in the first
place. It is not used anywhere, and it conflicts with the declaration
generated by mig.
* vm/memory_object_proxy.h (memory_object_create_proxy): Remove declaration.
|
|
* kern/slab.h (struct kmem_cache): Align kmem_cache objects using
__cacheline_aligned.
|
|
* include/cache.h (__cacheline_aligned): This macro can be used to
align statically allocated objects so that they start at a cache line.
|
|
* kern/slab.h (struct kmem_cache): Reorder the fields so that all hot
fields are within the first cache line.
|
|
* kern/slab.h (KMEM_CACHE_NAME_SIZE): Explain the significance of the
chosen length.
|
|
The pattern is !x&y. An expression of this form is almost always
meaningless, because it combines a boolean operator with a bit
operator. In particular, if the rightmost bit of y is 0, the result
will always be 0.
Fixed using coccinelle.
// !x&y combines boolean negation with bitwise and
//
// Confidence: High
// Copyright: (C) Gilles Muller, Julia Lawall, EMN, DIKU. GPLv2.
// URL: http://www.emn.fr/x-info/coccinelle/rules/notand.html
// Options:
@@ expression E1,E2; @@
(
!E1 & !E2
|
- !E1 & E2
+ !(E1 & E2)
)
* linux/src/drivers/scsi/FlashPoint.c: Fix bit tests.
|
|
The pattern is !x&y. An expression of this form is almost always
meaningless, because it combines a boolean operator with a bit
operator. In particular, if the rightmost bit of y is 0, the result
will always be 0.
Fixed using coccinelle.
// !x&y combines boolean negation with bitwise and
//
// Confidence: High
// Copyright: (C) Gilles Muller, Julia Lawall, EMN, DIKU. GPLv2.
// URL: http://www.emn.fr/x-info/coccinelle/rules/notand.html
// Options:
@@ expression E; constant C; @@
(
!E & !C
|
- !E & C
+ !(E & C)
)
* linux/src/drivers/net/tlan.c: Fix bit tests.
* linux/src/drivers/scsi/AM53C974.c: Likewise.
* linux/src/drivers/scsi/FlashPoint.c: Likewise.
* linux/src/drivers/scsi/NCR5380.c: Likewise.
* linux/src/drivers/scsi/t128.c: Likewise.
|
|
Previously, the size of struct kmem_cache was 136 bytes, just eight
bytes larger than 128 bytes, which is typically two cache lines on
today's CPUs.
By reducing the size of the name field which holds a human-readable
description by eight bytes to 24 bytes, the struct kmem_cache can be
made fit into two cache lines. This change should not affect the
usefulness of this field. For reference, the length of the largest
hard-coded name is 17.
* kern/slab.h (KMEM_CACHE_NAME_SIZE): Define to 24.
|
|
* kern/task.h (struct task): Reduce the size of struct task by
2 * sizeof boolean_t by using a bit field for the boolean flags.
|
|
Previously, the bit field left 31 bits unused. By reducing the size
of wire_count by one bit, the size of the whole struct is reduced by
four bytes.
* vm/vm_page.h (struct vm_page): Reduce the size of wire_count to 15
bits.
|
|
* vm/vm_page.h (struct vm_page): Merge the two bit fields.
|
|
Apparently, the NS32000 was a 32-bit CPU from the 1990ies. The string
"ns32000" appears nowhere else in the source.
* vm/vm_page.h (struct vm_page): Remove NS32000-specific padding.
|
|
* i386/i386at/kd.c (kd_xga_init): Add start, stop variables, read them
from CRT registers, make sure the cursor is enabled and is not reduced
to 0, and write them back to CRT registers.
* i386/i386at/kd.h (C_START, C_STOP): New macros.
|
|
* i386/include/mach/i386/mach_i386_types.h (MACH_KERNEL): Add comments after else and endif.
|
|
* i386/i386/io_perm.h (_I386_IO_PERM_H_): Add comment after endif.
|
|
|
|
|
|
* kern/strings.c (strlen): Mark with attribute pure.
|
|
* ddb/db_watch.c (db_watchpoint_cmd) (db_option): Remove forward declaration.
|
|
Declare void argument lists that were not declared in the first
part of this patch and
* kern/sched_prim.h (recompute_priorities): Fix prototype.
* kern/startup.c (setup_main) (recompute_priorities): Fix call.
|
|
* i386/i386at/kd_event.h: Add missing includes.
|
|
* kern/eventcount.c (simpler_thread_setrun) (enqueue_head) (th): Avoid the cast.
* kern/thread.c (thread_halt_self) (enqueue_tail) (thread): Likewise.
* kern/thread_swap.c (thread_swapin) (enqueue_tail) (thread): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* device/ds_routines.c (device_write_trap) (copyin) (data): Cast to (void *). Argument is an address.
(device_write_trap) (copyin) (io_data): Don't cast.
(device_writev_trap) (copyin) (iovec, stack_iovec): Likewise.
(device_writev_trap) (copyin) (data, p): Cast to (void *). Arguments are addresses.
* kern/bootstrap.c (build_args_and_stack) (copyout) (arg_count, string_pos, zero): Don't cast.
* kern/ipc_mig.c (syscall_vm_map) (copyin, copyout) (addr, address): Likewise.
(syscall_vm_allocate) (copyin, copyout) (addr, address): Likewise.
(syscall_task_create) (copyout) (name, child_task): Likewise.
(syscall_mach_port_allocate) (copyout) (name, namep): Likewise.
* kern/time_stamp.c (copyout) (temp, tsp): Likewise.
|
|
Attribute noreturn is used irrespective of __GNUC__. Remove
unnecessary #ifdef.
* kern/sched_prim.h [__GNUC__]: Remove #ifdef.
|
|
* xen/console.h: Add missing includes.
|
|
* kern/lock.h (simple_lock_data_empty): Define.
(decl_simple_lock_data, simple_unlock): Likewise.
* kern/sched_prim.c (lock): Declare.
[MACH_SLOCKS]: Remove #ifs.
* kern/task.c (task_lock, task_unlock): Remove address operator.
|
|
* ddb/db_command.h (db_error): Mark with attribute noreturn.
* i386/i386/setjmp.h (_longjmp): Likewise.
|
|
* i386/i386/db_trace.c (db_lookup_i386_kreg) (kregp): Use (long *) instead of an (int *).
|
|
to unsigned
* device/dev_pager.c (device_pager_data_request_done) (memset) (io_residual): Cast to size_t instead to unsigned.
|