Lines Matching +full:mm +full:- +full:0

1 /*-
36 #include <linux/mm.h>
61 struct mm_struct *mm; in find_other_mm() local
65 ts = td->td_lkpi_task; in find_other_mm()
68 mm = ts->mm; in find_other_mm()
69 if (mm == NULL) in find_other_mm()
72 if (atomic_inc_not_zero(&mm->mm_users)) in find_other_mm()
73 return (mm); in find_other_mm()
83 struct mm_struct *mm, *mm_other; in linux_alloc_current() local
85 MPASS(td->td_lkpi_task == NULL); in linux_alloc_current()
87 if ((td->td_pflags & TDP_ITHREAD) != 0 || !THREAD_CAN_SLEEP()) { in linux_alloc_current()
98 mm = NULL; in linux_alloc_current()
101 atomic_set(&ts->kthread_flags, 0); in linux_alloc_current()
102 ts->task_thread = td; in linux_alloc_current()
103 ts->comm = td->td_name; in linux_alloc_current()
104 ts->pid = td->td_tid; in linux_alloc_current()
105 ts->group_leader = ts; in linux_alloc_current()
106 atomic_set(&ts->usage, 1); in linux_alloc_current()
107 atomic_set(&ts->state, TASK_RUNNING); in linux_alloc_current()
108 init_completion(&ts->parked); in linux_alloc_current()
109 init_completion(&ts->exited); in linux_alloc_current()
111 proc = td->td_proc; in linux_alloc_current()
119 mm = uma_zalloc(linux_mm_zone, flags | M_ZERO); in linux_alloc_current()
120 if (mm == NULL) { in linux_alloc_current()
123 "linux_alloc_current: failed to allocate mm"); in linux_alloc_current()
124 uma_zfree(linux_current_zone, mm); in linux_alloc_current()
132 init_rwsem(&mm->mmap_sem); in linux_alloc_current()
133 atomic_set(&mm->mm_count, 1); in linux_alloc_current()
134 atomic_set(&mm->mm_users, 1); in linux_alloc_current()
136 ts->mm = mm; in linux_alloc_current()
138 mm = NULL; in linux_alloc_current()
140 ts->mm = mm_other; in linux_alloc_current()
143 ts->mm = mm_other; in linux_alloc_current()
147 td->td_lkpi_task = ts; in linux_alloc_current()
151 uma_zfree(linux_mm_zone, mm); in linux_alloc_current()
153 return (0); in linux_alloc_current()
159 struct mm_struct *mm; in linux_get_task_mm() local
161 mm = task->mm; in linux_get_task_mm()
162 if (mm != NULL) { in linux_get_task_mm()
163 atomic_inc(&mm->mm_users); in linux_get_task_mm()
164 return (mm); in linux_get_task_mm()
170 linux_mm_dtor(struct mm_struct *mm) in linux_mm_dtor() argument
172 uma_zfree(linux_mm_zone, mm); in linux_mm_dtor()
178 mmput(ts->mm); in linux_free_current()
187 ts = td->td_lkpi_task; in linuxkpi_thread_dtor()
191 td->td_lkpi_task = NULL; in linuxkpi_thread_dtor()
204 td = tdfind(pid, -1); in linux_get_pid_task_int()
206 ts = td->td_lkpi_task; in linux_get_pid_task_int()
209 PROC_UNLOCK(td->td_proc); in linux_get_pid_task_int()
217 ts = td->td_lkpi_task; in linux_get_pid_task_int()
253 td = tdfind(task->pid, -1); in linux_task_exiting()
255 p = td->td_proc; in linux_task_exiting()
258 p = pfind(task->pid); in linux_task_exiting()
262 if ((p->p_flag & P_WEXIT) != 0) in linux_task_exiting()
271 CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &lkpi_task_resrv, 0,
272 "Number of struct task and struct mm to reserve for non-sleepable "
280 if (lkpi_task_resrv == 0) { in linux_current_init()
283 * Number of interrupt threads plus per-cpu callout in linux_current_init()
293 UMA_ALIGN_PTR, 0); in linux_current_init()
298 UMA_ALIGN_PTR, 0); in linux_current_init()
326 if ((ts = td->td_lkpi_task) != NULL) { in linux_current_uninit()
327 td->td_lkpi_task = NULL; in linux_current_uninit()