diff options
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; |
