diff options
author | Gabe Black <gabeblack@google.com> | 2011-09-16 02:18:56 -0700 |
---|---|---|
committer | Mathias Krause <minipli@googlemail.com> | 2012-03-09 20:00:53 +0100 |
commit | 1025f3afc85be633451c4312ab26d179d47132e5 (patch) | |
tree | a43a5caf546a5617aa9fe7a1007f2abd2e4ec2c8 | |
parent | 8ebd11eab999654873010e706b95e5fe5855ea64 (diff) |
Add an implementation for the memchr library function
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>
-rw-r--r-- | src/include/string.h | 1 | ||||
-rw-r--r-- | src/lib/Makefile.inc | 2 | ||||
-rw-r--r-- | src/lib/memchr.c | 11 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/include/string.h b/src/include/string.h index 21689473ce..708961b635 100644 --- a/src/include/string.h +++ b/src/include/string.h @@ -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 diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc index 432e24e780..a31033cf5c 100644 --- a/src/lib/Makefile.inc +++ b/src/lib/Makefile.inc @@ -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 index 0000000000..a890dceada --- /dev/null +++ b/src/lib/memchr.c @@ -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; +} |