mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:32:43 +00:00 
			
		
		
		
	Kernel+Libraries: Move defines and types from sys/auxv.h to Kernel/API
And don't include <sys/auxv.h> from LibELF/AuxiliaryVector.h, to reduce the number of Kernel files that include LibC headers.
This commit is contained in:
		
							parent
							
								
									7ab37ee22c
								
							
						
					
					
						commit
						ad30b8c447
					
				
					 5 changed files with 47 additions and 40 deletions
				
			
		
							
								
								
									
										44
									
								
								Kernel/API/POSIX/sys/auxv.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								Kernel/API/POSIX/sys/auxv.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org> | ||||||
|  |  * | ||||||
|  |  * SPDX-License-Identifier: BSD-2-Clause | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #define AT_NULL 0           /* No length, last entry's a_type has this value */ | ||||||
|  | #define AT_IGNORE 1         /* Entry has no meaning, a_un undefined */ | ||||||
|  | #define AT_EXECFD 2         /* a_val contains a file descriptor of the main program image */ | ||||||
|  | #define AT_PHDR 3           /* a_ptr contains pointer to program header table of main program image */ | ||||||
|  | #define AT_PHENT 4          /* a_val holds size of program header table entries */ | ||||||
|  | #define AT_PHNUM 5          /* a_val holds number of program header table entries */ | ||||||
|  | #define AT_PAGESZ 6         /* a_val gives system page size in bytes */ | ||||||
|  | #define AT_BASE 7           /* a_ptr holds base address that Loader was loaded into memory */ | ||||||
|  | #define AT_FLAGS 8          /* a_val holds 1 bit flags. Undefined flags are 0 */ | ||||||
|  | #define AT_ENTRY 9          /* a_ptr holds entry point of the main program */ | ||||||
|  | #define AT_NOTELF 10        /* a_val non-zero if the program is not ELF */ | ||||||
|  | #define AT_UID 11           /* a_val holds real user id of process */ | ||||||
|  | #define AT_EUID 12          /* a_val holds effective user id of process */ | ||||||
|  | #define AT_GID 13           /* a_val holds real group id of process */ | ||||||
|  | #define AT_EGID 14          /* a_val holds effective group id of process */ | ||||||
|  | #define AT_PLATFORM 15      /* a_val points to a string containing platform name */ | ||||||
|  | #define AT_HWCAP 16         /* a_val contains bitmask of CPU features. Equivalent to CPUID 1.EDX*/ | ||||||
|  | #define AT_CLKTCK 17        /* a_val contains frequency at which times() increments. (Re: Spec. What is times()?) */ | ||||||
|  | #define AT_SECURE 23        /* a_val holds 1 if program in secure mode (e.g. suid). Otherwise 0 */ | ||||||
|  | #define AT_BASE_PLATFORM 24 /* a_ptr points to a string identifying base platform name, which might be different from platform (e.g x86_64 when in i386 compat)  */ | ||||||
|  | #define AT_RANDOM 25        /* a_ptr points to 16 securely generated random bytes */ | ||||||
|  | #define AT_HWCAP2 26        /* a_val holds extended hw feature mask. Currently 0 */ | ||||||
|  | #define AT_EXECFN 31        /* a_ptr points to filename of executed program */ | ||||||
|  | #define AT_EXE_BASE 32      /* a_ptr holds base address where main program was loaded into memory */ | ||||||
|  | #define AT_EXE_SIZE 33      /* a_val holds the size of the main program in memory */ | ||||||
|  | 
 | ||||||
|  | /* Auxiliary Vector types, from Intel386 ABI ver 1.0 section 2.3.3 */ | ||||||
|  | typedef struct | ||||||
|  | { | ||||||
|  |     long a_type; /* Note: Extended to long from int, for ease of compatibility w/64 bit */ | ||||||
|  |     union { | ||||||
|  |         long a_val; | ||||||
|  |         void* a_ptr; | ||||||
|  |         void (*a_fnc)(void); /* In spec, not used */ | ||||||
|  |     } a_un; | ||||||
|  | } auxv_t; | ||||||
|  | @ -9,7 +9,6 @@ | ||||||
| #include <AK/Debug.h> | #include <AK/Debug.h> | ||||||
| #include <AK/ScopedValueRollback.h> | #include <AK/ScopedValueRollback.h> | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| #include <LibELF/AuxiliaryVector.h> |  | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include <mallocdefs.h> | #include <mallocdefs.h> | ||||||
|  |  | ||||||
|  | @ -13,7 +13,6 @@ | ||||||
| #include <AK/StdLibExtras.h> | #include <AK/StdLibExtras.h> | ||||||
| #include <AK/Types.h> | #include <AK/Types.h> | ||||||
| #include <AK/Utf8View.h> | #include <AK/Utf8View.h> | ||||||
| #include <LibELF/AuxiliaryVector.h> |  | ||||||
| #include <alloca.h> | #include <alloca.h> | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| #include <bits/pthread_cancel.h> | #include <bits/pthread_cancel.h> | ||||||
|  | @ -26,6 +25,7 @@ | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <sys/auxv.h> | ||||||
| #include <sys/internals.h> | #include <sys/internals.h> | ||||||
| #include <sys/ioctl.h> | #include <sys/ioctl.h> | ||||||
| #include <sys/mman.h> | #include <sys/mman.h> | ||||||
|  |  | ||||||
|  | @ -6,47 +6,11 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <Kernel/API/POSIX/sys/auxv.h> | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| 
 | 
 | ||||||
