Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\pipe.c Create Date:2022-07-28 20:04:29
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:alloc_pipe_info

Proto:struct pipe_inode_info *alloc_pipe_info(void)

Type:struct pipe_inode_info

Parameter:Nothing

766  pipe_bufs = PIPE_DEF_BUFFERS
767  user = get_current_user - Get the current task's user_struct* Get the user record of the current task, pinning it so that it can't go* away.()
769  max_size = READ_ONCE(The max size that a non-root user is allowed to grow the pipe. Can* be set by root in /proc/sys/fs/pipe-max-size)
771  pipe = kzalloc - allocate memory. The memory is set to zero.*@size: how many bytes of memory are required.*@flags: the type of memory to allocate (see kmalloc).
772  If (pipe == NULL) Then Go to out_free_uid
775  If pipe_bufs * PAGE_SIZE > max_size && Not Check operation authority Then pipe_bufs = max_size >> PAGE_SHIFT determines the page size
778  user_bufs = account_pipe_buffers(user, 0, pipe_bufs)
780  If too_many_pipe_buffers_soft(user_bufs) && is_unprivileged_user() Then
781  user_bufs = account_pipe_buffers(user, pipe_bufs, 1)
782  pipe_bufs = 1
785  If too_many_pipe_buffers_hard(user_bufs) && is_unprivileged_user() Then Go to out_revert_acct
788  bufs = kcalloc - allocate memory for an array. The memory is set to zero.*@n: number of elements.*@size: element size.*@flags: the type of memory to allocate (see kmalloc).
791  If bufs Then
792  init_waitqueue_head( & wait)
793  r_counter = w_counter = 1
794  max_usage = pipe_bufs
795  ring_size = pipe_bufs
796  user = user
797  mutex_init - initialize the mutex*@mutex: the mutex to be initialized* Initialize the mutex to unlocked state.* It is not allowed to initialize an already locked mutex.( & mutex)
798  Return pipe
801  out_revert_acct :
802  account_pipe_buffers(user, pipe_bufs, 0)
803  kfree(pipe)
804  out_free_uid :
805  free_uid(user)
806  Return NULL
Caller
NameDescribe
get_pipe_inode
fifo_open
splice_direct_to_actorsplice_direct_to_actor - splices data directly between two non-pipes*@in: file to splice from*@sd: actor information on where to splice to*@actor: handles the data splicing* Description:* This is a special case helper to splice directly between two