📄 pipe_fs_i.h
字号:
#ifndef _LINUX_PIPE_FS_I_H#define _LINUX_PIPE_FS_I_H#define PIPEFS_MAGIC 0x50495045#define PIPE_BUFFERS (16)struct pipe_buffer { struct page *page; unsigned int offset, len; struct pipe_buf_operations *ops;};struct pipe_buf_operations { int can_merge; void * (*map)(struct file *, struct pipe_inode_info *, struct pipe_buffer *); void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *); void (*release)(struct pipe_inode_info *, struct pipe_buffer *);};struct pipe_inode_info { wait_queue_head_t wait; unsigned int nrbufs, curbuf; struct pipe_buffer bufs[PIPE_BUFFERS]; struct page *tmp_page; unsigned int start; unsigned int readers; unsigned int writers; unsigned int waiting_writers; unsigned int r_counter; unsigned int w_counter; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers;};/* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual memory allocation, whereas PIPE_BUF makes atomicity guarantees. */#define PIPE_SIZE PAGE_SIZE#define PIPE_SEM(inode) (&(inode).i_sem)#define PIPE_WAIT(inode) (&(inode).i_pipe->wait)#define PIPE_BASE(inode) ((inode).i_pipe->base)#define PIPE_START(inode) ((inode).i_pipe->start)#define PIPE_LEN(inode) ((inode).i_pipe->len)#define PIPE_READERS(inode) ((inode).i_pipe->readers)#define PIPE_WRITERS(inode) ((inode).i_pipe->writers)#define PIPE_WAITING_WRITERS(inode) ((inode).i_pipe->waiting_writers)#define PIPE_RCOUNTER(inode) ((inode).i_pipe->r_counter)#define PIPE_WCOUNTER(inode) ((inode).i_pipe->w_counter)#define PIPE_FASYNC_READERS(inode) (&((inode).i_pipe->fasync_readers))#define PIPE_FASYNC_WRITERS(inode) (&((inode).i_pipe->fasync_writers))#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -