| 86 | } |
| 87 | |
| 88 | rt_processgroup_t lwp_pgrp_create(rt_lwp_t leader) |
| 89 | { |
| 90 | rt_processgroup_t group = RT_NULL; |
| 91 | |
| 92 | /* parameter check */ |
| 93 | if (leader == RT_NULL) |
| 94 | { |
| 95 | return RT_NULL; |
| 96 | } |
| 97 | |
| 98 | group = rt_malloc(sizeof(struct rt_processgroup)); |
| 99 | if (group != RT_NULL) |
| 100 | { |
| 101 | rt_object_init(&(group->object), RT_Object_Class_ProcessGroup, "pgrp"); |
| 102 | rt_list_init(&(group->process)); |
| 103 | rt_list_init(&(group->pgrp_list_node)); |
| 104 | rt_mutex_init(&(group->mutex), "pgrp", RT_IPC_FLAG_PRIO); |
| 105 | group->leader = leader; |
| 106 | group->sid = 0; |
| 107 | group->session = RT_NULL; |
| 108 | group->is_orphaned = 0; |
| 109 | group->pgid = lwp_to_pid(leader); |
| 110 | rt_atomic_store(&group->ref, 1); |
| 111 | } |
| 112 | |
| 113 | LOG_I("create(ptr:%p, pgid:%d)() by pid:%d", group, group->pgid, lwp_getpid()); |
| 114 | |
| 115 | return group; |
| 116 | } |
| 117 | |
| 118 | #include <terminal/terminal.h> |
| 119 |
no test coverage detected