* Per-pipe data structure. * Two of these are linked together to produce bi-directional pipes. */
| 106 | * Two of these are linked together to produce bi-directional pipes. |
| 107 | */ |
| 108 | struct pipe { |
| 109 | struct pipebuf pipe_buffer; /* data storage */ |
| 110 | struct pipemapping pipe_pages; /* wired pages for direct I/O */ |
| 111 | struct selinfo pipe_sel; /* for compat with select */ |
| 112 | struct timespec pipe_atime; /* time of last access */ |
| 113 | struct timespec pipe_mtime; /* time of last modify */ |
| 114 | struct timespec pipe_ctime; /* time of status change */ |
| 115 | struct sigio *pipe_sigio; /* information for async I/O */ |
| 116 | struct pipe *pipe_peer; /* link with other direction */ |
| 117 | struct pipepair *pipe_pair; /* container structure pointer */ |
| 118 | u_short pipe_state; /* pipe status info */ |
| 119 | u_char pipe_type; /* pipe type info */ |
| 120 | u_char pipe_present; /* still present? */ |
| 121 | int pipe_waiters; /* pipelock waiters */ |
| 122 | int pipe_busy; /* busy flag, mostly to handle rundown sanely */ |
| 123 | int pipe_wgen; /* writer generation for named pipe */ |
| 124 | ino_t pipe_ino; /* fake inode for stat(2) */ |
| 125 | }; |
| 126 | |
| 127 | /* |
| 128 | * Values for the pipe_present. |
no outgoing calls