static void s390_cpu_initfn(Object *obj) { CPUState *cs = CPU(obj); S390CPU *cpu = S390_CPU(obj); CPUS390XState *env = &cpu->env; static bool inited; static int cpu_num = 0; #if !defined(CONFIG_USER_ONLY) struct tm tm; #endif cs->env_ptr = env; cpu_exec_init(env); #if !defined(CONFIG_USER_ONLY) qemu_register_reset(s390_cpu_machine_reset_cb, cpu); qemu_get_timedate(&tm, 0); env->tod_offset = TOD_UNIX_EPOCH + (time2tod(mktimegm(&tm)) * 1000000000ULL); env->tod_basetime = 0; env->tod_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu); env->cpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_cpu_timer, cpu); s390_cpu_set_state(CPU_STATE_STOPPED, cpu); #endif env->cpu_num = cpu_num++; if (tcg_enabled() && !inited) { inited = true; s390x_translate_init(); } }
static void s390_cpu_initfn(Object *obj) { CPUState *cs = CPU(obj); S390CPU *cpu = S390_CPU(obj); CPUS390XState *env = &cpu->env; static bool inited; #if !defined(CONFIG_USER_ONLY) struct tm tm; #endif cs->env_ptr = env; cs->halted = 1; cs->exception_index = EXCP_HLT; object_property_add(OBJECT(cpu), "id", "int64_t", s390x_cpu_get_id, s390x_cpu_set_id, NULL, NULL, NULL); s390_cpu_model_register_props(obj); #if !defined(CONFIG_USER_ONLY) qemu_get_timedate(&tm, 0); env->tod_offset = TOD_UNIX_EPOCH + (time2tod(mktimegm(&tm)) * 1000000000ULL); env->tod_basetime = 0; env->tod_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu); env->cpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_cpu_timer, cpu); s390_cpu_set_state(CPU_STATE_STOPPED, cpu); #endif if (tcg_enabled() && !inited) { inited = true; s390x_translate_init(); } }
static void s390_cpu_initfn(Object *obj) { CPUState *cs = CPU(obj); S390CPU *cpu = S390_CPU(obj); CPUS390XState *env = &cpu->env; static bool inited; static int cpu_num = 0; #if !defined(CONFIG_USER_ONLY) struct tm tm; #endif cs->env_ptr = env; cpu_exec_init(env); #if !defined(CONFIG_USER_ONLY) qemu_register_reset(s390_cpu_machine_reset_cb, cpu); qemu_get_timedate(&tm, 0); env->tod_offset = TOD_UNIX_EPOCH + (time2tod(mktimegm(&tm)) * 1000000000ULL); env->tod_basetime = 0; env->tod_timer = qemu_new_timer_ns(vm_clock, s390x_tod_timer, cpu); env->cpu_timer = qemu_new_timer_ns(vm_clock, s390x_cpu_timer, cpu); /* set CPUState::halted state to 1 to avoid decrementing the running * cpu counter in s390_cpu_reset to a negative number at * initial ipl */ cs->halted = 1; #endif env->cpu_num = cpu_num++; env->ext_index = -1; if (tcg_enabled() && !inited) { inited = true; s390x_translate_init(); } }
static int net_dump_state_init(DumpState *s, const char *filename, int len, Error **errp) { struct pcap_file_hdr hdr; struct tm tm; int fd; fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0644); if (fd < 0) { error_setg_errno(errp, errno, "-net dump: can't open %s", filename); return -1; } hdr.magic = PCAP_MAGIC; hdr.version_major = 2; hdr.version_minor = 4; hdr.thiszone = 0; hdr.sigfigs = 0; hdr.snaplen = len; hdr.linktype = 1; if (write(fd, &hdr, sizeof(hdr)) < sizeof(hdr)) { error_setg_errno(errp, errno, "-net dump write error"); close(fd); return -1; } s->fd = fd; s->pcap_caplen = len; qemu_get_timedate(&tm, 0); s->start_ts = mktime(&tm); return 0; }
static void s3c_rtc_update(struct s3c_rtc_state_s *s) { #if 1 qemu_get_timedate(&s->tm, 0); #else void *ret; time_t ti = s->sec; if (rtc_utc) ret = gmtime_r(&ti, &s->tm); else ret = localtime_r(&ti, &s->tm); #endif }
static void rtc_set_date_from_host(RTCState *s) { struct tm tm; int val; /* set the CMOS date */ qemu_get_timedate(&tm, 0); rtc_set_date(s, &tm); val = to_bcd(s, (tm.tm_year / 100) + 19); rtc_set_memory(s, REG_IBM_CENTURY_BYTE, val); rtc_set_memory(s, REG_IBM_PS2_CENTURY_BYTE, val); }
static void rtc_set_date_from_host(ISADevice *dev) { RTCState *s = MC146818_RTC(dev); struct tm tm; qemu_get_timedate(&tm, 0); s->base_rtc = mktimegm(&tm); s->last_update = qemu_get_clock_ns(rtc_clock); s->offset = 0; /* set the CMOS date */ rtc_set_cmos(s, &tm); }
static void rtc_set_date_from_host(ISADevice *dev) { RTCState *s = DO_UPCAST(RTCState, dev, dev); struct tm tm; int val; /* set the CMOS date */ qemu_get_timedate(&tm, 0); rtc_set_date(dev, &tm); val = rtc_to_bcd(s, (tm.tm_year / 100) + 19); rtc_set_memory(dev, REG_IBM_CENTURY_BYTE, val); rtc_set_memory(dev, REG_IBM_PS2_CENTURY_BYTE, val); }
static int pl031_init(SysBusDevice *dev) { pl031_state *s = FROM_SYSBUS(pl031_state, dev); struct tm tm; memory_region_init_io(&s->iomem, &pl031_ops, s, "pl031", 0x1000); sysbus_init_mmio(dev, &s->iomem); sysbus_init_irq(dev, &s->irq); qemu_get_timedate(&tm, 0); s->tick_offset = mktimegm(&tm) - qemu_get_clock_ns(rtc_clock) / get_ticks_per_sec(); s->timer = qemu_new_timer_ns(rtc_clock, pl031_interrupt, s); return 0; }
static void pl031_init(Object *obj) { PL031State *s = PL031(obj); SysBusDevice *dev = SYS_BUS_DEVICE(obj); struct tm tm; memory_region_init_io(&s->iomem, obj, &pl031_ops, s, "pl031", 0x1000); sysbus_init_mmio(dev, &s->iomem); sysbus_init_irq(dev, &s->irq); qemu_get_timedate(&tm, 0); s->tick_offset = mktimegm(&tm) - qemu_clock_get_ns(rtc_clock) / NANOSECONDS_PER_SECOND; s->timer = timer_new_ns(rtc_clock, pl031_interrupt, s); }
static int syborg_rtc_init(SysBusDevice *dev) { SyborgRTCState *s = FROM_SYSBUS(SyborgRTCState, dev); struct tm tm; int iomemtype; iomemtype = cpu_register_io_memory(syborg_rtc_readfn, syborg_rtc_writefn, s); sysbus_init_mmio(dev, 0x1000, iomemtype); qemu_get_timedate(&tm, 0); s->offset = (uint64_t)mktime(&tm) * 1000000000; register_savevm("syborg_rtc", -1, 1, syborg_rtc_save, syborg_rtc_load, s); return 0; }
static void rtc_read_time(SysPortState *s) { struct tm tm; qemu_get_timedate(&tm, 0); s->rtc_shift_out = (uint64_t)to_bcd(tm.tm_sec); s->rtc_shift_out |= (uint64_t)to_bcd(tm.tm_min) << 8; s->rtc_shift_out |= (uint64_t)to_bcd(tm.tm_hour) << 16; s->rtc_shift_out |= (uint64_t)to_bcd(tm.tm_mday) << 24; s->rtc_shift_out |= (uint64_t)tm.tm_wday << 32; s->rtc_shift_out |= (uint64_t)(tm.tm_mon + 1) << 36; s->rtc_shift_out |= (uint64_t)to_bcd(tm.tm_year % 100) << 40; if (s->rtc_mode & RTC_MODE_UPD4993A) { s->rtc_shift_out <<= 4; } }
static int net_dump_init(NetClientState *peer, const char *device, const char *name, const char *filename, int len, Error **errp) { struct pcap_file_hdr hdr; NetClientState *nc; DumpState *s; struct tm tm; int fd; fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0644); if (fd < 0) { error_setg_errno(errp, errno, "-net dump: can't open %s", filename); return -1; } hdr.magic = PCAP_MAGIC; hdr.version_major = 2; hdr.version_minor = 4; hdr.thiszone = 0; hdr.sigfigs = 0; hdr.snaplen = len; hdr.linktype = 1; if (write(fd, &hdr, sizeof(hdr)) < sizeof(hdr)) { error_setg_errno(errp, errno, "-net dump write error"); close(fd); return -1; } nc = qemu_new_net_client(&net_dump_info, peer, device, name); snprintf(nc->info_str, sizeof(nc->info_str), "dump to %s (len=%d)", filename, len); s = DO_UPCAST(DumpState, nc, nc); s->fd = fd; s->pcap_caplen = len; qemu_get_timedate(&tm, 0); s->start_ts = mktime(&tm); return 0; }
static int pl031_init(SysBusDevice *dev) { int iomemtype; pl031_state *s = FROM_SYSBUS(pl031_state, dev); struct tm tm; iomemtype = cpu_register_io_memory(pl031_readfn, pl031_writefn, s); if (iomemtype == -1) { hw_error("pl031_init: Can't register I/O memory\n"); } sysbus_init_mmio(dev, 0x1000, iomemtype); sysbus_init_irq(dev, &s->irq); /* ??? We assume vm_clock is zero at this point. */ qemu_get_timedate(&tm, 0); s->tick_offset = mktimegm(&tm); s->timer = qemu_new_timer(vm_clock, pl031_interrupt, s); return 0; }
static void rtas_get_time_of_day(PowerPCCPU *cpu, sPAPREnvironment *spapr, uint32_t token, uint32_t nargs, target_ulong args, uint32_t nret, target_ulong rets) { struct tm tm; if (nret != 8) { rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); return; } qemu_get_timedate(&tm, spapr->rtc_offset); rtas_st(rets, 0, RTAS_OUT_SUCCESS); rtas_st(rets, 1, tm.tm_year + 1900); rtas_st(rets, 2, tm.tm_mon + 1); rtas_st(rets, 3, tm.tm_mday); rtas_st(rets, 4, tm.tm_hour); rtas_st(rets, 5, tm.tm_min); rtas_st(rets, 6, tm.tm_sec); rtas_st(rets, 7, 0); /* we don't do nanoseconds */ }
static void s390_cpu_initfn(Object *obj) { S390CPU *cpu = S390_CPU(obj); CPUS390XState *env = &cpu->env; static int cpu_num = 0; #if !defined(CONFIG_USER_ONLY) struct tm tm; #endif cpu_exec_init(env); #if !defined(CONFIG_USER_ONLY) qemu_get_timedate(&tm, 0); env->tod_offset = TOD_UNIX_EPOCH + (time2tod(mktimegm(&tm)) * 1000000000ULL); env->tod_basetime = 0; env->tod_timer = qemu_new_timer_ns(vm_clock, s390x_tod_timer, cpu); env->cpu_timer = qemu_new_timer_ns(vm_clock, s390x_cpu_timer, cpu); #endif env->cpu_num = cpu_num++; env->ext_index = -1; cpu_reset(CPU(cpu)); }