explicit_memset.c revision 1.3
11.3Sriastrad/* $NetBSD: explicit_memset.c,v 1.3 2013/08/28 17:47:07 riastradh Exp $ */
21.1Sriastrad
31.1Sriastrad#if !defined(_KERNEL) && !defined(_STANDALONE)
41.3Sriastrad#include "namespace.h"
51.1Sriastrad#include <string.h>
61.3Sriastrad#ifdef __weak_alias
71.3Sriastrad__weak_alias(explicit_memset,_explicit_memset)
81.3Sriastrad#endif
91.1Sriastrad#define explicit_memset_impl __explicit_memset_impl
101.1Sriastrad#else
111.1Sriastrad#include <lib/libkern/libkern.h>
121.1Sriastrad#endif
131.1Sriastrad
141.1Sriastrad/*
151.1Sriastrad * The use of a volatile pointer guarantees that the compiler
161.1Sriastrad * will not optimise the call away.
171.1Sriastrad */
181.1Sriastradvoid *(* volatile explicit_memset_impl)(void *, int, size_t) = memset;
191.1Sriastrad
201.2Sriastradvoid *
211.1Sriastradexplicit_memset(void *b, int c, size_t len)
221.1Sriastrad{
231.1Sriastrad
241.2Sriastrad	return (*explicit_memset_impl)(b, c, len);
251.1Sriastrad}
26