Introduce a simple struct to store an array of file descriptors. This is loosely based on how virStorageSourceFDTuple is implemented. This will be used later on to store FDs for FD based live migrations of qemu domains.
Signed-off-by: Tejus GK <[email protected]> --- src/qemu/qemu_fd.c | 23 +++++++++++++++++++++++ src/qemu/qemu_fd.h | 14 ++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c index ef0a8d8127..2bfaac500c 100644 --- a/src/qemu/qemu_fd.c +++ b/src/qemu/qemu_fd.c @@ -509,3 +509,26 @@ qemuFDPassDirectGetPath(qemuFDPassDirect *fdpass) return fdpass->name; } + + +void +qemuFDTupleFree(qemuFDTuple *tuple) +{ + size_t i; + + if (!tuple) + return; + + for (i = 0; i < tuple->nfds; i++) + VIR_FORCE_CLOSE(tuple->fds[i]); + + g_free(tuple->fds); + g_free(tuple); +} + + +qemuFDTuple * +qemuFDTupleNew(void) +{ + return g_new0(qemuFDTuple, 1); +} diff --git a/src/qemu/qemu_fd.h b/src/qemu/qemu_fd.h index d873e110a8..396ff946cb 100644 --- a/src/qemu/qemu_fd.h +++ b/src/qemu/qemu_fd.h @@ -83,3 +83,17 @@ qemuFDPassDirectTransferMonitorRollback(qemuFDPassDirect *fdpass, qemuMonitor *mon); const char * qemuFDPassDirectGetPath(qemuFDPassDirect *fdpass); + + +typedef struct _qemuFDTuple qemuFDTuple; +struct _qemuFDTuple { + int *fds; + size_t nfds; +}; + +void +qemuFDTupleFree(qemuFDTuple *tuple); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuFDTuple, qemuFDTupleFree); + +qemuFDTuple * +qemuFDTupleNew(void); -- 2.43.7
