Index: uspace/app/bdsh/cmds/builtin_cmds.c
===================================================================
--- uspace/app/bdsh/cmds/builtin_cmds.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/cmds/builtin_cmds.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -50,5 +50,5 @@
 
 	for (cmd = builtins; cmd->name != NULL; cmd++, i++) {
-		if (!strcmp(cmd->name, command))
+		if (!str_cmp(cmd->name, command))
 			return i;
 	}
@@ -65,5 +65,5 @@
 
 	for(i=0; builtin_aliases[i] != NULL; i+=2) {
-		if (!strcmp(builtin_aliases[i], command))
+		if (!str_cmp(builtin_aliases[i], command))
 			return 1;
 	}
@@ -80,5 +80,5 @@
 
 	for(i=0; builtin_aliases[i] != NULL; i++) {
-		if (!strcmp(builtin_aliases[i], command))
+		if (!str_cmp(builtin_aliases[i], command))
 			return (char *)builtin_aliases[++i];
 		i++;
Index: uspace/app/bdsh/cmds/mod_cmds.c
===================================================================
--- uspace/app/bdsh/cmds/mod_cmds.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/cmds/mod_cmds.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -65,5 +65,5 @@
 
 	for (mod = modules; mod->name != NULL; mod++, i++) {
-		if (!strcmp(mod->name, command))
+		if (!str_cmp(mod->name, command))
 			return i;
 	}
@@ -82,5 +82,5 @@
 
 	for(i=0; mod_aliases[i] != NULL; i+=2) {
-		if (!strcmp(mod_aliases[i], command))
+		if (!str_cmp(mod_aliases[i], command))
 			return 1;
 	}
@@ -98,5 +98,5 @@
 
 	for(i=0; mod_aliases[i] != NULL; i++) {
-		if (!strcmp(mod_aliases[i], command))
+		if (!str_cmp(mod_aliases[i], command))
 			return (char *)mod_aliases[++i];
 		i++;
Index: uspace/app/bdsh/cmds/modules/help/help.c
===================================================================
--- uspace/app/bdsh/cmds/modules/help/help.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/cmds/modules/help/help.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -108,5 +108,5 @@
 
 	if (argc == 3) {
-		if (!strcmp("extended", argv[2]))
+		if (!str_cmp("extended", argv[2]))
 			level = HELP_LONG;
 		else
Index: uspace/app/bdsh/cmds/modules/mkdir/mkdir.c
===================================================================
--- uspace/app/bdsh/cmds/modules/mkdir/mkdir.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/cmds/modules/mkdir/mkdir.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -150,5 +150,5 @@
 		/* Sometimes make or scripts conjoin odd paths. Account for something
 		 * like this: ../../foo/bar/../foo/foofoo/./bar */
-		if (!strcmp(dirs[i], "..") || !strcmp(dirs[i], ".")) {
+		if (!str_cmp(dirs[i], "..") || !str_cmp(dirs[i], ".")) {
 			if (0 != (chdir(dirs[i]))) {
 				cli_error(CL_EFAIL, "%s: impossible path: %s",
Index: uspace/app/bdsh/cmds/modules/rm/rm.c
===================================================================
--- uspace/app/bdsh/cmds/modules/rm/rm.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/cmds/modules/rm/rm.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -217,5 +217,5 @@
 	i = optind;
 	while (NULL != argv[i]) {
-		len = strlen(argv[i]) + 2;
+		len = str_size(argv[i]) + 2;
 		buff = (char *) realloc(buff, len);
 		if (buff == NULL) {
Index: uspace/app/bdsh/exec.c
===================================================================
--- uspace/app/bdsh/exec.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/exec.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -72,5 +72,5 @@
 	char *path[PATH_MAX];
 	int n = 0, i = 0;
-	size_t x = strlen(cmd) + 2;
+	size_t x = str_size(cmd) + 2;
 
 	found = (char *)malloc(PATH_MAX);
@@ -86,5 +86,5 @@
 	path[n] = strtok(path_tok, PATH_DELIM);
 	while (NULL != path[n]) {
-		if ((strlen(path[n]) + x ) > PATH_MAX) {
+		if ((str_size(path[n]) + x ) > PATH_MAX) {
 			cli_error(CL_ENOTSUP,
 				"Segment %d of path is too large, search ends at segment %d",
Index: uspace/app/bdsh/input.c
===================================================================
--- uspace/app/bdsh/input.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/bdsh/input.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -147,5 +147,4 @@
 {
 	char line[INPUT_MAX];
-	size_t len = 0;
 
 	console_set_style(STYLE_EMPHASIS);
@@ -154,7 +153,6 @@
 
 	read_line(line, INPUT_MAX);
-	len = strlen(line);
 	/* Make sure we don't have rubbish or a C/R happy user */
-	if (len == 0 || line[0] == '\n')
+	if (str_cmp(line, "") == 0 || str_cmp(line, "\n") == 0)
 		return;
 	usr->line = strdup(line);
Index: uspace/app/tester/devmap/devmap1.c
===================================================================
--- uspace/app/tester/devmap/devmap1.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/tester/devmap/devmap1.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -141,5 +141,5 @@
 	req = async_send_2(phone, DEVMAP_DRIVER_REGISTER, 0, 0, &answer);
 
-	retval = ipc_data_write_start(phone, (char *)name, strlen(name) + 1); 
+	retval = ipc_data_write_start(phone, (char *)name, str_size(name) + 1); 
 
 	if (retval != EOK) {
@@ -174,5 +174,5 @@
 	    &answer);
 
-	retval = ipc_data_write_start(driver_phone, name, strlen(name) + 1); 
+	retval = ipc_data_write_start(driver_phone, name, str_size(name) + 1);
 
 	if (retval != EOK) {
@@ -216,5 +216,5 @@
 
 	retval = ipc_data_write_start(driver_phone, (char *)name,
-	    strlen(name) + 1); 
+	    str_size(name) + 1);
 
 	if (retval != EOK) {
Index: uspace/app/tetris/scores.c
===================================================================
--- uspace/app/tetris/scores.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/tetris/scores.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -290,5 +290,5 @@
 /* 	me = thisuser(); */
 /* 	for (i = 0, sp = &scores[0]; i < nscores; i++, sp++) { */
-/* 		if (sp->hs_level != level || strcmp(sp->hs_name, me) != 0) */
+/* 		if (sp->hs_level != level || str_cmp(sp->hs_name, me) != 0) */
 /* 			continue; */
 /* 		if (score > sp->hs_score) { */
@@ -418,5 +418,5 @@
 /* 		 *\/ */
 /* 		for (j = 0, pu = count; j < numnames; j++, pu++) */
-/* 			if (strcmp(sp->hs_name, pu->name) == 0) */
+/* 			if (str_cmp(sp->hs_name, pu->name) == 0) */
 /* 				break; */
 /* 		if (j == numnames) { */
@@ -555,5 +555,5 @@
 /* 		    sp->hs_level == level && */
 /* 		    sp->hs_score == score && */
-/* 		    strcmp(sp->hs_name, me) == 0) { */
+/* 		    str_cmp(sp->hs_name, me) == 0) { */
 /* 			putpad(SOstr); */
 /* 			highlight = 1; */
Index: uspace/app/tetris/screen.c
===================================================================
--- uspace/app/tetris/screen.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/tetris/screen.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -281,5 +281,5 @@
 {
 	
-	int l = strlen(s);
+	int l = str_size(s);
 	
 	moveto(Rows - 2, ((Cols - l) >> 1) - 1);
Index: uspace/app/tetris/tetris.c
===================================================================
--- uspace/app/tetris/tetris.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/app/tetris/tetris.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -278,5 +278,5 @@
 /* 			break; */
 /* 		case 'k': */
-/* 			if (strlen(keys = optarg) != 6) */
+/* 			if (str_size(keys = optarg) != 6) */
 /* 				usage(); */
 /* 			break; */
Index: uspace/lib/libc/generic/console.c
===================================================================
--- uspace/lib/libc/generic/console.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/lib/libc/generic/console.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -220,5 +220,5 @@
 	ssize_t rc;
 
-	len = strlen(s);
+	len = str_size(s);
 	while (len > 0) {
 		rc = console_write(s, len);
Index: uspace/lib/libc/generic/getopt.c
===================================================================
--- uspace/lib/libc/generic/getopt.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/lib/libc/generic/getopt.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -383,5 +383,5 @@
 			has_equal++;
 		} else
-			current_argv_len = strlen(current_argv);
+			current_argv_len = str_size(current_argv);
 	    
 		for (i = 0; long_options[i].name; i++) {
@@ -391,5 +391,5 @@
 				continue;
 
-			if (strlen(long_options[i].name) ==
+			if (str_size(long_options[i].name) ==
 			    (unsigned)current_argv_len) {
 				/* exact match */
Index: uspace/lib/libc/generic/string.c
===================================================================
--- uspace/lib/libc/generic/string.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/lib/libc/generic/string.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -607,29 +607,4 @@
 }
 
-/** Count the number of characters in the string, not including terminating 0.
- *
- * @param str		String.
- * @return		Number of characters in string.
- */
-size_t strlen(const char *str) 
-{
-	size_t counter = 0;
-
-	while (str[counter] != 0)
-		counter++;
-
-	return counter;
-}
-
-int strcmp(const char *a, const char *b)
-{
-	int c = 0;
-	
-	while (a[c] && b[c] && (!(a[c] - b[c])))
-		c++;
-	
-	return (a[c] - b[c]);
-}
-
 int strncmp(const char *a, const char *b, size_t n)
 {
@@ -871,5 +846,5 @@
 char * strdup(const char *s1)
 {
-	size_t len = strlen(s1) + 1;
+	size_t len = str_size(s1) + 1;
 	void *ret = malloc(len);
 
Index: uspace/lib/libc/include/stdio.h
===================================================================
--- uspace/lib/libc/include/stdio.h	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/lib/libc/include/stdio.h	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -50,5 +50,5 @@
 	n = snprintf(buf, sizeof(buf), fmt, ##__VA_ARGS__); \
 	if (n > 0) \
-		(void) __SYSCALL3(SYS_KLOG, 1, (sysarg_t) buf, strlen(buf)); \
+		(void) __SYSCALL3(SYS_KLOG, 1, (sysarg_t) buf, str_size(buf)); \
 }
 
Index: uspace/lib/libc/include/string.h
===================================================================
--- uspace/lib/libc/include/string.h	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/lib/libc/include/string.h	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -46,6 +46,6 @@
 #define STR_NO_LIMIT  ((size_t) -1)
 
-/**< Maximum size of a string containing cnt characters */
-#define STR_BOUNDS(cnt)  (cnt << 2)
+/**< Maximum size of a string containing @c length characters */
+#define STR_BOUNDS(length)  ((length) << 2)
 
 extern wchar_t str_decode(const char *str, size_t *offset, size_t sz);
@@ -82,5 +82,4 @@
  */
 
-extern int strcmp(const char *, const char *);
 extern int strncmp(const char *, const char *, size_t);
 extern int stricmp(const char *, const char *);
@@ -90,6 +89,4 @@
 
 extern char *strcat(char *, const char *);
-
-extern size_t strlen(const char *);
 
 extern char *strdup(const char *);
Index: uspace/srv/devmap/devmap.c
===================================================================
--- uspace/srv/devmap/devmap.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/devmap/devmap.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -564,5 +564,5 @@
 	ipc_answer_0(iid, EOK);
 	
-	size_t name_size = strlen(device->name);
+	size_t name_size = str_size(device->name);
 	
 	/* FIXME:
Index: uspace/srv/fs/fat/fat_dentry.c
===================================================================
--- uspace/srv/fs/fat/fat_dentry.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/fs/fat/fat_dentry.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -63,4 +63,6 @@
 {
 	int rc;
+	size_t size;
+
 	if (!(rc = stricmp(name, component)))
 		return rc;
@@ -70,6 +72,7 @@
 		 * space for appending an extra '.' to name.
 		 */
-		name[strlen(name)] = '.';
-		name[strlen(name) + 1] = '\0';
+		size = str_size(name);
+		name[size] = '.';
+		name[size + 1] = '\0';
 		rc = stricmp(name, component);
 	}
Index: uspace/srv/fs/fat/fat_ops.c
===================================================================
--- uspace/srv/fs/fat/fat_ops.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/fs/fat/fat_ops.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -488,5 +488,5 @@
 	d = (fat_dentry_t *)b->data;
 	if (fat_classify_dentry(d) == FAT_DENTRY_LAST ||
-	    strcmp(d->name, FAT_NAME_DOT) == 0) {
+	    str_cmp(d->name, FAT_NAME_DOT) == 0) {
 	   	memset(d, 0, sizeof(fat_dentry_t));
 	   	strcpy(d->name, FAT_NAME_DOT);
@@ -498,5 +498,5 @@
 	d++;
 	if (fat_classify_dentry(d) == FAT_DENTRY_LAST ||
-	    strcmp(d->name, FAT_NAME_DOT_DOT) == 0) {
+	    str_cmp(d->name, FAT_NAME_DOT_DOT) == 0) {
 		memset(d, 0, sizeof(fat_dentry_t));
 		strcpy(d->name, FAT_NAME_DOT_DOT);
@@ -938,5 +938,5 @@
 		return;
 hit:
-		(void) ipc_data_read_finalize(callid, name, strlen(name) + 1);
+		(void) ipc_data_read_finalize(callid, name, str_size(name) + 1);
 		bytes = (pos - spos) + 1;
 	}
Index: uspace/srv/fs/tmpfs/tmpfs_dump.c
===================================================================
--- uspace/srv/fs/tmpfs/tmpfs_dump.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/fs/tmpfs/tmpfs_dump.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -178,5 +178,5 @@
 	
 	tag[5] = 0;
-	if (strcmp(tag, "TMPFS") != 0)
+	if (str_cmp(tag, "TMPFS") != 0)
 		goto error;
 	
Index: uspace/srv/fs/tmpfs/tmpfs_ops.c
===================================================================
--- uspace/srv/fs/tmpfs/tmpfs_ops.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/fs/tmpfs/tmpfs_ops.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -256,5 +256,5 @@
 	assert(hlp);
 	tmpfs_name_t *namep = hash_table_get_instance(hlp, tmpfs_name_t, link);
-	return !strcmp(namep->name, component);
+	return !str_cmp(namep->name, component);
 }
 
@@ -320,6 +320,6 @@
 		return ENOMEM;
 	tmpfs_name_initialize(namep);
-	size_t len = strlen(nm);
-	namep->name = malloc(len + 1);
+	size_t size = str_size(nm);
+	namep->name = malloc(size + 1);
 	if (!namep->name) {
 		free(namep);
@@ -455,6 +455,6 @@
 	 */
 	ipc_callid_t callid;
-	size_t len;
-	if (!ipc_data_read_receive(&callid, &len)) {
+	size_t size;
+	if (!ipc_data_read_receive(&callid, &size)) {
 		ipc_answer_0(callid, EINVAL);	
 		ipc_answer_0(rid, EINVAL);
@@ -464,5 +464,5 @@
 	size_t bytes;
 	if (dentry->type == TMPFS_FILE) {
-		bytes = max(0, min(dentry->size - pos, len));
+		bytes = max(0, min(dentry->size - pos, size));
 		(void) ipc_data_read_finalize(callid, dentry->data + pos,
 		    bytes);
@@ -495,5 +495,5 @@
 
 		(void) ipc_data_read_finalize(callid, namep->name,
-		    strlen(namep->name) + 1);
+		    str_size(namep->name) + 1);
 		bytes = 1;
 	}
@@ -528,6 +528,6 @@
 	 */
 	ipc_callid_t callid;
-	size_t len;
-	if (!ipc_data_write_receive(&callid, &len)) {
+	size_t size;
+	if (!ipc_data_write_receive(&callid, &size)) {
 		ipc_answer_0(callid, EINVAL);	
 		ipc_answer_0(rid, EINVAL);
@@ -538,11 +538,11 @@
 	 * Check whether the file needs to grow.
 	 */
-	if (pos + len <= dentry->size) {
+	if (pos + size <= dentry->size) {
 		/* The file size is not changing. */
-		(void) ipc_data_write_finalize(callid, dentry->data + pos, len);
-		ipc_answer_2(rid, EOK, len, dentry->size);
-		return;
-	}
-	size_t delta = (pos + len) - dentry->size;
+		(void) ipc_data_write_finalize(callid, dentry->data + pos, size);
+		ipc_answer_2(rid, EOK, size, dentry->size);
+		return;
+	}
+	size_t delta = (pos + size) - dentry->size;
 	/*
 	 * At this point, we are deliberately extremely straightforward and
@@ -562,6 +562,6 @@
 	dentry->size += delta;
 	dentry->data = newdata;
-	(void) ipc_data_write_finalize(callid, dentry->data + pos, len);
-	ipc_answer_2(rid, EOK, len, dentry->size);
+	(void) ipc_data_write_finalize(callid, dentry->data + pos, size);
+	ipc_answer_2(rid, EOK, size, dentry->size);
 }
 
Index: uspace/srv/loader/main.c
===================================================================
--- uspace/srv/loader/main.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/loader/main.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -151,9 +151,9 @@
 {
 	ipc_callid_t callid;
-	size_t buf_len, arg_len;
+	size_t buf_size, arg_size;
 	char *p;
 	int n;
 	
-	if (!ipc_data_write_receive(&callid, &buf_len)) {
+	if (!ipc_data_write_receive(&callid, &buf_size)) {
 		ipc_answer_0(callid, EINVAL);
 		ipc_answer_0(rid, EINVAL);
@@ -171,5 +171,5 @@
 	}
 	
-	arg_buf = malloc(buf_len + 1);
+	arg_buf = malloc(buf_size + 1);
 	if (!arg_buf) {
 		ipc_answer_0(callid, ENOMEM);
@@ -178,7 +178,7 @@
 	}
 	
-	ipc_data_write_finalize(callid, arg_buf, buf_len);
-	
-	arg_buf[buf_len] = '\0';
+	ipc_data_write_finalize(callid, arg_buf, buf_size);
+	
+	arg_buf[buf_size] = '\0';
 	
 	/*
@@ -187,7 +187,7 @@
 	p = arg_buf;
 	n = 0;
-	while (p < arg_buf + buf_len) {
-		arg_len = strlen(p);
-		p = p + arg_len + 1;
+	while (p < arg_buf + buf_size) {
+		arg_size = str_size(p);
+		p = p + arg_size + 1;
 		++n;
 	}
@@ -207,9 +207,9 @@
 	p = arg_buf;
 	n = 0;
-	while (p < arg_buf + buf_len) {
+	while (p < arg_buf + buf_size) {
 		argv[n] = p;
 		
-		arg_len = strlen(p);
-		p = p + arg_len + 1;
+		arg_size = str_size(p);
+		p = p + arg_size + 1;
 		++n;
 	}
Index: uspace/srv/pci/libpci/names.c
===================================================================
--- uspace/srv/pci/libpci/names.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/pci/libpci/names.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -104,5 +104,5 @@
 	unsigned int h = id_hash(cat, id12, id34);
 	struct id_entry *n = a->id_hash[h];
-	int len = strlen((char *) text);
+	int len = str_size((char *) text);
 
 	while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
Index: uspace/srv/rd/rd.c
===================================================================
--- uspace/srv/rd/rd.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/rd/rd.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -197,5 +197,5 @@
 	req = async_send_2(phone, DEVMAP_DRIVER_REGISTER, 0, 0, &answer);
 
-	retval = ipc_data_write_start(phone, (char *) name, strlen(name) + 1); 
+	retval = ipc_data_write_start(phone, (char *) name, str_size(name) + 1);
 
 	if (retval != EOK) {
@@ -220,5 +220,6 @@
 	req = async_send_2(driver_phone, DEVMAP_DEVICE_REGISTER, 0, 0, &answer);
 
-	retval = ipc_data_write_start(driver_phone, (char *) name, strlen(name) + 1); 
+	retval = ipc_data_write_start(driver_phone, (char *) name,
+	    str_size(name) + 1);
 
 	if (retval != EOK) {
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision a2c58f6642dae539243221fb1f2a71c8611327e6)
+++ uspace/srv/vfs/vfs_ops.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -92,5 +92,5 @@
 		/* We already have the root FS. */
 		rwlock_write_lock(&namespace_rwlock);
-		if ((strlen(mp) == 1) && (mp[0] == '/')) {
+		if (str_cmp(mp, "/") == 0) {
 			/* Trying to mount root FS over root FS */
 			rwlock_write_unlock(&namespace_rwlock);
@@ -125,5 +125,5 @@
 	} else {
 		/* We still don't have the root file system mounted. */
-		if ((strlen(mp) == 1) && (mp[0] == '/')) {
+		if (str_cmp(mp, "/") == 0) {
 			vfs_lookup_res_t mr_res;
 			vfs_node_t *mr_node;
