Add an implementation for the memchr library function
authorGabe Black <gabeblack@google.com>
Fri, 16 Sep 2011 09:18:56 +0000 (02:18 -0700)
committerMathias Krause <minipli@googlemail.com>
Fri, 9 Mar 2012 19:00:53 +0000 (20:00 +0100)
Change-Id: Icded479d246f7cce8a3d2154c69f75178fa513e1
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: http://review.coreboot.org/708
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
Reviewed-by: Mathias Krause <minipli@googlemail.com>
src/include/string.h
src/lib/Makefile.inc
src/lib/memchr.c [new file with mode: 0644]

index 21689473ce39342f43011e7e6ab842baca3a09e0..708961b6352bba80b258b7d13be95dd99447c187 100644 (file)
@@ -8,6 +8,7 @@ void *memcpy(void *dest, const void *src, size_t n);
 void *memmove(void *dest, const void *src, size_t n);
 void *memset(void *s, int c, size_t n);
 int memcmp(const void *s1, const void *s2, size_t n);
+void *memchr(const void *s, int c, size_t n);
 #if !defined(__PRE_RAM__)
 int sprintf(char * buf, const char *fmt, ...);
 #endif
index 432e24e7800e284b25f52f682675bfec3d1566c9..a31033cf5c9e38e167bdb318c8bf9a7f5bfa41a1 100644 (file)
@@ -1,6 +1,7 @@
 
 
 romstage-y += memset.c
+romstage-y += memchr.c
 romstage-y += memcpy.c
 romstage-y += memcmp.c
 romstage-y += cbfs.c
@@ -15,6 +16,7 @@ romstage-$(CONFIG_CONSOLE_NE2K) += compute_ip_checksum.c
 romstage-$(CONFIG_USBDEBUG) += usbdebug.c
 
 ramstage-y += memset.c
+ramstage-y += memchr.c
 ramstage-y += memcpy.c
 ramstage-y += memcmp.c
 ramstage-y += memmove.c
diff --git a/src/lib/memchr.c b/src/lib/memchr.c
new file mode 100644 (file)
index 0000000..a890dce
--- /dev/null
@@ -0,0 +1,11 @@
+#include <string.h>
+void *memchr(const void *s, int c, size_t n)
+{
+       const unsigned char *sc = s;
+       while (n--) {
+               if (*sc == (unsigned char)c)
+                       return (void *)sc;
+               sc++;
+       }
+       return NULL;
+}