Lines Matching refs:sibling

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