Commit | Line | Data |
---|---|---|
60b6c79c MD |
1 | #ifndef _RUNAS_H |
2 | #define _RUNAS_H | |
3 | ||
4 | /* | |
5 | * Copyright (C) 2011 - David Goulet <david.goulet@polymtl.ca> | |
6 | * Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
7 | * | |
d14d33bf AM |
8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License, version 2 only, | |
10 | * as published by the Free Software Foundation. | |
60b6c79c | 11 | * |
d14d33bf AM |
12 | * This program is distributed in the hope that it will be useful, but WITHOUT |
13 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
15 | * more details. | |
60b6c79c | 16 | * |
d14d33bf AM |
17 | * You should have received a copy of the GNU General Public License along |
18 | * with this program; if not, write to the Free Software Foundation, Inc., | |
19 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
60b6c79c MD |
20 | */ |
21 | ||
0ef03255 | 22 | #include <stdint.h> |
3446f606 | 23 | #include <sys/types.h> |
60b6c79c MD |
24 | #include <unistd.h> |
25 | ||
a4ee1b7e JG |
26 | #include <common/macros.h> |
27 | ||
5bedd986 JG |
28 | /* |
29 | * The run-as process is launched by forking without an exec*() call. This means | |
30 | * that any resource allocated before the run-as worker is launched should be | |
31 | * cleaned-up after the fork(). This callback allows the user to perform this | |
32 | * clean-up. | |
33 | * | |
34 | * Note that the callback will _not_ be invoked if the LTTNG_DEBUG_NOCLONE | |
35 | * environment variable is set as the clean-up is not needed (and may not be | |
36 | * expected). | |
37 | * | |
38 | * A negative return value will cause the run-as process to exit with a non-zero | |
39 | * value. | |
40 | */ | |
41 | typedef int (*post_fork_cleanup_cb)(void *user_data); | |
42 | ||
c18250f2 | 43 | LTTNG_HIDDEN |
e11d277b | 44 | int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 45 | LTTNG_HIDDEN |
a42089bd JG |
46 | int run_as_mkdirat_recursive(int dirfd, const char *path, mode_t mode, |
47 | uid_t uid, gid_t gid); | |
48 | LTTNG_HIDDEN | |
e11d277b | 49 | int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 50 | LTTNG_HIDDEN |
a42089bd JG |
51 | int run_as_mkdirat(int dirfd, const char *path, mode_t mode, |
52 | uid_t uid, gid_t gid); | |
53 | LTTNG_HIDDEN | |
e11d277b | 54 | int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 55 | LTTNG_HIDDEN |
a4ee1b7e JG |
56 | int run_as_openat(int dirfd, const char *filename, int flags, mode_t mode, |
57 | uid_t uid, gid_t gid); | |
58 | LTTNG_HIDDEN | |
4628484a | 59 | int run_as_unlink(const char *path, uid_t uid, gid_t gid); |
c18250f2 | 60 | LTTNG_HIDDEN |
a4ee1b7e JG |
61 | int run_as_unlinkat(int dirfd, const char *filename, uid_t uid, gid_t gid); |
62 | LTTNG_HIDDEN | |
fcde531a JG |
63 | int run_as_rmdir(const char *path, uid_t uid, gid_t gid); |
64 | LTTNG_HIDDEN | |
58ec7253 | 65 | int run_as_rmdir_recursive(const char *path, uid_t uid, gid_t gid, int flags); |
241e0a5a | 66 | LTTNG_HIDDEN |
fcde531a JG |
67 | int run_as_rmdirat(int dirfd, const char *path, uid_t uid, gid_t gid); |
68 | LTTNG_HIDDEN | |
58ec7253 | 69 | int run_as_rmdirat_recursive(int dirfd, const char *path, uid_t uid, gid_t gid, int flags); |
fcde531a JG |
70 | LTTNG_HIDDEN |
71 | int run_as_rename(const char *old, const char *new, uid_t uid, gid_t gid); | |
72 | LTTNG_HIDDEN | |
73 | int run_as_renameat(int old_dirfd, const char *old, | |
74 | int new_dirfd, const char *new, uid_t uid, gid_t gid); | |
75 | LTTNG_HIDDEN | |
241e0a5a FD |
76 | int run_as_extract_elf_symbol_offset(int fd, const char* function, |
77 | uid_t uid, gid_t gid, uint64_t *offset); | |
c18250f2 | 78 | LTTNG_HIDDEN |
0ef03255 FD |
79 | int run_as_extract_sdt_probe_offsets(int fd, const char *provider_name, |
80 | const char* probe_name, uid_t uid, gid_t gid, | |
81 | uint64_t **offsets, uint32_t *num_offset); | |
82 | LTTNG_HIDDEN | |
5bedd986 JG |
83 | int run_as_create_worker(const char *procname, |
84 | post_fork_cleanup_cb clean_up_func, void *clean_up_user_data); | |
c18250f2 | 85 | LTTNG_HIDDEN |
7567352f | 86 | void run_as_destroy_worker(void); |
9ef70f87 | 87 | |
60b6c79c | 88 | #endif /* _RUNAS_H */ |