| __BEGIN_DECLS | __BEGIN_DECLS | ||||||
| 
 | 
 | ||||||
| #define AT_NULL 0           /* No length, last entry's a_type has this value */ |  | ||||||
| #define AT_IGNORE 1         /* Entry has no meaning, a_un undefined */ |  | ||||||
| #define AT_EXECFD 2         /* a_val contains a file descriptor of the main program image */ |  | ||||||
| #define AT_PHDR 3           /* a_ptr contains pointer to program header table of main program image */ |  | ||||||
| #define AT_PHENT 4          /* a_val holds size of program header table entries */ |  | ||||||
| #define AT_PHNUM 5          /* a_val holds number of program header table entries */ |  | ||||||
| #define AT_PAGESZ 6         /* a_val gives system page size in bytes */ |  | ||||||
| #define AT_BASE 7           /* a_ptr holds base address that Loader was loaded into memory */ |  | ||||||
| #define AT_FLAGS 8          /* a_val holds 1 bit flags. Undefined flags are 0 */ |  | ||||||
| #define AT_ENTRY 9          /* a_ptr holds entry point of the main program */ |  | ||||||
| #define AT_NOTELF 10        /* a_val non-zero if the program is not ELF */ |  | ||||||
| #define AT_UID 11           /* a_val holds real user id of process */ |  | ||||||
| #define AT_EUID 12          /* a_val holds effective user id of process */ |  | ||||||
| #define AT_GID 13           /* a_val holds real group id of process */ |  | ||||||
| #define AT_EGID 14          /* a_val holds effective group id of process */ |  | ||||||
| #define AT_PLATFORM 15      /* a_val points to a string containing platform name */ |  | ||||||
| #define AT_HWCAP 16         /* a_val contains bitmask of CPU features. Equivalent to CPUID 1.EDX*/ |  | ||||||
| #define AT_CLKTCK 17        /* a_val contains frequency at which times() increments. (Re: Spec. What is times()?) */ |  | ||||||
| #define AT_SECURE 23        /* a_val holds 1 if program in secure mode (e.g. suid). Otherwise 0 */ |  | ||||||
| #define AT_BASE_PLATFORM 24 /* a_ptr points to a string identifying base platform name, which might be different from platform (e.g x86_64 when in i386 compat)  */ |  | ||||||
| #define AT_RANDOM 25        /* a_ptr points to 16 securely generated random bytes */ |  | ||||||
| #define AT_HWCAP2 26        /* a_val holds extended hw feature mask. Currently 0 */ |  | ||||||
| #define AT_EXECFN 31        /* a_ptr points to filename of executed program */ |  | ||||||
| #define AT_EXE_BASE 32      /* a_ptr holds base address where main program was loaded into memory */ |  | ||||||
| #define AT_EXE_SIZE 33      /* a_val holds the size of the main program in memory */ |  | ||||||
| 
 |  | ||||||
| /* Auxiliary Vector types, from Intel386 ABI ver 1.0 section 2.3.3 */ |  | ||||||
| typedef struct |  | ||||||
| { |  | ||||||
|     long a_type; /* Note: Extended to long from int, for ease of compatibility w/64 bit */ |  | ||||||
|     union { |  | ||||||
|         long a_val; |  | ||||||
|         void* a_ptr; |  | ||||||
|         void (*a_fnc)(void); /* In spec, not used */ |  | ||||||
|     } a_un; |  | ||||||
| } auxv_t; |  | ||||||
| 
 |  | ||||||
| long getauxval(long type); | long getauxval(long type); | ||||||
| 
 | 
 | ||||||
| __END_DECLS | __END_DECLS | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <AK/StringView.h> | #include <AK/StringView.h> | ||||||
| #include <AK/Types.h> | #include <AK/Types.h> | ||||||
| #include <sys/auxv.h> | #include <Kernel/API/POSIX/sys/auxv.h> | ||||||
| 
 | 
 | ||||||
| static_assert(sizeof(auxv_t) % sizeof(FlatPtr) == 0); | static_assert(sizeof(auxv_t) % sizeof(FlatPtr) == 0); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andrew Kaster
						Andrew Kaster