xref: /openbmc/qemu/include/block/thread-pool.h (revision d27532e479aa5f097bed35677a001f686336b294)
1  /*
2   * QEMU block layer thread pool
3   *
4   * Copyright IBM, Corp. 2008
5   * Copyright Red Hat, Inc. 2012
6   *
7   * Authors:
8   *  Anthony Liguori   <aliguori@us.ibm.com>
9   *  Paolo Bonzini     <pbonzini@redhat.com>
10   *
11   * This work is licensed under the terms of the GNU GPL, version 2.  See
12   * the COPYING file in the top-level directory.
13   *
14   * Contributions after 2012-01-13 are licensed under the terms of the
15   * GNU GPL, version 2 or (at your option) any later version.
16   */
17  
18  #ifndef QEMU_THREAD_POOL_H
19  #define QEMU_THREAD_POOL_H
20  
21  #include "block/aio.h"
22  
23  #define THREAD_POOL_MAX_THREADS_DEFAULT         64
24  
25  typedef int ThreadPoolFunc(void *opaque);
26  
27  typedef struct ThreadPool ThreadPool;
28  
29  ThreadPool *thread_pool_new(struct AioContext *ctx);
30  void thread_pool_free(ThreadPool *pool);
31  
32  BlockAIOCB *thread_pool_submit_aio(ThreadPool *pool,
33          ThreadPoolFunc *func, void *arg,
34          BlockCompletionFunc *cb, void *opaque);
35  int coroutine_fn thread_pool_submit_co(ThreadPool *pool,
36          ThreadPoolFunc *func, void *arg);
37  void thread_pool_submit(ThreadPool *pool, ThreadPoolFunc *func, void *arg);
38  void thread_pool_update_params(ThreadPool *pool, struct AioContext *ctx);
39  
40  #endif
41