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