void fsyncAndDropCaches(int fd, int code) { fsync(fd); fsync(fd); writeIntToFile(kDropCaches, code); sleep(kCachePurgeSleepDuration); }
void setPidOutOfMemoryAdj(int level) { char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "/proc/%d/oom_adj", getpid()); writeIntToFile(filename, level); }
// Sync and cache cleaning functions. In the old hpux days I was told // to always call *sync twice. The same advice seems to be still true // today so *sync is called twice. // Also we wait 'a little' to give a chance to background threads to // purge their caches. void syncAndDropCaches(int code) { sync(); sync(); writeIntToFile(kDropCaches, code); sleep(kCachePurgeSleepDuration); }
void encodeFile (FileContainer files, char * msgName, int d) { IndexHolder iHolder; FILE* msgFile = fopen(msgName, "r"); files.msgCount = getSize(msgName); files.msg = malloc(files.msgCount * sizeof(int)); if (files.msgCount == 0 || files.keyCount == 0) { printMessage(TYPE_ERROR, ERROR_UNKNOWN); exit(0); } else { if (fileExists(encryptedFileName) == 1) { remove(encryptedFileName); } iHolder.lastIndex = 30000; // High number so first distance is OK while (!feof(msgFile) && fscanf(msgFile, "%c", &iHolder.currentChar) == 1) { iHolder.currentIndex = findIntRepresentation(files, iHolder, d); if (iHolder.currentIndex != 0) { writeIntToFile(iHolder.currentIndex, encryptedFileName); } else { writeCharToFile(iHolder.currentChar, encryptedFileName); } iHolder.lastIndex = iHolder.currentIndex; } } free(files.msg); free(files.key); fclose(msgFile); }