Explorar el Código

Missing from previous checkin.

This is the core portion of the async I/O interface.
tags/v0.9.3
Michael Brown hace 18 años
padre
commit
cf96d325d8
Se han modificado 1 ficheros con 52 adiciones y 0 borrados
  1. 52
    0
      src/core/async.c

+ 52
- 0
src/core/async.c Ver fichero

@@ -0,0 +1,52 @@
1
+/*
2
+ * Copyright (C) 2006 Michael Brown <mbrown@fensystems.co.uk>.
3
+ *
4
+ * This program is free software; you can redistribute it and/or
5
+ * modify it under the terms of the GNU General Public License as
6
+ * published by the Free Software Foundation; either version 2 of the
7
+ * License, or any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful, but
10
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
+ * General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with this program; if not, write to the Free Software
16
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
+ */
18
+
19
+#include <errno.h>
20
+#include <gpxe/process.h>
21
+#include <gpxe/async.h>
22
+
23
+/** @file
24
+ *
25
+ * Asynchronous operations
26
+ *
27
+ */
28
+
29
+/**
30
+ * Wait for asynchronous operation to complete
31
+ *
32
+ * @v aop		Asynchronous operation
33
+ * @ret rc		Return status code
34
+ *
35
+ * Blocks until the specified asynchronous operation has completed.
36
+ * The return status is the return status of the asynchronous
37
+ * operation itself.
38
+ */
39
+int async_wait ( struct async_operation *aop ) {
40
+	int rc;
41
+
42
+	/* Wait for operation to complete */
43
+	do {
44
+		step();
45
+		rc = async_status ( aop );
46
+	} while ( rc == -EINPROGRESS );
47
+	
48
+	/* Prepare for next call to async_wait() */
49
+	async_set_status ( aop, -EINPROGRESS );
50
+
51
+	return rc;
52
+}

Loading…
Cancelar
Guardar