Add luo_session_preserve_fds() that can be used to preserve a batch of FDs using the LIVEUPDATE_SESSION_PRESERVE_FDS ioctl. Signed-off-by: Samiullah Khawaja --- .../liveupdate/lib/include/libliveupdate.h | 2 ++ .../selftests/liveupdate/lib/lu_utils.c | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tools/testing/selftests/liveupdate/lib/include/libliveupdate.h b/tools/testing/selftests/liveupdate/lib/include/libliveupdate.h index fa07fed08364..9aaf6f28ef56 100644 --- a/tools/testing/selftests/liveupdate/lib/include/libliveupdate.h +++ b/tools/testing/selftests/liveupdate/lib/include/libliveupdate.h @@ -29,6 +29,8 @@ int luo_get_session_name(int session_fd, char *name, size_t name_len); int luo_ensure_nofile_limit(long min_limit); int luo_session_preserve_fd(int session_fd, int fd, __u64 token); +int luo_session_preserve_fds(int session_fd, const int *fds, + const __u64 *tokens, __u32 nr, __u32 *failed_idx); int luo_session_retrieve_fd(int session_fd, __u64 token); int create_and_preserve_memfd(int session_fd, int token, const char *data); diff --git a/tools/testing/selftests/liveupdate/lib/lu_utils.c b/tools/testing/selftests/liveupdate/lib/lu_utils.c index 74d41115c281..1290f27ff004 100644 --- a/tools/testing/selftests/liveupdate/lib/lu_utils.c +++ b/tools/testing/selftests/liveupdate/lib/lu_utils.c @@ -93,6 +93,26 @@ int luo_session_preserve_fd(int session_fd, int fd, __u64 token) return 0; } +int luo_session_preserve_fds(int session_fd, const int *fds, + const __u64 *tokens, __u32 nr, __u32 *failed_idx) +{ + struct liveupdate_session_preserve_fds arg = { + .size = sizeof(arg), + .nr = nr, + .fds = (__u64)(uintptr_t)fds, + .tokens = (__u64)(uintptr_t)tokens, + }; + int ret = 0; + + if (ioctl(session_fd, LIVEUPDATE_SESSION_PRESERVE_FDS, &arg)) + ret = -errno; + + if (failed_idx) + *failed_idx = arg.out_failed_index; + + return ret; +} + int luo_session_retrieve_fd(int session_fd, __u64 token) { struct liveupdate_session_retrieve_fd arg = { -- 2.56.0.rc1.315.gc6ed9934b7-goog