1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
6 This file is part of systemd.
8 Copyright 2010 Lennart Poettering
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 /* Missing glibc definitions to access certain kernel APIs */
26 #include <sys/resource.h>
27 #include <sys/syscall.h>
30 #include <linux/oom.h>
39 #include <asm/sgidefs.h>
43 #define RLIMIT_RTTIME 15
46 #ifndef F_LINUX_SPECIFIC_BASE
47 #define F_LINUX_SPECIFIC_BASE 1024
51 #define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
55 #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
59 #define IP_FREEBIND 15
62 #ifndef OOM_SCORE_ADJ_MIN
63 #define OOM_SCORE_ADJ_MIN (-1000)
66 #ifndef OOM_SCORE_ADJ_MAX
67 #define OOM_SCORE_ADJ_MAX 1000
70 #ifndef AUDIT_SERVICE_START
71 #define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
74 #ifndef AUDIT_SERVICE_STOP
75 #define AUDIT_SERVICE_STOP 1131 /* Service (daemon) stop */
79 #define TIOCVHANGUP 0x5437
82 #ifndef IP_TRANSPARENT
83 #define IP_TRANSPARENT 19
86 static inline int pivot_root(const char *new_root, const char *put_old) {
87 return syscall(SYS_pivot_root, new_root, put_old);
91 # ifndef __NR_fanotify_init
92 # define __NR_fanotify_init 300
94 # ifndef __NR_fanotify_mark
95 # define __NR_fanotify_mark 301
97 #elif defined _MIPS_SIM
98 # if _MIPS_SIM == _MIPS_SIM_ABI32
99 # ifndef __NR_fanotify_init
100 # define __NR_fanotify_init 4336
102 # ifndef __NR_fanotify_mark
103 # define __NR_fanotify_mark 4337
105 # elif _MIPS_SIM == _MIPS_SIM_NABI32
106 # ifndef __NR_fanotify_init
107 # define __NR_fanotify_init 6300
109 # ifndef __NR_fanotify_mark
110 # define __NR_fanotify_mark 6301
112 # elif _MIPS_SIM == _MIPS_SIM_ABI64
113 # ifndef __NR_fanotify_init
114 # define __NR_fanotify_init 5295
116 # ifndef __NR_fanotify_mark
117 # define __NR_fanotify_mark 5296
121 # ifndef __NR_fanotify_init
122 # define __NR_fanotify_init 338
124 # ifndef __NR_fanotify_mark
125 # define __NR_fanotify_mark 339
129 static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
130 return syscall(__NR_fanotify_init, flags, event_f_flags);
133 static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
134 int dfd, const char *pathname) {
135 #if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__
142 return syscall(__NR_fanotify_mark, fanotify_fd, flags,
143 _mask._32[0], _mask._32[1], dfd, pathname);
145 return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
149 #ifndef BTRFS_IOCTL_MAGIC
150 #define BTRFS_IOCTL_MAGIC 0x94
153 #ifndef BTRFS_PATH_NAME_MAX
154 #define BTRFS_PATH_NAME_MAX 4087
157 struct btrfs_ioctl_vol_args {
159 char name[BTRFS_PATH_NAME_MAX + 1];
162 #ifndef BTRFS_IOC_DEFRAG
163 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
166 #ifndef BTRFS_SUPER_MAGIC
167 #define BTRFS_SUPER_MAGIC 0x9123683E
175 #define MS_PRIVATE (1 << 18)
178 static inline pid_t gettid(void) {
179 return (pid_t) syscall(SYS_gettid);
183 #define SCM_SECURITY 0x03
186 #ifndef MS_STRICTATIME
187 #define MS_STRICTATIME (1<<24)
190 #ifndef PR_SET_NO_NEW_PRIVS
191 #define PR_SET_NO_NEW_PRIVS 38