/**************************************************************************** **************************************************************************** *** *** 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 #include #include #include #include #include #include #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