/*=========================================================================== * FUNCTION : enqueue * * DESCRIPTION: enqueue data into the queue * * PARAMETERS : * @data : data to be enqueued * * RETURN : true -- success; false -- failed *==========================================================================*/ bool QCameraQueue::enqueue(void *data) { bool rc; camera_q_node *node = (camera_q_node *)malloc(sizeof(camera_q_node)); if (NULL == node) { ALOGE("%s: No memory for camera_q_node", __func__); return false; } memset(node, 0, sizeof(camera_q_node)); node->data = data; pthread_mutex_lock(&m_lock); if (m_active) { cam_list_add_tail_node(&node->list, &m_head.list); m_size++; rc = true; } else { free(node); rc = false; } pthread_mutex_unlock(&m_lock); return rc; }
/*=========================================================================== * FUNCTION - add_gpu_addr_item - * * DESCRIPTION: Add pmem buffer and matching gpu address entry into list. *==========================================================================*/ static void add_gpu_addr_item(int fd, uint32_t vAddr, uint32_t gpuAddr, uint32_t origGpuAddr) { gpu_addr_list_t *entry; entry = (gpu_addr_list_t *)malloc(sizeof(gpu_addr_list_t)); if (!entry) { CDBG_ERROR("%s: malloc error\n", __func__); exit(1); } entry->data.fd = fd; entry->data.vAddr = vAddr; entry->data.gpuAddr = gpuAddr; entry->data.origGpuAddr = origGpuAddr; cam_list_add_tail_node(&(entry->list), &(g_list.list)); CDBG("%s: entry fd = %d, vAddr = 0x%x, gAddr = 0x%x\n", __func__, entry->data.fd, entry->data.vAddr, entry->data.gpuAddr); } /* add_gpu_addr_item */
int32_t mm_jpeg_queue_enq(mm_jpeg_queue_t* queue, void* data) { mm_jpeg_q_node_t* node = (mm_jpeg_q_node_t *)malloc(sizeof(mm_jpeg_q_node_t)); if (NULL == node) { CDBG_ERROR("%s: No memory for mm_jpeg_q_node_t", __func__); return -1; } memset(node, 0, sizeof(mm_jpeg_q_node_t)); node->data = data; pthread_mutex_lock(&queue->lock); cam_list_add_tail_node(&node->list, &queue->head.list); queue->size++; pthread_mutex_unlock(&queue->lock); return 0; }