From 198918483863a126b2d8b8a05bfc8090640bd3ea Mon Sep 17 00:00:00 2001 From: "David E. O'Brien" Date: Mon, 14 Jul 2008 21:36:02 +0000 Subject: [PATCH] Match the implementation of the inline function from libkern.h. --- sys/libkern/memset.c | 12 ++++++++---- sys/sys/libkern.h | 10 +++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/sys/libkern/memset.c b/sys/libkern/memset.c index 39ad1206960..895e6723942 100644 --- a/sys/libkern/memset.c +++ b/sys/libkern/memset.c @@ -23,18 +23,22 @@ * SUCH DAMAGE. */ #include -#include __FBSDID("$FreeBSD$"); -void *memset(void *, int, size_t); +#define LIBKERN_INLINE +#include +#include void * memset(void *b, int c, size_t len) { char *bb; - for (bb = (char *)b; len--; ) - *bb++ = c; + if (c == 0) + bzero(b, len); + else + for (bb = (char *)b; len--; ) + *bb++ = c; return (b); } diff --git a/sys/sys/libkern.h b/sys/sys/libkern.h index e3deb2db35b..445ee32b666 100644 --- a/sys/sys/libkern.h +++ b/sys/sys/libkern.h @@ -39,6 +39,11 @@ #include #endif +#ifndef LIBKERN_INLINE +#define LIBKERN_INLINE static __inline +#define LIBKERN_BODY +#endif + /* BCD conversions. */ extern u_char const bcd2bin_data[]; extern u_char const bin2bcd_data[]; @@ -140,7 +145,9 @@ memcmp(const void *b1, const void *b2, size_t len) return (bcmp(b1, b2, len)); } -static __inline void * +LIBKERN_INLINE void *memset(void *, int, size_t); +#ifdef LIBKERN_BODY +LIBKERN_INLINE void * memset(void *b, int c, size_t len) { char *bb; @@ -152,6 +159,7 @@ memset(void *b, int c, size_t len) *bb++ = c; return (b); } +#endif static __inline char * strchr(const char *p, int ch)