#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <errno.h>
#include <pthread.h>
#include <sys/mman.h>
#include <unistd.h>
#endif
#ifdef _MSC_VER
#include <intrin.h>
#endif
#include "xnnpack.h"
#include "xnnpack/allocator.h"
#include "xnnpack/common.h"
#include "xnnpack/config.h"
#include "xnnpack/log.h"
#include "xnnpack/params.h"
#if XNN_PLATFORM_WINDOWS
static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT;
#else
static pthread_once_t init_guard = …;
#endif
static const struct xnn_allocator* volatile init_allocator = …;
static void init(void) { … }
#if XNN_PLATFORM_WINDOWS
static BOOL CALLBACK init_windows(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {
init();
return TRUE;
}
#endif
enum xnn_status xnn_initialize(const struct xnn_allocator* allocator) { … }
enum xnn_status xnn_deinitialize(void) { … }