Commit | Line | Data |
---|---|---|
9f36eaed MJ |
1 | /* SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) |
2 | * | |
886d51a3 | 3 | * wrapper/splice.c |
5dd620fa | 4 | * |
711e3212 | 5 | * wrapper around splice_to_pipe. Using KALLSYMS to get its address when |
5dd620fa MD |
6 | * available, else we need to have a kernel that exports this function to GPL |
7 | * modules. | |
8 | * | |
886d51a3 | 9 | * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
5dd620fa MD |
10 | */ |
11 | ||
12 | #ifdef CONFIG_KALLSYMS | |
13 | ||
14 | #include <linux/kallsyms.h> | |
15 | #include <linux/fs.h> | |
16 | #include <linux/splice.h> | |
5a2f5e92 | 17 | #include <wrapper/kallsyms.h> |
5dd620fa MD |
18 | |
19 | static | |
20 | ssize_t (*splice_to_pipe_sym)(struct pipe_inode_info *pipe, | |
21 | struct splice_pipe_desc *spd); | |
22 | ||
23 | ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe, | |
24 | struct splice_pipe_desc *spd) | |
25 | { | |
26 | if (!splice_to_pipe_sym) | |
c539a324 | 27 | splice_to_pipe_sym = (void *) kallsyms_lookup_funcptr("splice_to_pipe"); |
5dd620fa MD |
28 | if (splice_to_pipe_sym) { |
29 | return splice_to_pipe_sym(pipe, spd); | |
30 | } else { | |
e36de50d | 31 | printk_once(KERN_WARNING "LTTng: splice_to_pipe symbol lookup failed.\n"); |
5dd620fa MD |
32 | return -ENOSYS; |
33 | } | |
34 | } | |
35 | ||
36 | #else | |
37 | ||
38 | #include <linux/fs.h> | |
39 | #include <linux/splice.h> | |
40 | ||
41 | ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe, | |
42 | struct splice_pipe_desc *spd) | |
43 | { | |
44 | return splice_to_pipe(pipe, spd); | |
45 | } | |
46 | ||
47 | #endif |