| 459 | } |
| 460 | |
| 461 | int |
| 462 | kproc_kthread_add(void (*func)(void *), void *arg, |
| 463 | struct proc **procptr, struct thread **tdptr, |
| 464 | int flags, int pages, const char *procname, const char *fmt, ...) |
| 465 | { |
| 466 | int error; |
| 467 | va_list ap; |
| 468 | char buf[100]; |
| 469 | struct thread *td; |
| 470 | |
| 471 | if (*procptr == NULL) { |
| 472 | error = kproc_create(func, arg, |
| 473 | procptr, flags, pages, "%s", procname); |
| 474 | if (error) |
| 475 | return (error); |
| 476 | td = FIRST_THREAD_IN_PROC(*procptr); |
| 477 | if (tdptr) |
| 478 | *tdptr = td; |
| 479 | va_start(ap, fmt); |
| 480 | vsnprintf(td->td_name, sizeof(td->td_name), fmt, ap); |
| 481 | va_end(ap); |
| 482 | #ifdef KTR |
| 483 | sched_clear_tdname(td); |
| 484 | #endif |
| 485 | return (0); |
| 486 | } |
| 487 | va_start(ap, fmt); |
| 488 | vsnprintf(buf, sizeof(buf), fmt, ap); |
| 489 | va_end(ap); |
| 490 | error = kthread_add(func, arg, *procptr, |
| 491 | tdptr, flags, pages, "%s", buf); |
| 492 | return (error); |
| 493 | } |
no test coverage detected