summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-01-09include: add new file for cache-related definitionsJustus Winter
* include/cache.h (__cacheline_aligned): This macro can be used to align statically allocated objects so that they start at a cache line.
2014-01-06kern: optimize the layout of struct kmem_cacheJustus Winter
* kern/slab.h (struct kmem_cache): Reorder the fields so that all hot fields are within the first cache line.
2014-01-05kern: explain the significance of the chosen lengthJustus Winter
* kern/slab.h (KMEM_CACHE_NAME_SIZE): Explain the significance of the chosen length.
2014-01-05linux: fix bit testsJustus Winter
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.
2014-01-05linux: fix bit testsJustus Winter
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.
2014-01-03kern: make struct kmem_cache fit into two cache linesJustus Winter
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.
2014-01-03kern: reduce the size of struct taskJustus Winter
* 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.
2014-01-03vm: reduce the size of struct vm_pageJustus Winter
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.
2014-01-03vm: merge the two bit fields in struct vm_pageJustus Winter
* vm/vm_page.h (struct vm_page): Merge the two bit fields.
2014-01-03vm: remove NS32000-specific padding from struct vm_pageJustus Winter
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.
2014-01-02Make sure cursor is initializedSamuel Thibault
* 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.
2014-01-01i386/include/mach/i386/mach_i386_types.h: add comments after else and endifMarin Ramesa
* i386/include/mach/i386/mach_i386_types.h (MACH_KERNEL): Add comments after else and endif.
2014-01-01Add comment after endifMarin Ramesa
* i386/i386/io_perm.h (_I386_IO_PERM_H_): Add comment after endif.
2013-12-20Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumachSamuel Thibault
2013-12-20Mark pure functions with attribute pureMarin Ramesa
2013-12-20kern/strings.c (strlen): mark with attribute pureMarin Ramesa
* kern/strings.c (strlen): Mark with attribute pure.
2013-12-20ddb/db_watch.c (db_watchpoint_cmd): remove forward declarationMarin Ramesa
* ddb/db_watch.c (db_watchpoint_cmd) (db_option): Remove forward declaration.
2013-12-20Declare void argument lists (part 2)Marin Ramesa
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.
2013-12-18i386: add missing includesJustus Winter
* i386/i386at/kd_event.h: Add missing includes.
2013-12-17kern: avoid the casts in enqueue_head() and enqueue_tail()Marin Ramesa
* 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.
2013-12-17Mark functions that don't return with attribute noreturnMarin Ramesa
2013-12-17vm: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17util: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17kern: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17ipc: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17i386: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17device: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-17Cleanup of the copyin() and copyout() callsMarin Ramesa
* 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.
2013-12-17kern/sched_prim.h: remove unnecessary __GNUC__ #ifdefMarin Ramesa
Attribute noreturn is used irrespective of __GNUC__. Remove unnecessary #ifdef. * kern/sched_prim.h [__GNUC__]: Remove #ifdef.
2013-12-17xen: add missing includesJustus Winter
* xen/console.h: Add missing includes.
2013-12-16kern: quiet GCC warnings about set but unused variablesMarin Ramesa
* 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.
2013-12-16Quiet GCC warning about uninitialized variableMarin Ramesa
* ddb/db_command.h (db_error): Mark with attribute noreturn. * i386/i386/setjmp.h (_longjmp): Likewise.
2013-12-15i386/i386/db_trace.c: use (long *) instead of an (int *)Marin Ramesa
* i386/i386/db_trace.c (db_lookup_i386_kreg) (kregp): Use (long *) instead of an (int *).
2013-12-15device/dev_pager.c (device_pager_data_request_done): cast to size_t instead ↵Marin Ramesa
to unsigned * device/dev_pager.c (device_pager_data_request_done) (memset) (io_residual): Cast to size_t instead to unsigned.
2013-12-15device/dev_pager.c: remove unnecessary castsMarin Ramesa
Variable pager is already of ipc_port_t type. * device/dev_pager.c: Remove unnecessary casts.
2013-12-15kern/sched_prim.c: avoid castsMarin Ramesa
Avoid the casts by passing the address of the links thread structure member to enqueue_tail(). * kern/sched_prim.c: Avoid casts.
2013-12-15ddb: qualify pointers whose dereferenced values are constant with constMarin Ramesa
2013-12-15Fix gcc signedness warningSamuel Thibault
Thanks Marin Ramesa and Richard Braun for investigating. * i386/i386at/kd.c (kdintr): Make `char_idx' and `max' unsigned. (kdstate2idx): Make function take and return unsigned ints for the state. * i386/i386at/kd.h (kdstate2idx): Likewise.
2013-12-15Type definitionMarin Ramesa
* i386/i386/ast_check.c (init_ast_check, cause_ast_check): Define return type. * i386/i386/pic.c (intnull, prtnull): Define argument types. * i386/i386at/com.c (compr_addr): Likewise. (compr): Likewise. (compr_addr): Fix printf format. * i386/i386at/kd.c (kd_cmdreg_write, kd_kbd_magic): Define argument types. * i386/i386at/kd_mouse.c (init_mouse_hw): Likewise. * ipc/mach_port.c (sact_count): Define return type. * ipc/mach_rpc.c (mach_port_rpc_sig): Define argument types. * kern/act.c (dump_act): Define return type. * kern/lock_mon.c (simple_lock, simple_lock_try, simple_unlock, lip, lock_info_sort, lock_info_clear, print_lock_info): Define return type. (time_lock): Define return type and argument type. * kern/timer.c (time_trap_uexit): Define argument type.
2013-12-15ddb/db_expr.c (db_mult_expr): initialize lhsMarin Ramesa
Initialize lhs to zero to avoid uninitialized usage in db_unary(). * ddb/db_expr.c (db_mult_expr) (lhs): Initialize to zero.
2013-12-15ddb/db_break.c (db_delete_cmd): remove unnecessary initializationMarin Ramesa
Now that we have returns there are no more warnings from GCC about uninitialized variable. Remove unnecessary initialization of variable bkpt. * ddb/db_break.c (db_delete_cmd) (bkpt): Remove unnecessary initialization.
2013-12-15ddb/db_break.c (db_find_breakpoint_here): remove unnecessary castsMarin Ramesa
Variable addr and member address are already of db_addr_t type which is type defined as vm_offset_t. * ddb/db_break.c (db_find_breakpoint_here) (DB_PHYS_EQ) (addr, address): Remove unecessary casts.
2013-12-15vm/vm_resident.c (vm_page_print): remove unnecessary castsMarin Ramesa
Members offset and phys_addr are of vm_offset_t types. * vm/vm_resident.c (vm_page_print) (offset, phys_addr): Remove unnecessary casts.
2013-12-15vm/vm_kern.c (kmem_submap): remove unnecessary castMarin Ramesa
The return value from vm_map_min() is already of vm_offset_t type. * vm/vm_kern.c (kmem_submap) (addr): Remove unnecessary cast.
2013-12-15i386/i386/ldt.c: remove forward declarationMarin Ramesa
* i386/i386/ldt.c (syscall): Remove forward declaration. Include locore.h. * i386/i386/locore.h (syscall): Add prototype.
2013-12-15kern/mach_clock.c: update commentMarin Ramesa
This is mach_clock.c, not clock_prim.c. * kern/mach_clock.c: Update comment.
2013-12-15Declare void argument listsMarin Ramesa
2013-12-11i386/i386at/kd_mouse.c (kd_mouse_open): remove forward declarationMarin Ramesa
* i386/i386at/kd_mouse.c (kd_mouse_open) (kdintr): Remove forward declaration.
2013-12-11i386/i386at/kd.c (kdinit): remove forward declarationMarin Ramesa
* i386/i386at/kd.c (kdinit) (kd_xga_init): Remove forward declaration. * i386/i386at/kd.h (kd_xga_init): Add prototype.
2013-12-11i386/i386at/kd.c (kdmmap): remove unnecessary castMarin Ramesa
Variable off is already an unsigned int. * i386/i386at/kd.c (kdmmap) (off): Remove unnecessary cast.