<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>