MCPcopy Create free account
hub / github.com/F-Stack/f-stack / thread_alloc

Function thread_alloc

freebsd/kern/kern_thread.c:713–736  ·  view source on GitHub ↗

* Allocate a thread. */

Source from the content-addressed store, hash-verified

711 * Allocate a thread.
712 */
713struct thread *
714thread_alloc(int pages)
715{
716 struct thread *td;
717 lwpid_t tid;
718
719 if (!thread_count_inc()) {
720 return (NULL);
721 }
722
723 tid = tid_alloc();
724 td = uma_zalloc(thread_zone, M_WAITOK);
725 KASSERT(td->td_kstack == 0, ("thread_alloc got thread with kstack"));
726 if (!vm_thread_new(td, pages)) {
727 uma_zfree(thread_zone, td);
728 tid_free(tid);
729 thread_count_dec();
730 return (NULL);
731 }
732 td->td_tid = tid;
733 cpu_thread_alloc(td);
734 EVENTHANDLER_DIRECT_INVOKE(thread_ctor, td);
735 return (td);
736}
737
738int
739thread_alloc_stack(struct thread *td, int pages)

Callers 3

fork1Function · 0.85
kern_thr_allocFunction · 0.85
kthread_addFunction · 0.85

Calls 8

thread_count_incFunction · 0.85
tid_allocFunction · 0.85
vm_thread_newFunction · 0.85
thread_count_decFunction · 0.85
tid_freeFunction · 0.70
uma_zallocFunction · 0.50
uma_zfreeFunction · 0.50
cpu_thread_allocFunction · 0.50

Tested by

no test coverage detected