MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / sched_reset

Function sched_reset

core/schedule.c:525–556  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

523}
524
525void sched_reset(void) {
526 const uint32_t def_rates[CLOCK_NUM_ITEMS] = { 48000000, 10000000, 60, 48000000, 24000000, 12000000, 6000000, 3000000, 1000000, 32768 };
527
528 struct sched_item usb_device_item = sched.items[SCHED_USB_DEVICE];
529
530 memset(&sched, 0, sizeof sched);
531 for (enum sched_item_id id = 0; id < SCHED_NUM_ITEMS; id++) {
532 sched.items[id].timestamp = SCHED_INACTIVE_FLAG;
533 }
534
535 for (enum clock_id clock = 0; clock < CLOCK_NUM_ITEMS; clock++) {
536 assert(SCHED_BASE_CLOCK_RATE % def_rates[clock] == 0);
537 assert(def_rates[clock] > (SCHED_BASE_CLOCK_RATE >> 32));
538 sched.clocks[clock].tick_unit = (uint32_t)(SCHED_BASE_CLOCK_RATE / def_rates[clock]);
539 update_reciprocal(&sched.clocks[clock]);
540 }
541
542 sched_init_events();
543
544 sched.items[SCHED_SECOND].clock = CLOCK_32K;
545 sched.items[SCHED_SECOND].timestamp = SCHED_BASE_CLOCK_RATE;
546 sched_update_next(SCHED_SECOND);
547
548 sched_set(SCHED_RUN, 0);
549
550 sched.items[SCHED_USB_DEVICE] = usb_device_item;
551
552 sched.items[SCHED_NO_DMA].clock = CLOCK_48M;
553 sched.items[SCHED_NO_DMA].timestamp = SCHED_INACTIVE_FLAG;
554 sched.dma.next = SCHED_NO_DMA;
555 sched.dma.last_mem_timestamp = 0;
556}
557
558void sched_init(void) {
559 memset(&sched, 0, sizeof sched);

Callers

nothing calls this directly

Calls 4

update_reciprocalFunction · 0.85
sched_init_eventsFunction · 0.85
sched_update_nextFunction · 0.85
sched_setFunction · 0.85

Tested by

no test coverage detected