函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\io_uring.c Create Date:2022-07-29 10:54:53
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:io_poll_add

函数原型:static int io_poll_add(struct io_kiocb *req, struct io_kiocb **nxt)

返回类型:int

参数:

类型参数名称
struct io_kiocb *req
struct io_kiocb **nxt
2740  poll等于poll
2741  ctx等于ctx
2743  bool cancel = false
2746  INIT_IO_WORK( & work, io_poll_complete_work)
2747  INIT_HLIST_NODE( & hash_node)
2749  head = NULL
2750  done = false
2751  canceled = false
2753  _qproc等于io_poll_queue_proc
2754  _key等于events
2755  req等于req
2756  error等于负EINVAL
2759  初始化链表头
2760  init_waitqueue_func_entry( & wait, io_poll_wake)
2761  private等于poll
2763  初始化链表头
2765  mask等于vfs_poll(file, & pt)按位与events
2767  spin_lock_irq( & completion_lock)
2768  如果此条件成立可能性大(为编译器优化)(head)则
2769  加自旋锁
2771  如果errorcancel = true
2773  error等于0
2774  mask等于0
2776  如果maskerror删除链表项并重新初始化
2778  否则如果cancelWRITE_ONCE(canceled, true)
2780  否则如果非doneio_poll_req_insert(req)
2782  自旋锁解锁
2784  如果mask
2785  error等于0
2786  io_poll_complete(req, mask, 0)
2788  spin_unlock_irq( & completion_lock)
2790  如果mask
2791  io_cqring_ev_posted(ctx)
2792  Drop reference to request, return next in chain (if there is one) if this* was the last reference to this request.
2794  返回:error
调用者
名称描述
io_issue_sqe