xref: /aosp_15_r20/external/kmod/shared/missing.h (revision cc4ad7da8cefe208cb129ac2aa9a357c7c72deb2)
1*cc4ad7daSAndroid Build Coastguard Worker #pragma once
2*cc4ad7daSAndroid Build Coastguard Worker 
3*cc4ad7daSAndroid Build Coastguard Worker #include <unistd.h>
4*cc4ad7daSAndroid Build Coastguard Worker #include <sys/syscall.h>
5*cc4ad7daSAndroid Build Coastguard Worker 
6*cc4ad7daSAndroid Build Coastguard Worker #ifdef HAVE_LINUX_MODULE_H
7*cc4ad7daSAndroid Build Coastguard Worker #include <linux/module.h>
8*cc4ad7daSAndroid Build Coastguard Worker #endif
9*cc4ad7daSAndroid Build Coastguard Worker 
10*cc4ad7daSAndroid Build Coastguard Worker #ifndef MODULE_INIT_IGNORE_MODVERSIONS
11*cc4ad7daSAndroid Build Coastguard Worker # define MODULE_INIT_IGNORE_MODVERSIONS 1
12*cc4ad7daSAndroid Build Coastguard Worker #endif
13*cc4ad7daSAndroid Build Coastguard Worker 
14*cc4ad7daSAndroid Build Coastguard Worker #ifndef MODULE_INIT_IGNORE_VERMAGIC
15*cc4ad7daSAndroid Build Coastguard Worker # define MODULE_INIT_IGNORE_VERMAGIC 2
16*cc4ad7daSAndroid Build Coastguard Worker #endif
17*cc4ad7daSAndroid Build Coastguard Worker 
18*cc4ad7daSAndroid Build Coastguard Worker #ifndef MODULE_INIT_COMPRESSED_FILE
19*cc4ad7daSAndroid Build Coastguard Worker # define MODULE_INIT_COMPRESSED_FILE 4
20*cc4ad7daSAndroid Build Coastguard Worker #endif
21*cc4ad7daSAndroid Build Coastguard Worker 
22*cc4ad7daSAndroid Build Coastguard Worker #ifndef __NR_finit_module
23*cc4ad7daSAndroid Build Coastguard Worker # define __NR_finit_module -1
24*cc4ad7daSAndroid Build Coastguard Worker #endif
25*cc4ad7daSAndroid Build Coastguard Worker 
26*cc4ad7daSAndroid Build Coastguard Worker #ifndef HAVE_FINIT_MODULE
27*cc4ad7daSAndroid Build Coastguard Worker #include <errno.h>
28*cc4ad7daSAndroid Build Coastguard Worker 
finit_module(int fd,const char * uargs,int flags)29*cc4ad7daSAndroid Build Coastguard Worker static inline int finit_module(int fd, const char *uargs, int flags)
30*cc4ad7daSAndroid Build Coastguard Worker {
31*cc4ad7daSAndroid Build Coastguard Worker 	if (__NR_finit_module == -1) {
32*cc4ad7daSAndroid Build Coastguard Worker 		errno = ENOSYS;
33*cc4ad7daSAndroid Build Coastguard Worker 		return -1;
34*cc4ad7daSAndroid Build Coastguard Worker 	}
35*cc4ad7daSAndroid Build Coastguard Worker 
36*cc4ad7daSAndroid Build Coastguard Worker 	return syscall(__NR_finit_module, fd, uargs, flags);
37*cc4ad7daSAndroid Build Coastguard Worker }
38*cc4ad7daSAndroid Build Coastguard Worker #endif
39*cc4ad7daSAndroid Build Coastguard Worker 
40*cc4ad7daSAndroid Build Coastguard Worker #if !HAVE_DECL_STRNDUPA
41*cc4ad7daSAndroid Build Coastguard Worker #define strndupa(s, n)							\
42*cc4ad7daSAndroid Build Coastguard Worker 	({								\
43*cc4ad7daSAndroid Build Coastguard Worker 		const char *__old = (s);				\
44*cc4ad7daSAndroid Build Coastguard Worker 		size_t __len = strnlen(__old, (n));			\
45*cc4ad7daSAndroid Build Coastguard Worker 		char *__new = alloca(__len + 1);			\
46*cc4ad7daSAndroid Build Coastguard Worker 		__new[__len] = '\0';					\
47*cc4ad7daSAndroid Build Coastguard Worker 		memcpy(__new, __old, __len);				\
48*cc4ad7daSAndroid Build Coastguard Worker 	 })
49*cc4ad7daSAndroid Build Coastguard Worker #endif
50*cc4ad7daSAndroid Build Coastguard Worker 
51*cc4ad7daSAndroid Build Coastguard Worker #if !HAVE_DECL_BE32TOH
52*cc4ad7daSAndroid Build Coastguard Worker #include <endian.h>
53*cc4ad7daSAndroid Build Coastguard Worker #include <byteswap.h>
54*cc4ad7daSAndroid Build Coastguard Worker #if __BYTE_ORDER == __LITTLE_ENDIAN
55*cc4ad7daSAndroid Build Coastguard Worker #define be32toh(x) bswap_32 (x)
56*cc4ad7daSAndroid Build Coastguard Worker #else
57*cc4ad7daSAndroid Build Coastguard Worker #define be32toh(x) (x)
58*cc4ad7daSAndroid Build Coastguard Worker #endif
59*cc4ad7daSAndroid Build Coastguard Worker #endif
60