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