Move ticksToMilliSeconds to NetlinkUtils.
ticksToMilliSeconds is used to convert the clock ticks to milliseconds,
move it to a common utils class, we can call this method to convert the
rta_cacheinfo.rta_expires in user space as well to get when the default
route will expire.
Bug: 183601771
Test: atest NetworkStaticLibTests
Change-Id: Iabd510fe290f835a8fe690d91921d5b706a23b56
diff --git a/staticlibs/device/com/android/net/module/util/netlink/NetlinkUtils.java b/staticlibs/device/com/android/net/module/util/netlink/NetlinkUtils.java
index 73c88c7..33bd36d 100644
--- a/staticlibs/device/com/android/net/module/util/netlink/NetlinkUtils.java
+++ b/staticlibs/device/com/android/net/module/util/netlink/NetlinkUtils.java
@@ -33,6 +33,7 @@
import android.net.util.SocketUtils;
import android.system.ErrnoException;
import android.system.Os;
+import android.system.OsConstants;
import android.system.StructTimeval;
import android.util.Log;
@@ -291,5 +292,20 @@
return Os.write(fd, bytes, offset, count);
}
+ private static final long CLOCK_TICKS_PER_SECOND = Os.sysconf(OsConstants._SC_CLK_TCK);
+
+ /**
+ * Convert the system time in clock ticks(clock_t type in times(), not in clock()) to
+ * milliseconds. times() clock_t ticks at the kernel's USER_HZ (100) while clock() clock_t
+ * ticks at CLOCKS_PER_SEC (1000000).
+ *
+ * See the NOTES on https://man7.org/linux/man-pages/man2/times.2.html for the difference
+ * of clock_t used in clock() and times().
+ */
+ public static long ticksToMilliSeconds(int intClockTicks) {
+ final long longClockTicks = intClockTicks & 0xffffffffL;
+ return (longClockTicks * 1000) / CLOCK_TICKS_PER_SECOND;
+ }
+
private NetlinkUtils() {}
}
diff --git a/staticlibs/device/com/android/net/module/util/netlink/StructNdaCacheInfo.java b/staticlibs/device/com/android/net/module/util/netlink/StructNdaCacheInfo.java
index 79d5ff4..1f9bb7e 100644
--- a/staticlibs/device/com/android/net/module/util/netlink/StructNdaCacheInfo.java
+++ b/staticlibs/device/com/android/net/module/util/netlink/StructNdaCacheInfo.java
@@ -16,8 +16,7 @@
package com.android.net.module.util.netlink;
-import android.system.Os;
-import android.system.OsConstants;
+import static com.android.net.module.util.netlink.NetlinkUtils.ticksToMilliSeconds;
import java.nio.ByteBuffer;
@@ -57,15 +56,6 @@
return struct;
}
- // TODO: investigate whether this can change during device runtime and
- // decide what (if anything) should be done about that.
- private static final long CLOCK_TICKS_PER_SECOND = Os.sysconf(OsConstants._SC_CLK_TCK);
-
- private static long ticksToMilliSeconds(int intClockTicks) {
- final long longClockTicks = (long) intClockTicks & 0xffffffff;
- return (longClockTicks * 1000) / CLOCK_TICKS_PER_SECOND;
- }
-
/**
* Explanatory notes, for reference.
*