1135642Scognet/* $NetBSD: explicit_memset.c,v 1.3 2013/08/28 17:47:07 riastradh Exp $ */ 2135642Scognet 3139735Simp/* 4135642Scognet * Written by Matthias Drochner <drochner@NetBSD.org>. 5135642Scognet * Public domain. 6135642Scognet */ 7135642Scognet 8135642Scognet#if !defined(_KERNEL) && !defined(_STANDALONE) 9135642Scognet#include "namespace.h" 10135642Scognet#include <string.h> 11135642Scognet#ifdef __weak_alias 12135642Scognet__weak_alias(explicit_memset,_explicit_memset) 13135642Scognet#endif 14135642Scognet#define explicit_memset_impl __explicit_memset_impl 15135642Scognet#else 16135642Scognet#include <lib/libkern/libkern.h> 17135642Scognet#endif 18135642Scognet 19135642Scognet/* 20135642Scognet * The use of a volatile pointer guarantees that the compiler 21135642Scognet * will not optimise the call away. 22135642Scognet */ 23135642Scognetvoid *(* volatile explicit_memset_impl)(void *, int, size_t) = memset; 24135642Scognet 25135642Scognetvoid * 26135642Scognetexplicit_memset(void *b, int c, size_t len) 27135642Scognet{ 28135642Scognet 29135642Scognet return (*explicit_memset_impl)(b, c, len); 30135642Scognet} 31135642Scognet