explicit_memset.c revision 1.4
11.4Sdrochner/* $NetBSD: explicit_memset.c,v 1.4 2014/06/24 16:39:39 drochner Exp $ */ 21.4Sdrochner 31.4Sdrochner/* 41.4Sdrochner * Written by Matthias Drochner <drochner@NetBSD.org>. 51.4Sdrochner * Public domain. 61.4Sdrochner */ 71.1Sriastrad 81.1Sriastrad#if !defined(_KERNEL) && !defined(_STANDALONE) 91.3Sriastrad#include "namespace.h" 101.1Sriastrad#include <string.h> 111.3Sriastrad#ifdef __weak_alias 121.3Sriastrad__weak_alias(explicit_memset,_explicit_memset) 131.3Sriastrad#endif 141.1Sriastrad#define explicit_memset_impl __explicit_memset_impl 151.1Sriastrad#else 161.1Sriastrad#include <lib/libkern/libkern.h> 171.1Sriastrad#endif 181.1Sriastrad 191.1Sriastrad/* 201.1Sriastrad * The use of a volatile pointer guarantees that the compiler 211.1Sriastrad * will not optimise the call away. 221.1Sriastrad */ 231.1Sriastradvoid *(* volatile explicit_memset_impl)(void *, int, size_t) = memset; 241.1Sriastrad 251.2Sriastradvoid * 261.1Sriastradexplicit_memset(void *b, int c, size_t len) 271.1Sriastrad{ 281.1Sriastrad 291.2Sriastrad return (*explicit_memset_impl)(b, c, len); 301.1Sriastrad} 31