| /**************************************************************************** |
| **************************************************************************** |
| *** |
| *** This header was automatically generated from a Linux kernel header |
| *** of the same name, to make information necessary for userspace to |
| *** call into the kernel available to libc. It contains only constants, |
| *** structures, and macros generated from the original header, and thus, |
| *** contains no copyrightable information. |
| *** |
| **************************************************************************** |
| ****************************************************************************/ |
| #ifndef _LINUX_RELAY_H |
| #define _LINUX_RELAY_H |
| |
| #include <linux/types.h> |
| #include <linux/sched.h> |
| #include <linux/wait.h> |
| #include <linux/list.h> |
| #include <linux/fs.h> |
| #include <linux/poll.h> |
| #include <linux/kref.h> |
| |
| #define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE) |
| |
| #define RELAYFS_CHANNEL_VERSION 6 |
| |
| struct rchan_buf |
| { |
| void *start; |
| void *data; |
| size_t offset; |
| size_t subbufs_produced; |
| size_t subbufs_consumed; |
| struct rchan *chan; |
| wait_queue_head_t read_wait; |
| struct work_struct wake_readers; |
| struct dentry *dentry; |
| struct kref kref; |
| struct page **page_array; |
| unsigned int page_count; |
| unsigned int finalized; |
| size_t *padding; |
| size_t prev_padding; |
| size_t bytes_consumed; |
| unsigned int cpu; |
| } ____cacheline_aligned; |
| |
| struct rchan |
| { |
| u32 version; |
| size_t subbuf_size; |
| size_t n_subbufs; |
| size_t alloc_size; |
| struct rchan_callbacks *cb; |
| struct kref kref; |
| void *private_data; |
| size_t last_toobig; |
| struct rchan_buf *buf[NR_CPUS]; |
| }; |
| |
| struct rchan_callbacks |
| { |
| |
| int (*subbuf_start) (struct rchan_buf *buf, |
| void *subbuf, |
| void *prev_subbuf, |
| size_t prev_padding); |
| |
| void (*buf_mapped)(struct rchan_buf *buf, |
| struct file *filp); |
| |
| void (*buf_unmapped)(struct rchan_buf *buf, |
| struct file *filp); |
| |
| struct dentry *(*create_buf_file)(const char *filename, |
| struct dentry *parent, |
| int mode, |
| struct rchan_buf *buf, |
| int *is_global); |
| |
| int (*remove_buf_file)(struct dentry *dentry); |
| }; |
| |
| struct rchan *relay_open(const char *base_filename, |
| struct dentry *parent, |
| size_t subbuf_size, |
| size_t n_subbufs, |
| struct rchan_callbacks *cb); |
| |
| #endif |
| |