|
@@ -27,6 +27,30 @@
|
|
|
static int CalculatingState = DIRTY_RATE_STATUS_UNSTARTED;
|
|
|
static struct DirtyRateStat DirtyStat;
|
|
|
|
|
|
+static int64_t set_sample_page_period(int64_t msec, int64_t initial_time)
|
|
|
+{
|
|
|
+ int64_t current_time;
|
|
|
+
|
|
|
+ current_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
|
|
|
+ if ((current_time - initial_time) >= msec) {
|
|
|
+ msec = current_time - initial_time;
|
|
|
+ } else {
|
|
|
+ g_usleep((msec + initial_time - current_time) * 1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ return msec;
|
|
|
+}
|
|
|
+
|
|
|
+static bool is_sample_period_valid(int64_t sec)
|
|
|
+{
|
|
|
+ if (sec < MIN_FETCH_DIRTYRATE_TIME_SEC ||
|
|
|
+ sec > MAX_FETCH_DIRTYRATE_TIME_SEC) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
static int dirtyrate_set_state(int *state, int old_state, int new_state)
|
|
|
{
|
|
|
assert(new_state < DIRTY_RATE_STATUS__MAX);
|