SCP: Enhance debug output while tracking event and timer activity
This commit is contained in:
parent
4fff142444
commit
ed2abaa2d8
3 changed files with 65 additions and 32 deletions
48
scp.c
48
scp.c
|
@ -602,8 +602,34 @@ static DEBTAB sim_dflt_debug[] = {
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
static UNIT sim_step_unit = { UDATA (&step_svc, 0, 0) };
|
static const char *sim_int_step_description (DEVICE *dptr)
|
||||||
static UNIT sim_expect_unit = { UDATA (&expect_svc, 0, 0) };
|
{
|
||||||
|
return "Step/Next facility";
|
||||||
|
}
|
||||||
|
|
||||||
|
static UNIT sim_step_unit = { UDATA (&step_svc, 0, 0) };
|
||||||
|
DEVICE sim_step_dev = {
|
||||||
|
"INT-STEP", &sim_step_unit, NULL, NULL,
|
||||||
|
1, 0, 0, 0, 0, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
NULL, DEV_NOSAVE, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
sim_int_step_description};
|
||||||
|
|
||||||
|
static const char *sim_int_expect_description (DEVICE *dptr)
|
||||||
|
{
|
||||||
|
return "Expect facility";
|
||||||
|
}
|
||||||
|
|
||||||
|
static UNIT sim_expect_unit = { UDATA (&expect_svc, 0, 0) };
|
||||||
|
DEVICE sim_expect_dev = {
|
||||||
|
"INT-EXPECT", &sim_expect_unit, NULL, NULL,
|
||||||
|
1, 0, 0, 0, 0, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
NULL, DEV_NOSAVE, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
sim_int_expect_description};
|
||||||
|
|
||||||
#if defined USE_INT64
|
#if defined USE_INT64
|
||||||
static const char *sim_si64 = "64b data";
|
static const char *sim_si64 = "64b data";
|
||||||
#else
|
#else
|
||||||
|
@ -2388,6 +2414,8 @@ sim_log = NULL;
|
||||||
if (sim_emax <= 0)
|
if (sim_emax <= 0)
|
||||||
sim_emax = 1;
|
sim_emax = 1;
|
||||||
sim_timer_init ();
|
sim_timer_init ();
|
||||||
|
sim_register_internal_device (&sim_expect_dev);
|
||||||
|
sim_register_internal_device (&sim_step_dev);
|
||||||
|
|
||||||
if ((stat = sim_ttinit ()) != SCPE_OK) {
|
if ((stat = sim_ttinit ()) != SCPE_OK) {
|
||||||
fprintf (stderr, "Fatal terminal initialization error\n%s\n",
|
fprintf (stderr, "Fatal terminal initialization error\n%s\n",
|
||||||
|
@ -9403,12 +9431,12 @@ t_stat sim_register_internal_device (DEVICE *dptr)
|
||||||
{
|
{
|
||||||
uint32 i;
|
uint32 i;
|
||||||
|
|
||||||
for (i = 0; (sim_devices[i] != NULL); i++)
|
|
||||||
if (sim_devices[i] == dptr)
|
|
||||||
return SCPE_OK;
|
|
||||||
for (i = 0; i < sim_internal_device_count; i++)
|
for (i = 0; i < sim_internal_device_count; i++)
|
||||||
if (sim_internal_devices[i] == dptr)
|
if (sim_internal_devices[i] == dptr)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
|
for (i = 0; (sim_devices[i] != NULL); i++)
|
||||||
|
if (sim_devices[i] == dptr)
|
||||||
|
return SCPE_OK;
|
||||||
++sim_internal_device_count;
|
++sim_internal_device_count;
|
||||||
sim_internal_devices = (DEVICE **)realloc(sim_internal_devices, (sim_internal_device_count+1)*sizeof(*sim_internal_devices));
|
sim_internal_devices = (DEVICE **)realloc(sim_internal_devices, (sim_internal_device_count+1)*sizeof(*sim_internal_devices));
|
||||||
sim_internal_devices[sim_internal_device_count-1] = dptr;
|
sim_internal_devices[sim_internal_device_count-1] = dptr;
|
||||||
|
@ -10419,11 +10447,15 @@ do {
|
||||||
sim_interval = sim_clock_queue->time;
|
sim_interval = sim_clock_queue->time;
|
||||||
else
|
else
|
||||||
sim_interval = noqueue_time = NOQUEUE_WAIT;
|
sim_interval = noqueue_time = NOQUEUE_WAIT;
|
||||||
sim_debug (SIM_DBG_EVENT, sim_dflt_dev, "Processing Event for %s\n", sim_uname (uptr));
|
|
||||||
AIO_EVENT_BEGIN(uptr);
|
AIO_EVENT_BEGIN(uptr);
|
||||||
if (uptr->usecs_remaining)
|
if (uptr->usecs_remaining) {
|
||||||
|
sim_debug (SIM_DBG_EVENT, sim_dflt_dev, "Requeueing %s after %.0f usecs\n", sim_uname (uptr), uptr->usecs_remaining);
|
||||||
reason = sim_timer_activate_after (uptr, uptr->usecs_remaining);
|
reason = sim_timer_activate_after (uptr, uptr->usecs_remaining);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
|
sim_debug (SIM_DBG_EVENT, sim_dflt_dev, "Processing Event for %s\n", sim_uname (uptr));
|
||||||
|
if (uptr->uname && ((*uptr->uname == '\0') || (*uptr->uname == ' ')))
|
||||||
|
reason = SCPE_OK; /* do nothing breakpoint location */
|
||||||
if (uptr->action != NULL)
|
if (uptr->action != NULL)
|
||||||
reason = uptr->action (uptr);
|
reason = uptr->action (uptr);
|
||||||
else
|
else
|
||||||
|
@ -10607,10 +10639,10 @@ AIO_CANCEL(uptr);
|
||||||
AIO_UPDATE_QUEUE;
|
AIO_UPDATE_QUEUE;
|
||||||
if (sim_clock_queue == QUEUE_LIST_END)
|
if (sim_clock_queue == QUEUE_LIST_END)
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
sim_debug (SIM_DBG_EVENT, sim_dflt_dev, "Canceling Event for %s\n", sim_uname(uptr));
|
|
||||||
UPDATE_SIM_TIME; /* update sim time */
|
UPDATE_SIM_TIME; /* update sim time */
|
||||||
if (!sim_is_active (uptr))
|
if (!sim_is_active (uptr))
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
|
sim_debug (SIM_DBG_EVENT, sim_dflt_dev, "Canceling Event for %s\n", sim_uname(uptr));
|
||||||
nptr = QUEUE_LIST_END;
|
nptr = QUEUE_LIST_END;
|
||||||
|
|
||||||
if (sim_clock_queue == uptr) {
|
if (sim_clock_queue == uptr) {
|
||||||
|
|
25
sim_timer.c
25
sim_timer.c
|
@ -1037,6 +1037,7 @@ for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {
|
||||||
sim_stop_unit.action = &sim_timer_stop_svc;
|
sim_stop_unit.action = &sim_timer_stop_svc;
|
||||||
SIM_INTERNAL_UNIT.flags = UNIT_IDLE;
|
SIM_INTERNAL_UNIT.flags = UNIT_IDLE;
|
||||||
sim_register_internal_device (&sim_timer_dev); /* Register Clock Assist device */
|
sim_register_internal_device (&sim_timer_dev); /* Register Clock Assist device */
|
||||||
|
sim_register_internal_device (&sim_throttle_dev); /* Register Throttle Device */
|
||||||
sim_throttle_unit.action = &sim_throt_svc;
|
sim_throttle_unit.action = &sim_throt_svc;
|
||||||
sim_register_clock_unit_tmr (&SIM_INTERNAL_UNIT, SIM_INTERNAL_CLK);
|
sim_register_clock_unit_tmr (&SIM_INTERNAL_UNIT, SIM_INTERNAL_CLK);
|
||||||
sim_idle_enab = FALSE; /* init idle off */
|
sim_idle_enab = FALSE; /* init idle off */
|
||||||
|
@ -1670,7 +1671,6 @@ else {
|
||||||
sim_throt_wait = sim_throt_val;
|
sim_throt_wait = sim_throt_val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sim_register_internal_device (&sim_throttle_dev); /* Register Throttle Device */
|
|
||||||
if (sim_throt_type == SIM_THROT_SPC) /* Set initial value while correct one is determined */
|
if (sim_throt_type == SIM_THROT_SPC) /* Set initial value while correct one is determined */
|
||||||
sim_throt_cps = (int32)((1000.0 * sim_throt_val) / (double)sim_throt_sleep_time);
|
sim_throt_cps = (int32)((1000.0 * sim_throt_val) / (double)sim_throt_sleep_time);
|
||||||
else
|
else
|
||||||
|
@ -1974,7 +1974,7 @@ if ((stat == SCPE_OK) &&
|
||||||
if (fabs(skew) > fabs(rtc_clock_skew_max[tmr]))
|
if (fabs(skew) > fabs(rtc_clock_skew_max[tmr]))
|
||||||
rtc_clock_skew_max[tmr] = skew;
|
rtc_clock_skew_max[tmr] = skew;
|
||||||
}
|
}
|
||||||
/* First gather the queued events that are scheduled for now */
|
/* Gather any queued events which are scheduled for right now */
|
||||||
do {
|
do {
|
||||||
cptr = sim_clock_cosched_queue[tmr];
|
cptr = sim_clock_cosched_queue[tmr];
|
||||||
sim_clock_cosched_queue[tmr] = cptr->next;
|
sim_clock_cosched_queue[tmr] = cptr->next;
|
||||||
|
@ -1996,11 +1996,11 @@ if ((stat == SCPE_OK) &&
|
||||||
cptr->cancel = NULL;
|
cptr->cancel = NULL;
|
||||||
cptr->time = 0;
|
cptr->time = 0;
|
||||||
if (cptr->usecs_remaining) {
|
if (cptr->usecs_remaining) {
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, " remnant: %.0f - next %s after cosched interval: %d ticks\n", cptr->usecs_remaining, (sptr != QUEUE_LIST_END) ? sim_uname (sptr) : "", sim_cosched_interval[tmr]);
|
sim_debug (DBG_QUE, &sim_timer_dev, "Rescheduling %s after %.0f usecs %s%s\n", sim_uname (cptr), cptr->usecs_remaining, (sptr != QUEUE_LIST_END) ? "- next: " : "", (sptr != QUEUE_LIST_END) ? sim_uname (sptr) : "");
|
||||||
sim_timer_activate_after (cptr, cptr->usecs_remaining);
|
sim_timer_activate_after (cptr, cptr->usecs_remaining);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, " - next %s after cosched interval: %d ticks\n", (sptr != QUEUE_LIST_END) ? sim_uname (sptr) : "", sim_cosched_interval[tmr]);
|
sim_debug (DBG_QUE, &sim_timer_dev, "Activating %s now %s%s\n", sim_uname (cptr), (sptr != QUEUE_LIST_END) ? "- next: " : "", (sptr != QUEUE_LIST_END) ? sim_uname (sptr) : "");
|
||||||
_sim_activate (cptr, 0);
|
_sim_activate (cptr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2501,12 +2501,13 @@ for (tmr=0; tmr<=SIM_NTIMERS; tmr++)
|
||||||
}
|
}
|
||||||
if (sim_is_active (uptr)) /* already active? */
|
if (sim_is_active (uptr)) /* already active? */
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
uptr->usecs_remaining = 0;
|
|
||||||
if (usec_delay <= 0.0) {
|
if (usec_delay <= 0.0) {
|
||||||
sim_debug (DBG_TIM, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - invalid usec value\n",
|
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - invalid usec value\n",
|
||||||
sim_uname(uptr), usec_delay);
|
sim_uname(uptr), usec_delay);
|
||||||
|
uptr->usecs_remaining = 0.0;
|
||||||
return SCPE_ARG;
|
return SCPE_ARG;
|
||||||
}
|
}
|
||||||
|
uptr->usecs_remaining = 0.0;
|
||||||
/*
|
/*
|
||||||
* Handle long delays by aligning with the calibrated timer's calibration
|
* Handle long delays by aligning with the calibrated timer's calibration
|
||||||
* activities. Delays which would expire prior to the next calibration
|
* activities. Delays which would expire prior to the next calibration
|
||||||
|
@ -2532,8 +2533,8 @@ if ((sim_calb_tmr != -1) && (rtc_hz[sim_calb_tmr])) { /* Calibrated Timer
|
||||||
if (inst_delay_d > (double)inst_til_calib) { /* long wait? */
|
if (inst_delay_d > (double)inst_til_calib) { /* long wait? */
|
||||||
stat = sim_clock_coschedule_tmr (uptr, sim_calb_tmr, ticks_til_calib - 1);
|
stat = sim_clock_coschedule_tmr (uptr, sim_calb_tmr, ticks_til_calib - 1);
|
||||||
uptr->usecs_remaining = (stat == SCPE_OK) ? usec_delay - usecs_til_calib : 0.0;
|
uptr->usecs_remaining = (stat == SCPE_OK) ? usec_delay - usecs_til_calib : 0.0;
|
||||||
sim_debug (DBG_TIM, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - coscheduling with with calibrated timer(%d), ticks=%d, usecs_remaining=%.0f usecs, inst_til_tick=%d\n",
|
sim_debug (DBG_TIM, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - coscheduling with with calibrated timer(%d), ticks=%d, usecs_remaining=%.0f usecs, inst_til_tick=%d, ticks_til_calib=%d\n",
|
||||||
sim_uname(uptr), usec_delay, sim_calb_tmr, ticks_til_calib, uptr->usecs_remaining, inst_til_tick);
|
sim_uname(uptr), usec_delay, sim_calb_tmr, ticks_til_calib, uptr->usecs_remaining, inst_til_tick, ticks_til_calib);
|
||||||
sim_debug (DBG_CHK, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - result = %.0f usecs, %.0f usecs\n",
|
sim_debug (DBG_CHK, &sim_timer_dev, "sim_timer_activate_after(%s, %.0f usecs) - result = %.0f usecs, %.0f usecs\n",
|
||||||
sim_uname(uptr), usec_delay, sim_timer_activate_time_usecs (ouptr), sim_timer_activate_time_usecs (uptr));
|
sim_uname(uptr), usec_delay, sim_timer_activate_time_usecs (ouptr), sim_timer_activate_time_usecs (uptr));
|
||||||
return stat;
|
return stat;
|
||||||
|
@ -3018,7 +3019,7 @@ if (uptr->cancel == &_sim_coschedule_cancel) {
|
||||||
accum += cptr->time;
|
accum += cptr->time;
|
||||||
if (cptr == uptr) {
|
if (cptr == uptr) {
|
||||||
result = uptr->usecs_remaining + ceil(1000000.0 * ((rtc_currd[tmr] * accum) + sim_activate_time (&sim_timer_units[tmr]) - 1) / sim_timer_inst_per_sec ());
|
result = uptr->usecs_remaining + ceil(1000000.0 * ((rtc_currd[tmr] * accum) + sim_activate_time (&sim_timer_units[tmr]) - 1) / sim_timer_inst_per_sec ());
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) coscheduled - %.0f usecs, inst_per_sec=%.0f, tmr=%d, ticksize=%d, ticks=%d, inst_til_tick=%d\n", sim_uname (uptr), result, sim_timer_inst_per_sec (), tmr, rtc_currd[tmr], accum, sim_activate_time (&sim_timer_units[tmr]) - 1);
|
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) coscheduled - %.0f usecs, inst_per_sec=%.0f, tmr=%d, ticksize=%d, ticks=%d, inst_til_tick=%d, usecs_remaining=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec (), tmr, rtc_currd[tmr], accum, sim_activate_time (&sim_timer_units[tmr]) - 1, uptr->usecs_remaining);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3027,17 +3028,17 @@ if (uptr->cancel == &_sim_coschedule_cancel) {
|
||||||
for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {
|
for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {
|
||||||
if ((uptr == sim_clock_unit[tmr]) && (uptr->next)) {
|
if ((uptr == sim_clock_unit[tmr]) && (uptr->next)) {
|
||||||
result = sim_clock_unit[tmr]->usecs_remaining + (1000000.0 * (sim_activate_time (&sim_timer_units[tmr]) - 1)) / sim_timer_inst_per_sec ();
|
result = sim_clock_unit[tmr]->usecs_remaining + (1000000.0 * (sim_activate_time (&sim_timer_units[tmr]) - 1)) / sim_timer_inst_per_sec ();
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec ());
|
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f, usecs_remaining=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec (), uptr->usecs_remaining);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if ((uptr == &sim_timer_units[tmr]) && (uptr->next)){
|
if ((uptr == &sim_timer_units[tmr]) && (uptr->next)){
|
||||||
result = uptr->usecs_remaining + (1000000.0 * (sim_activate_time (uptr) - 1)) / sim_timer_inst_per_sec ();
|
result = uptr->usecs_remaining + (1000000.0 * (sim_activate_time (uptr) - 1)) / sim_timer_inst_per_sec ();
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec ());
|
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f, usecs_remaining=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec (), uptr->usecs_remaining);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result = uptr->usecs_remaining + (1000000.0 * (sim_activate_time (uptr) - 1)) / sim_timer_inst_per_sec ();
|
result = uptr->usecs_remaining + (1000000.0 * (sim_activate_time (uptr) - 1)) / sim_timer_inst_per_sec ();
|
||||||
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec ());
|
sim_debug (DBG_QUE, &sim_timer_dev, "sim_timer_activate_time_usecs(%s) clock - %.0f usecs, inst_per_sec=%.0f, usecs_remaining=%.0f\n", sim_uname (uptr), result, sim_timer_inst_per_sec (), uptr->usecs_remaining);
|
||||||
return result; /* Not found. */
|
return result; /* Not found. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
24
sim_tmxr.c
24
sim_tmxr.c
|
@ -4136,18 +4136,18 @@ if (!(uptr->dynflags & UNIT_TM_POLL))
|
||||||
return _sim_activate (uptr, interval); /* Handle the non mux case */
|
return _sim_activate (uptr, interval); /* Handle the non mux case */
|
||||||
sooner = _tmxr_activate_delay (uptr, interval);
|
sooner = _tmxr_activate_delay (uptr, interval);
|
||||||
if (sooner != interval) {
|
if (sooner != interval) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %d instructions rather than %d instructions\n", sim_uname (uptr), sooner, interval);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate() - scheduling %s after %d instructions rather than %d instructions\n", sim_uname (uptr), sooner, interval);
|
||||||
return _sim_activate (uptr, sooner); /* Handle the busy case */
|
return _sim_activate (uptr, sooner); /* Handle the busy case */
|
||||||
}
|
}
|
||||||
#if defined(SIM_ASYNCH_MUX)
|
#if defined(SIM_ASYNCH_MUX)
|
||||||
if (!sim_asynch_enabled) {
|
if (!sim_asynch_enabled) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %d instructions\n", sim_uname (uptr), interval);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate() - scheduling %s after %d instructions\n", sim_uname (uptr), interval);
|
||||||
return _sim_activate (uptr, interval);
|
return _sim_activate (uptr, interval);
|
||||||
}
|
}
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s asynchronously instead of %d instructions\n", sim_uname (uptr), interval);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate() - scheduling %s asynchronously instead of %d instructions\n", sim_uname (uptr), interval);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
#else
|
#else
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %d instructions\n", sim_uname (uptr), interval);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate() - scheduling %s after %d instructions\n", sim_uname (uptr), interval);
|
||||||
return _sim_activate (uptr, interval);
|
return _sim_activate (uptr, interval);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -4170,21 +4170,21 @@ if (!(uptr->dynflags & UNIT_TM_POLL))
|
||||||
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF);
|
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF);
|
||||||
if (sooner != 0x7FFFFFFF) {
|
if (sooner != 0x7FFFFFFF) {
|
||||||
if (sooner < 0) {
|
if (sooner < 0) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s for %u usecs produced overflow interval %d instructions, sceduling for %d instructions\n", sim_uname (uptr), usecs_walltime, sooner, 0x7FFFFFFF);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s for %u usecs produced overflow interval %d instructions, sceduling for %d instructions\n", sim_uname (uptr), usecs_walltime, sooner, 0x7FFFFFFF);
|
||||||
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF); /* Breakpoint here on unexpected value */
|
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF); /* Breakpoint here on unexpected value */
|
||||||
}
|
}
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %d instructions rather than %u usecs\n", sim_uname (uptr), sooner, usecs_walltime);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s after %d instructions rather than %u usecs\n", sim_uname (uptr), sooner, usecs_walltime);
|
||||||
return _sim_activate (uptr, sooner); /* Handle the busy case directly */
|
return _sim_activate (uptr, sooner); /* Handle the busy case directly */
|
||||||
}
|
}
|
||||||
#if defined(SIM_ASYNCH_MUX)
|
#if defined(SIM_ASYNCH_MUX)
|
||||||
if (!sim_asynch_enabled) {
|
if (!sim_asynch_enabled) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %u usecs\n", sim_uname (uptr), usecs_walltime);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s after %u usecs\n", sim_uname (uptr), usecs_walltime);
|
||||||
return _sim_activate_after (uptr, (double)usecs_walltime);
|
return _sim_activate_after (uptr, (double)usecs_walltime);
|
||||||
}
|
}
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s asynchronously instead of %u usecs\n", sim_uname (uptr), usecs_walltime);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s asynchronously instead of %u usecs\n", sim_uname (uptr), usecs_walltime);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
#else
|
#else
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %u usecs\n", sim_uname (uptr), usecs_walltime);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s after %.0f usecs\n", sim_uname (uptr), (double)usecs_walltime);
|
||||||
return _sim_activate_after (uptr, (double)usecs_walltime);
|
return _sim_activate_after (uptr, (double)usecs_walltime);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -4220,17 +4220,17 @@ if (!(uptr->dynflags & UNIT_TM_POLL))
|
||||||
return sim_clock_coschedule_tmr (uptr, tmr, ticks); /* Handle the non mux case */
|
return sim_clock_coschedule_tmr (uptr, tmr, ticks); /* Handle the non mux case */
|
||||||
sooner = _tmxr_activate_delay (uptr, interval);
|
sooner = _tmxr_activate_delay (uptr, interval);
|
||||||
if (sooner != interval) {
|
if (sooner != interval) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "scheduling %s after %d instructions rather than %d ticks (%d instructions)\n", sim_uname (uptr), sooner, ticks, interval);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_clock_coschedule_tmr() - scheduling %s after %d instructions rather than %d ticks (%d instructions)\n", sim_uname (uptr), sooner, ticks, interval);
|
||||||
return _sim_activate (uptr, sooner); /* Handle the busy case directly */
|
return _sim_activate (uptr, sooner); /* Handle the busy case directly */
|
||||||
}
|
}
|
||||||
#if defined(SIM_ASYNCH_MUX)
|
#if defined(SIM_ASYNCH_MUX)
|
||||||
if (!sim_asynch_enabled) {
|
if (!sim_asynch_enabled) {
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "coscheduling %s after interval %d ticks\n", sim_uname (uptr), ticks);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_clock_coschedule_tmr() - coscheduling %s after interval %d ticks\n", sim_uname (uptr), ticks);
|
||||||
return sim_clock_coschedule (uptr, tmr, ticks);
|
return sim_clock_coschedule (uptr, tmr, ticks);
|
||||||
}
|
}
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
#else
|
#else
|
||||||
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "coscheduling %s after interval %d ticks\n", sim_uname (uptr), ticks);
|
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_clock_coschedule_tmr() - coscheduling %s after interval %d ticks\n", sim_uname (uptr), ticks);
|
||||||
return sim_clock_coschedule_tmr (uptr, tmr, ticks);
|
return sim_clock_coschedule_tmr (uptr, tmr, ticks);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue