diff options
| author | Yang Ni <yangni@google.com> | 2015-04-07 16:00:31 -0700 |
|---|---|---|
| committer | Yang Ni <yangni@google.com> | 2015-04-14 10:15:54 -0700 |
| commit | f02a2b0a2749d4a4f07edbc23eddff2e51d11b72 (patch) | |
| tree | d4aa344011cf33ed5d7a906c2832d737cf2bfd97 /cpu_ref/rsCpuScript.cpp | |
| parent | b1bfb9d7adbabd3e705e54c6720ba955ed148230 (diff) | |
Compute checksum for script group generated code
Change-Id: I5f469266fd11b5031d1357f356ac40e00f5c0348
Diffstat (limited to 'cpu_ref/rsCpuScript.cpp')
| -rw-r--r-- | cpu_ref/rsCpuScript.cpp | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/cpu_ref/rsCpuScript.cpp b/cpu_ref/rsCpuScript.cpp index 6099cf4d..fb87dd1a 100644 --- a/cpu_ref/rsCpuScript.cpp +++ b/cpu_ref/rsCpuScript.cpp @@ -150,33 +150,6 @@ bool isChecksumNeeded() { return (buf[0] == '1'); } -bool addFileToChecksum(const char *fileName, uint32_t &checksum) { - int FD = open(fileName, O_RDONLY); - if (FD == -1) { - ALOGE("Cannot open file \'%s\' to compute checksum", fileName); - return false; - } - - char buf[256]; - while (true) { - ssize_t nread = read(FD, buf, sizeof(buf)); - if (nread < 0) { // bail out on failed read - ALOGE("Error while computing checksum for file \'%s\'", fileName); - return false; - } - - checksum = adler32(checksum, (const unsigned char *) buf, nread); - if (static_cast<size_t>(nread) < sizeof(buf)) // EOF - break; - } - - if (TEMP_FAILURE_RETRY(close(FD)) != 0) { - ALOGE("Cannot close file \'%s\' after computing checksum", fileName); - return false; - } - return true; -} - char *constructBuildChecksum(uint8_t const *bitcode, size_t bitcodeSize, const char *commandLine, const std::vector<const char *> &bccFiles) { @@ -191,7 +164,7 @@ char *constructBuildChecksum(uint8_t const *bitcode, size_t bitcodeSize, // include checksum of bccFiles for (auto bccFile : bccFiles) { - if (!addFileToChecksum(bccFile, checksum)) { + if (!android::renderscript::addFileToChecksum(bccFile, checksum)) { // return empty checksum instead of something partial/corrupt return nullptr; } @@ -208,6 +181,35 @@ char *constructBuildChecksum(uint8_t const *bitcode, size_t bitcodeSize, namespace android { namespace renderscript { +#ifndef RS_COMPATIBILITY_LIB +bool addFileToChecksum(const char *fileName, uint32_t &checksum) { + int FD = open(fileName, O_RDONLY); + if (FD == -1) { + ALOGE("Cannot open file \'%s\' to compute checksum", fileName); + return false; + } + + char buf[256]; + while (true) { + ssize_t nread = read(FD, buf, sizeof(buf)); + if (nread < 0) { // bail out on failed read + ALOGE("Error while computing checksum for file \'%s\'", fileName); + return false; + } + + checksum = adler32(checksum, (const unsigned char *) buf, nread); + if (static_cast<size_t>(nread) < sizeof(buf)) // EOF + break; + } + + if (TEMP_FAILURE_RETRY(close(FD)) != 0) { + ALOGE("Cannot close file \'%s\' after computing checksum", fileName); + return false; + } + return true; +} +#endif // !RS_COMPATIBILITY_LIB + RsdCpuScriptImpl::RsdCpuScriptImpl(RsdCpuReferenceImpl *ctx, const Script *s) { mCtx = ctx; mScript = s; |
