Wait for threads to finish before returning.
Prevents the thread struct from being deallocated
before the thread has finished.
Bug: 35152606
Test: Transfer files in both directions, verify behavior when
interrupted
Change-Id: Ic247072234977709711366636e6a39031fbc125a
diff --git a/media/mtp/AsyncIO.h b/media/mtp/AsyncIO.h
index f7515a2..ed80828 100644
--- a/media/mtp/AsyncIO.h
+++ b/media/mtp/AsyncIO.h
@@ -48,6 +48,8 @@
std::thread thread;
ssize_t ret;
int error;
+
+ ~aiocb();
};
// Submit a request for IO to be completed
@@ -58,9 +60,13 @@
// Suspend current thread until given IO is complete, at which point
// its return value and any errors can be accessed
+// All submitted requests must have a corresponding suspend.
+// aiocb->aio_buf must refer to valid memory until after the suspend call
int aio_suspend(struct aiocb *[], int, const struct timespec *);
int aio_error(const struct aiocb *);
ssize_t aio_return(struct aiocb *);
+
+// (Currently unimplemented)
int aio_cancel(int, struct aiocb *);
// Initialize a threadpool to perform IO. Only one pool can be