static void service_free(struct shim_service *service) { if (service) { vchiu_queue_delete(&service->queue); kfree(service); } }
int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size) { WARN_ON(!is_pow2(size)); queue->size = size; queue->read = 0; queue->write = 0; sema_init(&queue->pop, 0); sema_init(&queue->push, 0); queue->storage = kzalloc(size * sizeof(VCHIQ_HEADER_T *), GFP_KERNEL); if (queue->storage == NULL) { vchiu_queue_delete(queue); return 0; } return 1; }
int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size) { vcos_assert(is_pow2(size)); queue->size = size; queue->read = 0; queue->write = 0; vcos_event_create(&queue->pop, "vchiu"); vcos_event_create(&queue->push, "vchiu"); queue->storage = vcos_malloc(size * sizeof(VCHIQ_HEADER_T *), VCOS_FUNCTION); if (queue->storage == NULL) { vchiu_queue_delete(queue); return 0; } return 1; }
int vchiu_queue_init(struct vchiu_queue *queue, int size) { WARN_ON(!is_pow2(size)); queue->size = size; queue->read = 0; queue->write = 0; queue->initialized = 1; init_completion(&queue->pop); init_completion(&queue->push); queue->storage = kcalloc(size, sizeof(struct vchiq_header *), GFP_KERNEL); if (!queue->storage) { vchiu_queue_delete(queue); return 0; } return 1; }