Cross Reference: explicit_memset.c
xref: /src/common/lib/libc/string/explicit_memset.c
  • Home
  • History
  • AnnotateAnnotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /src/common/lib/libc/string/
11.5Sriastrad/* $NetBSD: explicit_memset.c,v 1.5 2024/11/02 02:43:48 riastradh 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.5Sriastrad__strong_alias(memset_explicit,_explicit_memset)	/* C23 */
141.3Sriastrad#endif
151.1Sriastrad#define explicit_memset_impl __explicit_memset_impl
161.1Sriastrad#else
171.1Sriastrad#include <lib/libkern/libkern.h>
181.1Sriastrad#endif
191.1Sriastrad
201.1Sriastrad/*
211.1Sriastrad * The use of a volatile pointer guarantees that the compiler
221.1Sriastrad * will not optimise the call away.
231.1Sriastrad */
241.1Sriastradvoid *(* volatile explicit_memset_impl)(void *, int, size_t) = memset;
251.1Sriastrad
261.2Sriastradvoid *
271.1Sriastradexplicit_memset(void *b, int c, size_t len)
281.1Sriastrad{
291.1Sriastrad
301.2Sriastrad	return (*explicit_memset_impl)(b, c, len);
311.1Sriastrad}
32

Indexes created Mon Nov 10 17:20:41 GMT 2025