11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: dqueue.h,v 1.1.2.2 2001/02/08 12:25:43 armin Exp $ */
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _DIVA_USER_MODE_IDI_DATA_QUEUE_H__
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _DIVA_USER_MODE_IDI_DATA_QUEUE_H__
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIVA_UM_IDI_MAX_MSGS 64
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _diva_um_idi_data_queue {
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int segments;
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int max_length;
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int read;
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int write;
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int count;
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int segment_pending;
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *data[DIVA_UM_IDI_MAX_MSGS];
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int length[DIVA_UM_IDI_MAX_MSGS];
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} diva_um_idi_data_queue_t;
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
19475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint diva_data_q_init(diva_um_idi_data_queue_t *q,
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		     int max_length, int max_segments);
21475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint diva_data_q_finit(diva_um_idi_data_queue_t *q);
22475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint diva_data_q_get_max_length(const diva_um_idi_data_queue_t *q);
23475be4d85a274d0961593db41cf85689db1d583cJoe Perchesvoid *diva_data_q_get_segment4write(diva_um_idi_data_queue_t *q);
24475be4d85a274d0961593db41cf85689db1d583cJoe Perchesvoid diva_data_q_ack_segment4write(diva_um_idi_data_queue_t *q,
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds				   int length);
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconst void *diva_data_q_get_segment4read(const diva_um_idi_data_queue_t *
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					 q);
28475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint diva_data_q_get_segment_length(const diva_um_idi_data_queue_t *q);
29475be4d85a274d0961593db41cf85689db1d583cJoe Perchesvoid diva_data_q_ack_segment4read(diva_um_idi_data_queue_t *q);
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
32