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) |   cdata.set('HAVE_MKSTEMP', 1) | ||||||
| endif | 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) |   cdata.set('HAVE_MEMFD_CREATE', 1) | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,6 +21,8 @@ | ||||||
| #define _GNU_SOURCE | #define _GNU_SOURCE | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #include "config.h" | ||||||
|  | 
 | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <stddef.h> | #include <stddef.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  | @ -34,6 +36,7 @@ | ||||||
| #include <pipewire/log.h> | #include <pipewire/log.h> | ||||||
| #include <pipewire/mem.h> | #include <pipewire/mem.h> | ||||||
| 
 | 
 | ||||||
|  | #ifndef HAVE_MEMFD_CREATE | ||||||
| /*
 | /*
 | ||||||
|  * No glibc wrappers exist for memfd_create(2), so provide our own. |  * 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); | 	return syscall(SYS_memfd_create, name, flags); | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* memfd_create(2) flags */ | /* 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