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,65 @@
|
|
|
1
|
+
static double osfreq(void)
|
|
2
|
+
{
|
|
3
|
+
FILE *f;
|
|
4
|
+
double result;
|
|
5
|
+
int s;
|
|
6
|
+
|
|
7
|
+
f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r");
|
|
8
|
+
if (f) {
|
|
9
|
+
s = fscanf(f,"%lf",&result);
|
|
10
|
+
fclose(f);
|
|
11
|
+
if (s > 0) return 1000.0 * result;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
f = fopen("/sys/devices/system/cpu/cpu0/clock_tick", "r");
|
|
15
|
+
if (f) {
|
|
16
|
+
s = fscanf(f,"%lf",&result);
|
|
17
|
+
fclose(f);
|
|
18
|
+
if (s > 0) return result;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
f = fopen("/proc/cpuinfo","r");
|
|
22
|
+
if (f) {
|
|
23
|
+
for (;;) {
|
|
24
|
+
s = fscanf(f,"cpu MHz : %lf",&result);
|
|
25
|
+
if (s > 0) break;
|
|
26
|
+
if (s == 0) s = fscanf(f,"%*[^\n]\n");
|
|
27
|
+
if (s < 0) { result = 0; break; }
|
|
28
|
+
}
|
|
29
|
+
fclose(f);
|
|
30
|
+
if (result) return 1000000.0 * result;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
f = fopen("/proc/cpuinfo","r");
|
|
34
|
+
if (f) {
|
|
35
|
+
for (;;) {
|
|
36
|
+
s = fscanf(f,"clock : %lf",&result);
|
|
37
|
+
if (s > 0) break;
|
|
38
|
+
if (s == 0) s = fscanf(f,"%*[^\n]\n");
|
|
39
|
+
if (s < 0) { result = 0; break; }
|
|
40
|
+
}
|
|
41
|
+
fclose(f);
|
|
42
|
+
if (result) return 1000000.0 * result;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
f = popen("/usr/sbin/lsattr -E -l proc0 -a frequency 2>/dev/null","r");
|
|
46
|
+
if (f) {
|
|
47
|
+
s = fscanf(f,"frequency %lf",&result);
|
|
48
|
+
pclose(f);
|
|
49
|
+
if (s > 0) return result;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
f = popen("/usr/sbin/psrinfo -v 2>/dev/null","r");
|
|
53
|
+
if (f) {
|
|
54
|
+
for (;;) {
|
|
55
|
+
s = fscanf(f," The %*s processor operates at %lf MHz",&result);
|
|
56
|
+
if (s > 0) break;
|
|
57
|
+
if (s == 0) s = fscanf(f,"%*[^\n]\n");
|
|
58
|
+
if (s < 0) { result = 0; break; }
|
|
59
|
+
}
|
|
60
|
+
pclose(f);
|
|
61
|
+
if (result) return 1000000.0 * result;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
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 long myround(double u)
|
|
9
|
+
{
|
|
10
|
+
long result = u;
|
|
11
|
+
while (result + 0.5 < u) result += 1;
|
|
12
|
+
while (result - 0.5 > u) result -= 1;
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static long long microseconds(void)
|
|
17
|
+
{
|
|
18
|
+
struct timeval t;
|
|
19
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
20
|
+
return t.tv_sec * (long long) 1000000 + t.tv_usec;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static int tbshift = 0;
|
|
24
|
+
|
|
25
|
+
static long long timebase(void)
|
|
26
|
+
{
|
|
27
|
+
unsigned long high;
|
|
28
|
+
unsigned long low;
|
|
29
|
+
unsigned long newhigh;
|
|
30
|
+
unsigned long long result;
|
|
31
|
+
asm volatile(
|
|
32
|
+
"7:mftbu %0;mftb %1;mftbu %2;cmpw %0,%2;bne 7b"
|
|
33
|
+
: "=r" (high), "=r" (low), "=r" (newhigh)
|
|
34
|
+
);
|
|
35
|
+
result = high;
|
|
36
|
+
result <<= 32;
|
|
37
|
+
result |= low;
|
|
38
|
+
return result >> tbshift;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static double cpufrequency = 0;
|
|
42
|
+
static long tbcycles = 0;
|
|
43
|
+
|
|
44
|
+
static double guesstbcycles(void)
|
|
45
|
+
{
|
|
46
|
+
long long tb0; long long us0;
|
|
47
|
+
long long tb1; long long us1;
|
|
48
|
+
|
|
49
|
+
tb0 = timebase();
|
|
50
|
+
us0 = microseconds();
|
|
51
|
+
do {
|
|
52
|
+
tb1 = timebase();
|
|
53
|
+
us1 = microseconds();
|
|
54
|
+
} while (us1 - us0 < 10000 || tb1 - tb0 < 1000);
|
|
55
|
+
if (tb1 <= tb0) return 0;
|
|
56
|
+
tb1 -= tb0;
|
|
57
|
+
us1 -= us0;
|
|
58
|
+
return (cpufrequency * 0.000001 * (double) us1) / (double) tb1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static void init(void)
|
|
62
|
+
{
|
|
63
|
+
int loop;
|
|
64
|
+
double guess1;
|
|
65
|
+
double guess2;
|
|
66
|
+
|
|
67
|
+
cpufrequency = osfreq();
|
|
68
|
+
if (!cpufrequency) return;
|
|
69
|
+
|
|
70
|
+
for (tbshift = 0;tbshift < 10;++tbshift) {
|
|
71
|
+
for (loop = 0;loop < 100;++loop) {
|
|
72
|
+
guess1 = guesstbcycles();
|
|
73
|
+
guess2 = guesstbcycles();
|
|
74
|
+
tbcycles = myround(guess1);
|
|
75
|
+
if (guess1 - tbcycles > 0.1) continue;
|
|
76
|
+
if (tbcycles - guess1 > 0.1) continue;
|
|
77
|
+
if (guess2 - tbcycles > 0.1) continue;
|
|
78
|
+
if (tbcycles - guess2 > 0.1) continue;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
tbcycles = 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
long long cpucycles_powerpccpuinfo(void)
|
|
86
|
+
{
|
|
87
|
+
if (!tbcycles) init();
|
|
88
|
+
return timebase() * tbcycles;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
long long cpucycles_powerpccpuinfo_persecond(void)
|
|
92
|
+
{
|
|
93
|
+
if (!tbcycles) init();
|
|
94
|
+
return cpufrequency;
|
|
95
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles powerpccpuinfo.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_powerpccpuinfo_h
|
|
8
|
+
#define CPUCYCLES_powerpccpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_powerpccpuinfo(void);
|
|
15
|
+
extern long long cpucycles_powerpccpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "powerpccpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_powerpccpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_powerpccpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#include <sys/types.h>
|
|
2
|
+
#include <sys/sysctl.h>
|
|
3
|
+
#include <mach/mach_time.h>
|
|
4
|
+
|
|
5
|
+
#define timebase mach_absolute_time
|
|
6
|
+
|
|
7
|
+
static int cpumib[2] = { CTL_HW, HW_CPU_FREQ } ;
|
|
8
|
+
static int tbmib[2] = { CTL_HW, HW_TB_FREQ } ;
|
|
9
|
+
|
|
10
|
+
static long myround(double u)
|
|
11
|
+
{
|
|
12
|
+
long result = u;
|
|
13
|
+
while (result + 0.5 < u) result += 1;
|
|
14
|
+
while (result - 0.5 > u) result -= 1;
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
static long tbcycles = 0;
|
|
19
|
+
|
|
20
|
+
static void init(void)
|
|
21
|
+
{
|
|
22
|
+
unsigned int cpufrequency = 0; size_t cpufrequencylen = sizeof(unsigned int);
|
|
23
|
+
unsigned int tbfrequency = 0; size_t tbfrequencylen = sizeof(unsigned int);
|
|
24
|
+
sysctl(cpumib,2,&cpufrequency,&cpufrequencylen,0,0);
|
|
25
|
+
sysctl(tbmib,2,&tbfrequency,&tbfrequencylen,0,0);
|
|
26
|
+
if (tbfrequency > 0)
|
|
27
|
+
tbcycles = myround((double) (unsigned long long) cpufrequency
|
|
28
|
+
/ (double) (unsigned long long) tbfrequency);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
long long cpucycles_powerpcmacos(void)
|
|
32
|
+
{
|
|
33
|
+
if (!tbcycles) init();
|
|
34
|
+
return timebase() * tbcycles;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
long long cpucycles_powerpcmacos_persecond(void)
|
|
38
|
+
{
|
|
39
|
+
unsigned int result = 0; size_t resultlen = sizeof(unsigned int);
|
|
40
|
+
sysctl(cpumib,2,&result,&resultlen,0,0);
|
|
41
|
+
return (unsigned long long) result;
|
|
42
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles powerpcmacos.h version 20060319
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_powerpcmacos_h
|
|
8
|
+
#define CPUCYCLES_powerpcmacos_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_powerpcmacos(void);
|
|
15
|
+
extern long long cpucycles_powerpcmacos_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "powerpcmacos"
|
|
23
|
+
#define cpucycles cpucycles_powerpcmacos
|
|
24
|
+
#define cpucycles_persecond cpucycles_powerpcmacos_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
FILE *f;
|
|
13
|
+
|
|
14
|
+
f = popen("hinv -c processor | awk '{if ($3==\"MHZ\") print $2*1000000}'","r");
|
|
15
|
+
if (!f) return;
|
|
16
|
+
if (fscanf(f,"%lf",&cpufrequency) < 1) cpufrequency = 0;
|
|
17
|
+
pclose(f);
|
|
18
|
+
if (!cpufrequency) return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
long long cpucycles_sgi(void)
|
|
22
|
+
{
|
|
23
|
+
double result;
|
|
24
|
+
struct timespec t;
|
|
25
|
+
if (!cpufrequency) init();
|
|
26
|
+
clock_gettime(CLOCK_SGI_CYCLE,&t);
|
|
27
|
+
result = t.tv_nsec;
|
|
28
|
+
result *= 0.000000001;
|
|
29
|
+
result += (double) t.tv_sec;
|
|
30
|
+
result *= cpufrequency;
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
long long cpucycles_sgi_persecond(void)
|
|
35
|
+
{
|
|
36
|
+
if (!cpufrequency) init();
|
|
37
|
+
return cpufrequency;
|
|
38
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles sgi.h version 20070916
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_sgi_h
|
|
8
|
+
#define CPUCYCLES_sgi_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_sgi(void);
|
|
15
|
+
extern long long cpucycles_sgi_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "sgi"
|
|
23
|
+
#define cpucycles cpucycles_sgi
|
|
24
|
+
#define cpucycles_persecond cpucycles_sgi_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include "osfreq.c"
|
|
4
|
+
|
|
5
|
+
long long cpucycles_sparc32cpuinfo(void)
|
|
6
|
+
{
|
|
7
|
+
long long result;
|
|
8
|
+
asm volatile(".word 2202075136; .word 2570088480; srl %%g1,0,%L0; mov %%o4,%H0"
|
|
9
|
+
: "=r" (result) : : "g1","o4");
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
long long cpucycles_sparc32cpuinfo_persecond(void)
|
|
14
|
+
{
|
|
15
|
+
return osfreq();
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles sparc32cpuinfo.h version 20100804
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_sparc32cpuinfo_h
|
|
8
|
+
#define CPUCYCLES_sparc32cpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_sparc32cpuinfo(void);
|
|
15
|
+
extern long long cpucycles_sparc32cpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "sparc32cpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_sparc32cpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_sparc32cpuinfo_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_sparccpuinfo(void)
|
|
6
|
+
{
|
|
7
|
+
long long result;
|
|
8
|
+
asm volatile("rd %%tick,%0" : "=r" (result));
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
long long cpucycles_sparccpuinfo_persecond(void)
|
|
13
|
+
{
|
|
14
|
+
return osfreq();
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles sparccpuinfo.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_sparccpuinfo_h
|
|
8
|
+
#define CPUCYCLES_sparccpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_sparccpuinfo(void);
|
|
15
|
+
extern long long cpucycles_sparccpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "sparccpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_sparccpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_sparccpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <unistd.h>
|
|
4
|
+
#include <sys/time.h>
|
|
5
|
+
#include "cpucycles-impl.h"
|
|
6
|
+
|
|
7
|
+
static long long tod(void)
|
|
8
|
+
{
|
|
9
|
+
struct timeval t;
|
|
10
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
11
|
+
return t.tv_sec * (long long) 1000000 + t.tv_usec;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
long long todstart;
|
|
15
|
+
long long todend;
|
|
16
|
+
long long cpustart;
|
|
17
|
+
long long cpuend;
|
|
18
|
+
|
|
19
|
+
long long cyclespersecond;
|
|
20
|
+
long long cyclespertod;
|
|
21
|
+
|
|
22
|
+
long long t[1001];
|
|
23
|
+
|
|
24
|
+
int main()
|
|
25
|
+
{
|
|
26
|
+
int j;
|
|
27
|
+
int i;
|
|
28
|
+
|
|
29
|
+
if (!cpucycles()) {
|
|
30
|
+
fprintf(stderr,"cpucycles() = %lld\n",cpucycles());
|
|
31
|
+
return 100;
|
|
32
|
+
}
|
|
33
|
+
for (i = 0;i <= 1000;++i) t[i] = cpucycles();
|
|
34
|
+
for (i = 0;i < 1000;++i) if (t[i] > t[i + 1]) {
|
|
35
|
+
fprintf(stderr,"t[%d] = %lld\n",i,t[i]);
|
|
36
|
+
fprintf(stderr,"t[%d] = %lld\n",i + 1,t[i + 1]);
|
|
37
|
+
fprintf(stderr,"cpucycles_persecond() = %lld\n",cpucycles_persecond());
|
|
38
|
+
return 100;
|
|
39
|
+
}
|
|
40
|
+
if (t[0] == t[1000]) {
|
|
41
|
+
fprintf(stderr,"t[%d] = %lld\n",0,t[0]);
|
|
42
|
+
fprintf(stderr,"t[%d] = %lld\n",1000,t[1000]);
|
|
43
|
+
fprintf(stderr,"cpucycles_persecond() = %lld\n",cpucycles_persecond());
|
|
44
|
+
return 100;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
cyclespersecond = cpucycles_persecond();
|
|
48
|
+
|
|
49
|
+
if (cyclespersecond <= 0) {
|
|
50
|
+
fprintf(stderr,"cpucycles_persecond() = %lld\n",cyclespersecond);
|
|
51
|
+
return 100;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
todstart = tod();
|
|
55
|
+
cpustart = cpucycles();
|
|
56
|
+
for (j = 0;j < 1000;++j) for (i = 0;i <= 1000;++i) t[i] = t[i] + i + j;
|
|
57
|
+
todend = tod();
|
|
58
|
+
cpuend = cpucycles();
|
|
59
|
+
|
|
60
|
+
todend -= todstart;
|
|
61
|
+
cpuend -= cpustart;
|
|
62
|
+
|
|
63
|
+
cyclespertod = (long long) (((double) cpuend) * 1000000.0 / (double) todend);
|
|
64
|
+
|
|
65
|
+
if (cyclespertod > 10 * cyclespersecond) {
|
|
66
|
+
fprintf(stderr,"cyclespertod = %lld, cyclespersecond = %lld\n",cyclespertod,cyclespersecond);
|
|
67
|
+
return 100;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
for (i = 0;i <= 1000;++i) t[i] = cpucycles();
|
|
71
|
+
printf("%s",cpucycles_implementation);
|
|
72
|
+
printf(" %lld",cyclespersecond);
|
|
73
|
+
printf(" %lld",cyclespertod);
|
|
74
|
+
for (i = 0;i < 64;++i) printf(" %lld",t[i + 1] - t[i]);
|
|
75
|
+
printf("\n");
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include "osfreq.c"
|
|
4
|
+
|
|
5
|
+
long long cpucycles_x86cpuinfo(void)
|
|
6
|
+
{
|
|
7
|
+
long long result;
|
|
8
|
+
asm volatile(".byte 15;.byte 49" : "=A" (result));
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
long long cpucycles_x86cpuinfo_persecond(void)
|
|
13
|
+
{
|
|
14
|
+
return osfreq();
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles x86cpuinfo.h version 20100803
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_x86cpuinfo_h
|
|
8
|
+
#define CPUCYCLES_x86cpuinfo_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_x86cpuinfo(void);
|
|
15
|
+
extern long long cpucycles_x86cpuinfo_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "x86cpuinfo"
|
|
23
|
+
#define cpucycles cpucycles_x86cpuinfo
|
|
24
|
+
#define cpucycles_persecond cpucycles_x86cpuinfo_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <sys/types.h>
|
|
3
|
+
#include <sys/param.h>
|
|
4
|
+
#include <sys/sysctl.h>
|
|
5
|
+
|
|
6
|
+
long long cpucycles_x86cpuspeed(void)
|
|
7
|
+
{
|
|
8
|
+
long long result;
|
|
9
|
+
asm volatile(".byte 15;.byte 49" : "=A" (result));
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
long long cpucycles_x86cpuspeed_persecond(void)
|
|
14
|
+
{
|
|
15
|
+
int oid[2];
|
|
16
|
+
int val;
|
|
17
|
+
size_t size;
|
|
18
|
+
oid[0] = CTL_HW;
|
|
19
|
+
oid[1] = HW_CPUSPEED;
|
|
20
|
+
size = sizeof val;
|
|
21
|
+
if (sysctl(oid,2,&val,&size,0,0) == -1) return 0;
|
|
22
|
+
if (size != sizeof val) return 0;
|
|
23
|
+
return val * 1000000LL;
|
|
24
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles x86cpuspeed.h version 20090716
|
|
3
|
+
Matthew Dempsky
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_x86cpuspeed_h
|
|
8
|
+
#define CPUCYCLES_x86cpuspeed_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_x86cpuspeed(void);
|
|
15
|
+
extern long long cpucycles_x86cpuspeed_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "x86cpuspeed"
|
|
23
|
+
#define cpucycles cpucycles_x86cpuspeed
|
|
24
|
+
#define cpucycles_persecond cpucycles_x86cpuspeed_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#include <time.h>
|
|
2
|
+
#include <sys/time.h>
|
|
3
|
+
#include <sys/types.h>
|
|
4
|
+
#include <sys/sysctl.h>
|
|
5
|
+
|
|
6
|
+
long long cpucycles_x86estimate(void)
|
|
7
|
+
{
|
|
8
|
+
long long result;
|
|
9
|
+
asm volatile(".byte 15;.byte 49" : "=A" (result));
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
static long long microseconds(void)
|
|
14
|
+
{
|
|
15
|
+
struct timeval t;
|
|
16
|
+
gettimeofday(&t,(struct timezone *) 0);
|
|
17
|
+
return t.tv_sec * (long long) 1000000 + t.tv_usec;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static double guessfreq(void)
|
|
21
|
+
{
|
|
22
|
+
long long tb0; long long us0;
|
|
23
|
+
long long tb1; long long us1;
|
|
24
|
+
|
|
25
|
+
tb0 = cpucycles_x86estimate();
|
|
26
|
+
us0 = microseconds();
|
|
27
|
+
do {
|
|
28
|
+
tb1 = cpucycles_x86estimate();
|
|
29
|
+
us1 = microseconds();
|
|
30
|
+
} while (us1 - us0 < 10000 || tb1 - tb0 < 1000);
|
|
31
|
+
if (tb1 <= tb0) return 0;
|
|
32
|
+
tb1 -= tb0;
|
|
33
|
+
us1 -= us0;
|
|
34
|
+
return ((double) tb1) / (0.000001 * (double) us1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static double cpufrequency = 0;
|
|
38
|
+
|
|
39
|
+
static void init(void)
|
|
40
|
+
{
|
|
41
|
+
double guess1;
|
|
42
|
+
double guess2;
|
|
43
|
+
int loop;
|
|
44
|
+
|
|
45
|
+
for (loop = 0;loop < 100;++loop) {
|
|
46
|
+
guess1 = guessfreq();
|
|
47
|
+
guess2 = guessfreq();
|
|
48
|
+
if (guess1 > 1.01 * guess2) continue;
|
|
49
|
+
if (guess2 > 1.01 * guess1) continue;
|
|
50
|
+
cpufrequency = 0.5 * (guess1 + guess2);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
long long cpucycles_x86estimate_persecond(void)
|
|
56
|
+
{
|
|
57
|
+
if (!cpufrequency) init();
|
|
58
|
+
return cpufrequency;
|
|
59
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
cpucycles x86estimate.h version 20070121
|
|
3
|
+
D. J. Bernstein
|
|
4
|
+
Public domain.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef CPUCYCLES_x86estimate_h
|
|
8
|
+
#define CPUCYCLES_x86estimate_h
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
extern long long cpucycles_x86estimate(void);
|
|
15
|
+
extern long long cpucycles_x86estimate_persecond(void);
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#ifndef cpucycles_implementation
|
|
22
|
+
#define cpucycles_implementation "x86estimate"
|
|
23
|
+
#define cpucycles cpucycles_x86estimate
|
|
24
|
+
#define cpucycles_persecond cpucycles_x86estimate_persecond
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#include <sys/types.h>
|
|
2
|
+
#include <sys/sysctl.h>
|
|
3
|
+
|
|
4
|
+
long long cpucycles_x86tscfreq(void)
|
|
5
|
+
{
|
|
6
|
+
long long result;
|
|
7
|
+
asm volatile(".byte 15;.byte 49" : "=A" (result));
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
long long cpucycles_x86tscfreq_persecond(void)
|
|
12
|
+
{
|
|
13
|
+
long result = 0;
|
|
14
|
+
size_t resultlen = sizeof(long);
|
|
15
|
+
sysctlbyname("machdep.tsc_freq",&result,&resultlen,0,0);
|
|
16
|
+
return result;
|
|
17
|
+
}
|