diff --git a/include/kernel/string.h b/include/kernel/string.h
index 980caa984947d590c256fc84811d053e6fe37b09..7c6e8d588c65660409ac6904f136480432a5e860 100644
--- a/include/kernel/string.h
+++ b/include/kernel/string.h
@@ -12,6 +12,7 @@
 
 int sprintf(char *str, const char *format, ...);
 int strcmp(const char *s1, const char *s2);
+int strncmp(const char *s1, const char *s2, size_t n);
 char *strpbrk(const char *s, const char *accept);
 char *strsep(char **stringp, const char *delim);
 char *strdup(const char *s);
diff --git a/lib/string.c b/lib/string.c
index 15fa00a7f69fee252e6ca1c4a2d0467c073042fe..4f330e03d7b4c6f3909907edda8c47c98bbdb500 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -47,6 +47,39 @@ int strcmp(const char *s1, const char *s2)
 }
 EXPORT_SYMBOL(strcmp);
 
+
+/**
+ * @brief compare two strings s1 and s2 by comparing at most n bytes
+ *
+ * @returns <0, 0 or > 0 if s1 is less than, matches or greater than s2
+ */
+int strncmp(const char *s1, const char *s2, size_t n)
+{
+	unsigned char c1, c2;
+
+	while (n) {
+
+		c1 = (*(s1++));
+		c2 = (*(s2++));
+
+		if (c1 != c2) {
+			if (c1 < c2)
+				return -1;
+			else
+				return 1;
+		}
+
+		if (!c1)
+			break;
+
+		n--;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(strncmp);
+
+
 /**
  * @brief locate first occurrence of a set of characters in string accept
  *