~ubuntu-branches/ubuntu/trusty/systemd/trusty

« back to all changes in this revision

Viewing changes to src/shared/missing.h

  • Committer: Package Import Robot
  • Author(s): Michael Biebl, Michael Biebl, Michael Stapelberg, Daniel Schaal, Ondrej Balaz
  • Date: 2013-09-12 00:13:11 UTC
  • mfrom: (1.1.11) (9.1.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 53.
  • Revision ID: package-import@ubuntu.com-20130912001311-dz35it34wr2lbday
Tags: 204-3
[ Michael Biebl ]
* Upload to unstable.
* Use /bin/bash in debug-shell.service as Debian doesn't have /sbin/sushell.
* Only import net.ifaces cmdline property for network devices.
* Generate strict dependencies between the binary packages using a
  shlibs.local file and add an explicit versioned dependency on
  libsystemd-login0 to systemd to ensure packages are upgraded in sync.
  Closes: #719444
* Drop obsolete Replaces: libudev0 from udev package.
* Use correct paths for various binaries, like /sbin/quotaon, which are
  installed in / and not /usr in Debian.  Closes: #721347
* Don't install kernel-install(8) man page since we don't install the
  corresponding binary either.  Closes: #722180
* Cherry-pick upstream fixes to make switching runlevels and starting
  reboot via ctrl-alt-del more robust.
* Cherry-pick upstream fix to properly apply ACLs to Journal files.

[ Michael Stapelberg ]
* Make systemctl enable|disable call update-rc.d for SysV init scripts.
  Closes: #709780
* Don't mount /tmp as tmpfs by default and make it possible to enable this
  feature via "systemctl enable tmp.mount".

[ Daniel Schaal ]
* Add bug-script to systemd and udev.  Closes: #711245

[ Ondrej Balaz ]
* Recognize discard option in /etc/crypttab.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
2
 
 
3
#pragma once
 
4
 
 
5
/***
 
6
  This file is part of systemd.
 
7
 
 
8
  Copyright 2010 Lennart Poettering
 
9
 
 
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.
 
14
 
 
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.
 
19
 
 
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/>.
 
22
***/
 
23
 
 
24
/* Missing glibc definitions to access certain kernel APIs */
 
25
 
 
26
#include <sys/resource.h>
 
27
#include <sys/syscall.h>
 
28
#include <fcntl.h>
 
29
#include <stdlib.h>
 
30
#include <unistd.h>
 
31
#include <linux/oom.h>
 
32
 
 
33
#ifdef HAVE_AUDIT
 
34
#include <libaudit.h>
 
35
#endif
 
36
 
 
37
#include "macro.h"
 
38
 
 
39
#ifdef ARCH_MIPS
 
40
#include <asm/sgidefs.h>
 
41
#endif
 
42
 
 
43
#ifndef RLIMIT_RTTIME
 
44
#define RLIMIT_RTTIME 15
 
45
#endif
 
46
 
 
47
#ifndef F_LINUX_SPECIFIC_BASE
 
48
#define F_LINUX_SPECIFIC_BASE 1024
 
49
#endif
 
50
 
 
51
#ifndef F_SETPIPE_SZ
 
52
#define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
 
53
#endif
 
54
 
 
55
#ifndef F_GETPIPE_SZ
 
56
#define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
 
57
#endif
 
58
 
 
59
#ifndef IP_FREEBIND
 
60
#define IP_FREEBIND 15
 
61
#endif
 
62
 
 
63
#ifndef OOM_SCORE_ADJ_MIN
 
64
#define OOM_SCORE_ADJ_MIN (-1000)
 
65
#endif
 
66
 
 
67
#ifndef OOM_SCORE_ADJ_MAX
 
68
#define OOM_SCORE_ADJ_MAX 1000
 
69
#endif
 
70
 
 
71
#ifndef AUDIT_SERVICE_START
 
72
#define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
 
73
#endif
 
74
 
 
75
#ifndef AUDIT_SERVICE_STOP
 
76
#define AUDIT_SERVICE_STOP 1131 /* Service (daemon) stop */
 
77
#endif
 
78
 
 
79
#ifndef TIOCVHANGUP
 
80
#define TIOCVHANGUP 0x5437
 
81
#endif
 
82
 
 
83
#ifndef IP_TRANSPARENT
 
84
#define IP_TRANSPARENT 19
 
85
#endif
 
86
 
 
87
#if !HAVE_DECL_PIVOT_ROOT
 
88
static inline int pivot_root(const char *new_root, const char *put_old) {
 
89
        return syscall(SYS_pivot_root, new_root, put_old);
 
90
}
 
91
#endif
 
92
 
 
93
#ifdef __x86_64__
 
94
#  ifndef __NR_fanotify_init
 
95
#    define __NR_fanotify_init 300
 
96
#  endif
 
97
#  ifndef __NR_fanotify_mark
 
98
#    define __NR_fanotify_mark 301
 
99
#  endif
 
100
#elif defined _MIPS_SIM
 
101
#  if _MIPS_SIM == _MIPS_SIM_ABI32
 
102
#    ifndef __NR_fanotify_init
 
103
#      define __NR_fanotify_init 4336
 
104
#    endif
 
105
#    ifndef __NR_fanotify_mark
 
106
#      define __NR_fanotify_mark 4337
 
107
#    endif
 
108
#  elif _MIPS_SIM == _MIPS_SIM_NABI32
 
109
#    ifndef __NR_fanotify_init
 
110
#      define __NR_fanotify_init 6300
 
111
#    endif
 
112
#    ifndef __NR_fanotify_mark
 
113
#      define __NR_fanotify_mark 6301
 
114
#    endif
 
115
#  elif _MIPS_SIM == _MIPS_SIM_ABI64
 
116
#    ifndef __NR_fanotify_init
 
117
#      define __NR_fanotify_init 5295
 
118
#    endif
 
119
#    ifndef __NR_fanotify_mark
 
120
#      define __NR_fanotify_mark 5296
 
121
#    endif
 
122
#  endif
 
123
#else
 
124
#  ifndef __NR_fanotify_init
 
125
#    define __NR_fanotify_init 338
 
126
#  endif
 
127
#  ifndef __NR_fanotify_mark
 
128
#    define __NR_fanotify_mark 339
 
129
#  endif
 
130
#endif
 
131
 
 
132
#ifndef HAVE_FANOTIFY_INIT
 
133
static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
 
134
        return syscall(__NR_fanotify_init, flags, event_f_flags);
 
135
}
 
