From e04db024119bd146ce088bfeb80a42e8e0d13e01 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Mon, 27 Sep 2021 14:16:35 -0400 Subject: [PATCH] criu/files: Add function to return unused FD by pid Add a new global function to return unused FD based on the pid. This function can be used in situations where we need a FD that will not conflict with FDs used by target restore process, but struct pstree_item is not available (e.g plugins) Signed-off-by: David Yat Sin --- criu/files.c | 12 ++++++++++++ criu/include/files.h | 1 + 2 files changed, 13 insertions(+) diff --git a/criu/files.c b/criu/files.c index d317bc9ab..5a9268526 100644 --- a/criu/files.c +++ b/criu/files.c @@ -183,6 +183,18 @@ out: return fd; } +int find_unused_fd_pid(pid_t pid) +{ + struct pstree_item *task; + + task = pstree_item_by_virt(pid); + if (!task) { + pr_err("Invalid pid:%d\n", pid); + return -1; + } + return find_unused_fd(task, -1); +} + int set_fds_event(pid_t virt) { struct pstree_item *item; diff --git a/criu/include/files.h b/criu/include/files.h index aadc09f73..31ebb0ca0 100644 --- a/criu/include/files.h +++ b/criu/include/files.h @@ -195,4 +195,5 @@ extern int open_transport_socket(void); extern int set_fds_event(pid_t virt); extern void wait_fds_event(void); +int find_unused_fd_pid(pid_t pid); #endif /* __CR_FILES_H__ */