explicit_memset.c revision 1.2
11.2Sriastrad/* $NetBSD: explicit_memset.c,v 1.2 2013/08/28 15:46:23 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.2Sriastradvoid * 181.1Sriastradexplicit_memset(void *b, int c, size_t len) 191.1Sriastrad{ 201.1Sriastrad 211.2Sriastrad return (*explicit_memset_impl)(b, c, len); 221.1Sriastrad} 23