Esempio n. 1
0
int vmm_rtcdev_sync_wallclock(struct vmm_rtcdev *rdev)
{
	int rc;
	struct vmm_timezone tz, utc_tz;
	struct vmm_timeval tv;
	struct vmm_rtc_time tm;

	if (!rdev) {
		return VMM_EFAIL;
	}

	if ((rc = vmm_rtcdev_get_time(rdev, &tm))) {
		return rc;
	}

	if ((rc = vmm_wallclock_get_timezone(&tz))) {
		return rc;
	}

	utc_tz.tz_minuteswest = 0;
	utc_tz.tz_dsttime = 0;

	tv.tv_sec = vmm_wallclock_mktime(tm.tm_year + 1900, 
					 tm.tm_mon + 1, 
					 tm.tm_mday, 
					 tm.tm_hour, 
					 tm.tm_min, 
					 tm.tm_sec);
	tv.tv_nsec = 0;

	if ((rc = vmm_wallclock_set_timeofday(&tv, &utc_tz))) {
		return rc;
	}

	if ((rc = vmm_wallclock_set_timezone(&tz))) {
		return rc;
	}

	return VMM_OK;
}
Esempio n. 2
0
static int cmd_wallclock_get_timezone(struct vmm_chardev *cdev)
{
	int rc;
	struct vmm_timezone tz;

	if ((rc = vmm_wallclock_get_timezone(&tz))) {
		vmm_cprintf(cdev, "Error: get_timezone failed\n");
		return rc;
	}

	if (tz.tz_minuteswest == 0) {
		vmm_cprintf(cdev, "UTC\n");
	} else if (tz.tz_minuteswest < 0) {
		tz.tz_minuteswest *= -1;
		vmm_cprintf(cdev, "UTC-%d:%d\n", tz.tz_minuteswest / 60, 
						 tz.tz_minuteswest % 60);
	} else {
		vmm_cprintf(cdev, "UTC+%d:%d\n", tz.tz_minuteswest / 60, 
						 tz.tz_minuteswest % 60);
	}

	return VMM_OK;
}