2 * Copyright (C) 2011 Mathieu Desnoyers (mathieu.desnoyers@efficios.com)
4 * wrapper around poll __pollwait and poll_get_entry. Using KALLSYMS to get its
5 * address when available, else we need to have a kernel that exports this
6 * function to GPL modules.
8 * Dual LGPL v2.1/GPL v2 license.
11 #ifdef CONFIG_KALLSYMS
13 #include <linux/kallsyms.h>
14 #include <linux/poll.h>
16 struct poll_table_entry
;
17 struct splice_pipe_desc
;
20 void (*__pollwait_sym
)(struct file
*filp
, wait_queue_head_t
*wait_address
,
23 struct poll_table_entry
*(*poll_get_entry_sym
)(struct poll_wqueues
*p
);
25 void wrapper_pollwait_exclusive(struct file
*filp
,
26 wait_queue_head_t
*wait_address
,
30 struct poll_wqueues
*pwq
= container_of(p
, struct poll_wqueues
, pt
);
31 struct poll_table_entry
*entry
;
33 if (!poll_get_entry_sym
)
34 poll_get_entry_sym
= (void *) kallsyms_lookup_name("poll_get_entry");
35 if (!poll_get_entry_sym
) {
36 printk(KERN_WARNING
"LTTng: poll_get_entry_sym symbol lookup failed.\n");
39 entry
= poll_get_entry_sym(pwq
);
42 __pollwait_sym
= (void *) kallsyms_lookup_name("__pollwait");
43 if (!__pollwait_sym
) {
44 printk(KERN_WARNING
"LTTng: __pollwait symbol lookup failed.\n");
47 return __pollwait_sym(filp
, wait_address
, p
);
52 #include <linux/poll.h>
54 ssize_t
wrapper_pollwait_exclusive(struct file
*filp
,
55 wait_queue_head_t
*wait_address
,
58 return pollwait_exclusive(filp
, wait_address
, p
);
This page took 0.029775 seconds and 4 git commands to generate.