X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Futil%2Fanon_file.c;h=6c8885707f4912147486d3077d443ad41bdbe918;hb=5ef50078fced6331c8731389785762b62262afba;hp=90c55cd5af0c8a7347ffbddeaa718ae8a96f4738;hpb=c73988300f943e185a50aaba015f2f114ffcb262;p=mesa.git diff --git a/src/util/anon_file.c b/src/util/anon_file.c index 90c55cd5af0..6c8885707f4 100644 --- a/src/util/anon_file.c +++ b/src/util/anon_file.c @@ -27,26 +27,24 @@ * Based on weston shared/os-compatibility.c */ -#ifndef WIN32 +#ifndef _WIN32 #include "anon_file.h" #include #include #include -#include #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__OpenBSD__) #include -#elif defined(HAVE_MEMFD_CREATE) +#elif defined(HAVE_MEMFD_CREATE) || defined(ANDROID) #include #include #else #include -#include #endif -#if !(defined(__FreeBSD__) || defined(HAVE_MEMFD_CREATE) || defined(HAVE_MKOSTEMP)) +#if !(defined(__FreeBSD__) || defined(HAVE_MEMFD_CREATE) || defined(HAVE_MKOSTEMP) || defined(ANDROID)) static int set_cloexec_or_close(int fd) { @@ -70,7 +68,7 @@ err: } #endif -#if !(defined(__FreeBSD__) || defined(HAVE_MEMFD_CREATE)) +#if !(defined(__FreeBSD__) || defined(HAVE_MEMFD_CREATE) || defined(ANDROID)) static int create_tmpfile_cloexec(char *tmpname) { @@ -120,7 +118,12 @@ os_create_anonymous_file(off_t size, const char *debug_name) #ifdef __FreeBSD__ (void*)debug_name; fd = shm_open(SHM_ANON, O_CREAT | O_RDWR | O_CLOEXEC, 0600); -#elif defined(HAVE_MEMFD_CREATE) +#elif defined(__OpenBSD__) + char template[] = "/tmp/mesa-XXXXXXXXXX"; + fd = shm_mkstemp(template); + if (fd != -1) + shm_unlink(template); +#elif defined(HAVE_MEMFD_CREATE) || defined(ANDROID) if (!debug_name) debug_name = "mesa-shared"; fd = syscall(SYS_memfd_create, debug_name, MFD_CLOEXEC);