Index: kernel/arch/arm32/src/arm32.c
===================================================================
--- kernel/arch/arm32/src/arm32.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/arm32/src/arm32.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -63,5 +63,5 @@
 		init.tasks[i].addr = bootinfo->tasks[i].addr;
 		init.tasks[i].size = bootinfo->tasks[i].size;
-		strncpy(init.tasks[i].name, bootinfo->tasks[i].name,
+		str_ncpy(init.tasks[i].name, bootinfo->tasks[i].name,
 			CONFIG_TASK_NAME_BUFLEN);
 	}
Index: kernel/arch/arm32/src/asm.S
===================================================================
--- kernel/arch/arm32/src/asm.S	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/arm32/src/asm.S	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -31,4 +31,5 @@
 
 .global memsetb
+.global memsetw
 .global memcpy
 .global memcpy_from_uspace
@@ -39,4 +40,7 @@
 memsetb:
 	b _memsetb
+
+memsetw:
+	b _memsetw
 
 memcpy:
Index: kernel/arch/ia64/src/cpu/cpu.c
===================================================================
--- kernel/arch/ia64/src/cpu/cpu.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ia64/src/cpu/cpu.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -56,5 +56,5 @@
 	*((uint64_t *) &vendor[0 * sizeof(uint64_t)]) = CPU->arch.cpuid0;
 	*((uint64_t *) &vendor[1 * sizeof(uint64_t)]) = CPU->arch.cpuid1;
