Loading wifi/1.2/default/wifi_chip.cpp +25 −7 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ constexpr ChipModeId kV2ChipModeId = 2; constexpr char kCpioMagic[] = "070701"; constexpr size_t kMaxBufferSizeBytes = 1024 * 1024; constexpr uint32_t kMaxRingBufferFileAgeSeconds = 60 * 60; constexpr uint32_t kMaxRingBufferFileNum = 20; constexpr char kTombstoneFolderPath[] = "/data/vendor/tombstones/wifi/"; template <typename Iface> Loading Loading @@ -104,7 +105,9 @@ std::string getP2pIfaceName() { return buffer.data(); } // delete files older than a predefined time in the wifi tombstone dir // delete files that meet either conditions: // 1. older than a predefined time in the wifi tombstone dir. // 2. Files in excess to a predefined amount, starting from the oldest ones bool removeOldFilesInternal() { time_t now = time(0); const time_t delete_files_before = now - kMaxRingBufferFileAgeSeconds; Loading @@ -116,6 +119,7 @@ bool removeOldFilesInternal() { unique_fd dir_auto_closer(dirfd(dir_dump)); struct dirent* dp; bool success = true; std::list<std::pair<const time_t, std::string>> valid_files; while ((dp = readdir(dir_dump))) { if (dp->d_type != DT_REG) { continue; Loading @@ -129,13 +133,24 @@ bool removeOldFilesInternal() { success = false; continue; } if (cur_file_stat.st_mtime >= delete_files_before) { continue; } if (unlink(cur_file_path.c_str()) != 0) { const time_t cur_file_time = cur_file_stat.st_mtime; valid_files.push_back( std::pair<const time_t, std::string>(cur_file_time, cur_file_path)); } valid_files.sort(); // sort the list of files by last modified time from // small to big. uint32_t cur_file_count = valid_files.size(); for (auto cur_file : valid_files) { if (cur_file_count > kMaxRingBufferFileNum || cur_file.first < delete_files_before) { if (unlink(cur_file.second.c_str()) != 0) { LOG(ERROR) << "Error deleting file " << strerror(errno); success = false; } cur_file_count--; } else { break; } } return success; } Loading Loading @@ -309,6 +324,9 @@ WifiChip::WifiChip( } void WifiChip::invalidate() { if (!writeRingbufferFilesInternal()) { LOG(ERROR) << "Error writing files to flash"; } invalidateAndRemoveAllIfaces(); legacy_hal_.reset(); event_cb_handler_.invalidate(); Loading Loading
wifi/1.2/default/wifi_chip.cpp +25 −7 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ constexpr ChipModeId kV2ChipModeId = 2; constexpr char kCpioMagic[] = "070701"; constexpr size_t kMaxBufferSizeBytes = 1024 * 1024; constexpr uint32_t kMaxRingBufferFileAgeSeconds = 60 * 60; constexpr uint32_t kMaxRingBufferFileNum = 20; constexpr char kTombstoneFolderPath[] = "/data/vendor/tombstones/wifi/"; template <typename Iface> Loading Loading @@ -104,7 +105,9 @@ std::string getP2pIfaceName() { return buffer.data(); } // delete files older than a predefined time in the wifi tombstone dir // delete files that meet either conditions: // 1. older than a predefined time in the wifi tombstone dir. // 2. Files in excess to a predefined amount, starting from the oldest ones bool removeOldFilesInternal() { time_t now = time(0); const time_t delete_files_before = now - kMaxRingBufferFileAgeSeconds; Loading @@ -116,6 +119,7 @@ bool removeOldFilesInternal() { unique_fd dir_auto_closer(dirfd(dir_dump)); struct dirent* dp; bool success = true; std::list<std::pair<const time_t, std::string>> valid_files; while ((dp = readdir(dir_dump))) { if (dp->d_type != DT_REG) { continue; Loading @@ -129,13 +133,24 @@ bool removeOldFilesInternal() { success = false; continue; } if (cur_file_stat.st_mtime >= delete_files_before) { continue; } if (unlink(cur_file_path.c_str()) != 0) { const time_t cur_file_time = cur_file_stat.st_mtime; valid_files.push_back( std::pair<const time_t, std::string>(cur_file_time, cur_file_path)); } valid_files.sort(); // sort the list of files by last modified time from // small to big. uint32_t cur_file_count = valid_files.size(); for (auto cur_file : valid_files) { if (cur_file_count > kMaxRingBufferFileNum || cur_file.first < delete_files_before) { if (unlink(cur_file.second.c_str()) != 0) { LOG(ERROR) << "Error deleting file " << strerror(errno); success = false; } cur_file_count--; } else { break; } } return success; } Loading Loading @@ -309,6 +324,9 @@ WifiChip::WifiChip( } void WifiChip::invalidate() { if (!writeRingbufferFilesInternal()) { LOG(ERROR) << "Error writing files to flash"; } invalidateAndRemoveAllIfaces(); legacy_hal_.reset(); event_cb_handler_.invalidate(); Loading