Lines Matching defs:child_pid

52 static void get_dbginfo(pid_t child_pid, struct ppc_debug_info *dbginfo)
54 if (ptrace(PPC_PTRACE_GETHWDBGINFO, child_pid, NULL, dbginfo)) {
212 static void check_success(pid_t child_pid, const char *name, const char *type,
224 ptrace(PTRACE_GETSIGINFO, child_pid, NULL, &siginfo);
241 ptrace(PTRACE_SINGLESTEP, child_pid, NULL, 0);
246 static void ptrace_set_debugreg(pid_t child_pid, unsigned long wp_addr)
248 if (ptrace(PTRACE_SET_DEBUGREG, child_pid, 0, wp_addr)) {
254 static int ptrace_sethwdebug(pid_t child_pid, struct ppc_hw_breakpoint *info)
256 int wh = ptrace(PPC_PTRACE_SETHWDEBUG, child_pid, 0, info);
265 static void ptrace_delhwdebug(pid_t child_pid, int wh)
267 if (ptrace(PPC_PTRACE_DELHWDEBUG, child_pid, 0, wh) < 0) {
277 static int test_set_debugreg(pid_t child_pid)
288 ptrace_set_debugreg(child_pid, wp_addr);
289 ptrace(PTRACE_CONT, child_pid, NULL, 0);
290 check_success(child_pid, name, "WO", wp_addr, len);
298 ptrace_set_debugreg(child_pid, wp_addr);
299 ptrace(PTRACE_CONT, child_pid, NULL, 0);
300 check_success(child_pid, name, "RO", wp_addr, len);
309 ptrace_set_debugreg(child_pid, wp_addr);
310 ptrace(PTRACE_CONT, child_pid, NULL, 0);
311 check_success(child_pid, name, "RW", wp_addr, len);
314 ptrace_set_debugreg(child_pid, 0);
318 static int test_set_debugreg_kernel_userspace(pid_t child_pid)
328 ptrace_set_debugreg(child_pid, wp_addr);
329 ptrace(PTRACE_CONT, child_pid, NULL, 0);
330 check_success(child_pid, name, "Kernel Access Userspace", wp_addr, 8);
332 ptrace_set_debugreg(child_pid, 0);
351 static void test_sethwdebug_exact(pid_t child_pid)
361 wh = ptrace_sethwdebug(child_pid, &info);
362 ptrace(PTRACE_CONT, child_pid, NULL, 0);
363 check_success(child_pid, name, "WO", wp_addr, len);
364 ptrace_delhwdebug(child_pid, wh);
368 wh = ptrace_sethwdebug(child_pid, &info);
369 ptrace(PTRACE_CONT, child_pid, NULL, 0);
370 check_success(child_pid, name, "RO", wp_addr, len);
371 ptrace_delhwdebug(child_pid, wh);
375 wh = ptrace_sethwdebug(child_pid, &info);
376 ptrace(PTRACE_CONT, child_pid, NULL, 0);
377 check_success(child_pid, name, "RW", wp_addr, len);
378 ptrace_delhwdebug(child_pid, wh);
381 static void test_sethwdebug_exact_kernel_userspace(pid_t child_pid)
391 wh = ptrace_sethwdebug(child_pid, &info);
392 ptrace(PTRACE_CONT, child_pid, NULL, 0);
393 check_success(child_pid, name, "Kernel Access Userspace", wp_addr, len);
394 ptrace_delhwdebug(child_pid, wh);
397 static void test_sethwdebug_range_aligned(pid_t child_pid)
409 wh = ptrace_sethwdebug(child_pid, &info);
410 ptrace(PTRACE_CONT, child_pid, NULL, 0);
411 check_success(child_pid, name, "WO", wp_addr, len);
412 ptrace_delhwdebug(child_pid, wh);
418 wh = ptrace_sethwdebug(child_pid, &info);
419 ptrace(PTRACE_CONT, child_pid, NULL, 0);
420 check_success(child_pid, name, "RO", wp_addr, len);
421 ptrace_delhwdebug(child_pid, wh);
427 wh = ptrace_sethwdebug(child_pid, &info);
428 ptrace(PTRACE_CONT, child_pid, NULL, 0);
429 check_success(child_pid, name, "RW", wp_addr, len);
430 ptrace_delhwdebug(child_pid, wh);
433 static void test_multi_sethwdebug_range(pid_t child_pid)
450 wh1 = ptrace_sethwdebug(child_pid, &info1);
453 wh2 = ptrace_sethwdebug(child_pid, &info2);
455 ptrace(PTRACE_CONT, child_pid, NULL, 0);
456 check_success(child_pid, name1, "WO", wp_addr1, len1);
458 ptrace(PTRACE_CONT, child_pid, NULL, 0);
459 check_success(child_pid, name2, "RO", wp_addr2, len2);
461 ptrace_delhwdebug(child_pid, wh1);
462 ptrace_delhwdebug(child_pid, wh2);
465 static void test_multi_sethwdebug_range_dawr_overlap(pid_t child_pid)
481 wh1 = ptrace_sethwdebug(child_pid, &info1);
484 wh2 = ptrace_sethwdebug(child_pid, &info2);
486 ptrace(PTRACE_CONT, child_pid, NULL, 0);
487 check_success(child_pid, name, "WO", wp_addr1, len1);
489 ptrace(PTRACE_CONT, child_pid, NULL, 0);
490 check_success(child_pid, name, "RO", wp_addr2, len2);
492 ptrace_delhwdebug(child_pid, wh1);
493 ptrace_delhwdebug(child_pid, wh2);
496 static void test_sethwdebug_range_unaligned(pid_t child_pid)
508 wh = ptrace_sethwdebug(child_pid, &info);
509 ptrace(PTRACE_CONT, child_pid, NULL, 0);
510 check_success(child_pid, name, "WO", wp_addr, len);
511 ptrace_delhwdebug(child_pid, wh);
517 wh = ptrace_sethwdebug(child_pid, &info);
518 ptrace(PTRACE_CONT, child_pid, NULL, 0);
519 check_success(child_pid, name, "RO", wp_addr, len);
520 ptrace_delhwdebug(child_pid, wh);
526 wh = ptrace_sethwdebug(child_pid, &info);
527 ptrace(PTRACE_CONT, child_pid, NULL, 0);
528 check_success(child_pid, name, "RW", wp_addr, len);
529 ptrace_delhwdebug(child_pid, wh);
533 static void test_sethwdebug_range_unaligned_dar(pid_t child_pid)
545 wh = ptrace_sethwdebug(child_pid, &info);
546 ptrace(PTRACE_CONT, child_pid, NULL, 0);
547 check_success(child_pid, name, "RW", wp_addr, len);
548 ptrace_delhwdebug(child_pid, wh);
551 static void test_sethwdebug_dawr_max_range(pid_t child_pid)
563 wh = ptrace_sethwdebug(child_pid, &info);
564 ptrace(PTRACE_CONT, child_pid, NULL, 0);
565 check_success(child_pid, name, "RW", wp_addr, len);
566 ptrace_delhwdebug(child_pid, wh);
571 run_tests(pid_t child_pid, struct ppc_debug_info *dbginfo, bool dawr)
573 test_set_debugreg(child_pid);
574 test_set_debugreg_kernel_userspace(child_pid);
575 test_sethwdebug_exact(child_pid);
576 test_sethwdebug_exact_kernel_userspace(child_pid);
578 test_sethwdebug_range_aligned(child_pid);
580 test_sethwdebug_range_unaligned(child_pid);
581 test_sethwdebug_range_unaligned_dar(child_pid);
582 test_sethwdebug_dawr_max_range(child_pid);
584 test_multi_sethwdebug_range(child_pid);
585 test_multi_sethwdebug_range_dawr_overlap(child_pid);
593 pid_t child_pid;
597 child_pid = fork();
598 if (!child_pid) {
605 get_dbginfo(child_pid, &dbginfo);
609 run_tests(child_pid, &dbginfo, dawr);
612 ptrace(PTRACE_CONT, child_pid, NULL, 0);