-	vendor[sizeof(vendor) - 1] = '\0';
+	vendor[sizeof(vendor) - 1] = 0;
 	
 	switch(m->arch.cpuid3.family) {
Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ia64/src/ia64.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -88,5 +88,5 @@
 		    VRN_MASK;
 		init.tasks[i].size = bootinfo->taskmap.tasks[i].size;
-		strncpy(init.tasks[i].name, bootinfo->taskmap.tasks[i].name,
+		str_ncpy(init.tasks[i].name, bootinfo->taskmap.tasks[i].name,
 			CONFIG_TASK_NAME_BUFLEN);
 	}
Index: kernel/arch/ia64/src/interrupt.c
===================================================================
--- kernel/arch/ia64/src/interrupt.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ia64/src/interrupt.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -55,4 +55,5 @@
 #include <mm/tlb.h>
 #include <symtab.h>
+#include <putchar.h>
 
 #define VECTORS_64_BUNDLE	20
Index: kernel/arch/ia64/src/ski/ski.c
===================================================================
--- kernel/arch/ia64/src/ski/ski.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ia64/src/ski/ski.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -42,4 +42,5 @@
 #include <arch/asm.h>
 #include <arch/drivers/kbd.h>
+#include <string.h>
 #include <arch.h>
 
@@ -49,4 +50,16 @@
 static bool kbd_disabled;
 
+static void ski_do_putchar(const wchar_t ch)
+{
+	asm volatile (
+		"mov r15 = %[cmd]\n"
+		"mov r32 = %[ch]\n"   /* r32 is in0 */
+		"break 0x80000\n"  /* modifies r8 */
+		:
+		: [cmd] "i" (SKI_PUTCHAR), [ch] "r" (ch)
+		: "r15", "in0", "r8"
+	);
+}
+
 /** Display character on debug console
  *
@@ -57,18 +70,14 @@
  * @param ch Character to be printed.
  */
-static void ski_putchar(outdev_t *d, const char ch, bool silent)
+static void ski_putchar(outdev_t *d, const wchar_t ch, bool silent)
 {
 	if (!silent) {
-		asm volatile (
-			"mov r15 = %0\n"
-			"mov r32 = %1\n"   /* r32 is in0 */
-			"break 0x80000\n"  /* modifies r8 */
-			:
-			: "i" (SKI_PUTCHAR), "r" (ch)
-			: "r15", "in0", "r8"
-		);
-		
-		if (ch == '\n')
-			ski_putchar(d, '\r', false);
+		if (ascii_check(ch)) {
+			if (ch == '\n')
+				ski_do_putchar('\r');
+			
+			ski_do_putchar(ch);
+		} else
+			ski_do_putchar(invalch);
 	}
 }
Index: kernel/arch/mips32/src/asm.S
===================================================================
--- kernel/arch/mips32/src/asm.S	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/mips32/src/asm.S	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -61,4 +61,10 @@
 memsetb:
 	j _memsetb
+	nop
+
+
+.global memsetw
+memsetw:
+	j _memsetw
 	nop
 
Index: kernel/arch/mips32/src/mips32.c
===================================================================
--- kernel/arch/mips32/src/mips32.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/mips32/src/mips32.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -92,5 +92,5 @@
 		init.tasks[i].addr = bootinfo->tasks[i].addr;
 		init.tasks[i].size = bootinfo->tasks[i].size;
-		strncpy(init.tasks[i].name, bootinfo->tasks[i].name,
+		str_ncpy(init.tasks[i].name, bootinfo->tasks[i].name,
 			CONFIG_TASK_NAME_BUFLEN);
 	}
Index: kernel/arch/ppc32/src/asm.S
===================================================================
--- kernel/arch/ppc32/src/asm.S	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ppc32/src/asm.S	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -35,4 +35,5 @@
 .global iret_syscall
 .global memsetb
+.global memsetw
 .global memcpy
 .global memcpy_from_uspace
@@ -202,7 +203,10 @@
 
 	rfi
-	
+
 memsetb:
 	b _memsetb
+
+memsetw:
+	b _memsetw
 
 memcpy:
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/ppc32/src/ppc32.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -62,5 +62,5 @@
 		init.tasks[i].addr = PA2KA(bootinfo.taskmap.tasks[i].addr);
 		init.tasks[i].size = bootinfo.taskmap.tasks[i].size;
-		strncpy(init.tasks[i].name, bootinfo.taskmap.tasks[i].name,
+		str_ncpy(init.tasks[i].name, bootinfo.taskmap.tasks[i].name,
 			CONFIG_TASK_NAME_BUFLEN);
 	}
Index: kernel/arch/sparc64/include/drivers/sgcn.h
===================================================================
--- kernel/arch/sparc64/include/drivers/sgcn.h	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/include/drivers/sgcn.h	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -39,8 +39,8 @@
 #include <console/chardev.h>
 
-/* number of bytes in the TOC magic, including the terminating '\0' */
+/* number of bytes in the TOC magic, including the NULL-terminator */
 #define TOC_MAGIC_BYTES		8
 
-/* number of bytes in the TOC key, including the terminating '\0' */
+/* number of bytes in the TOC key, including the NULL-terminator */
 #define TOC_KEY_SIZE		8
 
@@ -48,5 +48,5 @@
 #define MAX_TOC_ENTRIES		32
 
-/* number of bytes in the SGCN buffer magic, including the terminating '\0' */
+/* number of bytes in the SGCN buffer magic, including the NULL-terminator */
 #define SGCN_MAGIC_BYTES	4
 
Index: kernel/arch/sparc64/src/console.c
===================================================================
--- kernel/arch/sparc64/src/console.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/console.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -119,5 +119,5 @@
 	prop = ofw_tree_getprop(aliases, "def-cn");
 	
-	if ((!prop) || (!prop->value) || (strcmp(prop->value, "/sgcn") != 0)) {
+	if ((!prop) || (!prop->value) || (str_cmp(prop->value, "/sgcn") != 0)) {
 		standard_console_init(aliases);
 	} else {
Index: kernel/arch/sparc64/src/drivers/kbd.c
===================================================================
--- kernel/arch/sparc64/src/drivers/kbd.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/drivers/kbd.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -87,7 +87,7 @@
 	 * Determine keyboard serial controller type.
 	 */
-	if (strcmp(name, "zs") == 0)
+	if (str_cmp(name, "zs") == 0)
 		kbd_type = KBD_Z8530;
-	else if (strcmp(name, "su") == 0)
+	else if (str_cmp(name, "su") == 0)
 		kbd_type = KBD_NS16550;
 	
Index: kernel/arch/sparc64/src/drivers/pci.c
===================================================================
--- kernel/arch/sparc64/src/drivers/pci.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/drivers/pci.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -184,5 +184,5 @@
 	 * First, verify this is a PCI node.
 	 */
-	ASSERT(strcmp(ofw_tree_node_name(node), "pci") == 0);
+	ASSERT(str_cmp(ofw_tree_node_name(node), "pci") == 0);
 
 	/*
@@ -193,5 +193,5 @@
 		return NULL;
 	
-	if (strcmp(prop->value, "SUNW,sabre") == 0) {
+	if (str_cmp(prop->value, "SUNW,sabre") == 0) {
 		/*
 		 * PCI controller Sabre.
@@ -199,5 +199,5 @@
 		 */
 		return pci_sabre_init(node);
-	} else if (strcmp(prop->value, "SUNW,psycho") == 0) {
+	} else if (str_cmp(prop->value, "SUNW,psycho") == 0) {
 		/*
 		 * PCI controller Psycho.
Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -64,11 +64,11 @@
 	name = ofw_tree_node_name(node);
 	
-	if (strcmp(name, "SUNW,m64B") == 0)
+	if (str_cmp(name, "SUNW,m64B") == 0)
 		scr_type = SCR_ATYFB;
-	else if (strcmp(name, "SUNW,XVR-100") == 0)
+	else if (str_cmp(name, "SUNW,XVR-100") == 0)
 		scr_type = SCR_XVR;
-	else if (strcmp(name, "SUNW,ffb") == 0)
+	else if (str_cmp(name, "SUNW,ffb") == 0)
 		scr_type = SCR_FFB;
-	else if (strcmp(name, "cgsix") == 0)
+	else if (str_cmp(name, "cgsix") == 0)
 		scr_type = SCR_CGSIX;
 	
Index: kernel/arch/sparc64/src/drivers/sgcn.c
===================================================================
--- kernel/arch/sparc64/src/drivers/sgcn.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/drivers/sgcn.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -208,10 +208,10 @@
 	init_sram_begin();
 		
-	ASSERT(strcmp(SRAM_TOC->magic, SRAM_TOC_MAGIC) == 0);
+	ASSERT(str_cmp(SRAM_TOC->magic, SRAM_TOC_MAGIC) == 0);
 	
 	/* lookup TOC entry with the correct key */
 	uint32_t i;
 	for (i = 0; i < MAX_TOC_ENTRIES; i++) {
-		if (strcmp(SRAM_TOC->keys[i].key, CONSOLE_KEY) == 0)
+		if (str_cmp(SRAM_TOC->keys[i].key, CONSOLE_KEY) == 0)
 			break;
 	}
Index: kernel/arch/sparc64/src/mm/page.c
===================================================================
--- kernel/arch/sparc64/src/mm/page.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/mm/page.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -63,5 +63,17 @@
 uintptr_t hw_map(uintptr_t physaddr, size_t size)
 {
-	return PA2KA(physaddr);
+	if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
+		panic("Unable to map physical memory %p (%d bytes).", physaddr, size)
+	
+	uintptr_t virtaddr = PA2KA(last_frame);
+	pfn_t i;
+	for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) {
+		uintptr_t addr = PFN2ADDR(i);
+		page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, PAGE_NOT_CACHEABLE | PAGE_WRITE);
+	}
+	
+	last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
+	
+	return virtaddr;
 }
 
Index: kernel/arch/sparc64/src/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sparc64.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/arch/sparc64/src/sparc64.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -62,5 +62,5 @@
 		init.tasks[i].addr = (uintptr_t) bootinfo.taskmap.tasks[i].addr;
 		init.tasks[i].size = bootinfo.taskmap.tasks[i].size;
-		strncpy(init.tasks[i].name, bootinfo.taskmap.tasks[i].name,
+		str_ncpy(init.tasks[i].name, bootinfo.taskmap.tasks[i].name,
 			CONFIG_TASK_NAME_BUFLEN);
 	}
Index: kernel/genarch/src/drivers/dsrln/dsrlnout.c
===================================================================
--- kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/drivers/dsrln/dsrlnout.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -41,11 +41,16 @@
 #include <console/console.h>
 #include <sysinfo/sysinfo.h>
+#include <string.h>
 
 static ioport8_t *dsrlnout_base;
 
-static void dsrlnout_putchar(outdev_t *dev __attribute__((unused)), const char ch, bool silent)
+static void dsrlnout_putchar(outdev_t *dev __attribute__((unused)), const wchar_t ch, bool silent)
 {
-	if (!silent)
-		pio_write_8(dsrlnout_base, ch);
+	if (!silent) {
+		if (ascii_check(ch))
+			pio_write_8(dsrlnout_base, ch);
+		else
+			pio_write_8(dsrlnout_base, invalch);
+	}
 }
 
Index: kernel/genarch/src/multiboot/multiboot.c
===================================================================
--- kernel/genarch/src/multiboot/multiboot.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/multiboot/multiboot.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -42,16 +42,13 @@
 /** Extract command name from the multiboot module command line.
  *
- * @param buf      Destination buffer (will always null-terminate).
- * @param n        Size of destination buffer.
+ * @param buf      Destination buffer (will always NULL-terminate).
+ * @param sz       Size of destination buffer (in bytes).
  * @param cmd_line Input string (the command line).
  *
  */
-static void extract_command(char *buf, size_t n, const char *cmd_line)
+static void extract_command(char *buf, size_t sz, const char *cmd_line)
 {
-	const char *start, *end, *cp;
-	size_t max_len;
-	
 	/* Find the first space. */
-	end = strchr(cmd_line, ' ');
+	const char *end = str_chr(cmd_line, ' ');
 	if (end == NULL)
 		end = cmd_line + str_size(cmd_line);
@@ -61,6 +58,7 @@
 	 * next character. Otherwise, place start at beginning of buffer.
 	 */
-	cp = end;
-	start = buf;
+	const char *cp = end;
+	const char *start = buf;
+	
 	while (cp != start) {
 		if (*cp == '/') {
@@ -68,11 +66,9 @@
 			break;
 		}
-		--cp;
+		cp--;
 	}
 	
-	/* Copy the command and null-terminate the string. */
-	max_len = min(n - 1, (size_t) (end - start));
-	strncpy(buf, start, max_len + 1);
-	buf[max_len] = '\0';
+	/* Copy the command. */
+	str_ncpy(buf, start, min(sz, (size_t) (end - start) + 1));
 }
 
@@ -88,6 +84,4 @@
 {
 	uint32_t flags;
-	multiboot_mod_t *mods;
-	uint32_t i;
 	
 	if (signature == MULTIBOOT_LOADER_MAGIC)
@@ -99,8 +93,9 @@
 	
 	/* Copy module information. */
-	
+	uint32_t i;
 	if ((flags & MBINFO_FLAGS_MODS) != 0) {
 		init.cnt = min(mi->mods_count, CONFIG_INIT_TASKS);
-		mods = (multiboot_mod_t *) MULTIBOOT_PTR(mi->mods_addr);
+		multiboot_mod_t *mods
+		    = (multiboot_mod_t *) MULTIBOOT_PTR(mi->mods_addr);
 		
 		for (i = 0; i < init.cnt; i++) {
@@ -114,5 +109,5 @@
 				    MULTIBOOT_PTR(mods[i].string));
 			} else
-				init.tasks[i].name[0] = '\0';
+				init.tasks[i].name[0] = 0;
 		}
 	} else
