1STRUCT PIPE_INODE_IN(9) pipes API STRUCT PIPE_INODE_IN(9)
2
3
4
6 struct_pipe_inode_info - a linux kernel pipe
7
9 struct pipe_inode_info {
10 struct mutex mutex;
11 wait_queue_head_t wait;
12 unsigned int nrbufs;
13 unsigned int curbuf;
14 unsigned int buffers;
15 unsigned int readers;
16 unsigned int writers;
17 unsigned int files;
18 unsigned int waiting_writers;
19 unsigned int r_counter;
20 unsigned int w_counter;
21 struct page * tmp_page;
22 struct fasync_struct * fasync_readers;
23 struct fasync_struct * fasync_writers;
24 struct pipe_buffer * bufs;
25 };
26
28 mutex
29 mutex protecting the whole thing
30
31 wait
32 reader/writer wait point in case of empty/full pipe
33
34 nrbufs
35 the number of non-empty pipe buffers in this pipe
36
37 curbuf
38 the current pipe buffer entry
39
40 buffers
41 total number of buffers (should be a power of 2)
42
43 readers
44 number of current readers of this pipe
45
46 writers
47 number of current writers of this pipe
48
49 files
50 number of struct file refering this pipe (protected by ->i_lock)
51
52 waiting_writers
53 number of writers blocked waiting for room
54
55 r_counter
56 reader counter
57
58 w_counter
59 writer counter
60
61 tmp_page
62 cached released page
63
64 fasync_readers
65 reader side fasync
66
67 fasync_writers
68 writer side fasync
69
70 bufs
71 the circular array of pipe buffers
72
74Kernel Hackers Manual 3.10 June 2019 STRUCT PIPE_INODE_IN(9)