Lines Matching refs:buffer
226 static void buf_add_log(MppBufferImpl *buffer, MppBufOps ops, const char* caller) in buf_add_log() argument
228 if (buffer->log_runtime_en) { in buf_add_log()
230 buffer->group_id, buffer->buffer_id, buffer->info.fd, in buf_add_log()
231 ops2str[ops], buffer->ref_count, caller); in buf_add_log()
233 if (buffer->logs) in buf_add_log()
234 buf_logs_write(buffer->logs, buffer->group_id, buffer->buffer_id, in buf_add_log()
235 ops, buffer->ref_count, caller); in buf_add_log()
248 static void dump_buffer_info(MppBufferImpl *buffer) in dump_buffer_info() argument
251 buffer, buffer->info.fd, buffer->info.size, in dump_buffer_info()
252 buffer->ref_count, buffer->discard, buffer->caller); in dump_buffer_info()
291 MppBufferImpl *buffer, rk_u32 reuse, const char *caller) in service_put_buffer() argument
299 pthread_mutex_lock(&buffer->lock); in service_put_buffer()
302 mpp_assert(buffer->ref_count == 0); in service_put_buffer()
303 if (buffer->ref_count > 0) { in service_put_buffer()
304 pthread_mutex_unlock(&buffer->lock); in service_put_buffer()
309 list_del_init(&buffer->list_status); in service_put_buffer()
312 if (buffer->used && group) { in service_put_buffer()
314 list_add_tail(&buffer->list_status, &group->list_unused); in service_put_buffer()
318 buffer->buffer_id, group, buffer->group_id); in service_put_buffer()
320 buffer->used = 0; in service_put_buffer()
322 pthread_mutex_unlock(&buffer->lock); in service_put_buffer()
328 list_for_each_entry_safe(pos, n, &buffer->list_maps, MppDevBufMapNode, list_buf) { in service_put_buffer()
332 mpp_assert(list_empty(&buffer->list_maps)); in service_put_buffer()
333 info = buffer->info; in service_put_buffer()
336 rk_u32 size = buffer->info.size; in service_put_buffer()
338 if (buffer->used) in service_put_buffer()
350 buf_add_log(buffer, BUF_DESTROY, caller); in service_put_buffer()
360 clear_buffer_info(&buffer->info); in service_put_buffer()
362 pthread_mutex_unlock(&buffer->lock); in service_put_buffer()
377 BufferOp func = (buffer->mode == MPP_BUFFER_INTERNAL) ? in service_put_buffer()
378 (buffer->alloc_api->free) : in service_put_buffer()
379 (buffer->alloc_api->release); in service_put_buffer()
381 func(buffer->allocator, &info); in service_put_buffer()
384 mpp_mem_pool_put(pool_buf, buffer, caller); in service_put_buffer()
387 static MPP_RET inc_buffer_ref(MppBufferImpl *buffer, const char *caller) in inc_buffer_ref() argument
391 pthread_mutex_lock(&buffer->lock); in inc_buffer_ref()
392 buffer->ref_count++; in inc_buffer_ref()
393 buf_add_log(buffer, BUF_REF_INC, caller); in inc_buffer_ref()
394 if (!buffer->used) { in inc_buffer_ref()
400 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in inc_buffer_ref()
405 buffer->used = 1; in inc_buffer_ref()
408 list_del_init(&buffer->list_status); in inc_buffer_ref()
409 list_add_tail(&buffer->list_status, &group->list_used); in inc_buffer_ref()
418 pthread_mutex_unlock(&buffer->lock); in inc_buffer_ref()
424 MppBufferImpl **buffer) in mpp_buffer_create() argument
494 if (buffer) { in mpp_buffer_create()
499 *buffer = p; in mpp_buffer_create()
534 MPP_RET mpp_buffer_mmap(MppBufferImpl *buffer, const char* caller) in mpp_buffer_mmap() argument
538 MPP_RET ret = buffer->alloc_api->mmap(buffer->allocator, &buffer->info); in mpp_buffer_mmap()
541 buffer->buffer_id, buffer->group_id, buffer->info.fd, caller); in mpp_buffer_mmap()
543 buf_add_log(buffer, BUF_MMAP, caller); in mpp_buffer_mmap()
549 MPP_RET mpp_buffer_ref_inc(MppBufferImpl *buffer, const char* caller) in mpp_buffer_ref_inc() argument
553 MPP_RET ret = inc_buffer_ref(buffer, caller); in mpp_buffer_ref_inc()
560 MPP_RET mpp_buffer_ref_dec(MppBufferImpl *buffer, const char* caller) in mpp_buffer_ref_dec() argument
567 pthread_mutex_lock(&buffer->lock); in mpp_buffer_ref_dec()
569 if (buffer->ref_count <= 0) { in mpp_buffer_ref_dec()
570 buf_add_log(buffer, BUF_REF_DEC, caller); in mpp_buffer_ref_dec()
572 buffer->caller, buffer->ref_count, caller); in mpp_buffer_ref_dec()
575 pthread_mutex_unlock(&buffer->lock); in mpp_buffer_ref_dec()
579 buffer->ref_count--; in mpp_buffer_ref_dec()
580 if (buffer->ref_count == 0) in mpp_buffer_ref_dec()
582 buf_add_log(buffer, BUF_REF_DEC, caller); in mpp_buffer_ref_dec()
584 pthread_mutex_unlock(&buffer->lock); in mpp_buffer_ref_dec()
592 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in mpp_buffer_ref_dec()
602 reuse = (!group->is_misc && !buffer->discard); in mpp_buffer_ref_dec()
603 service_put_buffer(srv, group, buffer, reuse, caller); in mpp_buffer_ref_dec()
617 MPP_RET mpp_buffer_discard(MppBufferImpl *buffer, const char* caller) in mpp_buffer_discard() argument
626 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in mpp_buffer_discard()
633 buffer->discard = 1; in mpp_buffer_discard()
634 buf_add_log(buffer, BUF_DISCARD, caller); in mpp_buffer_discard()
645 MppBufferImpl *buffer = NULL; in mpp_buffer_get_unused() local
660 buffer = pos; in mpp_buffer_get_unused()
661 pthread_mutex_lock(&buffer->lock); in mpp_buffer_get_unused()
662 buffer->ref_count++; in mpp_buffer_get_unused()
663 buffer->used = 1; in mpp_buffer_get_unused()
664 buf_add_log(buffer, BUF_REF_INC, caller); in mpp_buffer_get_unused()
665 list_del_init(&buffer->list_status); in mpp_buffer_get_unused()
666 list_add_tail(&buffer->list_status, &p->list_used); in mpp_buffer_get_unused()
669 pthread_mutex_unlock(&buffer->lock); in mpp_buffer_get_unused()
689 return buffer; in mpp_buffer_get_unused()
692 rk_u32 mpp_buffer_to_addr(MppBuffer buffer, size_t offset) in mpp_buffer_to_addr() argument
694 MppBufferImpl *impl = (MppBufferImpl *)buffer; in mpp_buffer_to_addr()
717 static MppDevBufMapNode *mpp_buffer_attach_dev_lock(const char *caller, MppBuffer buffer, MppDev de… in mpp_buffer_attach_dev_lock() argument
719 MppBufferImpl *impl = (MppBufferImpl *)buffer; in mpp_buffer_attach_dev_lock()
745 node->buffer = impl; in mpp_buffer_attach_dev_lock()
765 MPP_RET mpp_buffer_attach_dev_f(const char *caller, MppBuffer buffer, MppDev dev) in mpp_buffer_attach_dev_f() argument
769 node = mpp_buffer_attach_dev_lock(caller, buffer, dev); in mpp_buffer_attach_dev_f()
774 MPP_RET mpp_buffer_detach_dev_f(const char *caller, MppBuffer buffer, MppDev dev) in mpp_buffer_detach_dev_f() argument
776 MppBufferImpl *impl = (MppBufferImpl *)buffer; in mpp_buffer_detach_dev_f()
796 rk_u32 mpp_buffer_get_iova_f(const char *caller, MppBuffer buffer, MppDev dev) in mpp_buffer_get_iova_f() argument
800 node = mpp_buffer_attach_dev_lock(caller, buffer, dev); in mpp_buffer_get_iova_f()