diff options
-rw-r--r-- | Makefrag.am | 2 | ||||
-rw-r--r-- | device/dev_master.h | 2 | ||||
-rw-r--r-- | device/io_req.h | 2 | ||||
-rw-r--r-- | device/net_io.h | 2 | ||||
-rw-r--r-- | i386/grub/misc.h | 2 | ||||
-rw-r--r-- | i386/i386/xen.h | 2 | ||||
-rw-r--r-- | i386/intel/read_fault.c | 2 | ||||
-rw-r--r-- | ipc/ipc_kmsg.h | 2 | ||||
-rw-r--r-- | ipc/ipc_mqueue.h | 2 | ||||
-rw-r--r-- | ipc/ipc_object.h | 2 | ||||
-rw-r--r-- | ipc/ipc_port.h | 2 | ||||
-rw-r--r-- | ipc/ipc_space.h | 2 | ||||
-rw-r--r-- | ipc/ipc_splay.c | 2 | ||||
-rw-r--r-- | ipc/ipc_splay.h | 2 | ||||
-rw-r--r-- | kern/assert.h | 2 | ||||
-rw-r--r-- | kern/ast.h | 2 | ||||
-rw-r--r-- | kern/list.h | 4 | ||||
-rw-r--r-- | kern/macro_help.h | 50 | ||||
-rw-r--r-- | kern/macros.h | 72 | ||||
-rw-r--r-- | kern/pc_sample.h | 2 | ||||
-rw-r--r-- | kern/rbtree.h | 5 | ||||
-rw-r--r-- | kern/refcount.h | 2 | ||||
-rw-r--r-- | kern/sched.h | 2 | ||||
-rw-r--r-- | kern/sched_prim.c | 2 | ||||
-rw-r--r-- | kern/slab.c | 2 | ||||
-rw-r--r-- | kern/timer.c | 2 | ||||
-rw-r--r-- | kern/timer.h | 2 | ||||
-rw-r--r-- | vm/vm_fault.c | 2 | ||||
-rw-r--r-- | vm/vm_map.h | 2 | ||||
-rw-r--r-- | vm/vm_object.h | 2 | ||||
-rw-r--r-- | vm/vm_page.h | 2 |
31 files changed, 101 insertions, 84 deletions
diff --git a/Makefrag.am b/Makefrag.am index 9166143..9222ad2 100644 --- a/Makefrag.am +++ b/Makefrag.am @@ -171,7 +171,7 @@ libkernel_a_SOURCES += \ kern/mach_factor.h \ kern/machine.c \ kern/machine.h \ - kern/macro_help.h \ + kern/macros.h \ kern/pc_sample.c \ kern/pc_sample.h \ kern/printf.c \ diff --git a/device/dev_master.h b/device/dev_master.h index 6ad1152..70d4c63 100644 --- a/device/dev_master.h +++ b/device/dev_master.h @@ -37,7 +37,7 @@ #if NCPUS > 1 -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/cpu_number.h> #include <kern/sched_prim.h> #include <kern/thread.h> diff --git a/device/io_req.h b/device/io_req.h index 65e23e6..1ad4680 100644 --- a/device/io_req.h +++ b/device/io_req.h @@ -42,7 +42,7 @@ #include <device/device_types.h> #include <device/dev_hdr.h> -#include <kern/macro_help.h> +#include <kern/macros.h> /* * IO request element, queued on device for delayed replies. diff --git a/device/net_io.h b/device/net_io.h index f6de854..d4e24d4 100644 --- a/device/net_io.h +++ b/device/net_io.h @@ -38,7 +38,7 @@ #include <mach/machine/vm_types.h> #include <ipc/ipc_kmsg.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/lock.h> #include <kern/kalloc.h> diff --git a/i386/grub/misc.h b/i386/grub/misc.h index c6cd456..b71140a 100644 --- a/i386/grub/misc.h +++ b/i386/grub/misc.h @@ -21,6 +21,7 @@ #define GRUB_MISC_HEADER 1 #include <stdarg.h> +#include <kern/macros.h> #include <grub/types.h> #include <grub/symbol.h> #include <grub/err.h> @@ -32,7 +33,6 @@ #define ALIGN_UP_OVERHEAD(addr, align) ((-(addr)) & ((typeof (addr)) (align) - 1)) #define ALIGN_DOWN(addr, align) \ ((addr) & ~((typeof (addr)) align - 1)) -#define ARRAY_SIZE(array) (sizeof (array) / sizeof (array[0])) #define COMPILE_TIME_ASSERT(cond) switch (0) { case 1: case !(cond): ; } #define grub_dprintf(condition, ...) grub_real_dprintf(GRUB_FILE, __LINE__, condition, __VA_ARGS__) diff --git a/i386/i386/xen.h b/i386/i386/xen.h index 638d671..c681187 100644 --- a/i386/i386/xen.h +++ b/i386/i386/xen.h @@ -21,6 +21,7 @@ #ifdef MACH_XEN #ifndef __ASSEMBLER__ +#include <kern/macros.h> #include <kern/printf.h> #include <mach/machine/vm_types.h> #include <mach/vm_param.h> @@ -32,7 +33,6 @@ #include <xen/public/xen.h> /* TODO: this should be moved in appropriate non-Xen place. */ -#define barrier() __asm__ __volatile__ ("": : :"memory") #define mb() __asm__ __volatile__("lock; addl $0,0(%%esp)":::"memory") #define rmb() mb() #define wmb() mb() diff --git a/i386/intel/read_fault.c b/i386/intel/read_fault.c index 29f4439..4b1edce 100644 --- a/i386/intel/read_fault.c +++ b/i386/intel/read_fault.c @@ -31,7 +31,7 @@ #include <vm/vm_page.h> #include <vm/pmap.h> -#include <kern/macro_help.h> +#include <kern/macros.h> /* * Expansion of vm_fault for read fault in kernel mode. diff --git a/ipc/ipc_kmsg.h b/ipc/ipc_kmsg.h index 620785b..393c039 100644 --- a/ipc/ipc_kmsg.h +++ b/ipc/ipc_kmsg.h @@ -38,7 +38,7 @@ #include <mach/message.h> #include <kern/assert.h> #include <kern/cpu_number.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/kalloc.h> #include <ipc/ipc_marequest.h> #include <ipc/ipc_object.h> diff --git a/ipc/ipc_mqueue.h b/ipc/ipc_mqueue.h index f8a2f1e..2af5e02 100644 --- a/ipc/ipc_mqueue.h +++ b/ipc/ipc_mqueue.h @@ -37,7 +37,7 @@ #include <mach/message.h> #include <kern/assert.h> #include <kern/lock.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <ipc/ipc_kmsg_queue.h> #include <ipc/ipc_kmsg.h> #include <ipc/ipc_thread.h> diff --git a/ipc/ipc_object.h b/ipc/ipc_object.h index b83bb5a..be5bea7 100644 --- a/ipc/ipc_object.h +++ b/ipc/ipc_object.h @@ -38,7 +38,7 @@ #include <mach/message.h> #include <ipc/ipc_types.h> #include <kern/lock.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/slab.h> typedef unsigned int ipc_object_refs_t; diff --git a/ipc/ipc_port.h b/ipc/ipc_port.h index 6914c71..ade6967 100644 --- a/ipc/ipc_port.h +++ b/ipc/ipc_port.h @@ -43,7 +43,7 @@ #include <mach/kern_return.h> #include <mach/port.h> #include <kern/lock.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/ipc_kobject.h> #include <ipc/ipc_mqueue.h> #include <ipc/ipc_table.h> diff --git a/ipc/ipc_space.h b/ipc/ipc_space.h index c4683d2..3bd2f4d 100644 --- a/ipc/ipc_space.h +++ b/ipc/ipc_space.h @@ -42,7 +42,7 @@ #include <mach/boolean.h> #include <mach/kern_return.h> #include <mach/mach_types.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/lock.h> #include <kern/slab.h> #include <ipc/ipc_splay.h> diff --git a/ipc/ipc_splay.c b/ipc/ipc_splay.c index 6fb5bcb..062a69f 100644 --- a/ipc/ipc_splay.c +++ b/ipc/ipc_splay.c @@ -35,7 +35,7 @@ #include <mach/port.h> #include <kern/assert.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <ipc/ipc_entry.h> #include <ipc/ipc_splay.h> diff --git a/ipc/ipc_splay.h b/ipc/ipc_splay.h index d3316ef..42e5a80 100644 --- a/ipc/ipc_splay.h +++ b/ipc/ipc_splay.h @@ -38,7 +38,7 @@ #include <mach/port.h> #include <kern/assert.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <ipc/ipc_entry.h> typedef struct ipc_splay_tree { diff --git a/kern/assert.h b/kern/assert.h index bd2a8be..7b66d1b 100644 --- a/kern/assert.h +++ b/kern/assert.h @@ -29,7 +29,7 @@ /* assert.h 4.2 85/01/21 */ -#include <kern/macro_help.h> +#include <kern/macros.h> #ifndef NDEBUG #define MACH_ASSERT 1 @@ -41,7 +41,7 @@ */ #include "cpu_number.h" -#include <kern/macro_help.h> +#include <kern/macros.h> #include <machine/ast.h> /* diff --git a/kern/list.h b/kern/list.h index ad782a8..be92762 100644 --- a/kern/list.h +++ b/kern/list.h @@ -31,9 +31,7 @@ #include <stddef.h> #include <sys/types.h> - -#define structof(ptr, type, member) \ - ((type *)((char *)ptr - offsetof(type, member))) +#include <kern/macros.h> /* * Structure used as both head and node. diff --git a/kern/macro_help.h b/kern/macro_help.h deleted file mode 100644 index 7ce171f..0000000 --- a/kern/macro_help.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * File: kern/macro_help.h - * - * Provide help in making lint-free macro routines - * - */ - -#ifndef _KERN_MACRO_HELP_H_ -#define _KERN_MACRO_HELP_H_ - -#if !defined(MACRO_BEGIN) - -#include <mach/boolean.h> - -#define NEVER FALSE -#define ALWAYS TRUE - -#define MACRO_BEGIN ({ -#define MACRO_END }) - -#define MACRO_RETURN if (ALWAYS) return - -#endif /* !MACRO_BEGIN */ - -#endif /* _KERN_MACRO_HELP_H_ */ diff --git a/kern/macros.h b/kern/macros.h new file mode 100644 index 0000000..fb8dc5e --- /dev/null +++ b/kern/macros.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2009, 2010, 2013 Richard Braun. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * + * Helper macros. + */ + +#ifndef _KERN_MACROS_H +#define _KERN_MACROS_H + +#define MACRO_BEGIN ({ +#define MACRO_END }) +#define MACRO_RETURN if (1) return + +#define __QUOTE(x) #x +#define QUOTE(x) __QUOTE(x) + +#ifdef __ASSEMBLER__ +#define DECL_CONST(x, s) x +#else /* __ASSEMBLER__ */ +#define __DECL_CONST(x, s) x##s +#define DECL_CONST(x, s) __DECL_CONST(x, s) +#endif /* __ASSEMBLER__ */ + +#define STRLEN(x) (sizeof(x) - 1) +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#define DIV_CEIL(n, d) (((n) + (d) - 1) / (d)) + +#define P2ALIGNED(x, a) (((x) & ((a) - 1)) == 0) +#define ISP2(x) P2ALIGNED(x, x) +#define P2ALIGN(x, a) ((x) & -(a)) +#define P2ROUND(x, a) (-(-(x) & -(a))) +#define P2END(x, a) (-(~(x) & -(a))) + +#define structof(ptr, type, member) \ + ((type *)((char *)(ptr) - offsetof(type, member))) + +#define alignof(x) __alignof__(x) + +#define likely(expr) __builtin_expect(!!(expr), 1) +#define unlikely(expr) __builtin_expect(!!(expr), 0) + +#define barrier() asm volatile("" : : : "memory") + +#define __noreturn __attribute__((noreturn)) +#define __aligned(x) __attribute__((aligned(x))) +#define __always_inline inline __attribute__((always_inline)) +#define __section(x) __attribute__((section(x))) +#define __packed __attribute__((packed)) +#define __alias(x) __attribute__((alias(x))) + +#define __format_printf(fmt, args) \ + __attribute__((format(printf, fmt, args))) + +#endif /* _KERN_MACROS_H */ diff --git a/kern/pc_sample.h b/kern/pc_sample.h index 3c64068..4832cb9 100644 --- a/kern/pc_sample.h +++ b/kern/pc_sample.h @@ -49,7 +49,7 @@ #include <mach/pc_sample.h> #include <mach/machine/vm_types.h> #include <kern/kern_types.h> -#include <kern/macro_help.h> +#include <kern/macros.h> /* * Control structure for sampling, included in diff --git a/kern/rbtree.h b/kern/rbtree.h index 189a7fd..16ef273 100644 --- a/kern/rbtree.h +++ b/kern/rbtree.h @@ -31,12 +31,9 @@ #include <stddef.h> #include <kern/assert.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <sys/types.h> -#define structof(ptr, type, member) \ - ((type *)((char *)ptr - offsetof(type, member))) - /* * Indexes of the left and right nodes in the children array of a node. */ diff --git a/kern/refcount.h b/kern/refcount.h index 74204d6..f32feb8 100644 --- a/kern/refcount.h +++ b/kern/refcount.h @@ -27,7 +27,7 @@ #ifndef _KERN_REFCOUNT_H_ #define _KERN_REFCOUNT_H_ -#include <kern/macro_help.h> +#include <kern/macros.h> /* Unless the above include file specified otherwise, use the system-independent (unoptimized) atomic reference counter. */ diff --git a/kern/sched.h b/kern/sched.h index ea601c5..f82f9f5 100644 --- a/kern/sched.h +++ b/kern/sched.h @@ -38,7 +38,7 @@ #include <kern/queue.h> #include <kern/lock.h> #include <kern/kern_types.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #if MACH_FIXPRI #include <mach/policy.h> diff --git a/kern/sched_prim.c b/kern/sched_prim.c index d7792ae..e8f260e 100644 --- a/kern/sched_prim.c +++ b/kern/sched_prim.c @@ -44,7 +44,7 @@ #include <kern/lock.h> #include <kern/mach_clock.h> #include <kern/mach_factor.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/processor.h> #include <kern/queue.h> #include <kern/sched.h> diff --git a/kern/slab.c b/kern/slab.c index 19ebfed..60378b5 100644 --- a/kern/slab.c +++ b/kern/slab.c @@ -79,6 +79,7 @@ #include <string.h> #include <kern/assert.h> #include <kern/mach_clock.h> +#include <kern/macros.h> #include <kern/printf.h> #include <kern/slab.h> #include <kern/kalloc.h> @@ -96,7 +97,6 @@ /* * Utility macros. */ -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #define P2ALIGNED(x, a) (((x) & ((a) - 1)) == 0) #define ISP2(x) P2ALIGNED(x, x) #define P2ALIGN(x, a) ((x) & -(a)) diff --git a/kern/timer.c b/kern/timer.c index 6d6517e..79ada27 100644 --- a/kern/timer.c +++ b/kern/timer.c @@ -33,7 +33,7 @@ #include <kern/cpu_number.h> #include <kern/assert.h> -#include <kern/macro_help.h> +#include <kern/macros.h> diff --git a/kern/timer.h b/kern/timer.h index 57f017a..2f473cf 100644 --- a/kern/timer.h +++ b/kern/timer.h @@ -27,7 +27,7 @@ #ifndef _KERN_TIMER_H_ #define _KERN_TIMER_H_ -#include <kern/macro_help.h> +#include <kern/macros.h> #if STAT_TIME /* diff --git a/vm/vm_fault.c b/vm/vm_fault.c index 686156c..0fa4d6a 100644 --- a/vm/vm_fault.c +++ b/vm/vm_fault.c @@ -51,7 +51,7 @@ #include <mach/memory_object.h> #include <vm/memory_object_user.user.h> /* For memory_object_data_{request,unlock} */ -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/slab.h> #if MACH_PCSAMPLE diff --git a/vm/vm_map.h b/vm/vm_map.h index b8103eb..fc7730a 100644 --- a/vm/vm_map.h +++ b/vm/vm_map.h @@ -52,7 +52,7 @@ #include <vm/vm_types.h> #include <kern/lock.h> #include <kern/rbtree.h> -#include <kern/macro_help.h> +#include <kern/macros.h> /* TODO: make it dynamic */ #define KENTRY_DATA_SIZE (256*PAGE_SIZE) diff --git a/vm/vm_object.h b/vm/vm_object.h index 5c42f56..3bfc67a 100644 --- a/vm/vm_object.h +++ b/vm/vm_object.h @@ -45,7 +45,7 @@ #include <kern/lock.h> #include <kern/assert.h> #include <kern/debug.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <vm/pmap.h> #include <ipc/ipc_types.h> diff --git a/vm/vm_page.h b/vm/vm_page.h index 4fe1b41..e6a8c49 100644 --- a/vm/vm_page.h +++ b/vm/vm_page.h @@ -42,7 +42,7 @@ #include <kern/queue.h> #include <kern/lock.h> -#include <kern/macro_help.h> +#include <kern/macros.h> #include <kern/sched_prim.h> /* definitions of wait/wakeup */ #if MACH_VM_DEBUG |