1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2012 Intel Corporation 3*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 4*61046927SAndroid Build Coastguard Worker */ 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard Worker #ifndef _THREADPOOL_H_ 7*61046927SAndroid Build Coastguard Worker #define _THREADPOOL_H_ 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker #include <pthread.h> 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker struct NineSwapChain9; 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker #define MAXTHREADS 1 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker struct threadpool { 16*61046927SAndroid Build Coastguard Worker pthread_mutex_t m; 17*61046927SAndroid Build Coastguard Worker pthread_cond_t new_work; 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker HANDLE wthread; 20*61046927SAndroid Build Coastguard Worker pthread_t pthread; 21*61046927SAndroid Build Coastguard Worker struct threadpool_task *workqueue; 22*61046927SAndroid Build Coastguard Worker BOOL shutdown; 23*61046927SAndroid Build Coastguard Worker }; 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker typedef void (*threadpool_task_func)(void *data); 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker struct threadpool_task { 28*61046927SAndroid Build Coastguard Worker threadpool_task_func work; 29*61046927SAndroid Build Coastguard Worker void *data; 30*61046927SAndroid Build Coastguard Worker struct threadpool_task *next; 31*61046927SAndroid Build Coastguard Worker pthread_cond_t finish; 32*61046927SAndroid Build Coastguard Worker BOOL finished; 33*61046927SAndroid Build Coastguard Worker }; 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard Worker struct threadpool *_mesa_threadpool_create(struct NineSwapChain9 *swapchain); 36*61046927SAndroid Build Coastguard Worker void _mesa_threadpool_destroy(struct NineSwapChain9 *swapchain, struct threadpool *pool); 37*61046927SAndroid Build Coastguard Worker struct threadpool_task *_mesa_threadpool_queue_task(struct threadpool *pool, 38*61046927SAndroid Build Coastguard Worker threadpool_task_func func, 39*61046927SAndroid Build Coastguard Worker void *data); 40*61046927SAndroid Build Coastguard Worker void _mesa_threadpool_wait_for_task(struct threadpool *pool, 41*61046927SAndroid Build Coastguard Worker struct threadpool_task **task); 42*61046927SAndroid Build Coastguard Worker #endif 43