Home | History | Annotate | Download | only in npf

Lines Matching defs:npf

51 	LIST_HEAD(, npf)	instances;
132 npf_worker_addfunc(npf_t *npf, npf_workfunc_t work)
134 KASSERTMSG(npf->worker_flags == 0,
138 if (npf->worker_funcs[i] == NULL) {
139 npf->worker_funcs[i] = work;
147 npf_worker_signal(npf_t *npf)
151 if ((npf->worker_flags & WFLAG_ACTIVE) == 0) {
162 * npf_worker_enlist: add the NPF instance for worker(s) to process.
165 npf_worker_enlist(npf_t *npf)
169 KASSERT(npf->worker_flags == 0);
175 LIST_INSERT_HEAD(&winfo->instances, npf, worker_entry);
176 npf->worker_flags |= WFLAG_ACTIVE;
181 * npf_worker_discharge: remove the NPF instance the list for workers.
186 npf_worker_discharge(npf_t *npf)
190 if ((npf->worker_flags & WFLAG_ACTIVE) == 0) {
199 KASSERT(npf->worker_flags & WFLAG_ACTIVE);
200 npf->worker_flags |= WFLAG_REMOVE;
204 while (npf->worker_flags & WFLAG_ACTIVE) {
208 KASSERT(npf->worker_flags == 0);
212 remove_npf_instance(npf_workerinfo_t *winfo, npf_t *npf)
215 KASSERT(npf->worker_flags & WFLAG_ACTIVE);
216 KASSERT(npf->worker_flags & WFLAG_REMOVE);
219 * Remove the NPF instance:
224 if (npf->worker_flags & WFLAG_INITED) {
225 npfk_thread_unregister(npf);
227 LIST_REMOVE(npf, worker_entry);
228 npf->worker_flags = 0;
233 process_npf_instance(npf_workerinfo_t *winfo, npf_t *npf)
239 if (npf->worker_flags & WFLAG_REMOVE) {
240 remove_npf_instance(winfo, npf);
244 if ((npf->worker_flags & WFLAG_INITED) == 0) {
245 npfk_thread_register(npf);
246 npf->worker_flags |= WFLAG_INITED;
251 if ((work = npf->worker_funcs[i]) == NULL) {
254 work(npf);
257 return MAX(MIN(npf->worker_wait_time, NPF_GC_MAXWAIT), NPF_GC_MINWAIT);
261 * npf_worker: the main worker loop, processing enlisted NPF instances.
271 npf_t *npf;
281 npf = LIST_FIRST(&winfo->instances);
282 while (npf) {
283 npf_t *next = LIST_NEXT(npf, worker_entry);
284 unsigned i_wait_time = process_npf_instance(winfo, npf);
286 npf = next;
300 "NPF instances must be discharged before the npfk_sysfini() call");