Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

Name:io_recvmsg

Proto:static int io_recvmsg(struct io_kiocb *req, struct io_kiocb **nxt, bool force_nonblock)

Type:int

Parameter:

TypeParameterName
struct io_kiocb *req
struct io_kiocb **nxt
boolforce_nonblock
2286  struct io_async_msghdr * kmsg = NULL
2290  If Value for the false possibility is greater at compile time(flags & _context is polled ) Then Return -EINVAL
2293  sock = sock_from_file(file, & ret)
2294  If sock Then
2299  If io Then
2300  kmsg = msg
2303  If Not iov Then iov = fast_iov
2305  iov = iov
2306  Else
2307  sr = sr_msg
2309  kmsg = msg
2312  iov = fast_iov
2316  If ret Then Return ret
2320  flags = msg_flags
2321  If flags & Nonblocking io Then flags |= must not punt to workers
2323  Else if force_nonblock Then flags |= Nonblocking io
2326  ret = __sys_recvmsg_sock(sock, & msg, msg, uaddr, flags)
2328  If force_nonblock && ret == -EAGAIN Then
2329  If io Then Return -EAGAIN
2331  If io_alloc_async_ctx(req) Then
2332  If kmsg && iov != fast_iov Then kfree(iov)
2334  Return -ENOMEM
2336  memcpy( & msg, & msg, size of msg )
2337  Return -EAGAIN
2339  If ret == -These should never be seen by user programs. To return one of ERESTART** codes, signal_pending() MUST be set. Note that ptrace can observe these* at syscall exit tracing, but they will never be left for the debugged user* process to see. Then ret = -EINTR
2343  If kmsg && iov != fast_iov Then kfree(iov)
2345  io_cqring_add_event(req, ret)
2346  If ret < 0 Then req_set_fail_links(req)
2348  Drop reference to request, return next in chain (if there is one) if this* was the last reference to this request.
2349  Return 0
Caller
NameDescribe
io_issue_sqe