136
#endif
 
137
 
 
138
#ifndef HAVE_FANOTIFY_MARK
 
139
static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
 
140
                                int dfd, const char *pathname) {
 
141
#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__
 
142
        union {
 
143
                uint64_t _64;
 
144
                uint32_t _32[2];
 
145
        } _mask;
 
146
        _mask._64 = mask;
 
147
 
 
148
        return syscall(__NR_fanotify_mark, fanotify_fd, flags,
 
149
                       _mask._32[0], _mask._32[1], dfd, pathname);
 
150
#else
 
151
        return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
 
152
#endif
 
153
}
 
154
#endif
 
155
 
 
156
#ifndef BTRFS_IOCTL_MAGIC
 
157
#define BTRFS_IOCTL_MAGIC 0x94
 
158
#endif
 
159
 
 
160
#ifndef BTRFS_PATH_NAME_MAX
 
161
#define BTRFS_PATH_NAME_MAX 4087
 
162
#endif
 
163
 
 
164
struct btrfs_ioctl_vol_args {
 
165
        int64_t fd;
 
166
        char name[BTRFS_PATH_NAME_MAX + 1];
 
167
};
 
168
 
 
169
#ifndef BTRFS_IOC_DEFRAG
 
170
#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
 
171
#endif
 
172
 
 
173
#ifndef BTRFS_SUPER_MAGIC
 
174
#define BTRFS_SUPER_MAGIC 0x9123683E
 
175
#endif
 
176
 
 
177
#ifndef MS_MOVE
 
178
#define MS_MOVE 8192
 
179
#endif
 
180
 
 
181
#ifndef MS_PRIVATE
 
182
#define MS_PRIVATE  (1 << 18)
 
183
#endif
 
184
 
 
185
#if !HAVE_DECL_GETTID
 
186
static inline pid_t gettid(void) {
 
187
        return (pid_t) syscall(SYS_gettid);
 
188
}
 
189
#endif
 
190
 
 
191
#ifndef SCM_SECURITY
 
192
#define SCM_SECURITY 0x03
 
193
#endif
 
194
 
 
195
#ifndef MS_STRICTATIME
 
196
#define MS_STRICTATIME (1<<24)
 
197
#endif
 
198
 
 
199
#ifndef MS_REC
 
200
#define MS_REC 16384
 
201
#endif
 
202
 
 
203
#ifndef MS_SHARED
 
204
#define MS_SHARED (1<<20)
 
205
#endif
 
206
 
 
207
#ifndef PR_SET_NO_NEW_PRIVS
 
208
#define PR_SET_NO_NEW_PRIVS 38
 
209
#endif
 
210
 
 
211
#ifndef PR_SET_CHILD_SUBREAPER
 
212
#define PR_SET_CHILD_SUBREAPER 36
 
213
#endif
 
214
 
 
215
#ifndef MAX_HANDLE_SZ
 
216
#define MAX_HANDLE_SZ 128
 
217
#endif
 
218
 
 
219
#if defined __x86_64__
 
220
#  ifndef __NR_name_to_handle_at
 
221
#    define __NR_name_to_handle_at 303
 
222
#  endif
 
223
#elif defined __i386__
 
224
#  ifndef __NR_name_to_handle_at
 
225
#    define __NR_name_to_handle_at 341
 
226
#  endif
 
227
#elif defined __arm__
 
228
#  ifndef __NR_name_to_handle_at
 
229
#    define __NR_name_to_handle_at 370
 
230
#  endif
 
231
#elif defined __powerpc__
 
232
#  ifndef __NR_name_to_handle_at
 
233
#    define __NR_name_to_handle_at 345
 
234
#  endif
 
235
#else
 
236
#  ifndef __NR_name_to_handle_at
 
237
#    error __NR_name_to_handle_at is not defined
 
238
#  endif
 
239
#endif
 
240
 
 
241
#if !HAVE_DECL_NAME_TO_HANDLE_AT
 
242
struct file_handle {
 
243
        unsigned int handle_bytes;
 
244
        int handle_type;
 
245
        unsigned char f_handle[0];
 
246
};
 
247
 
 
248
static inline int name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) {
 
249
        return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags);
 
250
}
 
251
#endif
 
252
 
 
253
#ifndef HAVE_SECURE_GETENV
 
254
#  ifdef HAVE___SECURE_GETENV
 
255
#    define secure_getenv __secure_getenv
 
256
#  else
 
257
#    error neither secure_getenv nor __secure_getenv are available
 
258
#  endif
 
259
#endif
 
260
 
 
261
#ifndef CIFS_MAGIC_NUMBER
 
262
#define CIFS_MAGIC_NUMBER 0xFF534D42
 
263
#endif
 
264
 
 
265
#ifndef TFD_TIMER_CANCEL_ON_SET
 
266
#define TFD_TIMER_CANCEL_ON_SET (1 << 1)
 
267
#endif