1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
7 This file is part of systemd.
9 Copyright 2010 Lennart Poettering
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
14 (at your option) any later version.
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 Lesser General Public License for more details.
21 You should have received a copy of the GNU Lesser General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
25 /* Missing glibc definitions to access certain kernel APIs */
27 #include <sys/resource.h>
28 #include <sys/syscall.h>
31 #include <linux/oom.h>
40 #include <asm/sgidefs.h>
44 #define RLIMIT_RTTIME 15
47 #ifndef F_LINUX_SPECIFIC_BASE
48 #define F_LINUX_SPECIFIC_BASE 1024
52 #define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
56 #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
60 #define IP_FREEBIND 15
63 #ifndef OOM_SCORE_ADJ_MIN
64 #define OOM_SCORE_ADJ_MIN (-1000)
67 #ifndef OOM_SCORE_ADJ_MAX
68 #define OOM_SCORE_ADJ_MAX 1000
71 #ifndef AUDIT_SERVICE_START
72 #define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
75 #ifndef AUDIT_SERVICE_STOP
76 #define AUDIT_SERVICE_STOP 1131 /* Service (daemon) stop */
80 #define TIOCVHANGUP 0x5437
83 #ifndef IP_TRANSPARENT
84 #define IP_TRANSPARENT 19
87 static inline int pivot_root(const char *new_root, const char *put_old) {
88 return syscall(SYS_pivot_root, new_root, put_old);
92 # ifndef __NR_fanotify_init
93 # define __NR_fanotify_init 300
95 # ifndef __NR_fanotify_mark
96 # define __NR_fanotify_mark 301
98 #elif defined _MIPS_SIM
99 # if _MIPS_SIM == _MIPS_SIM_ABI32
100 # ifndef __NR_fanotify_init
101 # define __NR_fanotify_init 4336
103 # ifndef __NR_fanotify_mark
104 # define __NR_fanotify_mark 4337
106 # elif _MIPS_SIM == _MIPS_SIM_NABI32
107 # ifndef __NR_fanotify_init
108 # define __NR_fanotify_init 6300
110 # ifndef __NR_fanotify_mark
111 # define __NR_fanotify_mark 6301
113 # elif _MIPS_SIM == _MIPS_SIM_ABI64
114 # ifndef __NR_fanotify_init
115 # define __NR_fanotify_init 5295
117 # ifndef __NR_fanotify_mark
118 # define __NR_fanotify_mark 5296
122 # ifndef __NR_fanotify_init
123 # define __NR_fanotify_init 338
125 # ifndef __NR_fanotify_mark
126 # define __NR_fanotify_mark 339
130 static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
131 return syscall(__NR_fanotify_init, flags, event_f_flags);
134 static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
135 int dfd, const char *pathname) {
136 #if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__
143 return syscall(__NR_fanotify_mark, fanotify_fd, flags,
144 _mask._32[0], _mask._32[1], dfd, pathname);
146 return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
150 #ifndef BTRFS_IOCTL_MAGIC
151 #define BTRFS_IOCTL_MAGIC 0x94
154 #ifndef BTRFS_PATH_NAME_MAX
155 #define BTRFS_PATH_NAME_MAX 4087
158 struct btrfs_ioctl_vol_args {
160 char name[BTRFS_PATH_NAME_MAX + 1];
163 #ifndef BTRFS_IOC_DEFRAG
164 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
167 #ifndef BTRFS_SUPER_MAGIC
168 #define BTRFS_SUPER_MAGIC 0x9123683E
176 #define MS_PRIVATE (1 << 18)
179 static inline pid_t gettid(void) {
180 return (pid_t) syscall(SYS_gettid);
184 #define SCM_SECURITY 0x03
187 #ifndef MS_STRICTATIME
188 #define MS_STRICTATIME (1<<24)