mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	mem: fix for memfd_create check
This commit is contained in:
		
							parent
							
								
									d7c26c4b59
								
							
						
					
					
						commit
						77838fd734
					
				
					 3 changed files with 5 additions and 63 deletions
				
			
		|  | @ -117,7 +117,7 @@ if cc.has_function('mkstemp', prefix : '#include <stdlib.h>') | |||
|   cdata.set('HAVE_MKSTEMP', 1) | ||||
| endif | ||||
| 
 | ||||
| if cc.has_function('memfd_create', prefix : '#include <sys/mman.h>', args : [ '-D__USE_GNU' ]) | ||||
| if cc.has_function('memfd_create', prefix : '#include <sys/mman.h>', args : [ '-D_GNU_SOURCE' ]) | ||||
|   cdata.set('HAVE_MEMFD_CREATE', 1) | ||||
| endif | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,6 +21,8 @@ | |||
| #define _GNU_SOURCE | ||||
| #endif | ||||
| 
 | ||||
| #include "config.h" | ||||
| 
 | ||||
| #include <string.h> | ||||
| #include <stddef.h> | ||||
| #include <stdio.h> | ||||
|  | @ -34,6 +36,7 @@ | |||
| #include <pipewire/log.h> | ||||
| #include <pipewire/mem.h> | ||||
| 
 | ||||
| #ifndef HAVE_MEMFD_CREATE | ||||
| /*
 | ||||
|  * No glibc wrappers exist for memfd_create(2), so provide our own. | ||||
|  * | ||||
|  | @ -46,6 +49,7 @@ static inline int memfd_create(const char *name, unsigned int flags) | |||
| { | ||||
| 	return syscall(SYS_memfd_create, name, flags); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /* memfd_create(2) flags */ | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,62 +0,0 @@ | |||
| /* PipeWire
 | ||||
|  * Copyright (C) 2016 Wim Taymans <wim.taymans@gmail.com> | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the | ||||
|  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, | ||||
|  * Boston, MA 02110-1301, USA. | ||||
|  */ | ||||
| 
 | ||||
| #include <sys/syscall.h> | ||||
| #include <fcntl.h> | ||||
| 
 | ||||
| #ifndef HAVE_MEMFD_CREATE | ||||
| /*
 | ||||
|  * No glibc wrappers exist for memfd_create(2), so provide our own. | ||||
|  * | ||||
|  * Also define memfd fcntl sealing macros. While they are already | ||||
|  * defined in the kernel header file <linux/fcntl.h>, that file as | ||||
|  * a whole conflicts with the original glibc header <fnctl.h>. | ||||
|  */ | ||||
| 
 | ||||
| static inline int | ||||
| memfd_create(const char *name, unsigned int flags) { | ||||
| 	return syscall(SYS_memfd_create, name, flags); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /* memfd_create(2) flags */ | ||||
| 
 | ||||
| #ifndef MFD_CLOEXEC | ||||
| #define MFD_CLOEXEC       0x0001U | ||||
| #endif | ||||
| 
 | ||||
| #ifndef MFD_ALLOW_SEALING | ||||
| #define MFD_ALLOW_SEALING 0x0002U | ||||
| #endif | ||||
| 
 | ||||
| /* fcntl() seals-related flags */ | ||||
| 
 | ||||
| #ifndef F_LINUX_SPECIFIC_BASE | ||||
| #define F_LINUX_SPECIFIC_BASE 1024 | ||||
| #endif | ||||
| 
 | ||||
| #ifndef F_ADD_SEALS | ||||
| #define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9) | ||||
| #define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10) | ||||
| 
 | ||||
| #define F_SEAL_SEAL     0x0001  /* prevent further seals from being set */ | ||||
| #define F_SEAL_SHRINK   0x0002  /* prevent file from shrinking */ | ||||
| #define F_SEAL_GROW     0x0004  /* prevent file from growing */ | ||||
| #define F_SEAL_WRITE    0x0008  /* prevent writes */ | ||||
| #endif | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wim Taymans
						Wim Taymans