diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 6094b2e9058b0cb6a186159fa422e494f1d36a14..91a8c435e825c568dcf84ceb8faf0a0872d5bcae 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -1786,10 +1786,16 @@ static int ep_send_events(struct eventpoll *ep, { struct ep_send_events_data esed; + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_send_events start\n"); + esed.maxevents = maxevents; esed.events = events; ep_scan_ready_list(ep, ep_send_events_proc, &esed, 0, false); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_send_events end\n"); + return esed.res; } @@ -1831,6 +1837,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, lockdep_assert_irqs_enabled(); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll start timeout:%ld\n", timeout); if (timeout > 0) { struct timespec64 end_time = ep_set_mstimeout(timeout); @@ -1870,6 +1878,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, */ ep_reset_busy_poll_napi_id(ep); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll before loop\n"); do { /* * Internally init_wait() uses autoremove_wake_function(), @@ -1908,6 +1918,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, } write_unlock_irq(&ep->lock); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: before schedule_hrtimeout_range\n"); if (!eavail && !res) timed_out = !schedule_hrtimeout_range(to, slack, HRTIMER_MODE_ABS); @@ -1919,10 +1931,15 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, */ eavail = 1; } while (0); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll after loop\n"); __set_current_state(TASK_RUNNING); if (!list_empty_careful(&wait.entry)) { + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll in list_empty_careful\n"); + write_lock_irq(&ep->lock); /* * If the thread timed out and is not on the wait queue, it @@ -1937,6 +1954,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, } send_events: + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll after send_events\n"); if (fatal_signal_pending(current)) { /* * Always short-circuit for fatal signals to allow @@ -1955,6 +1974,8 @@ static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, !(res = ep_send_events(ep, events, maxevents)) && !timed_out) goto fetch_events; + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: ep_poll end\n"); return res; } @@ -2305,6 +2326,8 @@ static int do_epoll_wait(int epfd, struct epoll_event __user *events, struct fd f; struct eventpoll *ep; + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: do_epoll_wait start\n"); /* The maximum number of event must be greater than zero */ if (maxevents <= 0 || maxevents > EP_MAX_EVENTS) return -EINVAL; @@ -2333,7 +2356,11 @@ static int do_epoll_wait(int epfd, struct epoll_event __user *events, ep = f.file->private_data; /* Time to fish for events ... */ + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: before do_epoll_wait\n"); error = ep_poll(ep, events, maxevents, timeout); + if (strncmp(current->comm, "nStackXDFinder", 14) == 0) + pr_err("epollwait: do_epoll_wait end\n"); error_fput: fdput(f);