1e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project/*
2e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** Copyright 2008 The Android Open Source Project
3e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project**
4e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
5e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** you may not use this file except in compliance with the License.
6e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** You may obtain a copy of the License at
7e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project**
8e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
9e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project**
10e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
11e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
12e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** See the License for the specific language governing permissions and
14e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project** limitations under the License.
15e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project*/
16e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
17e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdlib.h>
18e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdio.h>
19e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <errno.h>
20e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <sys/uio.h>
21e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <unistd.h>
22e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
23e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectint main(int argc, char **argv) {
24e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    int i;
25e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
26e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    struct timeval tv1;
27e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    struct timeval tv2;
28e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    long max = 0;
29e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    long avg = 0;
30e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
31e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    for(i = 1; ; i++) {
32e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        gettimeofday(&tv1, NULL);
33e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        usleep(1000);
34e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        gettimeofday(&tv2, NULL);
35e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
36e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        long usec = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec;
37e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        avg += usec;
38e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
39e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (usec > max) max = usec;
40e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (!(i % 1000)) {
41e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            avg /= 1000;
42e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            printf("max %ld\tavg %ld\n", max, avg);
43e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            max = 0;
44e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            avg = 0;
45e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
46e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
47e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    return 0;
48e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
49