Add a helper to walk all CPR fd's and run a callback for each. Signed-off-by: Steve Sistare <steven.sist...@oracle.com> --- include/migration/cpr.h | 3 +++ migration/cpr.c | 13 +++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/include/migration/cpr.h b/include/migration/cpr.h index baff57f..f4fc5ca 100644 --- a/include/migration/cpr.h +++ b/include/migration/cpr.h @@ -35,6 +35,9 @@ void cpr_resave_fd(const char *name, int id, int fd); int cpr_open_fd(const char *path, int flags, const char *name, int id, Error **errp); +typedef bool (*cpr_walk_fd_cb)(int fd); +bool cpr_walk_fd(cpr_walk_fd_cb cb); + MigMode cpr_get_incoming_mode(void); void cpr_set_incoming_mode(MigMode mode); bool cpr_is_incoming(void); diff --git a/migration/cpr.c b/migration/cpr.c index 6d01b8c..021bd6a 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -134,6 +134,19 @@ int cpr_open_fd(const char *path, int flags, const char *name, int id, return fd; } +bool cpr_walk_fd(cpr_walk_fd_cb cb) +{ + CprFd *elem; + + QLIST_FOREACH(elem, &cpr_state.fds, next) { + g_assert(elem->fd >= 0); + if (!cb(elem->fd)) { + return false; + } + } + return true; +} + /*************************************************************************/ static const VMStateDescription vmstate_cpr_state = { .name = CPR_STATE, -- 1.8.3.1