[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] Alle Zeilenumbrüche konvertiert
From ca84a46815ee9bff6fc539e2a845bad31a831c61 Mon Sep 17 00:00:00 2001
From: Christian klahn <christian.klahn@xxxxxxx>
Date: Mon, 14 Feb 2011 21:59:13 +0100
Subject: [PATCH] =?UTF-8?q?Die=20Zeilenumbr=C3=BCche=20in=20den=20Dateien=20vereinheitlicht?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Alle Dateien die CRLF benutzt haben ins Unix Format konvertiert
Signed-off-by: Christian Klahn <christian@Christian-PC.(none)>
---
src/kernel/include/bitops.h | 44 +-
src/kernel/include/console.h | 20 +-
src/kernel/include/cpu.h | 58 +-
src/kernel/include/debug.h | 62 +-
src/kernel/include/kernel.h | 14 +-
src/kernel/include/kprintf.h | 14 +-
src/kernel/include/multiboot.h | 378 ++++++------
src/kernel/include/tss.h | 98 ++--
src/kernel/include/vmm.h | 106 ++--
src/kernel/src/kernel.ld | 74 ++--
src/kernel/src/stubs.asm | 290 +++++-----
src/kernel2/include/console.h | 94 ++--
src/kernel2/include/debug.h | 112 ++--
src/kernel2/include/gdt.h | 88 ++--
src/kernel2/include/im.h | 128 ++--
src/kernel2/include/multiboot.h | 376 ++++++------
src/kernel2/include/smp.h | 86 ++--
src/kernel2/src/module.mk | 32 +-
src/kernel2/src/pv.c | 8 +-
src/lib/stdlibc/malloc.c | 44 +-
src/modules/include/wchar.h | 1176 ++++++++++++++++++------------------
src/modules/init/module.mk | 8 +-
src/modules/testlib/test_printf.c | 104 ++--
23 files changed, 1707 insertions(+), 1707 deletions(-)
diff --git a/src/kernel/include/bitops.h b/src/kernel/include/bitops.h
index 5f3e4e1..57734dd 100644
--- a/src/kernel/include/bitops.h
+++ b/src/kernel/include/bitops.h
@@ -1,22 +1,22 @@
-#ifndef BITOPS_H
-#define BITOPS_H
-
-/* Voraussetzung: Mindestens ein Bit von i muss gesetzt sein. */
-static inline unsigned int bit_scan_forward(unsigned int i)
-{
- unsigned int j;
-#if 0
- for(j = 0; j < 32; j++)
- {
- if(i & (1 << j))
- {
- return j;
- }
- }
-#else
- __asm__("bsfl %1, %0\n\t" : "=r"(j) : "g"(i));
- return j;
-#endif
-}
-
-#endif /* ndef BITOPS_H */
+#ifndef BITOPS_H
+#define BITOPS_H
+
+/* Voraussetzung: Mindestens ein Bit von i muss gesetzt sein. */
+static inline unsigned int bit_scan_forward(unsigned int i)
+{
+ unsigned int j;
+#if 0
+ for(j = 0; j < 32; j++)
+ {
+ if(i & (1 << j))
+ {
+ return j;
+ }
+ }
+#else
+ __asm__("bsfl %1, %0\n\t" : "=r"(j) : "g"(i));
+ return j;
+#endif
+}
+
+#endif /* ndef BITOPS_H */
diff --git a/src/kernel/include/console.h b/src/kernel/include/console.h
index 146e749..ea151c1 100644
--- a/src/kernel/include/console.h
+++ b/src/kernel/include/console.h
@@ -1,10 +1,10 @@
-#ifndef CONSOLE_H
-#define CONSOLE_H
-
-extern void con_putc(const char c); // Zeichen ausgeben ohne Auswertung der ANSI-Codes
-extern void con_putc_ansi(const char c); // Zeichen ausgeben mit Auswertung der ANSI-Codes
-extern void con_puts(const char * s); // Zeichenkette ausgeben mit Auswertung der ANSI-Codes
-extern void con_putsn(unsigned int n, const char * s); // wie con_puts, allerdings werden maximal n Bytes ausgewertet
-extern void con_flush_ansi_escape_code_sequence(void); // Zwischenspeicher leeren
-
-#endif /* ndef CONSOLE_H */
+#ifndef CONSOLE_H
+#define CONSOLE_H
+
+extern void con_putc(const char c); // Zeichen ausgeben ohne Auswertung der ANSI-Codes
+extern void con_putc_ansi(const char c); // Zeichen ausgeben mit Auswertung der ANSI-Codes
+extern void con_puts(const char * s); // Zeichenkette ausgeben mit Auswertung der ANSI-Codes
+extern void con_putsn(unsigned int n, const char * s); // wie con_puts, allerdings werden maximal n Bytes ausgewertet
+extern void con_flush_ansi_escape_code_sequence(void); // Zwischenspeicher leeren
+
+#endif /* ndef CONSOLE_H */
diff --git a/src/kernel/include/cpu.h b/src/kernel/include/cpu.h
index 7e02c04..c006d97 100644
--- a/src/kernel/include/cpu.h
+++ b/src/kernel/include/cpu.h
@@ -1,29 +1,29 @@
-#ifndef CPU_H
-#define CPU_H
-
-#include <stdint.h>
-
-#define CR0_PE 0x00000001 // Protection Enable
-#define CR0_PG 0x80000000 // Paging
-
-#define CR4_PSE 0x00000010 // Page Size Extensions
-
-// eflags register
-#define FL_TF 0x00000100 // Trap Flag
-#define FL_IF 0x00000200 // Interrupt Flag
-#define FL_IOPL0 0x00000000 // I/O Privilege Level 0
-#define FL_IOPL1 0x00001000 // I/O Privilege Level 1
-#define FL_IOPL2 0x00002000 // I/O Privilege Level 2
-#define FL_IOPL3 0x00003000 // I/O Privilege Level 3
-#define FL_NT 0x00004000 // Nested Task
-#define FL_RF 0x00010000 // Resume Flag
-#define FL_VM 0x00020000 // Virtual 8086 mode
-
-static inline uint32_t read_cr2(void)
-{
- uint32_t ret;
- __asm volatile ("mov %%cr2, %0" : "=r"(ret));
- return ret;
-}
-
-#endif /* ndef CPU_H */
+#ifndef CPU_H
+#define CPU_H
+
+#include <stdint.h>
+
+#define CR0_PE 0x00000001 // Protection Enable
+#define CR0_PG 0x80000000 // Paging
+
+#define CR4_PSE 0x00000010 // Page Size Extensions
+
+// eflags register
+#define FL_TF 0x00000100 // Trap Flag
+#define FL_IF 0x00000200 // Interrupt Flag
+#define FL_IOPL0 0x00000000 // I/O Privilege Level 0
+#define FL_IOPL1 0x00001000 // I/O Privilege Level 1
+#define FL_IOPL2 0x00002000 // I/O Privilege Level 2
+#define FL_IOPL3 0x00003000 // I/O Privilege Level 3
+#define FL_NT 0x00004000 // Nested Task
+#define FL_RF 0x00010000 // Resume Flag
+#define FL_VM 0x00020000 // Virtual 8086 mode
+
+static inline uint32_t read_cr2(void)
+{
+ uint32_t ret;
+ __asm volatile ("mov %%cr2, %0" : "=r"(ret));
+ return ret;
+}
+
+#endif /* ndef CPU_H */
diff --git a/src/kernel/include/debug.h b/src/kernel/include/debug.h
index ce53df5..f6ec363 100644
--- a/src/kernel/include/debug.h
+++ b/src/kernel/include/debug.h
@@ -1,31 +1,31 @@
-#include <stdint.h>
-#include <stdbool.h>
-
-/* Debug-Funktionen und Helferlein */
-
-#define DEBUG_FLAG_INIT 1
-#define DEBUG_FLAG_STACK_BACKTRACE 2
-#define DEBUG_FLAG_PEDANTIC 4
-#define DEBUG_FLAG_SYSCALL 8
-#define DEBUG_FLAG_NO_KCONSOLE 16
-
-/* Int2Str , Wandelt signed ints in Strings um */
-char* int2str(signed int value,char *result);
-
-/* Einfache Print-Funktion für grundlegende Ausgaben */
-void print(char *string,const int len);
-
-///Setzt die richtigen Debug-Flags anhand der Commandline vom bootloader
-void debug_parse_cmdline(char* cmdline);
-
-///Ueberprueft ob ein bestimmtes Debug-Flag gesetzt ist
-bool debug_test_flag(uint32_t flag);
-
-///Gibt die Debug-Meldung aus, wenn das Flag gesetzt ist
-void debug_print(uint32_t flag, const char* message);
-
-/*
- * Gibt einen Stack Backtrace aus, beginnend an den übergebenen Werten
- * für ebp und eip
- */
-void stack_backtrace_ebp(uint32_t start_ebp, uint32_t start_eip);
+#include <stdint.h>
+#include <stdbool.h>
+
+/* Debug-Funktionen und Helferlein */
+
+#define DEBUG_FLAG_INIT 1
+#define DEBUG_FLAG_STACK_BACKTRACE 2
+#define DEBUG_FLAG_PEDANTIC 4
+#define DEBUG_FLAG_SYSCALL 8
+#define DEBUG_FLAG_NO_KCONSOLE 16
+
+/* Int2Str , Wandelt signed ints in Strings um */
+char* int2str(signed int value,char *result);
+
+/* Einfache Print-Funktion für grundlegende Ausgaben */
+void print(char *string,const int len);
+
+///Setzt die richtigen Debug-Flags anhand der Commandline vom bootloader
+void debug_parse_cmdline(char* cmdline);
+
+///Ueberprueft ob ein bestimmtes Debug-Flag gesetzt ist
+bool debug_test_flag(uint32_t flag);
+
+///Gibt die Debug-Meldung aus, wenn das Flag gesetzt ist
+void debug_print(uint32_t flag, const char* message);
+
+/*
+ * Gibt einen Stack Backtrace aus, beginnend an den übergebenen Werten
+ * für ebp und eip
+ */
+void stack_backtrace_ebp(uint32_t start_ebp, uint32_t start_eip);
diff --git a/src/kernel/include/kernel.h b/src/kernel/include/kernel.h
index e5ba427..93a1b42 100644
--- a/src/kernel/include/kernel.h
+++ b/src/kernel/include/kernel.h
@@ -1,6 +1,6 @@
-#ifndef KERNEL_H
-#define KERNEL_H
-
+#ifndef KERNEL_H
+#define KERNEL_H
+
//#define COOPERATIVE_MULTITASKING
#include <stdint.h>
@@ -21,7 +21,7 @@ void phys_free_page_range(paddr_t page, unsigned int num);
extern void kernel_start(void);
extern void kernel_phys_start(void);
-extern void kernel_end(void);
-extern void kernel_phys_end(void);
-
-#endif /* ndef KERNEL_H */
+extern void kernel_end(void);
+extern void kernel_phys_end(void);
+
+#endif /* ndef KERNEL_H */
diff --git a/src/kernel/include/kprintf.h b/src/kernel/include/kprintf.h
index c33ba81..414a9d6 100644
--- a/src/kernel/include/kprintf.h
+++ b/src/kernel/include/kprintf.h
@@ -1,7 +1,7 @@
-#ifndef KPRINTF_H
-#define KPRINTF_H
-
-extern void kprintf(char * format, ...);
-extern void kaprintf(char * format, int ** args);
-
-#endif /* ndef KPRINTF_H */
+#ifndef KPRINTF_H
+#define KPRINTF_H
+
+extern void kprintf(char * format, ...);
+extern void kaprintf(char * format, int ** args);
+
+#endif /* ndef KPRINTF_H */
diff --git a/src/kernel/include/multiboot.h b/src/kernel/include/multiboot.h
index 696679a..c340b5e 100644
--- a/src/kernel/include/multiboot.h
+++ b/src/kernel/include/multiboot.h
@@ -1,189 +1,189 @@
-/*-
- * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Julio M. Merino Vidal.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef MULTIBOOT_H
-#define MULTIBOOT_H
-
-#include <stdint.h>
-#include <types.h>
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Multiboot header structure.
- */
-#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
-#define MULTIBOOT_HEADER_MODS_ALIGNED 0x00000001
-#define MULTIBOOT_HEADER_WANT_MEMORY 0x00000002
-#define MULTIBOOT_HEADER_HAS_VBE 0x00000004
-#define MULTIBOOT_HEADER_HAS_ADDR 0x00010000
-
-struct multiboot_header {
- uint32_t mh_magic;
- uint32_t mh_flags;
- uint32_t mh_checksum;
-
- /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_ADDR. */
- paddr_t mh_header_addr;
- paddr_t mh_load_addr;
- paddr_t mh_load_end_addr;
- paddr_t mh_bss_end_addr;
- paddr_t mh_entry_addr;
-
- /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_VBE. */
- uint32_t mh_mode_type;
- uint32_t mh_width;
- uint32_t mh_height;
- uint32_t mh_depth;
-};
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Multiboot information structure.
- */
-#define MULTIBOOT_INFO_MAGIC 0x2BADB002
-#define MULTIBOOT_INFO_HAS_MEMORY 0x00000001
-#define MULTIBOOT_INFO_HAS_BOOT_DEVICE 0x00000002
-#define MULTIBOOT_INFO_HAS_CMDLINE 0x00000004
-#define MULTIBOOT_INFO_HAS_MODS 0x00000008
-#define MULTIBOOT_INFO_HAS_AOUT_SYMS 0x00000010
-#define MULTIBOOT_INFO_HAS_ELF_SYMS 0x00000020
-#define MULTIBOOT_INFO_HAS_MMAP 0x00000040
-#define MULTIBOOT_INFO_HAS_DRIVES 0x00000080
-#define MULTIBOOT_INFO_HAS_CONFIG_TABLE 0x00000100
-#define MULTIBOOT_INFO_HAS_LOADER_NAME 0x00000200
-#define MULTIBOOT_INFO_HAS_APM_TABLE 0x00000400
-#define MULTIBOOT_INFO_HAS_VBE 0x00000800
-
-struct multiboot_info {
- uint32_t mi_flags;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MEMORY. */
- uint32_t mi_mem_lower;
- uint32_t mi_mem_upper;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_BOOT_DEVICE. */
- uint8_t mi_boot_device_part3;
- uint8_t mi_boot_device_part2;
- uint8_t mi_boot_device_part1;
- uint8_t mi_boot_device_drive;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CMDLINE. */
- char * mi_cmdline;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MODS. */
- uint32_t mi_mods_count;
- struct multiboot_module * mi_mods_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_{AOUT,ELF}_SYMS. */
- uint32_t mi_elfshdr_num;
- uint32_t mi_elfshdr_size;
- vaddr_t mi_elfshdr_addr;
- uint32_t mi_elfshdr_shndx;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MMAP. */
- uint32_t mi_mmap_length;
- vaddr_t mi_mmap_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_DRIVES. */
- uint32_t mi_drives_length;
- vaddr_t mi_drives_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CONFIG_TABLE. */
- void * unused_mi_config_table;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_LOADER_NAME. */
- char * mi_loader_name;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_APM. */
- void * unused_mi_apm_table;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_VBE. */
- void * unused_mi_vbe_control_info;
- void * unused_mi_vbe_mode_info;
- paddr_t unused_mi_vbe_interface_seg;
- paddr_t unused_mi_vbe_interface_off;
- uint32_t unused_mi_vbe_interface_len;
-};
-
-extern struct multiboot_info multiboot_info;
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Drive information. This describes an entry in the drives table as
- * pointed to by mi_drives_addr.
- */
-struct multiboot_drive {
- uint32_t md_length;
- uint8_t md_number;
- uint8_t md_mode;
- uint16_t md_cylinders;
- uint8_t md_heads;
- uint8_t md_sectors;
-
- /* The variable-sized 'ports' field comes here, so this structure
- * can be longer. */
-};
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Memory mapping. This describes an entry in the memory mappings table
- * as pointed to by mi_mmap_addr.
- *
- * Be aware that mm_size specifies the size of all other fields *except*
- * for mm_size. In order to jump between two different entries, you
- * have to count mm_size + 4 bytes.
- */
-struct multiboot_mmap {
- uint32_t mm_size;
- uint64_t mm_base_addr;
- uint64_t mm_length;
- uint32_t mm_type;
-};
-
-
-struct multiboot_module {
- vaddr_t start;
- vaddr_t end;
- char* cmdline;
- uint32_t reserved;
-};
-
-#endif
+/*-
+ * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Julio M. Merino Vidal.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#ifndef MULTIBOOT_H
+#define MULTIBOOT_H
+
+#include <stdint.h>
+#include <types.h>
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Multiboot header structure.
+ */
+#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
+#define MULTIBOOT_HEADER_MODS_ALIGNED 0x00000001
+#define MULTIBOOT_HEADER_WANT_MEMORY 0x00000002
+#define MULTIBOOT_HEADER_HAS_VBE 0x00000004
+#define MULTIBOOT_HEADER_HAS_ADDR 0x00010000
+
+struct multiboot_header {
+ uint32_t mh_magic;
+ uint32_t mh_flags;
+ uint32_t mh_checksum;
+
+ /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_ADDR. */
+ paddr_t mh_header_addr;
+ paddr_t mh_load_addr;
+ paddr_t mh_load_end_addr;
+ paddr_t mh_bss_end_addr;
+ paddr_t mh_entry_addr;
+
+ /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_VBE. */
+ uint32_t mh_mode_type;
+ uint32_t mh_width;
+ uint32_t mh_height;
+ uint32_t mh_depth;
+};
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Multiboot information structure.
+ */
+#define MULTIBOOT_INFO_MAGIC 0x2BADB002
+#define MULTIBOOT_INFO_HAS_MEMORY 0x00000001
+#define MULTIBOOT_INFO_HAS_BOOT_DEVICE 0x00000002
+#define MULTIBOOT_INFO_HAS_CMDLINE 0x00000004
+#define MULTIBOOT_INFO_HAS_MODS 0x00000008
+#define MULTIBOOT_INFO_HAS_AOUT_SYMS 0x00000010
+#define MULTIBOOT_INFO_HAS_ELF_SYMS 0x00000020
+#define MULTIBOOT_INFO_HAS_MMAP 0x00000040
+#define MULTIBOOT_INFO_HAS_DRIVES 0x00000080
+#define MULTIBOOT_INFO_HAS_CONFIG_TABLE 0x00000100
+#define MULTIBOOT_INFO_HAS_LOADER_NAME 0x00000200
+#define MULTIBOOT_INFO_HAS_APM_TABLE 0x00000400
+#define MULTIBOOT_INFO_HAS_VBE 0x00000800
+
+struct multiboot_info {
+ uint32_t mi_flags;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MEMORY. */
+ uint32_t mi_mem_lower;
+ uint32_t mi_mem_upper;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_BOOT_DEVICE. */
+ uint8_t mi_boot_device_part3;
+ uint8_t mi_boot_device_part2;
+ uint8_t mi_boot_device_part1;
+ uint8_t mi_boot_device_drive;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CMDLINE. */
+ char * mi_cmdline;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MODS. */
+ uint32_t mi_mods_count;
+ struct multiboot_module * mi_mods_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_{AOUT,ELF}_SYMS. */
+ uint32_t mi_elfshdr_num;
+ uint32_t mi_elfshdr_size;
+ vaddr_t mi_elfshdr_addr;
+ uint32_t mi_elfshdr_shndx;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MMAP. */
+ uint32_t mi_mmap_length;
+ vaddr_t mi_mmap_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_DRIVES. */
+ uint32_t mi_drives_length;
+ vaddr_t mi_drives_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CONFIG_TABLE. */
+ void * unused_mi_config_table;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_LOADER_NAME. */
+ char * mi_loader_name;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_APM. */
+ void * unused_mi_apm_table;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_VBE. */
+ void * unused_mi_vbe_control_info;
+ void * unused_mi_vbe_mode_info;
+ paddr_t unused_mi_vbe_interface_seg;
+ paddr_t unused_mi_vbe_interface_off;
+ uint32_t unused_mi_vbe_interface_len;
+};
+
+extern struct multiboot_info multiboot_info;
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Drive information. This describes an entry in the drives table as
+ * pointed to by mi_drives_addr.
+ */
+struct multiboot_drive {
+ uint32_t md_length;
+ uint8_t md_number;
+ uint8_t md_mode;
+ uint16_t md_cylinders;
+ uint8_t md_heads;
+ uint8_t md_sectors;
+
+ /* The variable-sized 'ports' field comes here, so this structure
+ * can be longer. */
+};
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Memory mapping. This describes an entry in the memory mappings table
+ * as pointed to by mi_mmap_addr.
+ *
+ * Be aware that mm_size specifies the size of all other fields *except*
+ * for mm_size. In order to jump between two different entries, you
+ * have to count mm_size + 4 bytes.
+ */
+struct multiboot_mmap {
+ uint32_t mm_size;
+ uint64_t mm_base_addr;
+ uint64_t mm_length;
+ uint32_t mm_type;
+};
+
+
+struct multiboot_module {
+ vaddr_t start;
+ vaddr_t end;
+ char* cmdline;
+ uint32_t reserved;
+};
+
+#endif
diff --git a/src/kernel/include/tss.h b/src/kernel/include/tss.h
index fb25620..62c8540 100644
--- a/src/kernel/include/tss.h
+++ b/src/kernel/include/tss.h
@@ -1,49 +1,49 @@
-#ifndef TSS_H
-#define TSS_H
-
-#include <stdint.h>
-#include <stddef.h>
-
-#define IO_BITMAP_LENGTH 0xffff
-
-// Dieser Wert muss ausserhalb des in der GDT definierten Limits
-// fuer das TSS liegen
-#define TSS_IO_BITMAP_NOT_LOADED (sizeof(tss) + 0x100)
-#define TSS_IO_BITMAP_OFFSET offsetof(tss_t, io_bit_map)
-
-typedef struct tss_s
-{
- uint32_t backlink;
- uint32_t esp0;
- uint32_t ss0;
- uint32_t esp1;
- uint32_t ss1;
- uint32_t esp2;
- uint32_t ss2;
- uint32_t cr3;
- uint32_t eip;
- uint32_t eflags;
- uint32_t eax;
- uint32_t ecx;
- uint32_t edx;
- uint32_t ebx;
- uint32_t esp;
- uint32_t ebp;
- uint32_t esi;
- uint32_t edi;
- uint32_t es;
- uint32_t cs;
- uint32_t ss;
- uint32_t ds;
- uint32_t fs;
- uint32_t gs;
- uint32_t ldt;
- uint16_t trace_trap;
- uint16_t io_bit_map_offset;
- uint8_t io_bit_map[IO_BITMAP_LENGTH / 8];
- uint8_t io_bit_map_end;
-} __attribute__((packed)) tss_t;
-
-extern tss_t tss;
-
-#endif /* ndef TSS_H */
+#ifndef TSS_H
+#define TSS_H
+
+#include <stdint.h>
+#include <stddef.h>
+
+#define IO_BITMAP_LENGTH 0xffff
+
+// Dieser Wert muss ausserhalb des in der GDT definierten Limits
+// fuer das TSS liegen
+#define TSS_IO_BITMAP_NOT_LOADED (sizeof(tss) + 0x100)
+#define TSS_IO_BITMAP_OFFSET offsetof(tss_t, io_bit_map)
+
+typedef struct tss_s
+{
+ uint32_t backlink;
+ uint32_t esp0;
+ uint32_t ss0;
+ uint32_t esp1;
+ uint32_t ss1;
+ uint32_t esp2;
+ uint32_t ss2;
+ uint32_t cr3;
+ uint32_t eip;
+ uint32_t eflags;
+ uint32_t eax;
+ uint32_t ecx;
+ uint32_t edx;
+ uint32_t ebx;
+ uint32_t esp;
+ uint32_t ebp;
+ uint32_t esi;
+ uint32_t edi;
+ uint32_t es;
+ uint32_t cs;
+ uint32_t ss;
+ uint32_t ds;
+ uint32_t fs;
+ uint32_t gs;
+ uint32_t ldt;
+ uint16_t trace_trap;
+ uint16_t io_bit_map_offset;
+ uint8_t io_bit_map[IO_BITMAP_LENGTH / 8];
+ uint8_t io_bit_map_end;
+} __attribute__((packed)) tss_t;
+
+extern tss_t tss;
+
+#endif /* ndef TSS_H */
diff --git a/src/kernel/include/vmm.h b/src/kernel/include/vmm.h
index fefa1db..e08a0e6 100644
--- a/src/kernel/include/vmm.h
+++ b/src/kernel/include/vmm.h
@@ -1,53 +1,53 @@
-#ifndef VMM_H
-#define VMM_H
-
-#define PAGE_DIRECTORY_LENGTH 1024
-#define PAGE_TABLE_LENGTH 1024
-
-#define PAGE_SHIFT 12
-#define PAGE_SIZE (1 << PAGE_SHIFT)
-#define PAGE_MASK (~(PAGE_SIZE - 1))
-
-// Die Anzahl der Pages, die von n Bytes belegt werden.
-#define NUM_PAGES(n) ((((n) + ~PAGE_MASK) & PAGE_MASK) / PAGE_SIZE)
-
-// Rundet eine Adresse auf das kleinste Vielfache von PAGE_SIZE > n auf
-#define PAGE_ALIGN_ROUND_UP(n) (((n) + ~PAGE_MASK) & PAGE_MASK)
-
-// Rundet eine Adresse auf das größte Vielfache von PAGE_SIZE < n ab
-#define PAGE_ALIGN_ROUND_DOWN(n) ((n) & PAGE_MASK)
-
-#define PGDIR_SHIFT 22
-
-#define PTE_P 0x001 // present
-#define PTE_W 0x002 // writable
-#define PTE_U 0x004 // user
-#define PTE_PWT 0x008 // write-through
-#define PTE_PCT 0x010 // cache-disable
-#define PTE_A 0x020 // accessed
-#define PTE_D 0x040 // dirty
-#define PTE_PS 0x080 // page size
-
-#define PTE_AVAIL1 0x200 // available for software use
-#define PTE_AVAIL2 0x400 // available for software use
-#define PTE_AVAIL3 0x800 // available for software use
-
-typedef unsigned long * page_directory_t;
-typedef unsigned long * page_table_t;
-
-typedef enum { page_4K, page_4M } page_size_t;
-
-// Die Adresse, an der der Kernel-Adressraum beginnt
-#define KERNEL_BASE 0x00000000
-
-// Die Anzahl der Page Tables, die für den Kerneladressraum benötigt werden
-#define NUM_KERNEL_PAGE_TABLES (PAGE_DIRECTORY_LENGTH - (KERNEL_BASE >> PGDIR_SHIFT))
-
-// Alle Kernel Page Tables werden nach KERNEL_PAGE_TABLES_VADDR gemappt
-#define KERNEL_PAGE_TABLES_VADDR 0x3fc00000
-
-
-#define USER_MEM_START 0x40000000
-#define USER_MEM_END 0xffffffff
-
-#endif /* ndef VMM_H */
+#ifndef VMM_H
+#define VMM_H
+
+#define PAGE_DIRECTORY_LENGTH 1024
+#define PAGE_TABLE_LENGTH 1024
+
+#define PAGE_SHIFT 12
+#define PAGE_SIZE (1 << PAGE_SHIFT)
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+
+// Die Anzahl der Pages, die von n Bytes belegt werden.
+#define NUM_PAGES(n) ((((n) + ~PAGE_MASK) & PAGE_MASK) / PAGE_SIZE)
+
+// Rundet eine Adresse auf das kleinste Vielfache von PAGE_SIZE > n auf
+#define PAGE_ALIGN_ROUND_UP(n) (((n) + ~PAGE_MASK) & PAGE_MASK)
+
+// Rundet eine Adresse auf das größte Vielfache von PAGE_SIZE < n ab
+#define PAGE_ALIGN_ROUND_DOWN(n) ((n) & PAGE_MASK)
+
+#define PGDIR_SHIFT 22
+
+#define PTE_P 0x001 // present
+#define PTE_W 0x002 // writable
+#define PTE_U 0x004 // user
+#define PTE_PWT 0x008 // write-through
+#define PTE_PCT 0x010 // cache-disable
+#define PTE_A 0x020 // accessed
+#define PTE_D 0x040 // dirty
+#define PTE_PS 0x080 // page size
+
+#define PTE_AVAIL1 0x200 // available for software use
+#define PTE_AVAIL2 0x400 // available for software use
+#define PTE_AVAIL3 0x800 // available for software use
+
+typedef unsigned long * page_directory_t;
+typedef unsigned long * page_table_t;
+
+typedef enum { page_4K, page_4M } page_size_t;
+
+// Die Adresse, an der der Kernel-Adressraum beginnt
+#define KERNEL_BASE 0x00000000
+
+// Die Anzahl der Page Tables, die für den Kerneladressraum benötigt werden
+#define NUM_KERNEL_PAGE_TABLES (PAGE_DIRECTORY_LENGTH - (KERNEL_BASE >> PGDIR_SHIFT))
+
+// Alle Kernel Page Tables werden nach KERNEL_PAGE_TABLES_VADDR gemappt
+#define KERNEL_PAGE_TABLES_VADDR 0x3fc00000
+
+
+#define USER_MEM_START 0x40000000
+#define USER_MEM_END 0xffffffff
+
+#endif /* ndef VMM_H */
diff --git a/src/kernel/src/kernel.ld b/src/kernel/src/kernel.ld
index 9efbcb0..6ac4663 100644
--- a/src/kernel/src/kernel.ld
+++ b/src/kernel/src/kernel.ld
@@ -1,37 +1,37 @@
-LOAD_ADDR = 0x100000;
-LINK_ADDR = 0x100000;
-VIRT_TO_PHYS = LINK_ADDR - LOAD_ADDR;
-
-ENTRY(_start)
-SECTIONS
-{
- . = LINK_ADDR;
-
- kernel_start = .;
- kernel_phys_start = . - VIRT_TO_PHYS;
-
- .text : AT(ADDR(.text) - VIRT_TO_PHYS)
- {
- *(multiboot)
- *(.text)
- }
- .rodata ALIGN(4096) : AT(ADDR(.rodata) - VIRT_TO_PHYS)
- {
- *(.rodata)
- }
- .data ALIGN(4096) : AT(ADDR(.data) - VIRT_TO_PHYS)
- {
- *(.data)
- }
- .bss ALIGN(4096) : AT(ADDR(.bss) - VIRT_TO_PHYS)
- {
- *(.bss)
- }
-
- . = ALIGN(4096);
-
- kernel_end = .;
- kernel_phys_end = . - VIRT_TO_PHYS;
-
- kernel_size = kernel_end - kernel_start;
-}
+LOAD_ADDR = 0x100000;
+LINK_ADDR = 0x100000;
+VIRT_TO_PHYS = LINK_ADDR - LOAD_ADDR;
+
+ENTRY(_start)
+SECTIONS
+{
+ . = LINK_ADDR;
+
+ kernel_start = .;
+ kernel_phys_start = . - VIRT_TO_PHYS;
+
+ .text : AT(ADDR(.text) - VIRT_TO_PHYS)
+ {
+ *(multiboot)
+ *(.text)
+ }
+ .rodata ALIGN(4096) : AT(ADDR(.rodata) - VIRT_TO_PHYS)
+ {
+ *(.rodata)
+ }
+ .data ALIGN(4096) : AT(ADDR(.data) - VIRT_TO_PHYS)
+ {
+ *(.data)
+ }
+ .bss ALIGN(4096) : AT(ADDR(.bss) - VIRT_TO_PHYS)
+ {
+ *(.bss)
+ }
+
+ . = ALIGN(4096);
+
+ kernel_end = .;
+ kernel_phys_end = . - VIRT_TO_PHYS;
+
+ kernel_size = kernel_end - kernel_start;
+}
diff --git a/src/kernel/src/stubs.asm b/src/kernel/src/stubs.asm
index 681baee..dedf3c5 100644
--- a/src/kernel/src/stubs.asm
+++ b/src/kernel/src/stubs.asm
@@ -1,145 +1,145 @@
-;
-; Copyright (c) 2006 The tyndur Project. All rights reserved.
-;
-; This code is derived from software contributed to the tyndur Project
-; by Burkhard Weseloh.
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions
-; are met:
-; 1. Redistributions of source code must retain the above copyright
-; notice, this list of conditions and the following disclaimer.
-; 2. Redistributions in binary form must reproduce the above copyright
-; notice, this list of conditions and the following disclaimer in the
-; documentation and/or other materials provided with the distribution.
-; 3. All advertising materials mentioning features or use of this software
-; must display the following acknowledgement:
-; This product includes software developed by the tyndur Project
-; and its contributors.
-; 4. Neither the name of the tyndur Project nor the names of its
-; contributors may be used to endorse or promote products derived
-; from this software without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-; ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-;
-
-section .text
-
-%define IRQ_BASE 0x20
-
-extern handle_int
-
-%macro exception_stub 1
-global exception_stub_%1
-exception_stub_%1:
- push dword 0
- push dword %1
- jmp int_bottom
-%endmacro
-
-%macro exception_stub_error_code 1
-global exception_stub_%1
-exception_stub_%1:
- push dword %1
- jmp int_bottom
-%endmacro
-
-%macro irq_stub 1
-global irq_stub_%1
-irq_stub_%1:
- push dword 0
- push dword %1 + IRQ_BASE
- jmp int_bottom
-%endmacro
-
-global null_handler
-null_handler:
- push dword 0
- push dword 0x1337
- jmp int_bottom
-
-global syscall_stub
-syscall_stub:
- push dword 0
- push dword 0x30
- jmp int_bottom
-
-exception_stub 0
-exception_stub 1
-exception_stub 2
-exception_stub 3
-exception_stub 4
-exception_stub 5
-exception_stub 6
-exception_stub 7
-exception_stub_error_code 8
-exception_stub 9
-exception_stub_error_code 10
-exception_stub_error_code 11
-exception_stub_error_code 12
-exception_stub_error_code 13
-exception_stub_error_code 14
-exception_stub 16
-exception_stub_error_code 17
-exception_stub 18
-exception_stub 19
-
-irq_stub 0
-irq_stub 1
-irq_stub 2
-irq_stub 3
-irq_stub 4
-irq_stub 5
-irq_stub 6
-irq_stub 7
-irq_stub 8
-irq_stub 9
-irq_stub 10
-irq_stub 11
-irq_stub 12
-irq_stub 13
-irq_stub 14
-irq_stub 15
-
-int_bottom:
- ; register sichern
- pusha
- push ds
- push es
- push fs
- push gs
-
- ; ring 0 segment register laden
- cld
- mov ax, 0x10
- mov ds, ax
- mov es, ax
-
- ; c-handler aufrufen
- push esp
- call handle_int
- add esp, 4
-
- ; den stack wechseln
- mov esp, eax
-
- ; register laden
- pop gs
- pop fs
- pop es
- pop ds
- popa
-
- add esp, 8 ; fehlercode und interrupt nummer überspringen
-
- iret
+;
+; Copyright (c) 2006 The tyndur Project. All rights reserved.
+;
+; This code is derived from software contributed to the tyndur Project
+; by Burkhard Weseloh.
+;
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions
+; are met:
+; 1. Redistributions of source code must retain the above copyright
+; notice, this list of conditions and the following disclaimer.
+; 2. Redistributions in binary form must reproduce the above copyright
+; notice, this list of conditions and the following disclaimer in the
+; documentation and/or other materials provided with the distribution.
+; 3. All advertising materials mentioning features or use of this software
+; must display the following acknowledgement:
+; This product includes software developed by the tyndur Project
+; and its contributors.
+; 4. Neither the name of the tyndur Project nor the names of its
+; contributors may be used to endorse or promote products derived
+; from this software without specific prior written permission.
+;
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+; ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;
+
+section .text
+
+%define IRQ_BASE 0x20
+
+extern handle_int
+
+%macro exception_stub 1
+global exception_stub_%1
+exception_stub_%1:
+ push dword 0
+ push dword %1
+ jmp int_bottom
+%endmacro
+
+%macro exception_stub_error_code 1
+global exception_stub_%1
+exception_stub_%1:
+ push dword %1
+ jmp int_bottom
+%endmacro
+
+%macro irq_stub 1
+global irq_stub_%1
+irq_stub_%1:
+ push dword 0
+ push dword %1 + IRQ_BASE
+ jmp int_bottom
+%endmacro
+
+global null_handler
+null_handler:
+ push dword 0
+ push dword 0x1337
+ jmp int_bottom
+
+global syscall_stub
+syscall_stub:
+ push dword 0
+ push dword 0x30
+ jmp int_bottom
+
+exception_stub 0
+exception_stub 1
+exception_stub 2
+exception_stub 3
+exception_stub 4
+exception_stub 5
+exception_stub 6
+exception_stub 7
+exception_stub_error_code 8
+exception_stub 9
+exception_stub_error_code 10
+exception_stub_error_code 11
+exception_stub_error_code 12
+exception_stub_error_code 13
+exception_stub_error_code 14
+exception_stub 16
+exception_stub_error_code 17
+exception_stub 18
+exception_stub 19
+
+irq_stub 0
+irq_stub 1
+irq_stub 2
+irq_stub 3
+irq_stub 4
+irq_stub 5
+irq_stub 6
+irq_stub 7
+irq_stub 8
+irq_stub 9
+irq_stub 10
+irq_stub 11
+irq_stub 12
+irq_stub 13
+irq_stub 14
+irq_stub 15
+
+int_bottom:
+ ; register sichern
+ pusha
+ push ds
+ push es
+ push fs
+ push gs
+
+ ; ring 0 segment register laden
+ cld
+ mov ax, 0x10
+ mov ds, ax
+ mov es, ax
+
+ ; c-handler aufrufen
+ push esp
+ call handle_int
+ add esp, 4
+
+ ; den stack wechseln
+ mov esp, eax
+
+ ; register laden
+ pop gs
+ pop fs
+ pop es
+ pop ds
+ popa
+
+ add esp, 8 ; fehlercode und interrupt nummer überspringen
+
+ iret
diff --git a/src/kernel2/include/console.h b/src/kernel2/include/console.h
index 60e7e8e..aa29d1c 100644
--- a/src/kernel2/include/console.h
+++ b/src/kernel2/include/console.h
@@ -1,47 +1,47 @@
-/*
- * Copyright (c) 2006-2007 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Burkhard Weseloh.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the tyndur Project
- * and its contributors.
- * 4. Neither the name of the tyndur Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CONSOLE_H
-#define CONSOLE_H
-
-extern void init_console(void);
-
-extern void con_putc(const char c); // Zeichen ausgeben ohne Auswertung der ANSI-Codes
-extern void con_putc_ansi(const char c); // Zeichen ausgeben mit Auswertung der ANSI-Codes
-extern void con_puts(const char * s); // Zeichenkette ausgeben mit Auswertung der ANSI-Codes
-extern void con_putsn(unsigned int n, const char * s); // wie con_puts, allerdings werden maximal n Bytes ausgewertet
-extern void con_flush_ansi_escape_code_sequence(void); // Zwischenspeicher leeren
-
-#endif /* ndef CONSOLE_H */
+/*
+ * Copyright (c) 2006-2007 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Burkhard Weseloh.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the tyndur Project
+ * and its contributors.
+ * 4. Neither the name of the tyndur Project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CONSOLE_H
+#define CONSOLE_H
+
+extern void init_console(void);
+
+extern void con_putc(const char c); // Zeichen ausgeben ohne Auswertung der ANSI-Codes
+extern void con_putc_ansi(const char c); // Zeichen ausgeben mit Auswertung der ANSI-Codes
+extern void con_puts(const char * s); // Zeichenkette ausgeben mit Auswertung der ANSI-Codes
+extern void con_putsn(unsigned int n, const char * s); // wie con_puts, allerdings werden maximal n Bytes ausgewertet
+extern void con_flush_ansi_escape_code_sequence(void); // Zwischenspeicher leeren
+
+#endif /* ndef CONSOLE_H */
diff --git a/src/kernel2/include/debug.h b/src/kernel2/include/debug.h
index d8540b4..ed8abe3 100644
--- a/src/kernel2/include/debug.h
+++ b/src/kernel2/include/debug.h
@@ -1,59 +1,59 @@
-/*
- * Copyright (c) 2006-2008 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Kevin Wolf.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the tyndur Project
- * and its contributors.
- * 4. Neither the name of the tyndur Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _DEBUG_H_
-#define _DEBUG_H_
-
-#include <stdint.h>
-#include <stdbool.h>
-
-/* Debug-Funktionen und Helferlein */
-
-#define DEBUG_FLAG_INIT 1
-#define DEBUG_FLAG_STACK_BACKTRACE 2
-#define DEBUG_FLAG_PEDANTIC 4
-#define DEBUG_FLAG_SYSCALL 8
-
-///Setzt die richtigen Debug-Flags anhand der Commandline vom bootloader
-void debug_parse_cmdline(char* cmdline);
-
-///Ueberprueft ob ein bestimmtes Debug-Flag gesetzt ist
-bool debug_test_flag(uint32_t flag);
-
-///Gibt die Debug-Meldung aus, wenn das Flag gesetzt ist
-void debug_print(uint32_t flag, const char* message);
+/*
+ * Copyright (c) 2006-2008 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Kevin Wolf.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the tyndur Project
+ * and its contributors.
+ * 4. Neither the name of the tyndur Project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+#include <stdint.h>
+#include <stdbool.h>
+
+/* Debug-Funktionen und Helferlein */
+
+#define DEBUG_FLAG_INIT 1
+#define DEBUG_FLAG_STACK_BACKTRACE 2
+#define DEBUG_FLAG_PEDANTIC 4
+#define DEBUG_FLAG_SYSCALL 8
+
+///Setzt die richtigen Debug-Flags anhand der Commandline vom bootloader
+void debug_parse_cmdline(char* cmdline);
+
+///Ueberprueft ob ein bestimmtes Debug-Flag gesetzt ist
+bool debug_test_flag(uint32_t flag);
+
+///Gibt die Debug-Meldung aus, wenn das Flag gesetzt ist
+void debug_print(uint32_t flag, const char* message);
/*
* Gibt einen Stack Backtrace aus, beginnend an den übergebenen Werten
diff --git a/src/kernel2/include/gdt.h b/src/kernel2/include/gdt.h
index 426775c..243ca70 100644
--- a/src/kernel2/include/gdt.h
+++ b/src/kernel2/include/gdt.h
@@ -1,44 +1,44 @@
-/*
- * Copyright (c) 2007 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Kevin Wolf.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the tyndur Project
- * and its contributors.
- * 4. Neither the name of the tyndur Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _GDT_H_
-#define _GDT_H_
-#include <types.h>
-
-void gdt_init(void);
-void gdt_init_local(void);
-
-#endif //ifndef _GDT_H_
-
+/*
+ * Copyright (c) 2007 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Kevin Wolf.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the tyndur Project
+ * and its contributors.
+ * 4. Neither the name of the tyndur Project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _GDT_H_
+#define _GDT_H_
+#include <types.h>
+
+void gdt_init(void);
+void gdt_init_local(void);
+
+#endif //ifndef _GDT_H_
+
diff --git a/src/kernel2/include/im.h b/src/kernel2/include/im.h
index 05f7200..b525a7f 100644
--- a/src/kernel2/include/im.h
+++ b/src/kernel2/include/im.h
@@ -1,64 +1,64 @@
-/*
- * Copyright (c) 2007 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Kevin Wolf.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the tyndur Project
- * and its contributors.
- * 4. Neither the name of the tyndur Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _IM_H_
-#define _IM_H_
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "cpu.h"
-#include "tasks.h"
-
-#define IM_IRQ_BASE 0x20
-#define IM_NUM_INTERRUPTS 256
-
-void im_init(void);
-void im_init_local(void);
-
-void im_enable(void);
-void im_disable(void);
-
-void im_enable_irq(uint8_t irq);
-void im_disable_irq(uint8_t irq);
-
-void im_end_of_interrupt(uint8_t interrupt);
-interrupt_stack_frame_t* im_handler(interrupt_stack_frame_t* isf);
-interrupt_stack_frame_t* im_prepare_current_thread(void);
-
-bool im_add_handler(uint32_t intr, pm_process_t* handler);
-
-#endif //ifndef _IM_H_
-
+/*
+ * Copyright (c) 2007 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Kevin Wolf.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the tyndur Project
+ * and its contributors.
+ * 4. Neither the name of the tyndur Project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _IM_H_
+#define _IM_H_
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include "cpu.h"
+#include "tasks.h"
+
+#define IM_IRQ_BASE 0x20
+#define IM_NUM_INTERRUPTS 256
+
+void im_init(void);
+void im_init_local(void);
+
+void im_enable(void);
+void im_disable(void);
+
+void im_enable_irq(uint8_t irq);
+void im_disable_irq(uint8_t irq);
+
+void im_end_of_interrupt(uint8_t interrupt);
+interrupt_stack_frame_t* im_handler(interrupt_stack_frame_t* isf);
+interrupt_stack_frame_t* im_prepare_current_thread(void);
+
+bool im_add_handler(uint32_t intr, pm_process_t* handler);
+
+#endif //ifndef _IM_H_
+
diff --git a/src/kernel2/include/multiboot.h b/src/kernel2/include/multiboot.h
index 687fee9..258bebe 100644
--- a/src/kernel2/include/multiboot.h
+++ b/src/kernel2/include/multiboot.h
@@ -1,188 +1,188 @@
-/*-
- * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Julio M. Merino Vidal.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef MULTIBOOT_H
-#define MULTIBOOT_H
-
-#include <stdint.h>
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Multiboot header structure.
- */
-#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
-#define MULTIBOOT_HEADER_MODS_ALIGNED 0x00000001
-#define MULTIBOOT_HEADER_WANT_MEMORY 0x00000002
-#define MULTIBOOT_HEADER_HAS_VBE 0x00000004
-#define MULTIBOOT_HEADER_HAS_ADDR 0x00010000
-
-struct multiboot_header {
- uint32_t mh_magic;
- uint32_t mh_flags;
- uint32_t mh_checksum;
-
- /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_ADDR. */
- uint32_t mh_header_addr;
- uint32_t mh_load_addr;
- uint32_t mh_load_end_addr;
- uint32_t mh_bss_end_addr;
- uint32_t mh_entry_addr;
-
- /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_VBE. */
- uint32_t mh_mode_type;
- uint32_t mh_width;
- uint32_t mh_height;
- uint32_t mh_depth;
-} __attribute((packed));
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Multiboot information structure.
- */
-#define MULTIBOOT_INFO_MAGIC 0x2BADB002
-#define MULTIBOOT_INFO_HAS_MEMORY 0x00000001
-#define MULTIBOOT_INFO_HAS_BOOT_DEVICE 0x00000002
-#define MULTIBOOT_INFO_HAS_CMDLINE 0x00000004
-#define MULTIBOOT_INFO_HAS_MODS 0x00000008
-#define MULTIBOOT_INFO_HAS_AOUT_SYMS 0x00000010
-#define MULTIBOOT_INFO_HAS_ELF_SYMS 0x00000020
-#define MULTIBOOT_INFO_HAS_MMAP 0x00000040
-#define MULTIBOOT_INFO_HAS_DRIVES 0x00000080
-#define MULTIBOOT_INFO_HAS_CONFIG_TABLE 0x00000100
-#define MULTIBOOT_INFO_HAS_LOADER_NAME 0x00000200
-#define MULTIBOOT_INFO_HAS_APM_TABLE 0x00000400
-#define MULTIBOOT_INFO_HAS_VBE 0x00000800
-
-struct multiboot_info {
- uint32_t mi_flags;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MEMORY. */
- uint32_t mi_mem_lower;
- uint32_t mi_mem_upper;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_BOOT_DEVICE. */
- uint8_t mi_boot_device_part3;
- uint8_t mi_boot_device_part2;
- uint8_t mi_boot_device_part1;
- uint8_t mi_boot_device_drive;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CMDLINE. */
- uint32_t mi_cmdline;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MODS. */
- uint32_t mi_mods_count;
- uint32_t mi_mods_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_{AOUT,ELF}_SYMS. */
- uint32_t mi_elfshdr_num;
- uint32_t mi_elfshdr_size;
- uint32_t mi_elfshdr_addr;
- uint32_t mi_elfshdr_shndx;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MMAP. */
- uint32_t mi_mmap_length;
- uint32_t mi_mmap_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_DRIVES. */
- uint32_t mi_drives_length;
- uint32_t mi_drives_addr;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CONFIG_TABLE. */
- uint32_t unused_mi_config_table;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_LOADER_NAME. */
- uint32_t mi_loader_name;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_APM. */
- uint32_t unused_mi_apm_table;
-
- /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_VBE. */
- uint32_t unused_mi_vbe_control_info;
- uint32_t unused_mi_vbe_mode_info;
- uint32_t unused_mi_vbe_interface_seg;
- uint32_t unused_mi_vbe_interface_off;
- uint32_t unused_mi_vbe_interface_len;
-} __attribute((packed));
-
-extern struct multiboot_info multiboot_info;
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Drive information. This describes an entry in the drives table as
- * pointed to by mi_drives_addr.
- */
-struct multiboot_drive {
- uint32_t md_length;
- uint8_t md_number;
- uint8_t md_mode;
- uint16_t md_cylinders;
- uint8_t md_heads;
- uint8_t md_sectors;
-
- /* The variable-sized 'ports' field comes here, so this structure
- * can be longer. */
-};
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Memory mapping. This describes an entry in the memory mappings table
- * as pointed to by mi_mmap_addr.
- *
- * Be aware that mm_size specifies the size of all other fields *except*
- * for mm_size. In order to jump between two different entries, you
- * have to count mm_size + 4 bytes.
- */
-struct multiboot_mmap {
- uint32_t mm_size;
- uint64_t mm_base_addr;
- uint64_t mm_length;
- uint32_t mm_type;
-} __attribute((packed));
-
-
-struct multiboot_module {
- uint32_t start;
- uint32_t end;
- uint32_t cmdline;
- uint32_t reserved;
-};
-
-#endif
+/*-
+ * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Julio M. Merino Vidal.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#ifndef MULTIBOOT_H
+#define MULTIBOOT_H
+
+#include <stdint.h>
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Multiboot header structure.
+ */
+#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
+#define MULTIBOOT_HEADER_MODS_ALIGNED 0x00000001
+#define MULTIBOOT_HEADER_WANT_MEMORY 0x00000002
+#define MULTIBOOT_HEADER_HAS_VBE 0x00000004
+#define MULTIBOOT_HEADER_HAS_ADDR 0x00010000
+
+struct multiboot_header {
+ uint32_t mh_magic;
+ uint32_t mh_flags;
+ uint32_t mh_checksum;
+
+ /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_ADDR. */
+ uint32_t mh_header_addr;
+ uint32_t mh_load_addr;
+ uint32_t mh_load_end_addr;
+ uint32_t mh_bss_end_addr;
+ uint32_t mh_entry_addr;
+
+ /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_VBE. */
+ uint32_t mh_mode_type;
+ uint32_t mh_width;
+ uint32_t mh_height;
+ uint32_t mh_depth;
+} __attribute((packed));
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Multiboot information structure.
+ */
+#define MULTIBOOT_INFO_MAGIC 0x2BADB002
+#define MULTIBOOT_INFO_HAS_MEMORY 0x00000001
+#define MULTIBOOT_INFO_HAS_BOOT_DEVICE 0x00000002
+#define MULTIBOOT_INFO_HAS_CMDLINE 0x00000004
+#define MULTIBOOT_INFO_HAS_MODS 0x00000008
+#define MULTIBOOT_INFO_HAS_AOUT_SYMS 0x00000010
+#define MULTIBOOT_INFO_HAS_ELF_SYMS 0x00000020
+#define MULTIBOOT_INFO_HAS_MMAP 0x00000040
+#define MULTIBOOT_INFO_HAS_DRIVES 0x00000080
+#define MULTIBOOT_INFO_HAS_CONFIG_TABLE 0x00000100
+#define MULTIBOOT_INFO_HAS_LOADER_NAME 0x00000200
+#define MULTIBOOT_INFO_HAS_APM_TABLE 0x00000400
+#define MULTIBOOT_INFO_HAS_VBE 0x00000800
+
+struct multiboot_info {
+ uint32_t mi_flags;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MEMORY. */
+ uint32_t mi_mem_lower;
+ uint32_t mi_mem_upper;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_BOOT_DEVICE. */
+ uint8_t mi_boot_device_part3;
+ uint8_t mi_boot_device_part2;
+ uint8_t mi_boot_device_part1;
+ uint8_t mi_boot_device_drive;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CMDLINE. */
+ uint32_t mi_cmdline;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MODS. */
+ uint32_t mi_mods_count;
+ uint32_t mi_mods_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_{AOUT,ELF}_SYMS. */
+ uint32_t mi_elfshdr_num;
+ uint32_t mi_elfshdr_size;
+ uint32_t mi_elfshdr_addr;
+ uint32_t mi_elfshdr_shndx;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_MMAP. */
+ uint32_t mi_mmap_length;
+ uint32_t mi_mmap_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_DRIVES. */
+ uint32_t mi_drives_length;
+ uint32_t mi_drives_addr;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_CONFIG_TABLE. */
+ uint32_t unused_mi_config_table;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_LOADER_NAME. */
+ uint32_t mi_loader_name;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_APM. */
+ uint32_t unused_mi_apm_table;
+
+ /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_VBE. */
+ uint32_t unused_mi_vbe_control_info;
+ uint32_t unused_mi_vbe_mode_info;
+ uint32_t unused_mi_vbe_interface_seg;
+ uint32_t unused_mi_vbe_interface_off;
+ uint32_t unused_mi_vbe_interface_len;
+} __attribute((packed));
+
+extern struct multiboot_info multiboot_info;
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Drive information. This describes an entry in the drives table as
+ * pointed to by mi_drives_addr.
+ */
+struct multiboot_drive {
+ uint32_t md_length;
+ uint8_t md_number;
+ uint8_t md_mode;
+ uint16_t md_cylinders;
+ uint8_t md_heads;
+ uint8_t md_sectors;
+
+ /* The variable-sized 'ports' field comes here, so this structure
+ * can be longer. */
+};
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Memory mapping. This describes an entry in the memory mappings table
+ * as pointed to by mi_mmap_addr.
+ *
+ * Be aware that mm_size specifies the size of all other fields *except*
+ * for mm_size. In order to jump between two different entries, you
+ * have to count mm_size + 4 bytes.
+ */
+struct multiboot_mmap {
+ uint32_t mm_size;
+ uint64_t mm_base_addr;
+ uint64_t mm_length;
+ uint32_t mm_type;
+} __attribute((packed));
+
+
+struct multiboot_module {
+ uint32_t start;
+ uint32_t end;
+ uint32_t cmdline;
+ uint32_t reserved;
+};
+
+#endif
diff --git a/src/kernel2/include/smp.h b/src/kernel2/include/smp.h
index 40098fa..70a4cb1 100644
--- a/src/kernel2/include/smp.h
+++ b/src/kernel2/include/smp.h
@@ -1,43 +1,43 @@
-/*
- * Copyright (c) 2007 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Kevin Wolf.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the tyndur Project
- * and its contributors.
- * 4. Neither the name of the tyndur Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _GDT_H_
-#define _GDT_H_
-#include <types.h>
-
-void smp_init();
-
-#endif //ifndef _GDT_H_
-
+/*
+ * Copyright (c) 2007 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Kevin Wolf.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the tyndur Project
+ * and its contributors.
+ * 4. Neither the name of the tyndur Project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _GDT_H_
+#define _GDT_H_
+#include <types.h>
+
+void smp_init();
+
+#endif //ifndef _GDT_H_
+
diff --git a/src/kernel2/src/module.mk b/src/kernel2/src/module.mk
index 53124c2..3013524 100644
--- a/src/kernel2/src/module.mk
+++ b/src/kernel2/src/module.mk
@@ -1,16 +1,16 @@
-### Kernel 2
-kernel2: build/lost2.krn
-
-KERNEL2_SRC = $(call SOURCE_FILES_WILDCARD,src/kernel2/src/arch/$(ARCH)) $(call SOURCE_FILES_WILDCARD,src/kernel2/src/arch/$(ARCH)/*) $(call SOURCE_FILES,src/kernel2/src) $(call SOURCE_FILES_WILDCARD,src/kernel2/src/*)
-KERNEL2_OBJS = $(call OBJECT_FILES,$(KERNEL2_SRC))
-ALL_OBJS += $(KERNEL2_OBJS)
-build/lost2.krn: $(KERNEL2_OBJS) src/lib/library.a
- ld -o $@ $(LDFLAGS_KERNEL2) $^
-build/lost2.krn: CPPFLAGS += -Isrc/kernel2/include -Isrc/kernel2/include/arch/$(ARCH)
-
-zkernel2: build/lost2.kgz
-
-src/kernel2/src/smp/rm_trampoline.o: src/kernel2/src/smp/rm_trampoline.asm
- $(NASM) -f bin $< -o $(notdir $@)
- $(OBJCOPY) -B i386:i386 -I binary -O elf32-i386 $(notdir $@) $@
- rm $(notdir $@)
+### Kernel 2
+kernel2: build/lost2.krn
+
+KERNEL2_SRC = $(call SOURCE_FILES_WILDCARD,src/kernel2/src/arch/$(ARCH)) $(call SOURCE_FILES_WILDCARD,src/kernel2/src/arch/$(ARCH)/*) $(call SOURCE_FILES,src/kernel2/src) $(call SOURCE_FILES_WILDCARD,src/kernel2/src/*)
+KERNEL2_OBJS = $(call OBJECT_FILES,$(KERNEL2_SRC))
+ALL_OBJS += $(KERNEL2_OBJS)
+build/lost2.krn: $(KERNEL2_OBJS) src/lib/library.a
+ ld -o $@ $(LDFLAGS_KERNEL2) $^
+build/lost2.krn: CPPFLAGS += -Isrc/kernel2/include -Isrc/kernel2/include/arch/$(ARCH)
+
+zkernel2: build/lost2.kgz
+
+src/kernel2/src/smp/rm_trampoline.o: src/kernel2/src/smp/rm_trampoline.asm
+ $(NASM) -f bin $< -o $(notdir $@)
+ $(OBJCOPY) -B i386:i386 -I binary -O elf32-i386 $(notdir $@) $@
+ rm $(notdir $@)
diff --git a/src/kernel2/src/pv.c b/src/kernel2/src/pv.c
index 780c352..aec2963 100644
--- a/src/kernel2/src/pv.c
+++ b/src/kernel2/src/pv.c
@@ -1,4 +1,4 @@
-// Das hier ist ein gemeiner Hack, damit es in den Locking-Funktionen von
-// liballoc keine nicht-aufgelösten Symbole gibt.
-void __attribute__((weak)) syscall_p(void) {}
-void __attribute__((weak)) syscall_v(void) {}
+// Das hier ist ein gemeiner Hack, damit es in den Locking-Funktionen von
+// liballoc keine nicht-aufgelösten Symbole gibt.
+void __attribute__((weak)) syscall_p(void) {}
+void __attribute__((weak)) syscall_v(void) {}
diff --git a/src/lib/stdlibc/malloc.c b/src/lib/stdlibc/malloc.c
index f20f955..95f343a 100644
--- a/src/lib/stdlibc/malloc.c
+++ b/src/lib/stdlibc/malloc.c
@@ -197,28 +197,28 @@ void* malloc(size_t size)
return (void*) current_memory_node->address;
}
-
-/**
- * Reserviert einen Speicherbereich für ein Array mit nelem Elementen der
- * Groesse elsize, und initialisiert diesen mit 0
- * @param nelem Anzahl der Elemente
- * @param elsize Groesse eines Elements
- * @return Pointer auf den Bereich
- */
-void* calloc(size_t nelem, size_t elsize)
-{
- size_t size;
- void * p;
-
- size = nelem * elsize;
- p = malloc(size);
- if(p != NULL)
- {
- memset(p, 0, size);
- }
-
- return p;
-}
+
+/**
+ * Reserviert einen Speicherbereich für ein Array mit nelem Elementen der
+ * Groesse elsize, und initialisiert diesen mit 0
+ * @param nelem Anzahl der Elemente
+ * @param elsize Groesse eines Elements
+ * @return Pointer auf den Bereich
+ */
+void* calloc(size_t nelem, size_t elsize)
+{
+ size_t size;
+ void * p;
+
+ size = nelem * elsize;
+ p = malloc(size);
+ if(p != NULL)
+ {
+ memset(p, 0, size);
+ }
+
+ return p;
+}
/**
* Gibt einen reservierten Speicherbereich wieder frei.
diff --git a/src/modules/include/wchar.h b/src/modules/include/wchar.h
index 6f1f61c..10c33df 100644
--- a/src/modules/include/wchar.h
+++ b/src/modules/include/wchar.h
@@ -1,43 +1,43 @@
-/*
- * Copyright (c) 2008-2009 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Antoine Kaufmann.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _WCHAR_H_
-#define _WCHAR_H_
-
-#include <stddef.h>
-#include <stdio.h>
-
-#define WEOF ((wint_t) -1)
-
-/**
- * Sollte theoretisch alle Werte von wchar_t und zusaetzlich WEOF annehmen
- * koennen.
- */
+/*
+ * Copyright (c) 2008-2009 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Antoine Kaufmann.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _WCHAR_H_
+#define _WCHAR_H_
+
+#include <stddef.h>
+#include <stdio.h>
+
+#define WEOF ((wint_t) -1)
+
+/**
+ * Sollte theoretisch alle Werte von wchar_t und zusaetzlich WEOF annehmen
+ * koennen.
+ */
typedef wchar_t wint_t;
/**
@@ -49,554 +49,554 @@ typedef int (*wctype_t)(wint_t);
* Repraesentiert den internen Shift-Status einer Funktion, brauchen wir mit
* UTF-8 nicht.
*/
-typedef int mbstate_t;
-
-
-
-/* WSTRINGS */
-
-/**
- * Reentrante Variante von mbtowc, bei uns mit UTF-8 aber identisch.
- * @see mbtowc
- */
-size_t mbrtowc(wchar_t* wc, const char* s, size_t len, mbstate_t* ps);
-
-/**
- * Reentrante Variante von wctomb, bei uns mit UTF-8 aber identisch.
- * @see wctomb
- */
-size_t wcrtomb(char* buf, wchar_t wc, mbstate_t* ps);
-
-/**
- * Reentrante Variante von wcstombs. Der einzige wesentliche Unterschied fuer
- * uns mit UTF8 ist, dass *wcs so aktualisiert wird, dass es bei einem Abbruch,
- * sei es weil buf zu klein ist oder weil ein ungueltiges Zeichen angetroffen
- * wurde, auf das betreffende Zeichen zeigt. Wird der String erfolgreich
- * verarbeitet, wird *wcs auf NULL gesetzt.
- * @see wcstombs
- */
-size_t wcsrtombs(char* buf, const wchar_t** wcs, size_t len, mbstate_t* ps);
-
-/**
- * Reentrante Variante von mbstowcs. Der einzige wesentliche Unterschied fuer
- * uns mit UTF8 ist, dass *str so aktualisiert wird, dass es bei einem Abbruch,
- * sei es weil buf zu klein ist oder weil ein ungueltiges Zeichen angetroffen
- * wurde, auf das betreffende Zeichen zeigt. Wird der String erfolgreich
- * verarbeitet, wird *str auf NULL gesetzt.
- * @see mbstowcs
- */
-size_t mbsrtowcs(wchar_t* buf, const char** str, size_t len, mbstate_t* ps);
-
-
-/**
- * Anzahl der Spalten, die ein Zeichen in Anspruch nimmt, errechnen. Fuer c = 0
- * wird 0 zuruekgegeben. Falls es sich nicht um ein druckbares Zeichen handelt,
- * wird -1 zurueckgegeben.
- *
- * @param wc Das breite Zeichen
- *
- * @return Anzahl Spalten, oder -1 wenn das Zeichen nicht druckbar ist.
- */
-int wcwidth(wchar_t wc);
-
-/**
- * Anzahl der Spalten, die ein String aus breiten Zeichen in Anspruch nimmt,
- * errechnen. Wird ein nicht druckbares Zeichen erkannt, wird abgebrochen.
- *
- * @see wcwidth
- * @param wcs Zeiger auf das erste Zeichen
- * @param len Anzahl der Zeichen
- *
- * @return Anzahl der Zeichen oder -1 im Fehlerfall.
- */
-int wcswidth(const wchar_t* wcs, size_t len);
-
-
-/**
- * Einen String aus breiten Zeichen kopieren, das ist das Pendant zu stpcpy. Die
- * beiden Strings duerfen sich nicht ueberlappen. Das abschliessende L'0' wird
- * mitkopiert.
- *
- * @see stpcpy
- * @see wcscpy
- * @see wcpncpy
- * @param dst Zeiger auf die Speicherstelle in die der Kopiertestring abgelegt
- * werden soll. Dabei muss vom Aufrufer sichergestellt werden, dass
- * dort mindestens speicher fuer wcslen(src) + 1 breite Zeichen ist.
- * @param src
- *
- * @return Zeiger auf das Ende (L'0') des Zielstrings.
- */
-wchar_t* wcpcpy(wchar_t* dst, const wchar_t* src);
-
-/**
- * String aus breiten Zeichen kopieren. Dabei werden hoechstens len Zeichen
- * kopiert. Sind in src weniger als len Zeichen wird dst mit L'\0' aufgefuellt.
- * Ist src laenger als oder gleich lang wie len wird der String in dst nich
- * nullterminiert, der Rueckgabewert zeigt also nich auf ein L'\0'. Die beiden
- * Speicherbereiche duerfen sich nicht ueberlappen. Diese Funktion ist das
- * Pendant zu strncpy.
- *
- * @see strncpy
- * @see wcpncpy
- * @param dst Zeiger auf den Speicherbereich der len breite Zeichen aufnehmen
- * kann. Es werden genau len Zeichen hineingeschrieben.
- * @param src Quellstring
- * @param len Anzahl der Zeichen, die in dst geschrieben werden sollen.
- *
- * @return Zeiger auf das letzte geschriebene Byte, also immer dst + len - 1
- */
-wchar_t* wcpncpy(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Zwei Strings aus breiten Zeichen ohne Unterscheidung von
- * Gross-/Kleinschreibung vergleichen inklusive abschliessendes L'\0'. Diese
- * Funktion ist das Pendant zu strcasecmp.
- *
- * @see strcasecmp
- * @see wcscmp
- * @see towlower
- * @param wcs1 Erster String
- * @param wcs2 Zweiter String
- *
- * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
- * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
- * groesser >0.
- */
-int wcscasecmp(const wchar_t* wcs1, const wchar_t* wcs2);
-
-/**
- * Zwei Strings aus breiten Zeichen aneinanderhaengen. Dabei wird der Inhalt von
- * src inklusive dem abschliessenden L'\0' ans Ende von dst kopiert. Der
- * Aufrufer muss sicherstellen, dass nach dst genug Speicher frei ist. Diese
- * Funktion ist das Pendant zu strcat.
- *
- * @see strcat
- * @see wcsncat
- * @param dst Zeiger auf den String an dessen Ende src angehaengt werden soll.
- * @param src Zeiger auf den String der an dst angehaengt werden soll.
- *
- * @return dst
- */
-wchar_t* wcscat(wchar_t* dst, const wchar_t* src);
-
-/**
- * Erstes Vorkommen eines breiten Zeichens aus einem String aus breiten Zeichen
- * heraussuchen. Diese Funktion ist das Pendant zu strchr.
- *
- * @see strchr
- * @param wcs Zeiger auf den String in dem gesucht werden soll.
- * @param wc Zeichen das gesucht werden soll.
- *
- * @return Zeiger auf das erste gefundene Zeichen oder NULL wenn keines gefunden
- * wurde.
- */
-wchar_t* wcschr(const wchar_t* wcs, wchar_t wc);
-
-/**
- * Zwei Strings aus breiten Zeichen inklusive dem abschliessenden L'\0'
- * vergleichen. Diese Funktion ist das Pendant zu strcmp.
- *
- * @param wcs1 Erster String
- * @param wcs2 Zweiter String
- *
- * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
- * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
- * groesser >0.
- */
-int wcscmp(const wchar_t* wcs1, const wchar_t* wcs2);
-
-/**
- * TODO
- */
-int wcscoll(const wchar_t* wcs1, const wchar_t* wcs2);
-
-/**
- * String aus Breiten Zeichen inklusive abschliessendem L'\0' kopieren. Der
- * Aufrufer hat sicherzustellen, dass dst genug Platz bietet. Die beiden Strings
- * duerfen sich nicht uberlappen. Diese Funktion ist das Pendant zu strcpy.
- *
- * @see strcpy
- * @see wcsncpy
- * @see wcpcpy
- * @param dst Zeiger auf den Speicherbereich in dem die Kopie abgelegt werden
- * soll.
- * @param src Zeiger auf den String der kopiert werden soll.
- *
- * @return dst
- */
-wchar_t* wcscpy(wchar_t* dst, const wchar_t* src);
-
-/**
- * String aus breiten Zeichen nach einem Vorkommen eines Zeichens aus set
- * durchsuchen. Diese Funktion ist das Pendant zu strcspn.
- *
- * @see strcspn
- * @see wcsspn
- * @param wcs Zeiger auf den String, dar durchsucht werden soll
- * @param set Zeiger auf den String mit den zu suchenden Zeichen.
- *
- * @return Offset vom Anfang des Strings oder wcslen(wcs) wenn kein Vorkommen
- * gefunden wurde.
- */
-size_t wcscspn(const wchar_t* wcs, const wchar_t* set);
-
-/**
- * String aus breiten Zeichen in einen neu allozierten Speicherbereich kopieren.
- * Diese Funktion ist das Pendant zu strdup.
- *
- * @see strdup
- * @param wcs Zeiger auf den zu kopierenden String
- *
- * @return Zeiger auf die Kopie. Muss vom Aufrufer freigegeben werden. Im
- * Fehlerfall NULL.
- */
-wchar_t* wcsdup(const wchar_t* wcs);
-
-/**
- * Kopiert src an das Ende des Strings dst. Dabei wird der String dst auf
- * maximal len - 1 Zeichen und L'\0' verlaengert, ausser wenn len == 0.
- *
- * @see wcsncat
- * @param dst Zeiger auf String an den src angehaengt werden soll
- * @param src Zeiger auf String der an dst angehaengt werden soll
- * @param len Anzahl Zeichen auf die dst Maximal verlaengert werden darf
- * inklusiv L'\0.'
- *
- * @return wcslen(urspruengliches dst) + wcslen(src); Wenn der Rueckgabewert >=
- * len ist, wurde src nich vollstaendig kopiert.
- */
-size_t wcslcat(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Kopiert einen String aus breiten Zeichen. Dabei werden maximal len - 1
- * Zeichen kopiert, und dst wird immer mit L'\0' terminiert, wenn len != 0 ist.
- *
- * @see wcscpy
- * @param dst Zeiger auf den Speicherbereich in dem die Kopie abgelegt werden
- * soll.
- * @param src Zeiger auf den Quellstring
- * @param len Anzahl der Zeichen inklusiv abschliessendes L'\0', die maximal in
- * dst geschrieben werden sollen.
- *
- * @return wcslen(src); Wenn der Rueckgabewert <= len ist, wurde src nicht
- * vollstaendig kopiert.
- */
-size_t wcslcpy(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Laenge eines Strings aus breiten Zeichen bestimmen. Dabei werden die Zeichen
- * gezaehlt, bis ein abschliessendes L'\0' gefunden wird. Das L'\0' wird nicht
- * mitgezaehlt. Diese Funktion ist das Pendant zu strlen.
- *
- * @see strlen
- * @param wcs Zeiger auf den String
- *
- * @return Laenge des Strings in Zeichen
- */
-size_t wcslen(const wchar_t* wcs);
-
-/**
- * Zwei Strings aus breiten Zeichen ohne Unterscheidung von
- * Gross-/Kleinschreibung vergleichen. Dabei werden maximal die ersten len
- * Zeichen von Beiden Strings verglichen. Diese Funktion ist das Pendant zu
- * strncasecmp.
- *
- * @see strncasecmp
- * @see wcscasecmp
- * @param wcs1 Erster String
- * @param wcs2 Zweiter String
- * @param len Anzahl der Zeichen, die maximal verglichen werden sollen, wenn
- * vorher kein L'\0' gefunden wird.
- *
- * @return 0 wenn die beiden Strings gleich sind, < 0 wenn das Zeichen in wcs2
- * groesser ist als das in wcs1 und > 0 wenn das Zeichen in wcs1
- * groesser ist als das in wcs2.
- */
-int wcsncasecmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
-
-/**
- * Zwei Strings aus breiten Zeichen aneinanderhaengen. Dabei werden maximal len
- * Zeichen aus src kopiert. Der Aufrufer muss sicherstellen, dass nach dem
- * String, auf den dst zeigt, noch mindestens len + 1 Zeichen platz haben. dst
- * wird in jedem Fall mit L'\0' terminiert. Diese Funktion ist das Pendant zu
- * strncat.
- *
- * @see strncat
- * @see wcscat
- * @param dst String an den src angehaengt werden soll
- * @param src String der an dst angehaengt werden soll
- * @param len Anzahl der Zeichen, die maximal kopiert werden aus src
- *
- * @return dst
- */
-wchar_t* wcsncat(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Zwei Strings aus breiten Zeichen vergleichen. Dabei werden maximal len
- * Zeichen verglichen. Diese Funktion ist das Pendant zu strncmp.
- *
- * @see strncmp
- * @see wcscmp
- * @param wcs1 Erster String
- * @param wcs2 Zweiter String
- * @param len Anzahl der Zeichen, die maximal verglichen werden sollen, wenn
- * vorher kein abschliessendes L'\0' angetroffen wurde.
- *
- * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
- * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
- * groesser >0.
- */
-int wcsncmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
-
-/**
- * String aus breiten Zeichen kopieren. Dabei werden maximal len Zeichen
- * kopiert. Die restlichen Zeichen im Puffer werden mit L'\0' gefuellt. Ist src
- * gleich lang wie oder laenger als len, wird dst nicht mit L'\0' terminiert.
- * Die beiden Strings duerfen sich nicht ueberlappen. Diese Funktion ist das
- * Pendant zu strncpy.
- *
- * @see strncpy
- * @see wcscpy
- * @param src String der kopiert werden soll
- * @param dst Zeiger auf den Speicherbereich in den src kopiert werden soll
- * @param len Anzahl der Zeichen, die maximal kopiert werden sollen
- *
- * @return dst
- */
-wchar_t* wcsncpy(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Laenge eines Strings aus breiten Zeichen errechnen. Dabei werden maximal max
- * Zeichen gezaehlt. Diese Funktion ist das Pendant zu strnlen.
- *
- * @see strnlen
- * @see wcslen
- * @param wcs String
- * @param max Anzahl der Zeichen, die maximal gezaehlt werden sollen
- *
- * @return Anzahl der Zeichen ohne abschliessendes L'\0'
- */
-size_t wcsnlen(const wchar_t* wcs, size_t max);
-
-/**
- * Erstes vorkommen eines breiten Zeichens aus set im String aus breiten Zeichen
- * wcs suchen. Diese Funktion ist das Pendant zu strpbrk.
- *
- * @see strpbrk
- * @see wcschr
- * @param wcs String der durchsucht werden soll
- * @param set String aus Zeichen nach denen gesucht werden soll
- *
- * @return Zeiger auf die Position an der ein Zeichen gefunden wurde oder NULL
- * falls keines gefunden wurde.
- */
-wchar_t* wcspbrk(const wchar_t* wcs, const wchar_t* set);
-
-/**
- * Letztes Vorkommen eines breiten Zeichens in einem String aus breiten Zeichen
- * suchen. Diese Funktion ist das Pendant zu strrchr.
- *
- * @see strrchr
- * @see wcschr
- * @param wcs String der durchsucht werden soll
- * @param wc Zeichen das gesucht werden soll
- *
- * @return Zeiger auf das letzte gefundene Vorkommen, oder NULL falls das
- * Zeichen nicht gefunden wurde.
- */
-wchar_t* wcsrchr(const wchar_t* wcs, wchar_t wc);
-
-/**
- * Durchsucht einen String aus breiten Zeichen nach dem ersten Zeichen das nicht
- * in set vorkommt. Diese Funktion ist das Pendant zu strspn.
- *
- * @see strspn
- * @see wcschr
- * @param wcs String der durchsucht werden soll
- * @param set Zeichen die zugelassen sind
- *
- * @return Offset des ersten Zeichens das nicht in set vorkommt, oder
- * wcslen(wcs) falls alle Zeichen in set enthalten sind.
- */
-size_t wcsspn(const wchar_t* wcs, const wchar_t* set);
-
-/**
- * Erstes Vorkommen des Breiten Strings find in wcs suchen. Diese Funktion ist
- * das Pendant zu strstr.
- *
- * @see strstr
- * @see wcschr
- * @param wcs String der durchsucht werden soll
- * @param find String der gesucht werden soll
- *
- * @return Zeiger auf das erste Vorkommen in wcs oder NULL falls keines gefunden
- * wurde.
- */
-wchar_t* wcsstr(const wchar_t* wcs, const wchar_t* find);
-
-/**
- * String aus breiten Zeichen in Tokens aufspalten, die durch die in delim
- * angegebenen Zeichen getrennt werden. wcs wird dabei veraendert. Ist wcs !=
- * NULL beginnt die suche dort, sonst wird bei *last begonnen. *last wird
- * jeweils auf den Anfang des naechsten Token gesetzt, oder auf NULL, wenn das
- * Ende erreicht wurde.
- * Diese Funktion ist das Pendant zu strtok.
- *
- * @see strtok
- * @param wcs Zeiger auf das Zeichen bei dem die Zerlegung in Tokens begonnen
- * werden soll, oder NULL, wenn der Wert von *last genommen werden
- * soll.
- * @param delim Zeichen die zwei Tokens voneinander trennen koennen
- * @param last Zeiger auf die Speicherstelle an der die Funktion die Position
- * des naechsten token speichern kann fuer den internen Gebrauch,
- * um beim Naechsten Aufruf mit wcs == NULL das naechste Token
- * zurueck geben zu koennen.
- *
- * @return Zeiger auf das aktuelle Token, oder NULL wenn keine Tokens mehr
- * vorhanden sind.
- */
-wchar_t* wcstok(wchar_t* wcs, const wchar_t* delim, wchar_t** last);
-
-/**
- * Speicherbereich aus breiten Zeichen nach einem bestimmten Zeichen
- * durchsuchen. Diese Funktion ist das Pendant zu memchr.
- *
- * @see memchr
- * @see wcschr
- * @param wcs Zeiger auf den Speicherbereich
- * @param wc Zu suchendes Zeichen
- * @param len Laenge des Speicherbereichs
- *
- * @return Zeiger auf das gefundene Zeichen oder NULL falls keines gefunden
- * wurde.
- */
-wchar_t* wmemchr(const wchar_t* wcs, wchar_t wc, size_t len);
-
-/**
- * Zwei Speicherbereiche aus breiten Zeichen vergleichen. Diese Funktion ist das
- * Pendant zu memcmp.
- *
- * @see memcmp
- * @see wcscpm
- * @see wcsncmp
- * @param wcs1 Zeiger auf den ersten Speicherbereich
- * @param wcs2 Zeiger auf den zweiten Speicherbereich
- * @param len Laenge der beiden Speicherbereiche
- *
- * @return 0 wenn die beiden Speicherbereiche gleich sind, < 0 wenn das erste
- * unterschiedliche Zeichen in wcs1 kleiner ist als das
- * Korrespondierende in wcs2 oder > 0 wenn es groesser ist.
- */
-int wmemcmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
-
-/**
- * Speicherbereich aus breiten Zeichen kopieren. Die beiden Speicherbereiche
- * duerfen sich nicht ueberlappen. Diese Funktion ist das Pendant zu memcpy.
- *
- * @see memcpy
- * @see wcsncpy
- * @see wcscpy
- * @param dst Speicherbereich in den kopiert werden soll
- * @param src Speicherbereich der kopiert werden soll
- * @param len Laenge der Speicherbereiche
- *
- * @return dst
- */
-wchar_t* wmemcpy(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Speicherbereich aus breiten Zeichen kopieren. Die beiden Speicherbereiche
- * duerfen sich ueberlappen. Diese Funktion ist das Pendant zu memcpy.
- *
- * @see memmove
- * @see wmemcpy
- * @param dst Speicherbereich in den kopiert werden soll
- * @param src Speicherbereich der kopiert werden soll
- * @param len Laenge der Speicherbereiche
- *
- * @return dst
- */
-wchar_t* wmemmove(wchar_t* dst, const wchar_t* src, size_t len);
-
-/**
- * Speicherbereich aus breiten Zeichen mit einem bestimmten Zeichen ausfuellen.
- * Diese Funktion ist das pendant zu memset.
- *
- * @see memset
- * @param wcs Zeiger auf den Speicherbereich
- * @param wc Zeichen mit dem der Speicherbereich gefuellt werden soll
- * @param len Laenge des Speicherbereichs
- *
- * @return wcs
- */
-wchar_t* wmemset(wchar_t* wcs, wchar_t wc, size_t len);
-
-
-
-
-/* WSTDIO */
-
-/**
- * Breites Zeichen aus einer Datei lesen.
- *
- * @param stream Die geoeffnete Datei
- *
- * @return Das gelesene Zeichen oder WEOF im Fehlerfall.
- */
-wint_t fgetwc(FILE* stream);
-
-/**
- * Wie fgetwc, mit dem Unterschied, dass getwc als Makro implementiert werden
- * darf, das den Parameter mehrmals auswertet
- *
- * @see fgetwc
- */
-#define getwc(stream) fgetwc(stream)
-
-/**
- * Breites Zeichen von der Standardeingabe lesen.
- *
- * @see fgetwc
- */
-wint_t getwchar(void);
-
-
-/**
- * Ein breites Zeichen in eine Datei schreiben, dabei wird das Zeichen
- * entsprechend codiert.
- *
- * @param wc Das zu schreibende Zeichen
- * @param stream Die geoeffnete Datei
- *
- * @return Das geschriebene Zeichen oder WEOF im Fehlerfall
- */
-wint_t fputwc(wchar_t wc, FILE* stream);
-
-/**
- * Wie fputwc, mit dem Unterschied, dass putwc als Makro implementiert werden
- * darf, das seine Parameter mehrmals auswertet.
- *
- * @see fputwc
- */
-#define putwc(wc, stream) fputwc(wc, stream)
-
-/**
- * Breites Zeichen auf die Standardausgabe schreiben
- *
- * @see fputwc
- * @param wc Das zu schreibende Zeichen
- *
- * @return Das geschriebene Zeichen oder WEOF im Fehlerfall
- */
-wint_t putwchar(wchar_t wc);
-
-/**
- * Einen String aus breiten Zeichen in den angegebenen Stream schreiben.
- *
- * @param wcs Zeiger auf den String aus breiten Zeichen
- * @param stream Die geoeffnete Datei
- *
+typedef int mbstate_t;
+
+
+
+/* WSTRINGS */
+
+/**
+ * Reentrante Variante von mbtowc, bei uns mit UTF-8 aber identisch.
+ * @see mbtowc
+ */
+size_t mbrtowc(wchar_t* wc, const char* s, size_t len, mbstate_t* ps);
+
+/**
+ * Reentrante Variante von wctomb, bei uns mit UTF-8 aber identisch.
+ * @see wctomb
+ */
+size_t wcrtomb(char* buf, wchar_t wc, mbstate_t* ps);
+
+/**
+ * Reentrante Variante von wcstombs. Der einzige wesentliche Unterschied fuer
+ * uns mit UTF8 ist, dass *wcs so aktualisiert wird, dass es bei einem Abbruch,
+ * sei es weil buf zu klein ist oder weil ein ungueltiges Zeichen angetroffen
+ * wurde, auf das betreffende Zeichen zeigt. Wird der String erfolgreich
+ * verarbeitet, wird *wcs auf NULL gesetzt.
+ * @see wcstombs
+ */
+size_t wcsrtombs(char* buf, const wchar_t** wcs, size_t len, mbstate_t* ps);
+
+/**
+ * Reentrante Variante von mbstowcs. Der einzige wesentliche Unterschied fuer
+ * uns mit UTF8 ist, dass *str so aktualisiert wird, dass es bei einem Abbruch,
+ * sei es weil buf zu klein ist oder weil ein ungueltiges Zeichen angetroffen
+ * wurde, auf das betreffende Zeichen zeigt. Wird der String erfolgreich
+ * verarbeitet, wird *str auf NULL gesetzt.
+ * @see mbstowcs
+ */
+size_t mbsrtowcs(wchar_t* buf, const char** str, size_t len, mbstate_t* ps);
+
+
+/**
+ * Anzahl der Spalten, die ein Zeichen in Anspruch nimmt, errechnen. Fuer c = 0
+ * wird 0 zuruekgegeben. Falls es sich nicht um ein druckbares Zeichen handelt,
+ * wird -1 zurueckgegeben.
+ *
+ * @param wc Das breite Zeichen
+ *
+ * @return Anzahl Spalten, oder -1 wenn das Zeichen nicht druckbar ist.
+ */
+int wcwidth(wchar_t wc);
+
+/**
+ * Anzahl der Spalten, die ein String aus breiten Zeichen in Anspruch nimmt,
+ * errechnen. Wird ein nicht druckbares Zeichen erkannt, wird abgebrochen.
+ *
+ * @see wcwidth
+ * @param wcs Zeiger auf das erste Zeichen
+ * @param len Anzahl der Zeichen
+ *
+ * @return Anzahl der Zeichen oder -1 im Fehlerfall.
+ */
+int wcswidth(const wchar_t* wcs, size_t len);
+
+
+/**
+ * Einen String aus breiten Zeichen kopieren, das ist das Pendant zu stpcpy. Die
+ * beiden Strings duerfen sich nicht ueberlappen. Das abschliessende L'0' wird
+ * mitkopiert.
+ *
+ * @see stpcpy
+ * @see wcscpy
+ * @see wcpncpy
+ * @param dst Zeiger auf die Speicherstelle in die der Kopiertestring abgelegt
+ * werden soll. Dabei muss vom Aufrufer sichergestellt werden, dass
+ * dort mindestens speicher fuer wcslen(src) + 1 breite Zeichen ist.
+ * @param src
+ *
+ * @return Zeiger auf das Ende (L'0') des Zielstrings.
+ */
+wchar_t* wcpcpy(wchar_t* dst, const wchar_t* src);
+
+/**
+ * String aus breiten Zeichen kopieren. Dabei werden hoechstens len Zeichen
+ * kopiert. Sind in src weniger als len Zeichen wird dst mit L'\0' aufgefuellt.
+ * Ist src laenger als oder gleich lang wie len wird der String in dst nich
+ * nullterminiert, der Rueckgabewert zeigt also nich auf ein L'\0'. Die beiden
+ * Speicherbereiche duerfen sich nicht ueberlappen. Diese Funktion ist das
+ * Pendant zu strncpy.
+ *
+ * @see strncpy
+ * @see wcpncpy
+ * @param dst Zeiger auf den Speicherbereich der len breite Zeichen aufnehmen
+ * kann. Es werden genau len Zeichen hineingeschrieben.
+ * @param src Quellstring
+ * @param len Anzahl der Zeichen, die in dst geschrieben werden sollen.
+ *
+ * @return Zeiger auf das letzte geschriebene Byte, also immer dst + len - 1
+ */
+wchar_t* wcpncpy(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Zwei Strings aus breiten Zeichen ohne Unterscheidung von
+ * Gross-/Kleinschreibung vergleichen inklusive abschliessendes L'\0'. Diese
+ * Funktion ist das Pendant zu strcasecmp.
+ *
+ * @see strcasecmp
+ * @see wcscmp
+ * @see towlower
+ * @param wcs1 Erster String
+ * @param wcs2 Zweiter String
+ *
+ * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
+ * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
+ * groesser >0.
+ */
+int wcscasecmp(const wchar_t* wcs1, const wchar_t* wcs2);
+
+/**
+ * Zwei Strings aus breiten Zeichen aneinanderhaengen. Dabei wird der Inhalt von
+ * src inklusive dem abschliessenden L'\0' ans Ende von dst kopiert. Der
+ * Aufrufer muss sicherstellen, dass nach dst genug Speicher frei ist. Diese
+ * Funktion ist das Pendant zu strcat.
+ *
+ * @see strcat
+ * @see wcsncat
+ * @param dst Zeiger auf den String an dessen Ende src angehaengt werden soll.
+ * @param src Zeiger auf den String der an dst angehaengt werden soll.
+ *
+ * @return dst
+ */
+wchar_t* wcscat(wchar_t* dst, const wchar_t* src);
+
+/**
+ * Erstes Vorkommen eines breiten Zeichens aus einem String aus breiten Zeichen
+ * heraussuchen. Diese Funktion ist das Pendant zu strchr.
+ *
+ * @see strchr
+ * @param wcs Zeiger auf den String in dem gesucht werden soll.
+ * @param wc Zeichen das gesucht werden soll.
+ *
+ * @return Zeiger auf das erste gefundene Zeichen oder NULL wenn keines gefunden
+ * wurde.
+ */
+wchar_t* wcschr(const wchar_t* wcs, wchar_t wc);
+
+/**
+ * Zwei Strings aus breiten Zeichen inklusive dem abschliessenden L'\0'
+ * vergleichen. Diese Funktion ist das Pendant zu strcmp.
+ *
+ * @param wcs1 Erster String
+ * @param wcs2 Zweiter String
+ *
+ * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
+ * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
+ * groesser >0.
+ */
+int wcscmp(const wchar_t* wcs1, const wchar_t* wcs2);
+
+/**
+ * TODO
+ */
+int wcscoll(const wchar_t* wcs1, const wchar_t* wcs2);
+
+/**
+ * String aus Breiten Zeichen inklusive abschliessendem L'\0' kopieren. Der
+ * Aufrufer hat sicherzustellen, dass dst genug Platz bietet. Die beiden Strings
+ * duerfen sich nicht uberlappen. Diese Funktion ist das Pendant zu strcpy.
+ *
+ * @see strcpy
+ * @see wcsncpy
+ * @see wcpcpy
+ * @param dst Zeiger auf den Speicherbereich in dem die Kopie abgelegt werden
+ * soll.
+ * @param src Zeiger auf den String der kopiert werden soll.
+ *
+ * @return dst
+ */
+wchar_t* wcscpy(wchar_t* dst, const wchar_t* src);
+
+/**
+ * String aus breiten Zeichen nach einem Vorkommen eines Zeichens aus set
+ * durchsuchen. Diese Funktion ist das Pendant zu strcspn.
+ *
+ * @see strcspn
+ * @see wcsspn
+ * @param wcs Zeiger auf den String, dar durchsucht werden soll
+ * @param set Zeiger auf den String mit den zu suchenden Zeichen.
+ *
+ * @return Offset vom Anfang des Strings oder wcslen(wcs) wenn kein Vorkommen
+ * gefunden wurde.
+ */
+size_t wcscspn(const wchar_t* wcs, const wchar_t* set);
+
+/**
+ * String aus breiten Zeichen in einen neu allozierten Speicherbereich kopieren.
+ * Diese Funktion ist das Pendant zu strdup.
+ *
+ * @see strdup
+ * @param wcs Zeiger auf den zu kopierenden String
+ *
+ * @return Zeiger auf die Kopie. Muss vom Aufrufer freigegeben werden. Im
+ * Fehlerfall NULL.
+ */
+wchar_t* wcsdup(const wchar_t* wcs);
+
+/**
+ * Kopiert src an das Ende des Strings dst. Dabei wird der String dst auf
+ * maximal len - 1 Zeichen und L'\0' verlaengert, ausser wenn len == 0.
+ *
+ * @see wcsncat
+ * @param dst Zeiger auf String an den src angehaengt werden soll
+ * @param src Zeiger auf String der an dst angehaengt werden soll
+ * @param len Anzahl Zeichen auf die dst Maximal verlaengert werden darf
+ * inklusiv L'\0.'
+ *
+ * @return wcslen(urspruengliches dst) + wcslen(src); Wenn der Rueckgabewert >=
+ * len ist, wurde src nich vollstaendig kopiert.
+ */
+size_t wcslcat(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Kopiert einen String aus breiten Zeichen. Dabei werden maximal len - 1
+ * Zeichen kopiert, und dst wird immer mit L'\0' terminiert, wenn len != 0 ist.
+ *
+ * @see wcscpy
+ * @param dst Zeiger auf den Speicherbereich in dem die Kopie abgelegt werden
+ * soll.
+ * @param src Zeiger auf den Quellstring
+ * @param len Anzahl der Zeichen inklusiv abschliessendes L'\0', die maximal in
+ * dst geschrieben werden sollen.
+ *
+ * @return wcslen(src); Wenn der Rueckgabewert <= len ist, wurde src nicht
+ * vollstaendig kopiert.
+ */
+size_t wcslcpy(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Laenge eines Strings aus breiten Zeichen bestimmen. Dabei werden die Zeichen
+ * gezaehlt, bis ein abschliessendes L'\0' gefunden wird. Das L'\0' wird nicht
+ * mitgezaehlt. Diese Funktion ist das Pendant zu strlen.
+ *
+ * @see strlen
+ * @param wcs Zeiger auf den String
+ *
+ * @return Laenge des Strings in Zeichen
+ */
+size_t wcslen(const wchar_t* wcs);
+
+/**
+ * Zwei Strings aus breiten Zeichen ohne Unterscheidung von
+ * Gross-/Kleinschreibung vergleichen. Dabei werden maximal die ersten len
+ * Zeichen von Beiden Strings verglichen. Diese Funktion ist das Pendant zu
+ * strncasecmp.
+ *
+ * @see strncasecmp
+ * @see wcscasecmp
+ * @param wcs1 Erster String
+ * @param wcs2 Zweiter String
+ * @param len Anzahl der Zeichen, die maximal verglichen werden sollen, wenn
+ * vorher kein L'\0' gefunden wird.
+ *
+ * @return 0 wenn die beiden Strings gleich sind, < 0 wenn das Zeichen in wcs2
+ * groesser ist als das in wcs1 und > 0 wenn das Zeichen in wcs1
+ * groesser ist als das in wcs2.
+ */
+int wcsncasecmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
+
+/**
+ * Zwei Strings aus breiten Zeichen aneinanderhaengen. Dabei werden maximal len
+ * Zeichen aus src kopiert. Der Aufrufer muss sicherstellen, dass nach dem
+ * String, auf den dst zeigt, noch mindestens len + 1 Zeichen platz haben. dst
+ * wird in jedem Fall mit L'\0' terminiert. Diese Funktion ist das Pendant zu
+ * strncat.
+ *
+ * @see strncat
+ * @see wcscat
+ * @param dst String an den src angehaengt werden soll
+ * @param src String der an dst angehaengt werden soll
+ * @param len Anzahl der Zeichen, die maximal kopiert werden aus src
+ *
+ * @return dst
+ */
+wchar_t* wcsncat(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Zwei Strings aus breiten Zeichen vergleichen. Dabei werden maximal len
+ * Zeichen verglichen. Diese Funktion ist das Pendant zu strncmp.
+ *
+ * @see strncmp
+ * @see wcscmp
+ * @param wcs1 Erster String
+ * @param wcs2 Zweiter String
+ * @param len Anzahl der Zeichen, die maximal verglichen werden sollen, wenn
+ * vorher kein abschliessendes L'\0' angetroffen wurde.
+ *
+ * @return 0 wenn die Strings gleich sind, oder <0 wenn das erste
+ * ungleiche Zeichen in wcs1 kleiner ist als das in wcs2, ist es
+ * groesser >0.
+ */
+int wcsncmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
+
+/**
+ * String aus breiten Zeichen kopieren. Dabei werden maximal len Zeichen
+ * kopiert. Die restlichen Zeichen im Puffer werden mit L'\0' gefuellt. Ist src
+ * gleich lang wie oder laenger als len, wird dst nicht mit L'\0' terminiert.
+ * Die beiden Strings duerfen sich nicht ueberlappen. Diese Funktion ist das
+ * Pendant zu strncpy.
+ *
+ * @see strncpy
+ * @see wcscpy
+ * @param src String der kopiert werden soll
+ * @param dst Zeiger auf den Speicherbereich in den src kopiert werden soll
+ * @param len Anzahl der Zeichen, die maximal kopiert werden sollen
+ *
+ * @return dst
+ */
+wchar_t* wcsncpy(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Laenge eines Strings aus breiten Zeichen errechnen. Dabei werden maximal max
+ * Zeichen gezaehlt. Diese Funktion ist das Pendant zu strnlen.
+ *
+ * @see strnlen
+ * @see wcslen
+ * @param wcs String
+ * @param max Anzahl der Zeichen, die maximal gezaehlt werden sollen
+ *
+ * @return Anzahl der Zeichen ohne abschliessendes L'\0'
+ */
+size_t wcsnlen(const wchar_t* wcs, size_t max);
+
+/**
+ * Erstes vorkommen eines breiten Zeichens aus set im String aus breiten Zeichen
+ * wcs suchen. Diese Funktion ist das Pendant zu strpbrk.
+ *
+ * @see strpbrk
+ * @see wcschr
+ * @param wcs String der durchsucht werden soll
+ * @param set String aus Zeichen nach denen gesucht werden soll
+ *
+ * @return Zeiger auf die Position an der ein Zeichen gefunden wurde oder NULL
+ * falls keines gefunden wurde.
+ */
+wchar_t* wcspbrk(const wchar_t* wcs, const wchar_t* set);
+
+/**
+ * Letztes Vorkommen eines breiten Zeichens in einem String aus breiten Zeichen
+ * suchen. Diese Funktion ist das Pendant zu strrchr.
+ *
+ * @see strrchr
+ * @see wcschr
+ * @param wcs String der durchsucht werden soll
+ * @param wc Zeichen das gesucht werden soll
+ *
+ * @return Zeiger auf das letzte gefundene Vorkommen, oder NULL falls das
+ * Zeichen nicht gefunden wurde.
+ */
+wchar_t* wcsrchr(const wchar_t* wcs, wchar_t wc);
+
+/**
+ * Durchsucht einen String aus breiten Zeichen nach dem ersten Zeichen das nicht
+ * in set vorkommt. Diese Funktion ist das Pendant zu strspn.
+ *
+ * @see strspn
+ * @see wcschr
+ * @param wcs String der durchsucht werden soll
+ * @param set Zeichen die zugelassen sind
+ *
+ * @return Offset des ersten Zeichens das nicht in set vorkommt, oder
+ * wcslen(wcs) falls alle Zeichen in set enthalten sind.
+ */
+size_t wcsspn(const wchar_t* wcs, const wchar_t* set);
+
+/**
+ * Erstes Vorkommen des Breiten Strings find in wcs suchen. Diese Funktion ist
+ * das Pendant zu strstr.
+ *
+ * @see strstr
+ * @see wcschr
+ * @param wcs String der durchsucht werden soll
+ * @param find String der gesucht werden soll
+ *
+ * @return Zeiger auf das erste Vorkommen in wcs oder NULL falls keines gefunden
+ * wurde.
+ */
+wchar_t* wcsstr(const wchar_t* wcs, const wchar_t* find);
+
+/**
+ * String aus breiten Zeichen in Tokens aufspalten, die durch die in delim
+ * angegebenen Zeichen getrennt werden. wcs wird dabei veraendert. Ist wcs !=
+ * NULL beginnt die suche dort, sonst wird bei *last begonnen. *last wird
+ * jeweils auf den Anfang des naechsten Token gesetzt, oder auf NULL, wenn das
+ * Ende erreicht wurde.
+ * Diese Funktion ist das Pendant zu strtok.
+ *
+ * @see strtok
+ * @param wcs Zeiger auf das Zeichen bei dem die Zerlegung in Tokens begonnen
+ * werden soll, oder NULL, wenn der Wert von *last genommen werden
+ * soll.
+ * @param delim Zeichen die zwei Tokens voneinander trennen koennen
+ * @param last Zeiger auf die Speicherstelle an der die Funktion die Position
+ * des naechsten token speichern kann fuer den internen Gebrauch,
+ * um beim Naechsten Aufruf mit wcs == NULL das naechste Token
+ * zurueck geben zu koennen.
+ *
+ * @return Zeiger auf das aktuelle Token, oder NULL wenn keine Tokens mehr
+ * vorhanden sind.
+ */
+wchar_t* wcstok(wchar_t* wcs, const wchar_t* delim, wchar_t** last);
+
+/**
+ * Speicherbereich aus breiten Zeichen nach einem bestimmten Zeichen
+ * durchsuchen. Diese Funktion ist das Pendant zu memchr.
+ *
+ * @see memchr
+ * @see wcschr
+ * @param wcs Zeiger auf den Speicherbereich
+ * @param wc Zu suchendes Zeichen
+ * @param len Laenge des Speicherbereichs
+ *
+ * @return Zeiger auf das gefundene Zeichen oder NULL falls keines gefunden
+ * wurde.
+ */
+wchar_t* wmemchr(const wchar_t* wcs, wchar_t wc, size_t len);
+
+/**
+ * Zwei Speicherbereiche aus breiten Zeichen vergleichen. Diese Funktion ist das
+ * Pendant zu memcmp.
+ *
+ * @see memcmp
+ * @see wcscpm
+ * @see wcsncmp
+ * @param wcs1 Zeiger auf den ersten Speicherbereich
+ * @param wcs2 Zeiger auf den zweiten Speicherbereich
+ * @param len Laenge der beiden Speicherbereiche
+ *
+ * @return 0 wenn die beiden Speicherbereiche gleich sind, < 0 wenn das erste
+ * unterschiedliche Zeichen in wcs1 kleiner ist als das
+ * Korrespondierende in wcs2 oder > 0 wenn es groesser ist.
+ */
+int wmemcmp(const wchar_t* wcs1, const wchar_t* wcs2, size_t len);
+
+/**
+ * Speicherbereich aus breiten Zeichen kopieren. Die beiden Speicherbereiche
+ * duerfen sich nicht ueberlappen. Diese Funktion ist das Pendant zu memcpy.
+ *
+ * @see memcpy
+ * @see wcsncpy
+ * @see wcscpy
+ * @param dst Speicherbereich in den kopiert werden soll
+ * @param src Speicherbereich der kopiert werden soll
+ * @param len Laenge der Speicherbereiche
+ *
+ * @return dst
+ */
+wchar_t* wmemcpy(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Speicherbereich aus breiten Zeichen kopieren. Die beiden Speicherbereiche
+ * duerfen sich ueberlappen. Diese Funktion ist das Pendant zu memcpy.
+ *
+ * @see memmove
+ * @see wmemcpy
+ * @param dst Speicherbereich in den kopiert werden soll
+ * @param src Speicherbereich der kopiert werden soll
+ * @param len Laenge der Speicherbereiche
+ *
+ * @return dst
+ */
+wchar_t* wmemmove(wchar_t* dst, const wchar_t* src, size_t len);
+
+/**
+ * Speicherbereich aus breiten Zeichen mit einem bestimmten Zeichen ausfuellen.
+ * Diese Funktion ist das pendant zu memset.
+ *
+ * @see memset
+ * @param wcs Zeiger auf den Speicherbereich
+ * @param wc Zeichen mit dem der Speicherbereich gefuellt werden soll
+ * @param len Laenge des Speicherbereichs
+ *
+ * @return wcs
+ */
+wchar_t* wmemset(wchar_t* wcs, wchar_t wc, size_t len);
+
+
+
+
+/* WSTDIO */
+
+/**
+ * Breites Zeichen aus einer Datei lesen.
+ *
+ * @param stream Die geoeffnete Datei
+ *
+ * @return Das gelesene Zeichen oder WEOF im Fehlerfall.
+ */
+wint_t fgetwc(FILE* stream);
+
+/**
+ * Wie fgetwc, mit dem Unterschied, dass getwc als Makro implementiert werden
+ * darf, das den Parameter mehrmals auswertet
+ *
+ * @see fgetwc
+ */
+#define getwc(stream) fgetwc(stream)
+
+/**
+ * Breites Zeichen von der Standardeingabe lesen.
+ *
+ * @see fgetwc
+ */
+wint_t getwchar(void);
+
+
+/**
+ * Ein breites Zeichen in eine Datei schreiben, dabei wird das Zeichen
+ * entsprechend codiert.
+ *
+ * @param wc Das zu schreibende Zeichen
+ * @param stream Die geoeffnete Datei
+ *
+ * @return Das geschriebene Zeichen oder WEOF im Fehlerfall
+ */
+wint_t fputwc(wchar_t wc, FILE* stream);
+
+/**
+ * Wie fputwc, mit dem Unterschied, dass putwc als Makro implementiert werden
+ * darf, das seine Parameter mehrmals auswertet.
+ *
+ * @see fputwc
+ */
+#define putwc(wc, stream) fputwc(wc, stream)
+
+/**
+ * Breites Zeichen auf die Standardausgabe schreiben
+ *
+ * @see fputwc
+ * @param wc Das zu schreibende Zeichen
+ *
+ * @return Das geschriebene Zeichen oder WEOF im Fehlerfall
+ */
+wint_t putwchar(wchar_t wc);
+
+/**
+ * Einen String aus breiten Zeichen in den angegebenen Stream schreiben.
+ *
+ * @param wcs Zeiger auf den String aus breiten Zeichen
+ * @param stream Die geoeffnete Datei
+ *
* @return Bei Erfolg > 0, im Fehlerfall -1
*/
int fputws(const wchar_t* wcs, FILE* stream);
diff --git a/src/modules/init/module.mk b/src/modules/init/module.mk
index 84fdeba..f5b9fce 100644
--- a/src/modules/init/module.mk
+++ b/src/modules/init/module.mk
@@ -1,5 +1,5 @@
-# Die Variablennamen sind immer Name des Moduls + _SRC bzw. _OBJS.
-# Die .c-Dateien im Unterverzeichnis zlib hinzufügen.
-init_SRC += $(call SOURCE_FILES,$(MODULE_PATH)/zlib))
-# Die Liste der Objektdateien aktualisieren.
+# Die Variablennamen sind immer Name des Moduls + _SRC bzw. _OBJS.
+# Die .c-Dateien im Unterverzeichnis zlib hinzufügen.
+init_SRC += $(call SOURCE_FILES,$(MODULE_PATH)/zlib))
+# Die Liste der Objektdateien aktualisieren.
init_OBJS := $(call OBJECT_FILES,$(init_SRC))
\ No newline at end of file
diff --git a/src/modules/testlib/test_printf.c b/src/modules/testlib/test_printf.c
index b7b4815..633f7c8 100644
--- a/src/modules/testlib/test_printf.c
+++ b/src/modules/testlib/test_printf.c
@@ -1,52 +1,52 @@
-#include "stdio.h"
-#include <string.h>
-
-// toter code. tests.c entsprechend modifizieren.
-void test_printf(void)
-{
- printf("TESTE PRINTF \n");
-
- printf("printf: ");
- printf("a");
- printf("%c", 'b');
- printf("%s", "c1");
- printf("%d", 23);
- printf("%o", 045);
- printf("%x (erwartet: abc1234567890)\n", 0x67890);
-
- unsigned long long ull = 12345678901234567890ULL;
- printf("llu:\t\t%llu%llu\n (erwartet:\t1234567890123456789012345678901234567890)\n", ull, ull);
- printf("lld:\t\t%lld%lld\n (erwartet:\t-6101065172474983726-6101065172474983726)\n", ull, ull);
-
- printf("[%d], [%8d], [% 8d], [%08d], [%-8d] (erwartet: ->\n[-123], [ -123], [ -123], [-0000123], [-123 ])\n", -123, -123, -123, -123, -123);
-
- printf("[%s], [%5s], [%-5s] (erwartet [abc], [ abc], [abc ])\n", "abc", "abc", "abc");
-
-#define STRINGIFY(x...) #x
-#define TOSTRING(x) STRINGIFY(x)
-
-#define FORMAT "a%c%s%d%o%x"
-#define ARGS 'b', "c1", 23, 045, 0x67890
-
- char buf[1000];
- int ret, n, i, len[]={0, 8, 13, 14};
- char* expected[]={"OOPS", "abc1234", "abc123456789", "abc1234567890"};
- printf("sprintf: \n");
- ret = sprintf(buf, FORMAT, ARGS);
- printf("\tsprintf(buf, \"%s\", %s)=%d\n\tbuf=%s, strlen(buf)=%u\n", FORMAT, TOSTRING(ARGS), ret, buf, strlen(buf));
-
- printf("snprintf: snprintf(buf, n, \"%s\", %s)\n", FORMAT, TOSTRING(ARGS));
- for(i = 0; i < 4; i++)
- {
- n = len[i];
- buf[n] = 'O'; buf[n+1] = 'O'; buf[n+2] = 'P'; buf[n+3] = 'S'; buf[n+4] = 0;
- ret = snprintf(buf, n, FORMAT, ARGS);
- printf("\tsnprintf(...,n=%d,...)=%d, buf=%s, strlen(buf)=%u (erwartet %s)\n", n, ret, buf, strlen(buf), expected[i]);
- }
-
- printf("asprintf: ");
- char * retbuf;
- ret = asprintf(&retbuf, FORMAT, ARGS);
- printf(" %p %s %u\n (erwartet: irgendwas!=0, abc1234567890, 13)", retbuf, retbuf, strlen(retbuf));
-
-}
+#include "stdio.h"
+#include <string.h>
+
+// toter code. tests.c entsprechend modifizieren.
+void test_printf(void)
+{
+ printf("TESTE PRINTF \n");
+
+ printf("printf: ");
+ printf("a");
+ printf("%c", 'b');
+ printf("%s", "c1");
+ printf("%d", 23);
+ printf("%o", 045);
+ printf("%x (erwartet: abc1234567890)\n", 0x67890);
+
+ unsigned long long ull = 12345678901234567890ULL;
+ printf("llu:\t\t%llu%llu\n (erwartet:\t1234567890123456789012345678901234567890)\n", ull, ull);
+ printf("lld:\t\t%lld%lld\n (erwartet:\t-6101065172474983726-6101065172474983726)\n", ull, ull);
+
+ printf("[%d], [%8d], [% 8d], [%08d], [%-8d] (erwartet: ->\n[-123], [ -123], [ -123], [-0000123], [-123 ])\n", -123, -123, -123, -123, -123);
+
+ printf("[%s], [%5s], [%-5s] (erwartet [abc], [ abc], [abc ])\n", "abc", "abc", "abc");
+
+#define STRINGIFY(x...) #x
+#define TOSTRING(x) STRINGIFY(x)
+
+#define FORMAT "a%c%s%d%o%x"
+#define ARGS 'b', "c1", 23, 045, 0x67890
+
+ char buf[1000];
+ int ret, n, i, len[]={0, 8, 13, 14};
+ char* expected[]={"OOPS", "abc1234", "abc123456789", "abc1234567890"};
+ printf("sprintf: \n");
+ ret = sprintf(buf, FORMAT, ARGS);
+ printf("\tsprintf(buf, \"%s\", %s)=%d\n\tbuf=%s, strlen(buf)=%u\n", FORMAT, TOSTRING(ARGS), ret, buf, strlen(buf));
+
+ printf("snprintf: snprintf(buf, n, \"%s\", %s)\n", FORMAT, TOSTRING(ARGS));
+ for(i = 0; i < 4; i++)
+ {
+ n = len[i];
+ buf[n] = 'O'; buf[n+1] = 'O'; buf[n+2] = 'P'; buf[n+3] = 'S'; buf[n+4] = 0;
+ ret = snprintf(buf, n, FORMAT, ARGS);
+ printf("\tsnprintf(...,n=%d,...)=%d, buf=%s, strlen(buf)=%u (erwartet %s)\n", n, ret, buf, strlen(buf), expected[i]);
+ }
+
+ printf("asprintf: ");
+ char * retbuf;
+ ret = asprintf(&retbuf, FORMAT, ARGS);
+ printf(" %p %s %u\n (erwartet: irgendwas!=0, abc1234567890, 13)", retbuf, retbuf, strlen(retbuf));
+
+}
--
1.7.1