@@ -121,11 +116,7 @@
 	/* Copy memory map. */
 	
-	int32_t mmap_length;
-	multiboot_mmap_t *mme;
-	uint32_t size;
-	
 	if ((flags & MBINFO_FLAGS_MMAP) != 0) {
-		mmap_length = mi->mmap_length;
-		mme = MULTIBOOT_PTR(mi->mmap_addr);
+		int32_t mmap_length = mi->mmap_length;
+		multiboot_mmap_t *mme = MULTIBOOT_PTR(mi->mmap_addr);
 		e820counter = 0;
 		
@@ -135,5 +126,5 @@
 			
 			/* Compute address of next structure. */
-			size = sizeof(mme->size) + mme->size;
+			uint32_t size = sizeof(mme->size) + mme->size;
 			mme = ((void *) mme) + size;
 			mmap_length -= size;
Index: kernel/genarch/src/ofw/ebus.c
===================================================================
--- kernel/genarch/src/ofw/ebus.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/ofw/ebus.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -128,5 +128,5 @@
 		return false;
 		
-	if (strcmp(ofw_tree_node_name(controller), "pci") != 0) {
+	if (str_cmp(ofw_tree_node_name(controller), "pci") != 0) {
 		/*
 		 * This is not a PCI node.
Index: kernel/genarch/src/ofw/fhc.c
===================================================================
--- kernel/genarch/src/ofw/fhc.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/ofw/fhc.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -67,5 +67,5 @@
 				return true;
 			}
-			if (strcmp(ofw_tree_node_name(node->parent), "central") != 0)
+			if (str_cmp(ofw_tree_node_name(node->parent), "central") != 0)
 				panic("Unexpected parent node: %s.", ofw_tree_node_name(node->parent));
 			
Index: kernel/genarch/src/ofw/ofw_tree.c
===================================================================
--- kernel/genarch/src/ofw/ofw_tree.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/ofw/ofw_tree.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -67,5 +67,5 @@
 	
 	for (i = 0; i < node->properties; i++) {
-		if (strcmp(node->property[i].name, name) == 0)
+		if (str_cmp(node->property[i].name, name) == 0)
 			return &node->property[i];
 	}
@@ -110,5 +110,5 @@
 	 */
 	for (cur = node->child; cur; cur = cur->peer) {
-		if (strcmp(cur->da_name, name) == 0)
+		if (str_cmp(cur->da_name, name) == 0)
 			return cur;
 	}
@@ -122,5 +122,5 @@
 	 */
 	for (cur = node->child; cur; cur = cur->peer) {
-		if (strcmp(ofw_tree_node_name(cur), name) == 0)
+		if (str_cmp(ofw_tree_node_name(cur), name) == 0)
 			return cur;
 	}
@@ -147,5 +147,5 @@
 		if (!prop || !prop->value)
 			continue;
-		if (strcmp(prop->value, name) == 0)
+		if (str_cmp(prop->value, name) == 0)
 			return cur;
 	}
@@ -204,5 +204,5 @@
 		if (!prop || !prop->value)
 			continue;
-		if (strcmp(prop->value, name) == 0)
+		if (str_cmp(prop->value, name) == 0)
 			return cur;
 	}
@@ -230,5 +230,5 @@
 		if (!prop || !prop->value)
 			continue;
-		if (strcmp(prop->value, name) == 0)
+		if (str_cmp(prop->value, name) == 0)
 			return cur;
 	}
