diff options
Diffstat (limited to 'debian/patches/0002-xxx-kern-import-macros.h-from-x15.patch')
-rw-r--r-- | debian/patches/0002-xxx-kern-import-macros.h-from-x15.patch | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/debian/patches/0002-xxx-kern-import-macros.h-from-x15.patch b/debian/patches/0002-xxx-kern-import-macros.h-from-x15.patch new file mode 100644 index 0000000..ae89b34 --- /dev/null +++ b/debian/patches/0002-xxx-kern-import-macros.h-from-x15.patch @@ -0,0 +1,563 @@ +From 63b135f09aab22fe90d9c02b2ea5bbdfd93a55ce Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Tue, 31 Mar 2015 12:57:05 +0200 +Subject: [PATCH gnumach 02/10] xxx kern: import `macros.h' from x15 + +Import the macro definitions from the x15 kernel project, and replace +all similar definitions littered all over the place with it. + +Importing this file will make importing code from the x15 kernel +easier. We are already using the red-black tree implementation and +the slab allocator from it, and we will import even more code in the +near future. + +* Makefrag.am (libkernel_a_SOURCES): Add new file. +* kern/list.h: Do not define `structof', include `macros.h' instead. +* kern/rbtree.h: Likewise. +* kern/slab.c: Do not define `ARRAY_SIZE', include `macros.h' instead. +* i386/grub/misc.h: Likewise. +* kern/macros.h: New file. + +xxx moar files +--- + Makefrag.am | 2 +- + device/dev_master.h | 2 +- + device/io_req.h | 2 +- + device/net_io.h | 2 +- + i386/grub/misc.h | 2 +- + i386/i386/xen.h | 1 - + i386/intel/read_fault.c | 2 +- + ipc/ipc_kmsg.h | 2 +- + ipc/ipc_mqueue.h | 2 +- + ipc/ipc_object.h | 2 +- + ipc/ipc_port.h | 2 +- + ipc/ipc_space.h | 2 +- + kern/assert.h | 2 +- + kern/ast.h | 2 +- + kern/list.h | 4 +-- + kern/macro_help.h | 50 ---------------------------------- + kern/macros.h | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ + kern/pc_sample.h | 2 +- + kern/rbtree.h | 5 +--- + kern/refcount.h | 2 +- + kern/sched.h | 2 +- + kern/sched_prim.c | 2 +- + kern/slab.c | 2 +- + kern/timer.c | 2 +- + kern/timer.h | 2 +- + vm/vm_fault.c | 2 +- + vm/vm_map.h | 2 +- + vm/vm_object.h | 2 +- + vm/vm_page.h | 2 +- + 29 files changed, 98 insertions(+), 82 deletions(-) + delete mode 100644 kern/macro_help.h + create mode 100644 kern/macros.h + +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..bf00375 100644 +--- a/i386/i386/xen.h ++++ b/i386/i386/xen.h +@@ -32,7 +32,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/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 +diff --git a/kern/ast.h b/kern/ast.h +index 4c28b1e..7d472be 100644 +--- a/kern/ast.h ++++ b/kern/ast.h +@@ -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 +-- +2.1.4 + |