These tests are based on two papers.
kernel.c: kernel entrance/exit, 2.40us

csleep.c: context switch: normal: 25us, real as following:
2.379910e-05
2.870227e-05
7.722068e-05
2.383235e-05
7.521325e-05
2.574143e-05
2.740709e-05
2.772522e-05
2.655104e-05
2.571074e-05
so one context switch: (25-3.67-3.66)/2=9us

pipecost.c: pipe read/write cost: read: 3-4us

usleep.c: sleep resolution: the best you can get from usleep is just 10ms due to system call overhead, etc.
usleep(1)=9.802760e-03
usleep(2)=9.735990e-03
usleep(4)=9.748600e-03
usleep(8)=9.741900e-03
usleep(16)=9.709331e-03
usleep(32)=9.636569e-03
usleep(64)=9.621711e-03
usleep(128)=9.637700e-03
usleep(256)=9.629420e-03
usleep(512)=9.629390e-03
usleep(1024)=9.629650e-03
usleep(2048)=9.637970e-03
usleep(4096)=9.628510e-03
usleep(8192)=9.621559e-03
usleep(16384)=2.000285e-02
usleep(32768)=3.999400e-02
usleep(65536)=6.960680e-02
usleep(131072)=1.400330e-01
usleep(262144)=2.701803e-01
usleep(524288)=5.302440e-01

nanosleep.c: slightly better sleep resolution: 1.5ms.
nanosleep(1)=1.599425e-03
nanosleep(2)=1.599912e-03
nanosleep(4)=1.599778e-03
nanosleep(8)=1.604575e-03
nanosleep(16)=1.647595e-03
nanosleep(32)=2.622105e-03
nanosleep(64)=2.553992e-03
nanosleep(128)=2.696062e-03
nanosleep(256)=1.602963e-03
nanosleep(512)=1.599862e-03
nanosleep(1024)=1.599658e-03
nanosleep(2048)=1.599752e-03
nanosleep(4096)=1.599790e-03
nanosleep(8192)=1.599882e-03
nanosleep(16384)=1.599926e-03
nanosleep(32768)=1.599862e-03
nanosleep(65536)=1.599906e-03
nanosleep(131072)=1.599898e-03
nanosleep(262144)=1.599910e-03
nanosleep(524288)=1.599880e-03
nanosleep(1048576)=1.599920e-03
nanosleep(2097152)=2.399473e-03
nanosleep(4194304)=4.799013e-03
nanosleep(8388608)=8.798059e-03
nanosleep(16777216)=1.679593e-02
nanosleep(33554432)=3.359131e-02
nanosleep(67108864)=6.718864e-02
nanosleep(134217728)=1.343457e-01
nanosleep(268435456)=2.687290e-01
nanosleep(536870912)=5.373360e-01

busy.c: test delay resolution by busy waiting: (-Ofast)
With "volatile" intr:
1 iteration, 3.095198e-08
2 iteration, 6.701207e-08
4 iteration, 9.354401e-08
8 iteration, 1.549759e-07
16 iteration, 1.743568e-06
32 iteration, 5.274239e-07
64 iteration, 1.020157e-06
128 iteration, 2.016761e-06
256 iteration, 3.989757e-06
512 iteration, 7.987694e-06
1024 iteration, 1.592824e-05
2048 iteration, 3.171089e-05
4096 iteration, 6.372127e-05
8192 iteration, 1.267048e-04
16384 iteration, 2.544434e-04
32768 iteration, 5.128662e-04
65536 iteration, 1.013199e-03
131072 iteration, 2.041715e-03
262144 iteration, 4.056017e-03
524288 iteration, 8.134007e-03

Without "volatile":
1 iteration, 6.914139e-12
2 iteration, 1.382828e-11
4 iteration, 2.813339e-11
8 iteration, 3.910065e-11
16 iteration, 8.010864e-11
32 iteration, 1.907349e-10
64 iteration, 3.204346e-10
128 iteration, 7.629883e-10
256 iteration, 1.556496e-09
512 iteration, 2.563641e-09
1024 iteration, 6.229174e-09
2048 iteration, 1.221407e-08
4096 iteration, 2.442813e-08
8192 iteration, 4.103926e-08
16384 iteration, 9.966678e-08
32768 iteration, 1.668930e-07
65536 iteration, 3.973643e-07
131072 iteration, 7.152557e-07
262144 iteration, 1.668930e-06
524288 iteration, 7.033348e-06

abilock.c: abi_lock cost: acquire_lock costs more than release_lock, spin_lock >> acquire_lock
acquire_lock=1.293302e-07
release_lock=5.150080e-08
acquire then release lock=1.656699e-07
//release and spin lock =1.629461e-04
release and spin lock =1.629676e-04
0.732u 0.197s 0:17.55 5.2% 0+0k 1+5io 3pf+0w
crunch% time a.out
acquire_lock=1.289499e-07
release_lock=5.141020e-08
acquire then release lock=1.653707e-07
//release and spin lock =1.844002e-04
release and spin lock =1.852012e-04
0.817u 0.248s 0:19.79 5.3% 0+0k 1+5io 3pf+0w

syield.c : sched_yield cost: sched_yield=1.365002e-05
