threadpool
SDT_PROBE2(sdt, kernel, threadpool,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, get,
SDT_PROBE2(sdt, kernel, threadpool,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, get__create,
SDT_PROBE1(sdt, kernel, threadpool, dispatcher__exit, pool);
struct threadpool *const pool = thread->tpt_pool;
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, get__race,
SDT_PROBE1(sdt, kernel, threadpool, thread__start, pool);
SDT_PROBE1(sdt, kernel, threadpool,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, put,
SDT_PROBE2(sdt, kernel, threadpool, thread__job, pool, job);
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, put__destroy,
SDT_PROBE1(sdt, kernel, threadpool, thread__exit, pool);
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, percpu__get,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, percpu__get__create,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, percpu__get__race,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, percpu__put,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, percpu__put__destroy,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, create,
SDT_PROBE_DEFINE3(sdt, kernel, threadpool, create__success,
SDT_PROBE_DEFINE3(sdt, kernel, threadpool, create__failure,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, destroy,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, destroy__wait,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, schedule__job,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, schedule__job__running,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, schedule__job__dispatcher,
SDT_PROBE_DEFINE3(sdt, kernel, threadpool, schedule__job__thread,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, dispatcher__start,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, dispatcher__dying,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, dispatcher__spawn,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, dispatcher__race,
SDT_PROBE_DEFINE3(sdt, kernel, threadpool, dispatcher__assign,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, dispatcher__exit,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, thread__start,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, thread__dying,
SDT_PROBE_DEFINE2(sdt, kernel, threadpool, thread__job,
SDT_PROBE_DEFINE1(sdt, kernel, threadpool, thread__exit,
struct threadpool *tpt_pool;
static void threadpool_hold(struct threadpool *);
static void threadpool_rele(struct threadpool *);
struct threadpool tpu_pool;
threadpool_create(struct threadpool *const pool, struct cpu_info *ci,
SDT_PROBE2(sdt, kernel, threadpool, create, ci, pri);
SDT_PROBE3(sdt, kernel, threadpool, create__success, ci, pri, pool);
SDT_PROBE3(sdt, kernel, threadpool, create__failure, ci, pri, error);
threadpool_destroy(struct threadpool *pool)
SDT_PROBE1(sdt, kernel, threadpool, destroy, pool);
SDT_PROBE2(sdt, kernel, threadpool, destroy__wait,
threadpool_hold(struct threadpool *pool)
threadpool_rele(struct threadpool *pool)
threadpool_get(struct threadpool **poolp, pri_t pri)
SDT_PROBE1(sdt, kernel, threadpool, get, pri);
SDT_PROBE1(sdt, kernel, threadpool, get__create, pri);
SDT_PROBE1(sdt, kernel, threadpool, get__race, pri);
threadpool_put(struct threadpool *pool, pri_t pri)
SDT_PROBE2(sdt, kernel, threadpool, put, pool, pri);
SDT_PROBE2(sdt, kernel, threadpool, put__destroy, pool, pri);
SDT_PROBE1(sdt, kernel, threadpool, percpu__get, pri);
SDT_PROBE1(sdt, kernel, threadpool, percpu__get__create, pri);
SDT_PROBE1(sdt, kernel, threadpool, percpu__get__race,
SDT_PROBE2(sdt, kernel, threadpool, percpu__put, pool_percpu, pri);
SDT_PROBE2(sdt, kernel, threadpool, percpu__put__destroy,
struct threadpool *
struct threadpool **poolp, *pool;
struct threadpool *
struct threadpool **poolp, *pool;
pool_percpu->tpp_percpu = percpu_create(sizeof(struct threadpool *),
fail: percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *));
percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *));
struct threadpool **const poolp = vpoolp;
struct threadpool **const poolp = vpoolp;
struct threadpool **const poolp = vpoolp;
threadpool_schedule_job(struct threadpool *pool, struct threadpool_job *job)
SDT_PROBE2(sdt, kernel, threadpool, schedule__job, pool, job);
SDT_PROBE2(sdt, kernel, threadpool, schedule__job__running,
SDT_PROBE2(sdt, kernel, threadpool, schedule__job__dispatcher,
SDT_PROBE3(sdt, kernel, threadpool, schedule__job__thread,
threadpool_cancel_job_async(struct threadpool *pool, struct threadpool_job *job)
threadpool_cancel_job(struct threadpool *pool, struct threadpool_job *job)
struct threadpool *const pool = dispatcher->tpt_pool;
SDT_PROBE1(sdt, kernel, threadpool, dispatcher__start, pool);
SDT_PROBE1(sdt, kernel, threadpool,
SDT_PROBE1(sdt, kernel, threadpool, dispatcher__spawn,
static struct threadpool *threadpool;
error = threadpool_get(&threadpool, PRI_NONE);
threadpool_schedule_job(threadpool, &vrele_job);
threadpool_schedule_job(threadpool, &vdrain_job);
struct threadpool *wg_threadpool;
struct threadpool;
int threadpool_get(struct threadpool **, pri_t);
void threadpool_put(struct threadpool *, pri_t);
struct threadpool *
struct threadpool *
void threadpool_schedule_job(struct threadpool *, struct threadpool_job *);
void threadpool_cancel_job(struct threadpool *, struct threadpool_job *);
bool threadpool_cancel_job_async(struct threadpool *,
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool =
struct threadpool *ctx_unbound[PRI_COUNT + 1];
struct threadpool *pool, *opool = NULL;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool =
struct threadpool *ctx_unbound[PRI_COUNT + 1];
struct threadpool *pool, *opool = NULL;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool;
struct threadpool *pool0, *pool1, *pool2;