diff options
author | David E. O'Brien <obrien@FreeBSD.org> | 2008-08-28 17:58:01 +0000 |
---|---|---|
committer | David E. O'Brien <obrien@FreeBSD.org> | 2008-08-28 17:58:01 +0000 |
commit | 2006cfc20d268b46977c0cce95b36bdc707ff3ae (patch) | |
tree | 65b912731c99e92b88b18b1c811421d372802a15 | |
parent | 5c08f829a9225c97a1df3f24086904c4ba30651f (diff) |
Notes
-rw-r--r-- | sys/libkern/memset.c | 12 | ||||
-rw-r--r-- | 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 39ad12069607b..895e67239429a 100644 --- a/sys/libkern/memset.c +++ b/sys/libkern/memset.c @@ -23,18 +23,22 @@ * SUCH DAMAGE. */ #include <sys/cdefs.h> -#include <sys/types.h> __FBSDID("$FreeBSD$"); -void *memset(void *, int, size_t); +#define LIBKERN_INLINE +#include <sys/types.h> +#include <sys/libkern.h> 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 e3deb2db35bb3..445ee32b66629 100644 --- a/sys/sys/libkern.h +++ b/sys/sys/libkern.h @@ -39,6 +39,11 @@ #include <sys/systm.h> #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) |