函数逻辑报告 |
Source Code:fs\eventpoll.c |
Create Date:2022-07-29 10:50:58 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:Must be called with "mtx" held.
函数原型:static int ep_insert(struct eventpoll *ep, const struct epoll_event *event, struct file *tfile, int fd, int full_check)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct eventpoll * | ep | |
| const struct epoll_event * | event | |
| struct file * | tfile | |
| int | fd | |
| int | full_check |
| 1478 | pwake等于0 |
| 1484 | lockdep_assert_irqs_enabled() |
| 1487 | 如果此条件成立可能性小(为编译器优化)(user_watches >= Maximum number of epoll watched descriptors, per user )则返回:负ENOSPC |
| 1493 | 初始化链表头 |
| 1494 | 初始化链表头 |
| 1495 | 初始化链表头 |
| 1496 | The "container" of this item 等于ep |
| 1500 | Works together "struct eventpoll"->ovflist in keeping the* single linked chain of items.等于EP_UNACTIVE_PTR |
| 1502 | error等于ep_create_wakeup_source(epi) |
| 1503 | 如果error则转到:error_create_wakeup_source |
| 1505 | 否则 |
| 1511 | init_poll_funcptr( & pt, ep_ptable_queue_proc) |
| 1520 | revents等于Differs from ep_eventpoll_poll() in that internal callers already have* the ep->mtx so we need to start from depth=1, such that mutex_lock_nested()* is correctly annotated. |
| 1532 | 加自旋锁 |
| 1533 | 添加RCU链表项 |
| 1534 | 自旋锁解锁 |
| 1540 | ep_rbtree_insert(ep, epi) |
| 1544 | 如果full_check且verse_path_check - The tfile_check_list is list of file *, which have* links that are proposed to be newly added则转到:error_remove_epi |
| 1551 | ep_set_busy_poll_napi_id(epi) |
| 1555 | 添加链表项 |
| 1570 | 如果pwake则ep_poll_safewake( & Wait queue used by file->poll() ) |
| 1573 | 返回:0 |
| 1575 | error_remove_epi : |
| 1576 | 加自旋锁 |
| 1577 | 删除不需要重新初始化的列表项 |
| 1578 | 自旋锁解锁 |
| 1580 | rb_erase_cached( & RB tree node links this structure to the eventpoll RB tree , & RB tree root used to store monitored fd structs ) |
| 1582 | error_unregister : |
| 1598 | error_create_wakeup_source : |
| 1601 | 返回:error |
| 名称 | 描述 |
|---|---|
| SYSCALL_DEFINE4 | The following function implements the controller interface for* the eventpoll file that enables the insertion/removal/change of* file descriptors inside the interest set. |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |