summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar dmaas 2002-12-16 05:11:45 +0000
committerGravatar dmaas 2002-12-16 05:11:45 +0000
commite01decd75c1455c9fb018494d73ee77928f12ba6 (patch)
tree00a3937aac6ece03bddec9c76ea7a098b2f24062
parentfix cplusplus extern C block (diff)
rawiso updates:
- changed return type of rawiso xmit/recv handlers from int to enum raw1394_iso_disposition - added an ioctl (RAW1394_ISO_QUEUE_ACTIVITY) to force an ISO_ACTIVITY event into the queue. This is needed for handling RAW1394_ISO_DEFER, to kick us out of the next read() instead of sleeping forever. - removed references to "8-byte" isochronous header - this is an OHCI-specific implementation detail git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@95 53a565d1-3bb7-0310-b661-cf11e63c67ab
-rw-r--r--src/iso.c10
-rw-r--r--src/kernel-raw1394.h1
-rw-r--r--src/raw1394.h32
3 files changed, 25 insertions, 18 deletions
diff --git a/src/iso.c b/src/iso.c
index 007d72c..36d5d25 100644
--- a/src/iso.c
+++ b/src/iso.c
@@ -160,7 +160,7 @@ static int do_iso_init(raw1394handle_t handle,
* raw1394_iso_xmit_init - initialize isochronous transmission
* @handler: handler function for queueing packets
* @buf_packets: number of isochronous packets to buffer
- * @max_packet_size: largest packet you need to handle, in bytes (not including the 8-byte isochronous header)
+ * @max_packet_size: largest packet you need to handle, in bytes (not including the isochronous header)
* @channel: isochronous channel on which to transmit
* @speed: speed at which to transmit
* @irq_interval: maximum latency of wake-ups, in packets (-1 if you don't care)
@@ -186,7 +186,7 @@ int raw1394_iso_xmit_init(raw1394handle_t handle,
* raw1394_iso_recv_init - initialize isochronous reception
* @handler: handler function for receiving packets
* @buf_packets: number of isochronous packets to buffer
- * @max_packet_size: largest packet you need to handle, in bytes (not including the 8-byte isochronous header)
+ * @max_packet_size: largest packet you need to handle, in bytes (not including the isochronous header)
* @channel: isochronous channel to receive
* @speed: speed at which to receive
* @irq_interval: maximum latency of wake-ups, in packets (-1 if you don't care)
@@ -275,6 +275,9 @@ static int _raw1394_iso_xmit_queue_packets(raw1394handle_t handle)
packets_done++;
if(disp == RAW1394_ISO_DEFER) {
+ /* queue an event so that we don't hang in the next read() */
+ if(ioctl(handle->fd, RAW1394_ISO_QUEUE_ACTIVITY, 0))
+ return -1;
break;
} else if(disp == RAW1394_ISO_ERROR) {
retval = -1;
@@ -377,6 +380,9 @@ static int _raw1394_iso_recv_packets(raw1394handle_t handle)
packets_done++;
if(disp == RAW1394_ISO_DEFER) {
+ /* queue an event so that we don't hang in the next read() */
+ if(ioctl(handle->fd, RAW1394_ISO_QUEUE_ACTIVITY, 0))
+ return -1;
break;
} else if(disp == RAW1394_ISO_ERROR) {
retval = -1;
diff --git a/src/kernel-raw1394.h b/src/kernel-raw1394.h
index c6e5c59..24d00c9 100644
--- a/src/kernel-raw1394.h
+++ b/src/kernel-raw1394.h
@@ -130,6 +130,7 @@ typedef struct arm_request_response {
#define RAW1394_ISO_GET_STATUS 5 /* arg: raw1394_iso_status* */
#define RAW1394_ISO_PRODUCE_CONSUME 6 /* arg: int, # of packets */
#define RAW1394_ISO_SHUTDOWN 7
+#define RAW1394_ISO_QUEUE_ACTIVITY 9
/* per-packet metadata embedded in the ringbuffer */
/* must be identical to hpsb_iso_packet_info in iso.h! */
diff --git a/src/raw1394.h b/src/raw1394.h
index 42dfe21..8364301 100644
--- a/src/raw1394.h
+++ b/src/raw1394.h
@@ -72,23 +72,23 @@ enum raw1394_iso_disposition {
extern "C" {
#endif
-typedef int (*raw1394_iso_xmit_handler_t)(raw1394handle_t,
- unsigned char *data,
- unsigned int *len,
- unsigned char *tag,
- unsigned char *sy,
- unsigned int cycle,
- unsigned int dropped);
-
-typedef int (*raw1394_iso_recv_handler_t)(raw1394handle_t,
- unsigned char *data,
- unsigned int len,
- unsigned char channel,
- unsigned char tag,
- unsigned char sy,
- unsigned int cycle,
- unsigned int dropped);
+typedef enum raw1394_iso_disposition (*raw1394_iso_xmit_handler_t)(raw1394handle_t,
+ unsigned char *data,
+ unsigned int *len,
+ unsigned char *tag,
+ unsigned char *sy,
+ unsigned int cycle,
+ unsigned int dropped);
+typedef enum raw1394_iso_disposition (*raw1394_iso_recv_handler_t)(raw1394handle_t,
+ unsigned char *data,
+ unsigned int len,
+ unsigned char channel,
+ unsigned char tag,
+ unsigned char sy,
+ unsigned int cycle,
+ unsigned int dropped);
+
int raw1394_iso_xmit_init(raw1394handle_t handle,
raw1394_iso_xmit_handler_t handler,
unsigned int buf_packets,
eb2365dc75bd544972b8cdb7992fd?s=13&d=retro' width='13' height='13' alt='Gravatar' /> aeb 1-17/+18 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@51 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-19Fix building errors.c.Gravatar aeb 2-0/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@50 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-19First implementation of new error reporting API.Gravatar aeb 7-28/+134 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@49 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-04Fix misplaced device file in Debian installation.Gravatar aeb 3-3/+10 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@48 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-12-12Debian scripts use makedev (>=2.3.1-49) in postinst by default now.Gravatar aeb 7-30/+104 Postinst script using mknod added as alternative. Revision bumped up to 0.8.1. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@47 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-25Fix postinst ldconfig.Gravatar aeb 2-11/+11 Fix device file creation. Install NEWS and README as documentation in the dev package. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@46 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-25Add some information about return values.Gravatar aeb 1-3/+29 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@45 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-24Bump up version numbers for release.Gravatar aeb 2-3/+11 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@44 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-24Added libraw1394.postinst.in to list of distributed files.Gravatar aeb 3-3/+35 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@43 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-23Add ldconfig in deb postinst for Debian policy conformance.Gravatar aeb 2-2/+17 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@42 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-23Removed acconfig.h, which wasn't needed for some time.Gravatar aeb 1-13/+0 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@41 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-22Added ieee1394.h header.Gravatar aeb 3-1/+38 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@40 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-13Fix raw1394_start_iso_write() which uses wrong variable.Gravatar aeb 1-1/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@39 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-10Work around compiler warnings for int/ptr casts.Gravatar aeb 6-10/+20 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@38 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-10Added control files for Debian packages.Gravatar aeb 6-8/+106 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@37 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-01Added missing prototypes for iso send functions.Gravatar aeb 1-0/+7 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@36 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-08Added raw1394_get_irm_id().Gravatar aeb 7-7/+39 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@35 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-06Added support for isochronous sending.Gravatar aeb 3-0/+35 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@34 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-07-05Added raw1394_reset_bus() call.Gravatar aeb 4-0/+23 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@33 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-22- Set library version info in configure.in, use in src/Makefile.am.Gravatar aeb 4-2/+16 - Enable compiler warnings. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@32 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-15Update libtool version number.Gravatar aeb 2-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@31 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-14Added copyright headers.Gravatar aeb 6-0/+54 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@30 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-11Added explicit AC_PROG_INSTALL call.Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@29 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-09Fix size of error field.Gravatar aeb 1-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@28 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-02Modified support for 32/64 bit environments, control struct fields have ↵Gravatar aeb 7-43/+28 fixed size now. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@27 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-05-28Added support for environments with 64 bit kernel and 32 bit userland.Gravatar aeb 8-7/+45 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@26 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-27Fixed missing setting of ext code in raw1394_start_lock()Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@25 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-15Fixed lock transaction to actually return response value.Gravatar aeb 3-5/+11 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@24 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-12Add userdata functions as news.Gravatar aeb 1-0/+4 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@23 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-05Add userdata functions.Gravatar aeb 3-0/+18 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@22 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Bump version number to 0.6.Gravatar aeb 3-5/+6 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@21 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention byte order change.Gravatar aeb 1-0/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@20 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention SourceForge home.Gravatar aeb 1-1/+5 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@19 53a565d1-3bb7-0310-b661-cf11e63c67ab