summaryrefslogtreecommitdiff
path: root/open_issues/performance/io_system/test-mach.c
blob: 903373465b142d37a36e4d3e9a9f3d9acdcc0a6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define _GNU_SOURCE
#include <stdio.h>
#include <fcntl.h>
#include <mach/mach.h>
#define N 1000000
int main(void) {
	struct timeval tv1, tv2;
	int i;
	task_t task;
	task = mach_task_self();
	mach_port_urefs_t refs;
	gettimeofday(&tv1, NULL);
	for (i = 0; i < N; i++) {
		mach_port_get_refs(task, task, MACH_PORT_RIGHT_RECEIVE, &refs);
	}
	gettimeofday(&tv2, NULL);
	printf("%fµs\n", (float)((tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec)/N);
	return 0;
}