Lines Matching refs:buffer
107 dma_buffer *buffer = request->dma_buffer; in scsi_copy_dma_buffer() local
108 const physical_entry *sg_list = buffer->sg_list_orig; in scsi_copy_dma_buffer()
109 uint32 num_vecs = buffer->sg_count_orig; in scsi_copy_dma_buffer()
110 uchar *buffer_data = buffer->address; in scsi_copy_dma_buffer()
139 scsi_free_dma_buffer(dma_buffer *buffer) in scsi_free_dma_buffer() argument
141 if (buffer->area > 0) { in scsi_free_dma_buffer()
144 delete_area(buffer->area); in scsi_free_dma_buffer()
145 buffer->area = 0; in scsi_free_dma_buffer()
146 buffer->size = 0; in scsi_free_dma_buffer()
149 if (buffer->sg_list_area > 0) { in scsi_free_dma_buffer()
150 delete_area(buffer->sg_list_area); in scsi_free_dma_buffer()
151 buffer->sg_list_area = 0; in scsi_free_dma_buffer()
161 scsi_alloc_dma_buffer(dma_buffer *buffer, dma_params *dma_params, uint32 size) in scsi_alloc_dma_buffer() argument
164 scsi_free_dma_buffer(buffer); in scsi_alloc_dma_buffer()
201 buffer->area = create_area_etc(B_SYSTEM_TEAM, "DMA buffer", size, in scsi_alloc_dma_buffer()
204 (void**)&buffer->address); in scsi_alloc_dma_buffer()
206 if (buffer->area < 0) { in scsi_alloc_dma_buffer()
212 buffer->size = size; in scsi_alloc_dma_buffer()
215 buffer->area = create_area("DMA buffer", in scsi_alloc_dma_buffer()
216 (void **)&buffer->address, B_ANY_KERNEL_ADDRESS, size, in scsi_alloc_dma_buffer()
219 if (buffer->area < 0) { in scsi_alloc_dma_buffer()
225 buffer->size = size; in scsi_alloc_dma_buffer()
230 size_t sg_list_size = buffer->size / B_PAGE_SIZE * sizeof( physical_entry ); in scsi_alloc_dma_buffer()
234 buffer->sg_list_area = create_area("DMA buffer S/G table", in scsi_alloc_dma_buffer()
235 (void **)&buffer->sg_list, B_ANY_KERNEL_ADDRESS, sg_list_size, in scsi_alloc_dma_buffer()
238 if (buffer->sg_list_area < 0) { in scsi_alloc_dma_buffer()
242 delete_area(buffer->area); in scsi_alloc_dma_buffer()
243 buffer->area = 0; in scsi_alloc_dma_buffer()
253 buffer->address, in scsi_alloc_dma_buffer()
254 buffer->size in scsi_alloc_dma_buffer()
258 &vec, 1, 0, buffer->size, in scsi_alloc_dma_buffer()
259 buffer->sg_list, sg_list_entries, &buffer->sg_count, in scsi_alloc_dma_buffer()
262 if( res != B_OK || mapped_len != buffer->size ) { in scsi_alloc_dma_buffer()
265 mapped_len, buffer->size); in scsi_alloc_dma_buffer()
274 scsi_free_dma_buffer_sg_orig(dma_buffer *buffer) in scsi_free_dma_buffer_sg_orig() argument
276 if (buffer->sg_orig > 0) { in scsi_free_dma_buffer_sg_orig()
277 delete_area(buffer->sg_orig); in scsi_free_dma_buffer_sg_orig()
278 buffer->sg_orig = 0; in scsi_free_dma_buffer_sg_orig()
279 buffer->sg_count_max_orig = 0; in scsi_free_dma_buffer_sg_orig()
287 scsi_alloc_dma_buffer_sg_orig(dma_buffer *buffer, size_t size) in scsi_alloc_dma_buffer_sg_orig() argument
290 scsi_free_dma_buffer_sg_orig(buffer); in scsi_alloc_dma_buffer_sg_orig()
294 buffer->sg_orig = create_area("S/G to original data", in scsi_alloc_dma_buffer_sg_orig()
295 (void **)&buffer->sg_list_orig, in scsi_alloc_dma_buffer_sg_orig()
298 if (buffer->sg_orig < 0) { in scsi_alloc_dma_buffer_sg_orig()
304 buffer->sg_count_max_orig = size / sizeof(physical_entry); in scsi_alloc_dma_buffer_sg_orig()
307 buffer->sg_count_max_orig); in scsi_alloc_dma_buffer_sg_orig()
332 scsi_dma_buffer_compose_sg_orig(dma_buffer *buffer, scsi_ccb *request) in scsi_dma_buffer_compose_sg_orig() argument
335 if (buffer->sg_count_max_orig < request->sg_count) { in scsi_dma_buffer_compose_sg_orig()
336 if (!scsi_alloc_dma_buffer_sg_orig(buffer, request->sg_count)) in scsi_dma_buffer_compose_sg_orig()
342 memcpy(buffer->sg_list_orig, request->sg_list, in scsi_dma_buffer_compose_sg_orig()
345 buffer->sg_count_orig = request->sg_count; in scsi_dma_buffer_compose_sg_orig()
358 dma_buffer *buffer; in scsi_get_dma_buffer() local
377 buffer = &device->dma_buffer; in scsi_get_dma_buffer()
379 buffer->inuse = true; in scsi_get_dma_buffer()
384 request->dma_buffer = buffer; in scsi_get_dma_buffer()
387 if (buffer->size < request->data_length) { in scsi_get_dma_buffer()
388 if (!scsi_alloc_dma_buffer(buffer, &device->bus->dma_params, in scsi_get_dma_buffer()
405 buffer->orig_data = request->data; in scsi_get_dma_buffer()
406 buffer->orig_sg_list = request->sg_list; in scsi_get_dma_buffer()
407 buffer->orig_sg_count = request->sg_count; in scsi_get_dma_buffer()
409 request->data = buffer->address; in scsi_get_dma_buffer()
410 request->sg_list = buffer->sg_list; in scsi_get_dma_buffer()
411 request->sg_count = buffer->sg_count; in scsi_get_dma_buffer()
425 buffer->inuse = false; in scsi_get_dma_buffer()
441 dma_buffer *buffer = request->dma_buffer; in scsi_release_dma_buffer() local
453 request->data = buffer->orig_data; in scsi_release_dma_buffer()
454 request->sg_list = buffer->orig_sg_list; in scsi_release_dma_buffer()
455 request->sg_count = buffer->orig_sg_count; in scsi_release_dma_buffer()
460 buffer->last_use = system_time(); in scsi_release_dma_buffer()
461 buffer->inuse = false; in scsi_release_dma_buffer()
478 dma_buffer *buffer; in scsi_dma_buffer_daemon() local
482 buffer = &device->dma_buffer; in scsi_dma_buffer_daemon()
484 if (!buffer->inuse in scsi_dma_buffer_daemon()
485 && buffer->last_use - system_time() > SCSI_DMA_BUFFER_CLEANUP_DELAY) { in scsi_dma_buffer_daemon()
486 scsi_free_dma_buffer(buffer); in scsi_dma_buffer_daemon()
487 scsi_free_dma_buffer_sg_orig(buffer); in scsi_dma_buffer_daemon()
495 scsi_dma_buffer_free(dma_buffer *buffer) in scsi_dma_buffer_free() argument
497 scsi_free_dma_buffer(buffer); in scsi_dma_buffer_free()
498 scsi_free_dma_buffer_sg_orig(buffer); in scsi_dma_buffer_free()
503 scsi_dma_buffer_init(dma_buffer *buffer) in scsi_dma_buffer_init() argument
505 buffer->area = 0; in scsi_dma_buffer_init()
506 buffer->size = 0; in scsi_dma_buffer_init()
507 buffer->sg_orig = 0; in scsi_dma_buffer_init()
508 buffer->sg_count_max_orig = 0; in scsi_dma_buffer_init()