Merge "Add a lock to protect persistent stats snapshot" am: f31face531
am: 57f207b1c7
Change-Id: Ia91b71536447e65725a85ebf2ac4f411aebe86c8
This commit is contained in:
@@ -28,6 +28,7 @@ import android.net.NetworkStats;
|
|||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.internal.util.ProcFileReader;
|
import com.android.internal.util.ProcFileReader;
|
||||||
@@ -65,6 +66,7 @@ public class NetworkStatsFactory {
|
|||||||
private boolean mUseBpfStats;
|
private boolean mUseBpfStats;
|
||||||
|
|
||||||
// A persistent Snapshot since device start for eBPF stats
|
// A persistent Snapshot since device start for eBPF stats
|
||||||
|
@GuardedBy("mPersistSnapshot")
|
||||||
private final NetworkStats mPersistSnapshot;
|
private final NetworkStats mPersistSnapshot;
|
||||||
|
|
||||||
// TODO: only do adjustments in NetworkStatsService and remove this.
|
// TODO: only do adjustments in NetworkStatsService and remove this.
|
||||||
@@ -284,6 +286,7 @@ public class NetworkStatsFactory {
|
|||||||
stats = new NetworkStats(SystemClock.elapsedRealtime(), -1);
|
stats = new NetworkStats(SystemClock.elapsedRealtime(), -1);
|
||||||
}
|
}
|
||||||
if (mUseBpfStats) {
|
if (mUseBpfStats) {
|
||||||
|
synchronized (mPersistSnapshot) {
|
||||||
if (nativeReadNetworkStatsDetail(stats, mStatsXtUid.getAbsolutePath(), UID_ALL,
|
if (nativeReadNetworkStatsDetail(stats, mStatsXtUid.getAbsolutePath(), UID_ALL,
|
||||||
null, TAG_ALL, mUseBpfStats) != 0) {
|
null, TAG_ALL, mUseBpfStats) != 0) {
|
||||||
throw new IOException("Failed to parse network stats");
|
throw new IOException("Failed to parse network stats");
|
||||||
@@ -293,6 +296,7 @@ public class NetworkStatsFactory {
|
|||||||
NetworkStats result = mPersistSnapshot.clone();
|
NetworkStats result = mPersistSnapshot.clone();
|
||||||
result.filter(limitUid, limitIfaces, limitTag);
|
result.filter(limitUid, limitIfaces, limitTag);
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (nativeReadNetworkStatsDetail(stats, mStatsXtUid.getAbsolutePath(), limitUid,
|
if (nativeReadNetworkStatsDetail(stats, mStatsXtUid.getAbsolutePath(), limitUid,
|
||||||
limitIfaces, limitTag, mUseBpfStats) != 0) {
|
limitIfaces, limitTag, mUseBpfStats) != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user