Lines Matching defs:nmk
1153 struct nm_kctx *nmk;
1171 struct nm_kctx *nmk = data;
1172 struct nm_kctx_ctx *ctx = &nmk->worker_ctx;
1174 if (nmk->affinity >= 0) {
1176 sched_bind(curthread, nmk->affinity);
1180 while (nmk->run) {
1201 nm_os_kctx_worker_setaff(struct nm_kctx *nmk, int affinity)
1203 nmk->affinity = affinity;
1209 struct nm_kctx *nmk = NULL;
1211 nmk = malloc(sizeof(*nmk), M_DEVBUF, M_NOWAIT | M_ZERO);
1212 if (!nmk)
1215 mtx_init(&nmk->worker_lock, "nm_kthread lock", NULL, MTX_DEF);
1216 nmk->worker_ctx.worker_fn = cfg->worker_fn;
1217 nmk->worker_ctx.worker_private = cfg->worker_private;
1218 nmk->worker_ctx.type = cfg->type;
1219 nmk->affinity = -1;
1222 nmk->attach_user = cfg->attach_user;
1224 return nmk;
1228 nm_os_kctx_worker_start(struct nm_kctx *nmk)
1238 if (nmk->worker)
1242 if (nmk->attach_user) {
1243 nmk->worker_ctx.user_td = curthread;
1248 nmk->run = 1;
1250 if((error = kthread_add(nm_kctx_worker, nmk, p,
1251 &nmk->worker, RFNOWAIT /* to be checked */, 0, "nm-kthread-%ld",
1252 nmk->worker_ctx.type))) {
1256 nm_prinf("nm_kthread started td %p", nmk->worker);
1261 nmk->worker = NULL;
1266 nm_os_kctx_worker_stop(struct nm_kctx *nmk)
1268 if (!nmk->worker)
1272 nmk->run = 0;
1275 kthread_resume(nmk->worker);
1277 nmk->worker = NULL;
1281 nm_os_kctx_destroy(struct nm_kctx *nmk)
1283 if (!nmk)
1286 if (nmk->worker)
1287 nm_os_kctx_worker_stop(nmk);
1289 free(nmk, M_DEVBUF);