Lines Matching refs:nmk
1189 struct nm_kctx *nmk;
1207 struct nm_kctx *nmk = data;
1208 struct nm_kctx_ctx *ctx = &nmk->worker_ctx;
1210 if (nmk->affinity >= 0) {
1212 sched_bind(curthread, nmk->affinity);
1216 while (nmk->run) {
1237 nm_os_kctx_worker_setaff(struct nm_kctx *nmk, int affinity)
1239 nmk->affinity = affinity;
1245 struct nm_kctx *nmk = NULL;
1247 nmk = malloc(sizeof(*nmk), M_DEVBUF, M_NOWAIT | M_ZERO);
1248 if (!nmk)
1251 mtx_init(&nmk->worker_lock, "nm_kthread lock", NULL, MTX_DEF);
1252 nmk->worker_ctx.worker_fn = cfg->worker_fn;
1253 nmk->worker_ctx.worker_private = cfg->worker_private;
1254 nmk->worker_ctx.type = cfg->type;
1255 nmk->affinity = -1;
1258 nmk->attach_user = cfg->attach_user;
1260 return nmk;
1264 nm_os_kctx_worker_start(struct nm_kctx *nmk)
1274 if (nmk->worker)
1278 if (nmk->attach_user) {
1279 nmk->worker_ctx.user_td = curthread;
1284 nmk->run = 1;
1286 if((error = kthread_add(nm_kctx_worker, nmk, p,
1287 &nmk->worker, RFNOWAIT /* to be checked */, 0, "nm-kthread-%ld",
1288 nmk->worker_ctx.type))) {
1292 nm_prinf("nm_kthread started td %p", nmk->worker);
1297 nmk->worker = NULL;
1302 nm_os_kctx_worker_stop(struct nm_kctx *nmk)
1304 if (!nmk->worker)
1308 nmk->run = 0;
1311 kthread_resume(nmk->worker);
1313 nmk->worker = NULL;
1317 nm_os_kctx_destroy(struct nm_kctx *nmk)
1319 if (!nmk)
1322 if (nmk->worker)
1323 nm_os_kctx_worker_stop(nmk);
1325 free(nmk, M_DEVBUF);