Lines Matching defs:ds
55 struct dtv_stream *ds = &sc->sc_stream;
64 mutex_enter(&ds->ds_ingress_lock);
66 if (SIMPLEQ_EMPTY(&ds->ds_ingress)) {
69 mutex_exit(&ds->ds_ingress_lock);
73 db = SIMPLEQ_FIRST(&ds->ds_ingress);
74 mutex_exit(&ds->ds_ingress_lock);
77 if (dtv_scatter_io_init(&ds->ds_data,
86 mutex_enter(&ds->ds_ingress_lock);
87 SIMPLEQ_REMOVE_HEAD(&ds->ds_ingress, db_entries);
88 mutex_exit(&ds->ds_ingress_lock);
89 mutex_enter(&ds->ds_egress_lock);
90 SIMPLEQ_INSERT_TAIL(&ds->ds_egress, db, db_entries);
91 selnotify(&ds->ds_sel, 0, 0);
92 cv_broadcast(&ds->ds_sample_cv);
93 mutex_exit(&ds->ds_egress_lock);
134 struct dtv_stream *ds = &sc->sc_stream;
142 error = dtv_scatter_buf_set_size(&ds->ds_data, bufsize);
146 oldnbufs = ds->ds_nbufs;
147 oldbuf = ds->ds_buf;
149 ds->ds_nbufs = nbufs;
151 ds->ds_buf = kmem_alloc(sizeof(struct dtv_buffer *) * nbufs,
154 ds->ds_buf = NULL;
159 ds->ds_buf[i] = oldbuf[i];
161 ds->ds_buf[i] = dtv_buffer_alloc();
171 ds->ds_buf[i]->db_offset = offset;
172 ds->ds_buf[i]->db_bytesused = 0;
173 ds->ds_buf[i]->db_length = BLOCK_SIZE;
181 dtv_stream_dequeue(struct dtv_stream *ds)
185 if (!SIMPLEQ_EMPTY(&ds->ds_egress)) {
186 db = SIMPLEQ_FIRST(&ds->ds_egress);
187 SIMPLEQ_REMOVE_HEAD(&ds->ds_egress, db_entries);
195 dtv_stream_enqueue(struct dtv_stream *ds, struct dtv_buffer *db)
198 SIMPLEQ_INSERT_TAIL(&ds->ds_ingress, db, db_entries);
204 struct dtv_stream *ds = &sc->sc_stream;
207 mutex_enter(&ds->ds_ingress_lock);
208 for (i = 0; i < ds->ds_nbufs; i++)
209 dtv_stream_enqueue(ds, ds->ds_buf[i]);
210 mutex_exit(&ds->ds_ingress_lock);
218 struct dtv_stream *ds = &sc->sc_stream;
220 mutex_enter(&ds->ds_ingress_lock);
221 while (SIMPLEQ_FIRST(&ds->ds_ingress))
222 SIMPLEQ_REMOVE_HEAD(&ds->ds_ingress, db_entries);
223 mutex_exit(&ds->ds_ingress_lock);
224 mutex_enter(&ds->ds_egress_lock);
225 while (SIMPLEQ_FIRST(&ds->ds_egress))
226 SIMPLEQ_REMOVE_HEAD(&ds->ds_egress, db_entries);
227 mutex_exit(&ds->ds_egress_lock);
235 struct dtv_stream *ds = &sc->sc_stream;
244 mutex_enter(&ds->ds_egress_lock);
245 while (SIMPLEQ_EMPTY(&ds->ds_egress)) {
247 mutex_exit(&ds->ds_egress_lock);
251 error = cv_wait_sig(&ds->ds_sample_cv,
252 &ds->ds_egress_lock);
254 mutex_exit(&ds->ds_egress_lock);
258 db = SIMPLEQ_FIRST(&ds->ds_egress);
259 mutex_exit(&ds->ds_egress_lock);
262 mutex_enter(&ds->ds_egress_lock);
263 db = dtv_stream_dequeue(ds);
264 mutex_exit(&ds->ds_egress_lock);
265 mutex_enter(&ds->ds_ingress_lock);
266 dtv_stream_enqueue(ds, db);
267 mutex_exit(&ds->ds_ingress_lock);
268 ds->ds_bytesread = 0;
272 len = uimin(uio->uio_resid, db->db_bytesused - ds->ds_bytesread);
273 offset = db->db_offset + ds->ds_bytesread;
275 if (dtv_scatter_io_init(&ds->ds_data, offset, len, &sio)) {
279 ds->ds_bytesread += (len - sio.sio_resid);
283 if (ds->ds_bytesread >= db->db_bytesused) {
284 mutex_enter(&ds->ds_egress_lock);
285 db = dtv_stream_dequeue(ds);
286 mutex_exit(&ds->ds_egress_lock);
287 mutex_enter(&ds->ds_ingress_lock);
288 dtv_stream_enqueue(ds, db);
289 mutex_exit(&ds->ds_ingress_lock);
291 ds->ds_bytesread = 0;
301 struct dtv_stream *ds = &sc->sc_stream;
308 mutex_enter(&ds->ds_egress_lock);
309 if (!SIMPLEQ_EMPTY(&ds->ds_egress)) {
311 SIMPLEQ_FOREACH(db, &ds->ds_egress, db_entries)
316 selrecord(l, &ds->ds_sel);
318 mutex_exit(&ds->ds_egress_lock);