--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2023, Alejandro Colomar <alx@kernel.org>
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+#include <config.h>
+
+#ident "$Id$"
+
+#include <stddef.h>
+
+#include "memzero.h"
+
+
+extern inline void memzero(void *ptr, size_t size);
+extern inline void strzero(char *s);
/*
* SPDX-FileCopyrightText: 2022-2023, Christian Göttsche <cgzones@googlemail.com>
+ * SPDX-FileCopyrightText: 2023, Alejandro Colomar <alx@kernel.org>
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <strings.h>
-#ifdef HAVE_MEMSET_EXPLICIT
-# define memzero(ptr, size) memset_explicit((ptr), 0, (size))
-#elif defined HAVE_EXPLICIT_BZERO
-# define memzero(ptr, size) explicit_bzero((ptr), (size))
-#else
-static inline void memzero(void *ptr, size_t size)
+inline void memzero(void *ptr, size_t size);
+inline void strzero(char *s);
+
+
+inline void
+memzero(void *ptr, size_t size)
{
+#if defined(HAVE_MEMSET_EXPLICIT)
+ memset_explicit(ptr, 0, size);
+#elif defined(HAVE_EXPLICIT_BZERO)
+ explicit_bzero(ptr, size);
+#else
ptr = memset(ptr, '\0', size);
__asm__ __volatile__ ("" : : "r"(ptr) : "memory");
-}
#endif
+}
+
-#define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */
+inline void
+strzero(char *s)
+{
+ memzero(s, strlen(s));
+}
#endif // include guard