<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="Ih2E3d">Now the question is: which is the difference between idle=VMS and idle=32v and<br>
why VMS 4.x works better with the "wrong" setting?<br></div></blockquote><div><br></div><div>In the code it's really quite simple:</div><div><br></div><div>from vax_cpu.c</div><div><br></div><div>In version 3.8-0</div>
<div>uint32 cpu_idle_ipl_mask = 0x8; /* idle if on IPL 3 */<br></div><div><br></div><div>And yet in 3.7-1</div><div><br></div><div>uint32 cpu_idle_ipl_mask = 0xB; /* idle if on IPL 0,1,3*/<br>
</div><div> </div><div><br></div><div>So of course I've tried changing the 0x8 to 0xB to no discernible difference. There is also this in 3.8-0 that let's you select the 'os'</div><div><br></div><div><div>
static struct os_idle os_tab[] = {</div><div> { "VMS", 0x8 },</div><div> { "NETBSD", 0x2 },</div><div> { "ULTRIX", 0x2 },</div><div> { "OPENBSD", 0x1 },</div><div> { "32V", 0x1 },</div>
<div> { "0", 0x0 }, //Added for testing </div><div> { "1", 0x1 }, //by Jason</div><div> { "2", 0x2 },</div><div> { "3", 0x3 },</div>
<div> { "4", 0x4 },</div><div> { "5", 0x5 },</div><div> { "6", 0x6 },</div><div> { "7", 0x7 },</div><div> { "8", 0x8 },</div><div> { "9", 0x9 },</div>
<div> { "A", 0xa },</div><div> { "B", 0xb },</div><div> { "C", 0xc },</div><div> { "D", 0xd },</div><div> { "E", 0xe },</div><div> { "F", 0xf },</div>
<div> { NULL, 0 }</div><div>};</div><div><br></div><div><br></div><div><div>t_stat cpu_set_idle (UNIT *uptr, int32 val, char *cptr, void *desc)</div><div>{</div><div>uint32 i;</div><div><br></div><div>if (cptr != NULL) {</div>
<div> for (i = 0; os_tab[i].name != NULL; i++) {</div><div> if (strcmp (os_tab[i].name, cptr) == 0) {</div><div> cpu_idle_type = i + 1;</div><div> cpu_idle_ipl_mask = os_tab[i].mask;</div><div>
return sim_set_idle (uptr, val, cptr, desc);</div><div> }</div><div> }</div><div> return SCPE_ARG;</div><div> }</div><div>return sim_set_idle (uptr, val, cptr, desc);</div><div>}</div></div>
</div><div><br></div><div>So what I've done is added one byte's worth of IPL masking in the equation, and they all suck up 100% of the cpu, except the 32V setting, although the slightest thing can knock it back to 100%.</div>
<div><br></div><div>I did have a nonsense version I built that would print "i" every time it should idle, and flush out stdout, and it actually did reduce cpu consumption.... although the console is useless.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="Ih2E3d">
<br>
Thanks again,<br>
G.</div></blockquote><div><br></div><div>I'll keep on plugging away... It's annoying I though I did have a 'fixed' back port of it, but naturally I can't find it anywhere.</div><div> </div></div></div>