Exemple #1
0
static void show_hostrt_diagnostics(void)
{
	if (!xnvdso_test_feature(cobalt_vdso, XNVDSO_FEAT_HOST_REALTIME)) {
		printf("XNVDSO_FEAT_HOST_REALTIME not available\n");
		return;
	}

	if (cobalt_vdso->hostrt_data.live)
		printf("hostrt data area is live\n");
	else {
		printf("hostrt data area is not live\n");
		return;
	}

	printf("sequence counter : %u\n",
	       cobalt_vdso->hostrt_data.lock.sequence);
	printf("wall_time_sec    : %lld\n",
	       (unsigned long long)cobalt_vdso->hostrt_data.wall_sec);
	printf("wall_time_nsec   : %u\n", cobalt_vdso->hostrt_data.wall_nsec);
	printf("wall_to_monotonic_sec    : %lld\n",
	       (unsigned long long)cobalt_vdso->hostrt_data.wtom_sec);
	printf("wall_to_monotonic_nsec   : %u\n", cobalt_vdso->hostrt_data.wtom_nsec);
	printf("cycle_last       : %Lu\n", (long long)cobalt_vdso->hostrt_data.cycle_last);
	printf("mask             : 0x%Lx\n", (long long)cobalt_vdso->hostrt_data.mask);
	printf("mult             : %u\n", cobalt_vdso->hostrt_data.mult);
	printf("shift            : %u\n\n", cobalt_vdso->hostrt_data.shift);
}
Exemple #2
0
static void show_hostrt_diagnostics(void)
{
	if (!xnvdso_test_feature(vdso, XNVDSO_FEAT_HOST_REALTIME)) {
		printf("XNVDSO_FEAT_HOST_REALTIME not available\n");
		return;
	}

	if (vdso->hostrt_data.live)
		printf("hostrt data area is live\n");
	else {
		printf("hostrt data area is not live\n");
		return;
	}

	printf("Sequence counter : %u\n",
	       vdso->hostrt_data.lock.sequence);
	printf("wall_time_sec    : %ld\n", vdso->hostrt_data.wall_time_sec);
	printf("wall_time_nsec   : %u\n", vdso->hostrt_data.wall_time_nsec);
	printf("wall_to_monotonic\n");
	printf("          tv_sec : %jd\n",
	       (intmax_t)vdso->hostrt_data.wall_to_monotonic.tv_sec);
	printf("         tv_nsec : %ld\n",
	       vdso->hostrt_data.wall_to_monotonic.tv_nsec);
	printf("cycle_last       : %Lu\n", vdso->hostrt_data.cycle_last);
	printf("mask             : 0x%Lx\n", vdso->hostrt_data.mask);
	printf("mult             : %u\n", vdso->hostrt_data.mult);
	printf("shift            : %u\n\n", vdso->hostrt_data.shift);
}
Exemple #3
0
static void show_realtime_offset(void)
{
	if (!xnvdso_test_feature(cobalt_vdso, XNVDSO_FEAT_HOST_REALTIME)) {
		printf("XNVDSO_FEAT_WALLCLOCK_OFFSET not available\n");
		return;
	}

	printf("Wallclock offset : %llu\n", (long long)cobalt_vdso->wallclock_offset);
}
Exemple #4
0
static void cleanup_current_mode(void *key)
{
	unsigned long *mode = key;

	*mode = -1;

	if (xnvdso_test_feature(XNVDSO_FEAT_DROP_U_MODE)) {
		XENOMAI_SYSCALL0(__xn_sys_drop_u_mode);
		free_current_mode(mode);
	}
}
int main(int argc, char **argv)
{
	int res;
	struct timespec ts1, ts2;

	mlockall(MCL_CURRENT|MCL_FUTURE);

	if (!xeno_sem_heap[1]) {
		fprintf(stderr, "Could not determine position of the "
			"global semaphore heap\n");
		return 1;
	}

	if (!xnvdso_test_feature(XNVDSO_FEAT_HOST_REALTIME)) {
		printf("XNVDSO_FEAT_HOST_REALTIME not available\n");
		return 1;
	}

	if (nkvdso->hostrt_data.live)
		printf("hostrt data area is live\n");
	else {
		printf("hostrt data area is not live\n");
		return 2;
	}

	printf("Sequence counter : %u\n",
	       nkvdso->hostrt_data.seqcount.sequence);
	printf("wall_time_sec    : %ld\n", nkvdso->hostrt_data.wall_time_sec);
	printf("wall_time_nsec   : %u\n", nkvdso->hostrt_data.wall_time_nsec);
	printf("wall_to_monotonic\n");
	printf("          tv_sec : %jd\n",
	       (intmax_t)nkvdso->hostrt_data.wall_to_monotonic.tv_sec);
	printf("         tv_nsec : %ld\n",
	       nkvdso->hostrt_data.wall_to_monotonic.tv_nsec);
	printf("cycle_last       : %lu\n", nkvdso->hostrt_data.cycle_last);
	printf("mask             : 0x%lx\n", nkvdso->hostrt_data.mask);
	printf("mult             : %u\n", nkvdso->hostrt_data.mult);
	printf("shift            : %u\n\n", nkvdso->hostrt_data.shift);

	res = clock_gettime(CLOCK_REALTIME, &ts1);
	if (res)
		printf("clock_gettime(CLOCK_REALTIME) failed!\n");

	signal(SIGXCPU, count_modeswitches);
	rt_task_set_mode(0, T_WARNSW, NULL);
	modeswitches = 0;
	res = clock_gettime(CLOCK_HOST_REALTIME, &ts2);
	if (res)
		printf("clock_gettime(CLOCK_HOST_REALTIME) failed!\n");

	if (modeswitches == 1) {
		printf("CLOCK_HOST_REALTIME caused a mode switch.\n");
		return 3;
	}

	rt_task_set_mode(T_CONFORMING, 0, NULL);
	printf("CLOCK_REALTIME     : tv_sec = %jd, tv_nsec = %llu\n",
	       ts1.tv_sec, ts1.tv_nsec);
	printf("CLOCK_HOST_REALTIME: tv_sec = %jd, tv_nsec = %llu\n",
	       ts2.tv_sec, ts2.tv_nsec);
	return 0;
}