linux: 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.
linux: 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 E1,E2; @@
(
  !E1 & !E2
|
- !E1 & E2
+ !(E1 & E2)
)

* linux/src/drivers/scsi/FlashPoint.c: Fix bit tests.
kern: explain the significance of the chosen length

* kern/slab.h (KMEM_CACHE_NAME_SIZE): Explain the significance of the
chosen length.
kern: optimize the layout of struct kmem_cache

* kern/slab.h (struct kmem_cache): Reorder the fields so that all hot
fields are within the first cache line.
include: add new file for cache-related definitions

* include/cache.h (__cacheline_aligned): This macro can be used to
align statically allocated objects so that they start at a cache line.
kern: align kmem_cache objects using __cacheline_aligned

* kern/slab.h (struct kmem_cache): Align kmem_cache objects using
__cacheline_aligned.
vm: remove the declaration of memory_object_create_proxy

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: include the mig-generated server headers in ipc_kobject.c

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.
kern: add snprintf

* kern/printf.c (snprintf): New function.
* kern/printf.h (snprintf): New declaration.
kern: add a name field to struct task

* 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.
ipc: use the name of the task for error messages

* ipc/mach_port.c (mach_port_destroy): Use the name of the task for
error messages.
(mach_port_deallocate): Likewise.
include: add a fixed-size string type for debugging purposes

* include/mach/debug.defs: New file.
* include/mach/debug.h: Likewise.
Add missing break

Found by Coverity

* i386/i386at/kd_mouse.c (mouseopen): Add missing break.
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/gnumach
Fix typo

* i386/i386at/kd_mouse.c (mouseopen): Fix typo.
Fix FPU state access

Found by coverity.

* i386/i386/fpu.c (fpu_set_state, fpu_get_state): Fix out of bound
`user_fp_regs' access.
Make empty while loops more prominent

* 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.
Fix FPU state copy size

* i386/i386/fpu.c (fpu_set_state, fpu_get_state): Fix size of
`user_fp_regs' access.
kern: use kmem_warn instead of kmem_error in kmem_cache_error

* kern/slab.c (kmem_cache_error): Use kmem_warn instead of kmem_error
to print the cache name and its address.
kern: make kmem_error panic

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.