Lines Matching full:sibling
2242 struct tsync_sibling sibling[TSYNC_SIBLINGS]; in FIXTURE_DATA() local
2264 memset(&self->sibling, 0, sizeof(self->sibling)); in FIXTURE_SETUP()
2279 self->sibling[0].tid = 0; in FIXTURE_SETUP()
2280 self->sibling[0].cond = &self->cond; in FIXTURE_SETUP()
2281 self->sibling[0].started = &self->started; in FIXTURE_SETUP()
2282 self->sibling[0].mutex = &self->mutex; in FIXTURE_SETUP()
2283 self->sibling[0].diverge = 0; in FIXTURE_SETUP()
2284 self->sibling[0].num_waits = 1; in FIXTURE_SETUP()
2285 self->sibling[0].prog = &self->root_prog; in FIXTURE_SETUP()
2286 self->sibling[0].metadata = _metadata; in FIXTURE_SETUP()
2287 self->sibling[1].tid = 0; in FIXTURE_SETUP()
2288 self->sibling[1].cond = &self->cond; in FIXTURE_SETUP()
2289 self->sibling[1].started = &self->started; in FIXTURE_SETUP()
2290 self->sibling[1].mutex = &self->mutex; in FIXTURE_SETUP()
2291 self->sibling[1].diverge = 0; in FIXTURE_SETUP()
2292 self->sibling[1].prog = &self->root_prog; in FIXTURE_SETUP()
2293 self->sibling[1].num_waits = 1; in FIXTURE_SETUP()
2294 self->sibling[1].metadata = _metadata; in FIXTURE_SETUP()
2307 struct tsync_sibling *s = &self->sibling[sib]; in FIXTURE_TEARDOWN()
2354 void tsync_start_sibling(struct tsync_sibling *sibling) in tsync_start_sibling() argument
2356 pthread_create(&sibling->tid, NULL, tsync_sibling, (void *)sibling); in tsync_start_sibling()
2388 self->sibling[0].diverge = 1; in TEST_F()
2389 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2390 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2404 /* Ensure diverging sibling failed to call prctl. */ in TEST_F()
2405 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2407 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2427 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2428 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2447 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2449 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2458 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2459 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2473 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2475 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2485 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2486 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2513 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2515 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2535 self->sibling[0].diverge = 1; in TEST_F()
2536 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2537 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2546 ASSERT_EQ(self->sibling[0].system_tid, ret) { in TEST_F()
2547 TH_LOG("Did not fail on diverged sibling."); in TEST_F()
2558 PTHREAD_JOIN(self->sibling[0].tid, &status); in TEST_F()
2560 PTHREAD_JOIN(self->sibling[1].tid, &status); in TEST_F()
2574 * Sibling 0 will have its own seccomp policy in TEST_F()
2575 * and Sibling 1 will not be under seccomp at in TEST_F()
2576 * all. Sibling 1 will enter seccomp and 0 in TEST_F()
2579 self->sibling[0].diverge = 1; in TEST_F()
2580 tsync_start_sibling(&self->sibling[0]); in TEST_F()
2581 tsync_start_sibling(&self->sibling[1]); in TEST_F()
2598 ASSERT_EQ(ret, self->sibling[0].system_tid) { in TEST_F()
2599 TH_LOG("Did not fail on diverged sibling."); in TEST_F()
2602 if (ret == self->sibling[0].system_tid) in TEST_F()
2610 self->sibling[!sib].num_waits += 1; in TEST_F()
2617 PTHREAD_JOIN(self->sibling[sib].tid, &status); in TEST_F()
2620 while (!kill(self->sibling[sib].system_tid, 0)) in TEST_F()
2622 /* Switch to the remaining sibling */ in TEST_F()
2628 TH_LOG("Expected the remaining sibling to sync"); in TEST_F()
2633 /* If remaining sibling didn't have a chance to wake up during in TEST_F()
2636 if (self->sibling[sib].num_waits > 1) in TEST_F()
2637 self->sibling[sib].num_waits = 1; in TEST_F()
2642 PTHREAD_JOIN(self->sibling[sib].tid, &status); in TEST_F()
2645 while (!kill(self->sibling[sib].system_tid, 0)) in TEST_F()