summaryrefslogtreecommitdiffstats
path: root/src/readwrite.c
diff options
context:
space:
mode:
authorGravatar abombe 1999-12-29 22:24:32 +0000
committerGravatar abombe 1999-12-29 22:24:32 +0000
commit04f65912c3c04161daee655136d8d74d3763da16 (patch)
tree0e753f84101b58ff77c431bfcc7851f475b7db7c /src/readwrite.c
parent- Added FCP register addresses (diff)
Added isochronous I/O support
git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@4 53a565d1-3bb7-0310-b661-cf11e63c67ab
Diffstat (limited to 'src/readwrite.c')
-rw-r--r--src/readwrite.c29
1 files changed, 9 insertions, 20 deletions
diff --git a/src/readwrite.c b/src/readwrite.c
index 37e9f71..192b0a1 100644
--- a/src/readwrite.c
+++ b/src/readwrite.c
@@ -6,20 +6,6 @@
#include "raw1394_private.h"
-struct sync_cb_data {
- int done;
- int errcode;
-};
-
-static int sync_cb(struct raw1394_handle *unused,
- struct sync_cb_data *data, int error)
-{
- data->errcode = error;
- data->done = 1;
- return 0;
-}
-
-
int raw1394_start_read(struct raw1394_handle *handle, nodeid_t node,
nodeaddr_t addr, size_t length, quadlet_t *buffer,
unsigned long tag)
@@ -60,14 +46,17 @@ int raw1394_start_write(struct raw1394_handle *handle, nodeid_t node,
-#define SYNCFUNC_VARS \
- struct sync_cb_data sd = { 0, 0 }; \
- struct raw1394_reqhandle rh = { (req_callback_t)sync_cb, &sd }; \
+#define SYNCFUNC_VARS \
+ struct sync_cb_data sd = { 0, 0 }; \
+ struct raw1394_reqhandle rh = { (req_callback_t)_raw1394_sync_cb, \
+ &sd }; \
int err
-#define SYNCFUNC_BODY \
- if (err < 0) return err; \
- while (!sd.done) raw1394_loop_iterate(handle); \
+#define SYNCFUNC_BODY \
+ while (!sd.done) { \
+ if (err < 0) return err; \
+ err = raw1394_loop_iterate(handle); \
+ } \
return sd.errcode
int raw1394_read(struct raw1394_handle *handle, nodeid_t node, nodeaddr_t addr,