Lines Matching full:sibling
2549 struct tsync_sibling sibling[TSYNC_SIBLINGS]; in FIXTURE() local
2571 memset(&self->sibling, 0, sizeof(self->sibling)); in FIXTURE_SETUP()
2586 self->sibling[0].tid = 0; in FIXTURE_SETUP()
2587 self->sibling[0].cond = &self->cond; in FIXTURE_SETUP()
2588 self->sibling[0].started = &self->started; in FIXTURE_SETUP()
2589 self->sibling[0].mutex = &self->mutex; in FIXTURE_SETUP()
2590 self->sibling[0].diverge = 0; in FIXTURE_SETUP()
2591 self->sibling[0].num_waits = 1; in FIXTURE_SETUP()
2592 self->sibling[0].prog = &self->root_prog; in FIXTURE_SETUP()
2593 self->sibling[0].metadata = _metadata; in FIXTURE_SETUP()
2594 self->sibling[1].tid = 0; in FIXTURE_SETUP()
2595 self->sibling[1].cond = &self->cond; in FIXTURE_SETUP()
2596 self->sibling[1].started = &self->started; in FIXTURE_SETUP()
2597 self->sibling[1].mutex = &self->mutex; in FIXTURE_SETUP()
2598 self->sibling[1].diverge = 0; in FIXTURE_SETUP()
2599 self->sibling[1].prog = &self->root_prog; in FIXTURE_SETUP()
2600 self->sibling[1].num_waits = 1; in FIXTURE_SETUP()
2601 self->sibling[1].metadata = _metadata; in FIXTURE_SETUP()
2614 struct tsync_sibling *s = &self->sibling[sib]; in FIXTURE_TEARDOWN()
2661 void tsync_start_sibling(struct tsync_sibling *sibling) in tsync_start_sibling() argument
2663 pthread_create(&sibling->tid, NULL, tsync_sibling, (void *)sibling); in tsync_start_sibling()
2695 self->sibling[0].diverge = 1; in TEST_F()
2696 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2697 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2711 /* Ensure diverging sibling failed to call prctl. */ in TEST_F()
2712 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2714 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2734 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2735 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2754 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2756 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2765 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2766 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2780 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2782 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2792 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2793 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2820 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2822 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2842 self->sibling[0].diverge = 1; in TEST_F()
2843 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2844 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2853 ASSERT_EQ(self->sibling[0].system_tid, ret) { in TEST_F()
2854 TH_LOG("Did not fail on diverged sibling."); in TEST_F()
2865 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2867 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2887 self->sibling[0].diverge = 1; in TEST_F()
2888 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2889 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2900 TH_LOG("Did not return ESRCH for diverged sibling."); in TEST_F()
2903 TH_LOG("Did not fail on diverged sibling."); in TEST_F()
2914 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2916 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2931 * Sibling 0 will have its own seccomp policy in TEST_F()
2932 * and Sibling 1 will not be under seccomp at in TEST_F()
2933 * all. Sibling 1 will enter seccomp and 0 in TEST_F()
2936 self->sibling[0].diverge = 1; in TEST_F()
2937 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2938 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2955 ASSERT_EQ(ret, self->sibling[0].system_tid) { in TEST_F()
2956 TH_LOG("Did not fail on diverged sibling."); in TEST_F()
2959 if (ret == self->sibling[0].system_tid) in TEST_F()
2967 self->sibling[!sib].num_waits += 1; in TEST_F()
2974 PTHREAD_JOIN(self->sibling[sib].tid, &status); in TEST_F()
2977 while (!kill(self->sibling[sib].system_tid, 0)) in TEST_F()
2979 /* Switch to the remaining sibling */ in TEST_F()
2985 TH_LOG("Expected the remaining sibling to sync"); in TEST_F()
2990 /* If remaining sibling didn't have a chance to wake up during in TEST_F()
2993 if (self->sibling[sib].num_waits > 1) in TEST_F()
2994 self->sibling[sib].num_waits = 1; in TEST_F()
2999 PTHREAD_JOIN(self->sibling[sib].tid, &status); in TEST_F()
3002 while (!kill(self->sibling[sib].system_tid, 0)) in TEST_F()
3696 * Check that a pid in a sibling (i.e. unrelated) namespace shows up as 0, i.e.
3737 /* Create the sibling ns, and sibling in it. */ in TEST()
4875 pthread_t sibling; in TEST() local
4881 ret = pthread_create(&sibling, NULL, in TEST()