Lines Matching refs:group

35     rt_processgroup_t group;  in lwp_pgrp_find_and_inc_ref()  local
37 group = lwp_pgrp_find(pgid); in lwp_pgrp_find_and_inc_ref()
38 if (group) in lwp_pgrp_find_and_inc_ref()
40 rt_atomic_add(&(group->ref), 1); in lwp_pgrp_find_and_inc_ref()
43 return group; in lwp_pgrp_find_and_inc_ref()
49 rt_processgroup_t group = RT_NULL; in lwp_pgrp_find() local
72 group = (rt_processgroup_t)rt_list_entry(node, struct rt_object, list); in lwp_pgrp_find()
73 if (group->pgid == pgid) in lwp_pgrp_find()
77 return group; in lwp_pgrp_find()
90 rt_processgroup_t group = RT_NULL; in lwp_pgrp_create() local
98 group = rt_malloc(sizeof(struct rt_processgroup)); in lwp_pgrp_create()
99 if (group != RT_NULL) in lwp_pgrp_create()
101 rt_object_init(&(group->object), RT_Object_Class_ProcessGroup, "pgrp"); in lwp_pgrp_create()
102 rt_list_init(&(group->process)); in lwp_pgrp_create()
103 rt_list_init(&(group->pgrp_list_node)); in lwp_pgrp_create()
104 rt_mutex_init(&(group->mutex), "pgrp", RT_IPC_FLAG_PRIO); in lwp_pgrp_create()
105 group->leader = leader; in lwp_pgrp_create()
106 group->sid = 0; in lwp_pgrp_create()
107 group->session = RT_NULL; in lwp_pgrp_create()
108 group->is_orphaned = 0; in lwp_pgrp_create()
109 group->pgid = lwp_to_pid(leader); in lwp_pgrp_create()
110 rt_atomic_store(&group->ref, 1); in lwp_pgrp_create()
113 LOG_I("create(ptr:%p, pgid:%d)() by pid:%d", group, group->pgid, lwp_getpid()); in lwp_pgrp_create()
115 return group; in lwp_pgrp_create()
120 int lwp_pgrp_delete(rt_processgroup_t group) in lwp_pgrp_delete() argument
128 if (group == RT_NULL) in lwp_pgrp_delete()
133 LOG_I("delete(ptr:%p, pgid:%d)() by pid:%d", group, group->pgid, lwp_getpid()); in lwp_pgrp_delete()
138 session = lwp_session_find(lwp_sid_get_bypgrp(group)); in lwp_pgrp_delete()
149 tty_rel_pgrp(ctty, group); // tty_unlock in lwp_pgrp_delete()
153 PGRP_LOCK_NESTED(group); in lwp_pgrp_delete()
154 if (group->session == session && session->ctty == ctty) in lwp_pgrp_delete()
156 rt_object_detach(&(group->object)); in lwp_pgrp_delete()
157 is_session_free = lwp_session_remove(session, group); in lwp_pgrp_delete()
165 PGRP_UNLOCK(group); in lwp_pgrp_delete()
171 rt_object_detach(&(group->object)); in lwp_pgrp_delete()
175 lwp_pgrp_dec_ref(group); in lwp_pgrp_delete()
179 int lwp_pgrp_insert(rt_processgroup_t group, rt_lwp_t process) in lwp_pgrp_insert() argument
182 if (group == RT_NULL || process == RT_NULL) in lwp_pgrp_insert()
187 PGRP_LOCK_NESTED(group); in lwp_pgrp_insert()
189 RT_ASSERT(rt_mutex_get_hold(&process->lwp_lock) <= rt_mutex_get_hold(&group->mutex)); in lwp_pgrp_insert()
191 process->pgid = group->pgid; in lwp_pgrp_insert()
192 process->pgrp = group; in lwp_pgrp_insert()
193 process->sid = group->sid; in lwp_pgrp_insert()
194 rt_list_insert_after(&(group->process), &(process->pgrp_node)); in lwp_pgrp_insert()
197 PGRP_UNLOCK(group); in lwp_pgrp_insert()
202 int lwp_pgrp_remove(rt_processgroup_t group, rt_lwp_t process) in lwp_pgrp_remove() argument
207 if (group == RT_NULL || process == RT_NULL) in lwp_pgrp_remove()
212 PGRP_LOCK_NESTED(group); in lwp_pgrp_remove()
214 RT_ASSERT(rt_mutex_get_hold(&process->lwp_lock) <= rt_mutex_get_hold(&group->mutex)); in lwp_pgrp_remove()
224 is_empty = rt_list_isempty(&(group->process)); in lwp_pgrp_remove()
226 PGRP_UNLOCK(group); in lwp_pgrp_remove()
230 lwp_pgrp_delete(group); in lwp_pgrp_remove()
237 int lwp_pgrp_move(rt_processgroup_t group, rt_lwp_t process) in lwp_pgrp_move() argument
243 if (group == RT_NULL || process == RT_NULL) in lwp_pgrp_move()
248 if (lwp_pgid_get_bypgrp(group) == lwp_pgid_get_byprocess(process)) in lwp_pgrp_move()
253 PGRP_LOCK(group); in lwp_pgrp_move()
265 lwp_pgrp_insert(group, process); in lwp_pgrp_move()
276 PGRP_UNLOCK(group); in lwp_pgrp_move()
281 int lwp_pgrp_update_children_info(rt_processgroup_t group, pid_t sid, pid_t pgid) in lwp_pgrp_update_children_info() argument
286 if (group == RT_NULL) in lwp_pgrp_update_children_info()
291 PGRP_LOCK_NESTED(group); in lwp_pgrp_update_children_info()
294 rt_list_for_each(node, &(group->process)) in lwp_pgrp_update_children_info()
305 process->pgrp = group; in lwp_pgrp_update_children_info()
310 PGRP_UNLOCK(group); in lwp_pgrp_update_children_info()
327 rt_processgroup_t group; in sys_setpgid() local
402 group = lwp_pgrp_find(pgid); in sys_setpgid()
403 if (group == RT_NULL) in sys_setpgid()
405 group = lwp_pgrp_create(process); in sys_setpgid()
406 lwp_pgrp_move(group, process); in sys_setpgid()
416 lwp_session_insert(session, group); in sys_setpgid()
424 if (sid != lwp_sid_get_bypgrp(group)) in sys_setpgid()
437 lwp_pgrp_move(group, process); in sys_setpgid()
442 group = lwp_pgrp_find(pgid); in sys_setpgid()
443 if (group == RT_NULL) in sys_setpgid()
445 group = lwp_pgrp_create(process); in sys_setpgid()
446 lwp_pgrp_move(group, process); in sys_setpgid()
456 lwp_session_insert(session, group); in sys_setpgid()
464 if (lwp_sid_get_bypgrp(group) == lwp_pgid_get_bypgrp(group)) in sys_setpgid()
509 rt_processgroup_t group; in list_processgroup() local
529 group = groups[index]; in list_processgroup()
530 PGRP_LOCK(group); in list_processgroup()
531 rt_memcpy(&pgrp, group, sizeof(struct rt_processgroup)); in list_processgroup()
532 PGRP_UNLOCK(group); in list_processgroup()
553 MSH_CMD_EXPORT(list_processgroup, list process group);