diff options
| author | Ingo Molnar <mingo@kernel.org> | 2022-09-21 09:58:02 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2022-09-21 09:58:02 +0200 | 
| commit | 74656d03ac36fabb16b9df5221cf398ee3a9ca08 (patch) | |
| tree | 0600e619ac817e2c016c148810814f55280316cc /include/linux/pipe_fs_i.h | |
| parent | 0d97db026509c1a13f732b22670ab1f0ac9d8d87 (diff) | |
| parent | 521a547ced6477c54b4b0cc206000406c221b4d6 (diff) | |
Merge tag 'v6.0-rc6' into locking/core, to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/linux/pipe_fs_i.h')
| -rw-r--r-- | include/linux/pipe_fs_i.h | 29 | 
1 files changed, 9 insertions, 20 deletions
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index cb0fd633a610..6cb65df3e3ba 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h @@ -157,26 +157,6 @@ static inline bool pipe_full(unsigned int head, unsigned int tail,  }  /** - * pipe_space_for_user - Return number of slots available to userspace - * @head: The pipe ring head pointer - * @tail: The pipe ring tail pointer - * @pipe: The pipe info structure - */ -static inline unsigned int pipe_space_for_user(unsigned int head, unsigned int tail, -					       struct pipe_inode_info *pipe) -{ -	unsigned int p_occupancy, p_space; - -	p_occupancy = pipe_occupancy(head, tail); -	if (p_occupancy >= pipe->max_usage) -		return 0; -	p_space = pipe->ring_size - p_occupancy; -	if (p_space > pipe->max_usage) -		p_space = pipe->max_usage; -	return p_space; -} - -/**   * pipe_buf_get - get a reference to a pipe_buffer   * @pipe:	the pipe that the buffer belongs to   * @buf:	the buffer to get a reference to @@ -229,6 +209,15 @@ static inline bool pipe_buf_try_steal(struct pipe_inode_info *pipe,  	return buf->ops->try_steal(pipe, buf);  } +static inline void pipe_discard_from(struct pipe_inode_info *pipe, +		unsigned int old_head) +{ +	unsigned int mask = pipe->ring_size - 1; + +	while (pipe->head > old_head) +		pipe_buf_release(pipe, &pipe->bufs[--pipe->head & mask]); +} +  /* 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  | 
