Lines Matching defs:info
69 static int child(struct shared_info *info)
77 ret = wait_parent(&info->child_sync);
85 CHILD_FAIL_IF(pkey1 < 0, &info->child_sync);
91 CHILD_FAIL_IF(pkey2 < 0, &info->child_sync);
94 CHILD_FAIL_IF(pkey3 < 0, &info->child_sync);
96 info->amr1 |= 3ul << pkeyshift(pkey1);
97 info->amr2 |= 3ul << pkeyshift(pkey2);
102 info->invalid_amr = info->amr2 | (~0x0UL & ~info->expected_uamor);
108 info->expected_iamr |= 1ul << pkeyshift(pkey1);
110 info->expected_iamr &= ~(1ul << pkeyshift(pkey1));
115 info->expected_iamr &= ~(1ul << pkeyshift(pkey2));
116 info->expected_iamr &= ~(1ul << pkeyshift(pkey3));
122 info->invalid_iamr = info->expected_iamr | (1ul << pkeyshift(pkey1) | 1ul << pkeyshift(pkey2));
123 info->invalid_uamor = info->expected_uamor & ~(0x3ul << pkeyshift(pkey1));
126 user_write, info->amr1, pkey1, pkey2, pkey3);
128 set_amr(info->amr1);
131 ret = prod_parent(&info->child_sync);
132 CHILD_FAIL_IF(ret, &info->child_sync);
134 ret = wait_parent(&info->child_sync);
142 CHILD_FAIL_IF(reg != info->amr2, &info->child_sync);
147 ret = prod_parent(&info->child_sync);
148 CHILD_FAIL_IF(ret, &info->child_sync);
150 ret = wait_parent(&info->child_sync);
158 CHILD_FAIL_IF(reg != info->amr2, &info->child_sync);
164 ret = prod_parent(&info->child_sync);
165 CHILD_FAIL_IF(ret, &info->child_sync);
167 ret = wait_parent(&info->child_sync);
175 CHILD_FAIL_IF(reg != info->amr2, &info->child_sync);
179 ret = prod_parent(&info->child_sync);
180 CHILD_FAIL_IF(ret, &info->child_sync);
185 static int parent(struct shared_info *info, pid_t pid)
195 PARENT_SKIP_IF_UNSUPPORTED(ret, &info->child_sync);
196 PARENT_FAIL_IF(ret, &info->child_sync);
198 info->amr1 = info->amr2 = regs[0];
199 info->expected_iamr = regs[1];
200 info->expected_uamor = regs[2];
203 ret = prod_child(&info->child_sync);
204 PARENT_FAIL_IF(ret, &info->child_sync);
206 ret = wait_child(&info->child_sync);
212 PARENT_FAIL_IF(ret, &info->child_sync);
217 PARENT_FAIL_IF(regs[0] != info->amr1, &info->child_sync);
218 PARENT_FAIL_IF(regs[1] != info->expected_iamr, &info->child_sync);
219 PARENT_FAIL_IF(regs[2] != info->expected_uamor, &info->child_sync);
222 ret = ptrace_write_regs(pid, NT_PPC_PKEY, &info->amr2, 1);
223 PARENT_FAIL_IF(ret, &info->child_sync);
225 printf("%-30s AMR: %016lx\n", ptrace_write_running, info->amr2);
228 ret = prod_child(&info->child_sync);
229 PARENT_FAIL_IF(ret, &info->child_sync);
231 ret = wait_child(&info->child_sync);
236 ret = ptrace_write_regs(pid, NT_PPC_PKEY, &info->invalid_amr, 1);
237 PARENT_FAIL_IF(ret, &info->child_sync);
239 printf("%-30s AMR: %016lx\n", ptrace_write_running, info->invalid_amr);
242 ret = prod_child(&info->child_sync);
243 PARENT_FAIL_IF(ret, &info->child_sync);
245 ret = wait_child(&info->child_sync);
250 regs[0] = info->amr1;
251 regs[1] = info->invalid_iamr;
253 PARENT_FAIL_IF(!ret, &info->child_sync);
259 regs[2] = info->invalid_uamor;
261 PARENT_FAIL_IF(!ret, &info->child_sync);
268 PARENT_FAIL_IF(ret, &info->child_sync);
273 PARENT_FAIL_IF(regs[0] != info->amr2, &info->child_sync);
274 PARENT_FAIL_IF(regs[1] != info->expected_iamr, &info->child_sync);
275 PARENT_FAIL_IF(regs[2] != info->expected_uamor, &info->child_sync);
278 ret = prod_child(&info->child_sync);
279 PARENT_FAIL_IF(ret, &info->child_sync);
296 struct shared_info *info;
301 shm_id = shmget(IPC_PRIVATE, sizeof(*info), 0777 | IPC_CREAT);
302 info = shmat(shm_id, NULL, 0);
304 ret = init_child_sync(&info->child_sync);
313 ret = child(info);
315 ret = parent(info, pid);
317 shmdt(info);
320 destroy_child_sync(&info->child_sync);