explicit_memset.c revision 1.1
11.1Sriastrad/* $NetBSD: explicit_memset.c,v 1.1 2013/06/24 04:21:19 riastradh Exp $ */
21.1Sriastrad
31.1Sriastrad#if !defined(_KERNEL) && !defined(_STANDALONE)
41.1Sriastrad#include <string.h>
51.1Sriastrad#define explicit_memset __explicit_memset
61.1Sriastrad#define explicit_memset_impl __explicit_memset_impl
71.1Sriastrad#else
81.1Sriastrad#include <lib/libkern/libkern.h>
91.1Sriastrad#endif
101.1Sriastrad
111.1Sriastrad/*
121.1Sriastrad * The use of a volatile pointer guarantees that the compiler
131.1Sriastrad * will not optimise the call away.
141.1Sriastrad */
151.1Sriastradvoid *(* volatile explicit_memset_impl)(void *, int, size_t) = memset;
161.1Sriastrad
171.1Sriastradvoid
181.1Sriastradexplicit_memset(void *b, int c, size_t len)
191.1Sriastrad{
201.1Sriastrad
211.1Sriastrad	(*explicit_memset_impl)(b, c, len);
221.1Sriastrad}
23