ruby_nacl 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +0 -0
- data/README.md +49 -0
- data/ext/ruby_nacl/NaCl/MACROS +56 -0
- data/ext/ruby_nacl/NaCl/OPERATIONS +11 -0
- data/ext/ruby_nacl/NaCl/PROTOTYPES.c +26 -0
- data/ext/ruby_nacl/NaCl/PROTOTYPES.cpp +17 -0
- data/ext/ruby_nacl/NaCl/README +1 -0
- data/ext/ruby_nacl/NaCl/commandline/nacl-sha256.c +64 -0
- data/ext/ruby_nacl/NaCl/commandline/nacl-sha512.c +64 -0
- data/ext/ruby_nacl/NaCl/cpucycles/alpha.c +80 -0
- data/ext/ruby_nacl/NaCl/cpucycles/alpha.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.c +16 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.c +25 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.c +18 -0
- data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/celllinux.c +83 -0
- data/ext/ruby_nacl/NaCl/cpucycles/celllinux.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/cortex.c +73 -0
- data/ext/ruby_nacl/NaCl/cpucycles/cortex.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.c +62 -0
- data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/do +105 -0
- data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.c +32 -0
- data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.c +26 -0
- data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/mips.c +65 -0
- data/ext/ruby_nacl/NaCl/cpucycles/mips.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotonic.c +34 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotonic.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.c +33 -0
- data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/osfreq.c +65 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.c +95 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.c +42 -0
- data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sgi.c +38 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sgi.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.c +16 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/test.c +77 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.c +15 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.c +24 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.c +59 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.h +27 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.c +17 -0
- data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.h +27 -0
- data/ext/ruby_nacl/NaCl/cpuid/cbytes.c +16 -0
- data/ext/ruby_nacl/NaCl/cpuid/cpuid.c +41 -0
- data/ext/ruby_nacl/NaCl/cpuid/do +37 -0
- data/ext/ruby_nacl/NaCl/cpuid/unknown.c +7 -0
- data/ext/ruby_nacl/NaCl/cpuid/x86.c +41 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/hmac.c +83 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/hmac.c +86 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/measure.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/try.c +119 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-auth.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-verify.cpp +14 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/after.c +22 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/api.h +6 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/before.c +17 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/box.c +27 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/keypair.c +12 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_box/measure.c +137 -0
- data/ext/ruby_nacl/NaCl/crypto_box/try.c +195 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-box.cpp +24 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-keypair.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_box/wrapper-open.cpp +27 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/core.c +135 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/core.c +108 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/core.c +134 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_core/salsa208/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_core/try.c +116 -0
- data/ext/ruby_nacl/NaCl/crypto_core/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/measure.c +66 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/hash.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/hash.c +71 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/sha512/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/try.c +77 -0
- data/ext/ruby_nacl/NaCl/crypto_hash/wrapper-hash.cpp +10 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/blocks.c +228 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/blocks.c +212 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/blocks.c +256 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/blocks.c +239 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/try.c +79 -0
- data/ext/ruby_nacl/NaCl/crypto_hashblocks/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/measure.c +69 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/auth.c +1616 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/auth.s +2787 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/constants.s +85 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/auth.c +104 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/auth.s +2779 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/constants.s +85 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/verify.c +9 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/try.c +119 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-auth.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-verify.cpp +14 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/base.c +8 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/const.s +114 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/fromdouble.s +195 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/init.s +13 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mainloop.s +3990 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mult.s +410 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/smult.c +91 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/square.s +298 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/todouble.s +144 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/base.c +8 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/smult.c +477 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/base.c +16 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/smult.c +265 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/measure.c +61 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/try.c +126 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-base.cpp +11 -0
- data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-mult.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/measure.c +75 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/try.c +129 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-box.cpp +19 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-open.cpp +22 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/api.h +4 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/box.c +35 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.c +345 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.h +54 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.c +227 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.h +34 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.c +146 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.h +51 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sign.c +103 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/measure.c +83 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/try.c +86 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-keypair.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign-open.cpp +24 -0
- data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign.cpp +23 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/afternm.s +12308 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/beforenm.s +13694 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/stream.c +14 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor.c +15 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor_afternm.s +12407 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/afternm.c +158 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/api.h +3 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/beforenm.c +59 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.c +64 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.h +788 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.c +14 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.h +28 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.c +128 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.h +47 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/stream.c +28 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/types.h +10 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/xor_afternm.c +180 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/measure.c +73 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/stream.s +4823 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/stream.c +49 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/xor.c +52 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/stream.s +5078 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/try.c +124 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-stream.cpp +12 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-xor.cpp +17 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/api.h +2 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/implementors +1 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/stream.c +22 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/xor.c +23 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/selected +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_stream.h +18 -0
- data/ext/ruby_nacl/NaCl/crypto_stream_aes128ctr.h +33 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/verify.c +24 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/16/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/checksum +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/api.h +1 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/verify.c +40 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/32/used +0 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/measure.c +18 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/try.c +75 -0
- data/ext/ruby_nacl/NaCl/crypto_verify/wrapper-empty.cpp +0 -0
- data/ext/ruby_nacl/NaCl/curvecp/LIBS +31 -0
- data/ext/ruby_nacl/NaCl/curvecp/README +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/SOURCES +36 -0
- data/ext/ruby_nacl/NaCl/curvecp/TARGETS +5 -0
- data/ext/ruby_nacl/NaCl/curvecp/blocking.c +12 -0
- data/ext/ruby_nacl/NaCl/curvecp/blocking.h +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_copy.c +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_isequal.c +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/byte_zero.c +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/crypto_block.c +35 -0
- data/ext/ruby_nacl/NaCl/curvecp/crypto_block.h +4 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpclient.c +476 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpmakekey.c +57 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpmessage.c +654 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpprintkey.c +46 -0
- data/ext/ruby_nacl/NaCl/curvecp/curvecpserver.c +497 -0
- data/ext/ruby_nacl/NaCl/curvecp/die.c +42 -0
- data/ext/ruby_nacl/NaCl/curvecp/die.h +16 -0
- data/ext/ruby_nacl/NaCl/curvecp/e.c +106 -0
- data/ext/ruby_nacl/NaCl/curvecp/e.h +438 -0
- data/ext/ruby_nacl/NaCl/curvecp/hexparse.c +25 -0
- data/ext/ruby_nacl/NaCl/curvecp/hexparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/load.c +33 -0
- data/ext/ruby_nacl/NaCl/curvecp/load.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/nameparse.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/nameparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.c +27 -0
- data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/open.h +10 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_cwd.c +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_lock.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_pipe.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_read.c +17 -0
- data/ext/ruby_nacl/NaCl/curvecp/open_write.c +17 -0
- data/ext/ruby_nacl/NaCl/curvecp/portparse.c +14 -0
- data/ext/ruby_nacl/NaCl/curvecp/portparse.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/randommod.c +14 -0
- data/ext/ruby_nacl/NaCl/curvecp/randommod.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/safenonce.c +74 -0
- data/ext/ruby_nacl/NaCl/curvecp/safenonce.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/savesync.c +24 -0
- data/ext/ruby_nacl/NaCl/curvecp/savesync.h +6 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket.h +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_bind.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_recv.c +23 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_send.c +19 -0
- data/ext/ruby_nacl/NaCl/curvecp/socket_udp.c +36 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.c +7 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.c +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.c +9 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.c +11 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.c +13 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.c +15 -0
- data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.h +8 -0
- data/ext/ruby_nacl/NaCl/curvecp/writeall.c +27 -0
- data/ext/ruby_nacl/NaCl/curvecp/writeall.h +6 -0
- data/ext/ruby_nacl/NaCl/do +468 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int16.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int32.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int64.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_int8.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint16.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint32.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint64.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/crypto_uint8.c +3 -0
- data/ext/ruby_nacl/NaCl/inttypes/do +47 -0
- data/ext/ruby_nacl/NaCl/inttypes/signed.h +17 -0
- data/ext/ruby_nacl/NaCl/inttypes/unsigned.h +17 -0
- data/ext/ruby_nacl/NaCl/measure-anything.c +225 -0
- data/ext/ruby_nacl/NaCl/okcompilers/abiname.c +45 -0
- data/ext/ruby_nacl/NaCl/okcompilers/archivers +2 -0
- data/ext/ruby_nacl/NaCl/okcompilers/c +8 -0
- data/ext/ruby_nacl/NaCl/okcompilers/cpp +8 -0
- data/ext/ruby_nacl/NaCl/okcompilers/do +196 -0
- data/ext/ruby_nacl/NaCl/okcompilers/lib.c +29 -0
- data/ext/ruby_nacl/NaCl/okcompilers/lib.cpp +19 -0
- data/ext/ruby_nacl/NaCl/okcompilers/main.c +25 -0
- data/ext/ruby_nacl/NaCl/okcompilers/main.cpp +22 -0
- data/ext/ruby_nacl/NaCl/randombytes/devurandom.c +34 -0
- data/ext/ruby_nacl/NaCl/randombytes/devurandom.h +24 -0
- data/ext/ruby_nacl/NaCl/randombytes/do +43 -0
- data/ext/ruby_nacl/NaCl/randombytes/test.c +15 -0
- data/ext/ruby_nacl/NaCl/tests/auth.c +19 -0
- data/ext/ruby_nacl/NaCl/tests/auth.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/auth2.c +34 -0
- data/ext/ruby_nacl/NaCl/tests/auth2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/auth3.c +34 -0
- data/ext/ruby_nacl/NaCl/tests/auth3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/auth4.cpp +44 -0
- data/ext/ruby_nacl/NaCl/tests/auth4.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/auth5.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/auth5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/auth6.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/auth6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box.c +63 -0
- data/ext/ruby_nacl/NaCl/tests/box.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/box2.c +64 -0
- data/ext/ruby_nacl/NaCl/tests/box2.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/box3.cpp +60 -0
- data/ext/ruby_nacl/NaCl/tests/box3.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/box4.cpp +66 -0
- data/ext/ruby_nacl/NaCl/tests/box4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/box5.cpp +30 -0
- data/ext/ruby_nacl/NaCl/tests/box5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box6.cpp +43 -0
- data/ext/ruby_nacl/NaCl/tests/box6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box7.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/box7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/box8.c +41 -0
- data/ext/ruby_nacl/NaCl/tests/box8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/core1.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/core1.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core2.c +33 -0
- data/ext/ruby_nacl/NaCl/tests/core2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core3.c +41 -0
- data/ext/ruby_nacl/NaCl/tests/core3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/core4.c +33 -0
- data/ext/ruby_nacl/NaCl/tests/core4.out +8 -0
- data/ext/ruby_nacl/NaCl/tests/core5.c +32 -0
- data/ext/ruby_nacl/NaCl/tests/core5.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/core6.c +47 -0
- data/ext/ruby_nacl/NaCl/tests/core6.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/hash.c +14 -0
- data/ext/ruby_nacl/NaCl/tests/hash.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash2.cpp +18 -0
- data/ext/ruby_nacl/NaCl/tests/hash2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash3.c +14 -0
- data/ext/ruby_nacl/NaCl/tests/hash3.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/hash4.cpp +18 -0
- data/ext/ruby_nacl/NaCl/tests/hash4.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth.c +42 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth.out +2 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth2.c +40 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth5.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth5.out +2 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth6.cpp +50 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth6.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth7.c +36 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth8.cpp +46 -0
- data/ext/ruby_nacl/NaCl/tests/onetimeauth8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult.c +23 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult2.c +23 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult2.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult3.cpp +31 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult3.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult4.cpp +31 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult4.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult5.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult5.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult6.c +30 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult6.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult7.cpp +32 -0
- data/ext/ruby_nacl/NaCl/tests/scalarmult7.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox.c +56 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox2.c +57 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox2.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox3.cpp +52 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox3.out +19 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox4.cpp +54 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox5.cpp +29 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox5.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox6.cpp +42 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox6.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox7.c +32 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox7.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox8.c +37 -0
- data/ext/ruby_nacl/NaCl/tests/secretbox8.out +0 -0
- data/ext/ruby_nacl/NaCl/tests/stream.c +29 -0
- data/ext/ruby_nacl/NaCl/tests/stream.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream2.c +27 -0
- data/ext/ruby_nacl/NaCl/tests/stream2.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream3.c +28 -0
- data/ext/ruby_nacl/NaCl/tests/stream3.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/stream4.c +53 -0
- data/ext/ruby_nacl/NaCl/tests/stream4.out +17 -0
- data/ext/ruby_nacl/NaCl/tests/stream5.cpp +29 -0
- data/ext/ruby_nacl/NaCl/tests/stream5.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream6.cpp +27 -0
- data/ext/ruby_nacl/NaCl/tests/stream6.out +1 -0
- data/ext/ruby_nacl/NaCl/tests/stream7.cpp +30 -0
- data/ext/ruby_nacl/NaCl/tests/stream7.out +4 -0
- data/ext/ruby_nacl/NaCl/tests/stream8.cpp +56 -0
- data/ext/ruby_nacl/NaCl/tests/stream8.out +17 -0
- data/ext/ruby_nacl/NaCl/try-anything.c +173 -0
- data/ext/ruby_nacl/NaCl/version +1 -0
- data/ext/ruby_nacl/extconf.rb +18 -0
- data/ext/ruby_nacl/ruby_nacl.cpp +147 -0
- data/ext/ruby_nacl/ruby_nacl.h +49 -0
- metadata +554 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles/cortex.c version 20101203
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#define SCALE 1
|
|
8
|
+
#include <time.h>
|
|
9
|
+
#include <unistd.h>
|
|
10
|
+
#include <sys/time.h>
|
|
11
|
+
|
|
12
|
+
static int enabled = 0;
|
|
13
|
+
|
|
14
|
+
static int prev[3];
|
|
15
|
+
static unsigned long long prevcycles = 0;
|
|
16
|
+
static int now[3];
|
|
17
|
+
static long long cyclespersec = 0;
|
|
18
|
+
|
|
19
|
+
static void readticks(unsigned int *result)
|
|
20
|
+
{
|
|
21
|
+
struct timeval t;
|
|
22
|
+
unsigned int cc;
|
|
23
|
+
if (!enabled) {
|
|
24
|
+
asm volatile("mcr p15, 0, %0, c9, c12, 0" :: "r"(17));
|
|
25
|
+
asm volatile("mcr p15, 0, %0, c9, c12, 1" :: "r"(0x8000000f));
|
|
26
|
+
asm volatile("mcr p15, 0, %0, c9, c12, 3" :: "r"(0x8000000f));
|
|
27
|
+
enabled = 1;
|
|
28
|
+
}
|
|
29
|
+
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(cc));
|
|
30
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
31
|
+
result[0] = cc;
|
|
32
|
+
result[1] = t.tv_usec;
|
|
33
|
+
result[2] = t.tv_sec;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
long long cpucycles_cortex(void)
|
|
37
|
+
{
|
|
38
|
+
unsigned long long delta4;
|
|
39
|
+
int deltan;
|
|
40
|
+
int deltas;
|
|
41
|
+
unsigned long long guesscycles;
|
|
42
|
+
|
|
43
|
+
readticks(now);
|
|
44
|
+
delta4 = (unsigned int) (now[0] - prev[0]); /* unsigned change in number of cycles mod 2^32 */
|
|
45
|
+
deltan = now[1] - prev[1]; /* signed change in number of nanoseconds mod 10^9 */
|
|
46
|
+
deltas = now[2] - prev[2]; /* signed change in number of seconds */
|
|
47
|
+
if ((deltas == 0 && deltan < 200000) || (deltas == 1 && deltan < -800000))
|
|
48
|
+
return (prevcycles + delta4) * SCALE;
|
|
49
|
+
|
|
50
|
+
prev[0] = now[0];
|
|
51
|
+
prev[1] = now[1];
|
|
52
|
+
prev[2] = now[2];
|
|
53
|
+
|
|
54
|
+
if ((deltas == 0 && deltan < 300000) || (deltas == 1 && deltan < -700000)) {
|
|
55
|
+
// actual number of cycles cannot have increased by 2^32 in <0.3ms
|
|
56
|
+
cyclespersec = 1000000 * (unsigned long long) delta4;
|
|
57
|
+
cyclespersec /= deltan + 1000000 * (long long) deltas;
|
|
58
|
+
} else {
|
|
59
|
+
guesscycles = deltas * cyclespersec;
|
|
60
|
+
guesscycles += (deltan * cyclespersec) / 1000000;
|
|
61
|
+
while (delta4 + 2147483648ULL < guesscycles) delta4 += 4294967296ULL;
|
|
62
|
+
/* XXX: could do longer-term extrapolation here */
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
prevcycles += delta4;
|
|
66
|
+
return prevcycles * SCALE;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
long long cpucycles_cortex_persecond(void)
|
|
70
|
+
{
|
|
71
|
+
while (!cyclespersec) cpucycles_cortex();
|
|
72
|
+
return cyclespersec * SCALE;
|
|
73
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles cortex.h version 20100912
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_cortex_h
|
|
8
|
+
#define CPUCYCLES_cortex_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_cortex(void);
|
|
15
|
+
extern long long cpucycles_cortex_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "cortex"
|
|
23
|
+
#define cpucycles cpucycles_cortex
|
|
24
|
+
#define cpucycles_persecond cpucycles_cortex_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#include <sys/types.h>
|
|
2
|
+
#include <fcntl.h>
|
|
3
|
+
#include <time.h>
|
|
4
|
+
#include <stdio.h>
|
|
5
|
+
#include <unistd.h>
|
|
6
|
+
#include <sys/time.h>
|
|
7
|
+
|
|
8
|
+
static int fddev = -1;
|
|
9
|
+
static int prev[3];
|
|
10
|
+
static unsigned long long prevcycles = 0;
|
|
11
|
+
static int now[3];
|
|
12
|
+
static long long cyclespersec = 0;
|
|
13
|
+
|
|
14
|
+
static void readdev(unsigned int *result)
|
|
15
|
+
{
|
|
16
|
+
if (read(fddev,result,12) == 12) return;
|
|
17
|
+
result[0] = result[1] = result[2] = 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
long long cpucycles_dev4ns(void)
|
|
21
|
+
{
|
|
22
|
+
unsigned long long delta4;
|
|
23
|
+
int deltan;
|
|
24
|
+
int deltas;
|
|
25
|
+
unsigned long long guesscycles;
|
|
26
|
+
|
|
27
|
+
if (fddev == -1) {
|
|
28
|
+
fddev = open("/dev/cpucycles4ns",O_RDONLY);
|
|
29
|
+
readdev(prev);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
readdev(now);
|
|
33
|
+
delta4 = (unsigned int) (now[0] - prev[0]); /* unsigned change in number of cycles mod 2^32 */
|
|
34
|
+
deltan = now[1] - prev[1]; /* signed change in number of nanoseconds mod 10^9 */
|
|
35
|
+
deltas = now[2] - prev[2]; /* signed change in number of seconds */
|
|
36
|
+
if ((deltas == 0 && deltan < 200000000) || (deltas == 1 && deltan < -800000000))
|
|
37
|
+
return prevcycles + delta4;
|
|
38
|
+
|
|
39
|
+
prev[0] = now[0];
|
|
40
|
+
prev[1] = now[1];
|
|
41
|
+
prev[2] = now[2];
|
|
42
|
+
|
|
43
|
+
if ((deltas == 0 && deltan < 300000000) || (deltas == 1 && deltan < -700000000)) {
|
|
44
|
+
// actual number of cycles cannot have increased by 2^32 in <0.3ms
|
|
45
|
+
cyclespersec = 1000000000 * (unsigned long long) delta4;
|
|
46
|
+
cyclespersec /= deltan + 1000000000 * (long long) deltas;
|
|
47
|
+
} else {
|
|
48
|
+
guesscycles = deltas * cyclespersec;
|
|
49
|
+
guesscycles += (deltan * cyclespersec) / 1000000000;
|
|
50
|
+
while (delta4 + 2147483648ULL < guesscycles) delta4 += 4294967296ULL;
|
|
51
|
+
/* XXX: could do longer-term extrapolation here */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
prevcycles += delta4;
|
|
55
|
+
return prevcycles;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
long long cpucycles_dev4ns_persecond(void)
|
|
59
|
+
{
|
|
60
|
+
while (!cyclespersec) cpucycles_dev4ns();
|
|
61
|
+
return cyclespersec;
|
|
62
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles dev4ns.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_dev4ns_h
|
|
8
|
+
#define CPUCYCLES_dev4ns_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_dev4ns(void);
|
|
15
|
+
extern long long cpucycles_dev4ns_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "dev4ns"
|
|
23
|
+
#define cpucycles cpucycles_dev4ns
|
|
24
|
+
#define cpucycles_persecond cpucycles_dev4ns_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/bin/sh -e
|
|
2
|
+
|
|
3
|
+
okabi | (
|
|
4
|
+
while read abi
|
|
5
|
+
do
|
|
6
|
+
|
|
7
|
+
rm -f cpucycles.o cpucycles.h
|
|
8
|
+
|
|
9
|
+
(
|
|
10
|
+
case "$abi" in
|
|
11
|
+
ppc*)
|
|
12
|
+
echo powerpccpuinfo
|
|
13
|
+
echo powerpcmacos
|
|
14
|
+
;;
|
|
15
|
+
amd64*)
|
|
16
|
+
echo amd64tscfreq
|
|
17
|
+
echo amd64cpuinfo
|
|
18
|
+
echo amd64cpuspeed
|
|
19
|
+
;;
|
|
20
|
+
x86*)
|
|
21
|
+
echo x86tscfreq
|
|
22
|
+
echo x86cpuinfo
|
|
23
|
+
echo x86cpuspeed
|
|
24
|
+
echo x86estimate
|
|
25
|
+
;;
|
|
26
|
+
cell*)
|
|
27
|
+
echo celllinux
|
|
28
|
+
;;
|
|
29
|
+
sparc*)
|
|
30
|
+
echo sparccpuinfo
|
|
31
|
+
echo sparc32cpuinfo
|
|
32
|
+
;;
|
|
33
|
+
mips*)
|
|
34
|
+
echo mips
|
|
35
|
+
;;
|
|
36
|
+
hppa*)
|
|
37
|
+
echo hppapstat
|
|
38
|
+
;;
|
|
39
|
+
alpha*)
|
|
40
|
+
echo alpha
|
|
41
|
+
;;
|
|
42
|
+
sgi*)
|
|
43
|
+
echo sgi
|
|
44
|
+
;;
|
|
45
|
+
arm*)
|
|
46
|
+
echo cortex
|
|
47
|
+
echo dev4ns
|
|
48
|
+
;;
|
|
49
|
+
esac
|
|
50
|
+
|
|
51
|
+
echo amd64tscfreq
|
|
52
|
+
echo amd64cpuinfo
|
|
53
|
+
echo amd64cpuspeed
|
|
54
|
+
echo x86tscfreq
|
|
55
|
+
echo x86cpuinfo
|
|
56
|
+
echo x86cpuspeed
|
|
57
|
+
echo x86estimate
|
|
58
|
+
echo ia64cpuinfo
|
|
59
|
+
echo powerpccpuinfo
|
|
60
|
+
echo powerpcmacos
|
|
61
|
+
echo celllinux
|
|
62
|
+
echo sparccpuinfo
|
|
63
|
+
echo sparc32cpuinfo
|
|
64
|
+
echo mips
|
|
65
|
+
echo hppapstat
|
|
66
|
+
echo alpha
|
|
67
|
+
echo sgi
|
|
68
|
+
echo cortex
|
|
69
|
+
echo dev4ns
|
|
70
|
+
echo monotoniccpuinfo
|
|
71
|
+
echo monotonic
|
|
72
|
+
echo gettimeofday
|
|
73
|
+
) | (
|
|
74
|
+
while read n
|
|
75
|
+
do
|
|
76
|
+
okc-$abi | (
|
|
77
|
+
while read c
|
|
78
|
+
do
|
|
79
|
+
echo "=== `date` === Trying $n.c with $c..." >&2
|
|
80
|
+
rm -f test cpucycles-impl.o cpucycles-impl.h cpucycles-impl.c
|
|
81
|
+
cp $n.c cpucycles-impl.c || continue
|
|
82
|
+
cp $n.h cpucycles-impl.h || continue
|
|
83
|
+
$c -c cpucycles-impl.c || continue
|
|
84
|
+
$c -o test test.c cpucycles-impl.o || continue
|
|
85
|
+
./test || continue
|
|
86
|
+
echo "=== `date` === Success. Using $n.c." >&2
|
|
87
|
+
mkdir -p lib/$abi
|
|
88
|
+
mv cpucycles-impl.o lib/$abi/cpucycles.o
|
|
89
|
+
mkdir -p include/$abi
|
|
90
|
+
mv cpucycles-impl.h include/$abi/cpucycles.h
|
|
91
|
+
exit 0
|
|
92
|
+
done
|
|
93
|
+
exit 111
|
|
94
|
+
) && exit 0
|
|
95
|
+
done
|
|
96
|
+
exit 111
|
|
97
|
+
) || (
|
|
98
|
+
echo ===== Giving up. >&2
|
|
99
|
+
rm -f test cpucycles-impl.o cpucycles-impl.h cpucycles-impl.c
|
|
100
|
+
exit 111
|
|
101
|
+
) || exit 0
|
|
102
|
+
|
|
103
|
+
done
|
|
104
|
+
exit 0
|
|
105
|
+
) || exit 111
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <unistd.h>
|
|
4
|
+
#include <sys/time.h>
|
|
5
|
+
#include <sys/types.h>
|
|
6
|
+
#include "osfreq.c"
|
|
7
|
+
|
|
8
|
+
static double cpufrequency = 0;
|
|
9
|
+
|
|
10
|
+
static void init(void)
|
|
11
|
+
{
|
|
12
|
+
cpufrequency = osfreq();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
long long cpucycles_gettimeofday(void)
|
|
16
|
+
{
|
|
17
|
+
double result;
|
|
18
|
+
struct timeval t;
|
|
19
|
+
if (!cpufrequency) init();
|
|
20
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
21
|
+
result = t.tv_usec;
|
|
22
|
+
result *= 0.000001;
|
|
23
|
+
result += (double) t.tv_sec;
|
|
24
|
+
result *= cpufrequency;
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
long long cpucycles_gettimeofday_persecond(void)
|
|
29
|
+
{
|
|
30
|
+
if (!cpufrequency) init();
|
|
31
|
+
return cpufrequency;
|
|
32
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles gettimeofday.h version 20060318
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_gettimeofday_h
|
|
8
|
+
#define CPUCYCLES_gettimeofday_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_gettimeofday(void);
|
|
15
|
+
extern long long cpucycles_gettimeofday_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "gettimeofday"
|
|
23
|
+
#define cpucycles cpucycles_gettimeofday
|
|
24
|
+
#define cpucycles_persecond cpucycles_gettimeofday_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <unistd.h>
|
|
3
|
+
#include <sys/types.h>
|
|
4
|
+
#include <sys/param.h>
|
|
5
|
+
#include <sys/pstat.h>
|
|
6
|
+
#include <machine/inline.h>
|
|
7
|
+
|
|
8
|
+
long long cpucycles_hppapstat(void)
|
|
9
|
+
{
|
|
10
|
+
register long long result;
|
|
11
|
+
_MFCTL(16,result);
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
long long cpucycles_hppapstat_persecond(void)
|
|
16
|
+
{
|
|
17
|
+
struct pst_processor pst;
|
|
18
|
+
union pstun pu;
|
|
19
|
+
double result;
|
|
20
|
+
|
|
21
|
+
pu.pst_processor = &pst;
|
|
22
|
+
if (pstat(PSTAT_PROCESSOR,pu,sizeof(pst),1,0) < 0) return 0;
|
|
23
|
+
result = pst.psp_iticksperclktick;
|
|
24
|
+
result *= (double) sysconf(_SC_CLK_TCK);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles hppapstat.h version 20060319
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_hppapstat_h
|
|
8
|
+
#define CPUCYCLES_hppapstat_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_hppapstat(void);
|
|
15
|
+
extern long long cpucycles_hppapstat_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "hppapstat"
|
|
23
|
+
#define cpucycles cpucycles_hppapstat
|
|
24
|
+
#define cpucycles_persecond cpucycles_hppapstat_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include "osfreq.c"
|
|
4
|
+
|
|
5
|
+
long long cpucycles_ia64cpuinfo(void)
|
|
6
|
+
{
|
|
7
|
+
long long result;
|
|
8
|
+
asm volatile("mov %0=ar.itc" : "=r"(result));
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
long long cpucycles_ia64cpuinfo_persecond(void)
|
|
13
|
+
{
|
|
14
|
+
return osfreq();
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles ia64cpuinfo.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_ia64cpuinfo_h
|
|
8
|
+
#define CPUCYCLES_ia64cpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_ia64cpuinfo(void);
|
|
15
|
+
extern long long cpucycles_ia64cpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "ia64cpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_ia64cpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_ia64cpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles/mips.c version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#define SCALE 2
|
|
8
|
+
#include <time.h>
|
|
9
|
+
#include <unistd.h>
|
|
10
|
+
#include <sys/time.h>
|
|
11
|
+
|
|
12
|
+
static int prev[3];
|
|
13
|
+
static unsigned long long prevcycles = 0;
|
|
14
|
+
static int now[3];
|
|
15
|
+
static long long cyclespersec = 0;
|
|
16
|
+
|
|
17
|
+
static void readticks(unsigned int *result)
|
|
18
|
+
{
|
|
19
|
+
struct timeval t;
|
|
20
|
+
unsigned int cc;
|
|
21
|
+
asm volatile(".byte 59; .byte 16; .byte 2; .byte 124; move %0,$2" : "=r"(cc) : : "$2");
|
|
22
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
23
|
+
result[0] = cc;
|
|
24
|
+
result[1] = t.tv_usec;
|
|
25
|
+
result[2] = t.tv_sec;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
long long cpucycles_mips(void)
|
|
29
|
+
{
|
|
30
|
+
unsigned long long delta4;
|
|
31
|
+
int deltan;
|
|
32
|
+
int deltas;
|
|
33
|
+
unsigned long long guesscycles;
|
|
34
|
+
|
|
35
|
+
readticks(now);
|
|
36
|
+
delta4 = (unsigned int) (now[0] - prev[0]); /* unsigned change in number of cycles mod 2^32 */
|
|
37
|
+
deltan = now[1] - prev[1]; /* signed change in number of nanoseconds mod 10^9 */
|
|
38
|
+
deltas = now[2] - prev[2]; /* signed change in number of seconds */
|
|
39
|
+
if ((deltas == 0 && deltan < 200000) || (deltas == 1 && deltan < -800000))
|
|
40
|
+
return (prevcycles + delta4) * SCALE;
|
|
41
|
+
|
|
42
|
+
prev[0] = now[0];
|
|
43
|
+
prev[1] = now[1];
|
|
44
|
+
prev[2] = now[2];
|
|
45
|
+
|
|
46
|
+
if ((deltas == 0 && deltan < 300000) || (deltas == 1 && deltan < -700000)) {
|
|
47
|
+
// actual number of cycles cannot have increased by 2^32 in <0.3ms
|
|
48
|
+
cyclespersec = 1000000 * (unsigned long long) delta4;
|
|
49
|
+
cyclespersec /= deltan + 1000000 * (long long) deltas;
|
|
50
|
+
} else {
|
|
51
|
+
guesscycles = deltas * cyclespersec;
|
|
52
|
+
guesscycles += (deltan * cyclespersec) / 1000000;
|
|
53
|
+
while (delta4 + 2147483648ULL < guesscycles) delta4 += 4294967296ULL;
|
|
54
|
+
/* XXX: could do longer-term extrapolation here */
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
prevcycles += delta4;
|
|
58
|
+
return prevcycles * SCALE;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
long long cpucycles_mips_persecond(void)
|
|
62
|
+
{
|
|
63
|
+
while (!cyclespersec) cpucycles_mips();
|
|
64
|
+
return cyclespersec * SCALE;
|
|
65
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles mips.h version 20100802
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_mips_h
|
|
8
|
+
#define CPUCYCLES_mips_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_mips(void);
|
|
15
|
+
extern long long cpucycles_mips_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "mips"
|
|
23
|
+
#define cpucycles cpucycles_mips
|
|
24
|
+
#define cpucycles_persecond cpucycles_mips_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <unistd.h>
|
|
4
|
+
#include <sys/time.h>
|
|
5
|
+
#include <sys/types.h>
|
|
6
|
+
#include <sys/sysctl.h>
|
|
7
|
+
|
|
8
|
+
static double cpufrequency = 0;
|
|
9
|
+
|
|
10
|
+
static void init(void)
|
|
11
|
+
{
|
|
12
|
+
long result = 0; size_t resultlen = sizeof(long);
|
|
13
|
+
sysctlbyname("machdep.tsc_freq",&result,&resultlen,0,0);
|
|
14
|
+
cpufrequency = result;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
long long cpucycles_monotonic(void)
|
|
18
|
+
{
|
|
19
|
+
double result;
|
|
20
|
+
struct timespec t;
|
|
21
|
+
if (!cpufrequency) init();
|
|
22
|
+
clock_gettime(CLOCK_MONOTONIC,&t);
|
|
23
|
+
result = t.tv_nsec;
|
|
24
|
+
result *= 0.000000001;
|
|
25
|
+
result += (double) t.tv_sec;
|
|
26
|
+
result *= cpufrequency;
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
long long cpucycles_monotonic_persecond(void)
|
|
31
|
+
{
|
|
32
|
+
if (!cpufrequency) init();
|
|
33
|
+
return cpufrequency;
|
|
34
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles monotonic.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_monotonic_h
|
|
8
|
+
#define CPUCYCLES_monotonic_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_monotonic(void);
|
|
15
|
+
extern long long cpucycles_monotonic_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "monotonic"
|
|
23
|
+
#define cpucycles cpucycles_monotonic
|
|
24
|
+
#define cpucycles_persecond cpucycles_monotonic_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <unistd.h>
|
|
4
|
+
#include <sys/time.h>
|
|
5
|
+
#include <sys/types.h>
|
|
6
|
+
#include <sys/sysctl.h>
|
|
7
|
+
#include "osfreq.c"
|
|
8
|
+
|
|
9
|
+
static double cpufrequency = 0;
|
|
10
|
+
|
|
11
|
+
static void init(void)
|
|
12
|
+
{
|
|
13
|
+
cpufrequency = osfreq();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
long long cpucycles_monotoniccpuinfo(void)
|
|
17
|
+
{
|
|
18
|
+
double result;
|
|
19
|
+
struct timespec t;
|
|
20
|
+
if (!cpufrequency) init();
|
|
21
|
+
clock_gettime(CLOCK_MONOTONIC,&t);
|
|
22
|
+
result = t.tv_nsec;
|
|
23
|
+
result *= 0.000000001;
|
|
24
|
+
result += (double) t.tv_sec;
|
|
25
|
+
result *= cpufrequency;
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
long long cpucycles_monotoniccpuinfo_persecond(void)
|
|
30
|
+
{
|
|
31
|
+
if (!cpufrequency) init();
|
|
32
|
+
return cpufrequency;
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles monotoniccpuinfo.h version 20100804
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_monotoniccpuinfo_h
|
|
8
|
+
#define CPUCYCLES_monotoniccpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_monotoniccpuinfo(void);
|
|
15
|
+
extern long long cpucycles_monotoniccpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "monotoniccpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_monotoniccpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_monotoniccpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|