@@ -253,12 +253,13 @@
 		return NULL;
 	
-	for (i = 1; i < str_size(path) && node; i = j + 1) {
-		for (j = i; j < str_size(path) && path[j] != '/'; j++)
-			;
-		if (i == j)	/* skip extra slashes */
+	for (i = 1; (i < str_size(path)) && (node); i = j + 1) {
+		for (j = i; (j < str_size(path)) && (path[j] != '/'); j++);
+		
+		/* Skip extra slashes */
+		if (i == j)
 			continue;
-			
+		
 		memcpy(buf, &path[i], j - i);
-		buf[j - i] = '\0';
+		buf[j - i] = 0;
 		node = ofw_tree_find_child(node, buf);
 	}
Index: kernel/genarch/src/ofw/pci.c
===================================================================
--- kernel/genarch/src/ofw/pci.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/genarch/src/ofw/pci.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -59,5 +59,5 @@
 	prop = ofw_tree_getprop(node, "ranges");
 	if (!prop) {
-		if (strcmp(ofw_tree_node_name(node->parent), "pci") == 0)
+		if (str_cmp(ofw_tree_node_name(node->parent), "pci") == 0)
 			return ofw_pci_apply_ranges(node->parent, reg, pa);
 		return false;
Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/generic/src/main/kinit.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -187,10 +187,10 @@
 		
 		name = init.tasks[i].name;
-		if (name[0] == '\0')
+		if (name[0] == 0)
 			name = "<unknown>";
 		
 		ASSERT(TASK_NAME_BUFLEN >= INIT_PREFIX_LEN);
-		strncpy(namebuf, INIT_PREFIX, TASK_NAME_BUFLEN);
-		strncpy(namebuf + INIT_PREFIX_LEN, name,
+		str_ncpy(namebuf, INIT_PREFIX, TASK_NAME_BUFLEN);
+		str_ncpy(namebuf + INIT_PREFIX_LEN, name,
 		    TASK_NAME_BUFLEN - INIT_PREFIX_LEN);
 		
Index: kernel/generic/src/proc/program.c
===================================================================
--- kernel/generic/src/proc/program.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/generic/src/proc/program.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -214,5 +214,5 @@
 		return (unative_t) rc;
 
-	namebuf[name_len] = '\0';
+	namebuf[name_len] = 0;
 
 	/* Spawn the new task. */
Index: kernel/generic/src/proc/task.c
===================================================================
--- kernel/generic/src/proc/task.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/generic/src/proc/task.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -152,5 +152,5 @@
 
 	memcpy(ta->name, name, TASK_NAME_BUFLEN);
-	ta->name[TASK_NAME_BUFLEN - 1] = '\0';
+	ta->name[TASK_NAME_BUFLEN - 1] = 0;
 
 	atomic_set(&ta->refcount, 0);
@@ -274,6 +274,6 @@
 		return (unative_t) rc;
 
-	namebuf[name_len] = '\0';
-	strncpy(TASK->name, namebuf, TASK_NAME_BUFLEN);
+	namebuf[name_len] = 0;
+	str_ncpy(TASK->name, namebuf, TASK_NAME_BUFLEN);
 
 	return EOK;
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/generic/src/proc/thread.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -317,5 +317,5 @@
 	
 	memcpy(t->name, name, THREAD_NAME_BUFLEN);
-	t->name[THREAD_NAME_BUFLEN - 1] = '\0';
+	t->name[THREAD_NAME_BUFLEN - 1] = 0;
 	
 	t->thread_code = func;
@@ -724,5 +724,5 @@
 		return (unative_t) rc;
 
-	namebuf[name_len] = '\0';
+	namebuf[name_len] = 0;
 
 	/*
Index: kernel/generic/src/synch/spinlock.c
===================================================================
--- kernel/generic/src/synch/spinlock.c	(revision 9be1d58c0982bff8d79f4b3723dbfa968d1053a6)
+++ kernel/generic/src/synch/spinlock.c	(revision b60c582d0cf4f0476a720c8e05bd742fbffc87ce)
@@ -33,7 +33,7 @@
 /**
  * @file
- * @brief	Spinlocks.
+ * @brief Spinlocks.
  */
- 
+
 #include <synch/spinlock.h>
 #include <atomic.h>
