misc: add syscall fallback for close_range for musl libc
Add fallback for the close_range syscall wrapper. This is needed for musl libc, which currently does not have a close_range wrapper. Also set errno on errors.
This commit is contained in:
		
				
					committed by
					
						 William Hubbs
						William Hubbs
					
				
			
			
				
	
			
			
			
						parent
						
							e447562aaa
						
					
				
				
					commit
					c4785f1b99
				
			| @@ -197,6 +197,8 @@ endif | ||||
|  | ||||
| if cc.has_function('close_range', prefix: '#define _GNU_SOURCE\n#include <unistd.h>') | ||||
|   add_project_arguments('-DHAVE_CLOSE_RANGE', language: 'c') | ||||
| elif cc.has_header('linux/close_range.h') | ||||
|   add_project_arguments('-DHAVE_LINUX_CLOSE_RANGE_H', language: 'c') | ||||
| endif | ||||
|  | ||||
| if cc.has_function('strlcpy', prefix: '#define _GNU_SOURCE\n#include <string.h>') | ||||
|   | ||||
| @@ -24,6 +24,9 @@ | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <limits.h> | ||||
| #ifdef HAVE_LINUX_CLOSE_RANGE_H | ||||
| #  include <linux/close_range.h> | ||||
| #endif | ||||
| #include <signal.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| @@ -31,6 +34,7 @@ | ||||
| #include <sys/file.h> | ||||
| #include <sys/time.h> | ||||
| #ifdef __linux__ | ||||
| #  include <sys/syscall.h> /* for close_range */ | ||||
| #  include <sys/sysinfo.h> | ||||
| #endif | ||||
| #include <sys/types.h> | ||||
| @@ -511,7 +515,12 @@ static inline int close_range(int first RC_UNUSED, | ||||
| 			      int last RC_UNUSED, | ||||
| 			      unsigned int flags RC_UNUSED) | ||||
| { | ||||
| #ifdef SYS_close_range | ||||
| 	return syscall(SYS_close_range, first, last, flags); | ||||
| #else | ||||
| 	errno = ENOSYS; | ||||
| 	return -1; | ||||
| #endif | ||||
| } | ||||
| #endif | ||||
| #ifndef CLOSE_RANGE_CLOEXEC | ||||
|   | ||||
		Reference in New Issue
	
	Block a user