pre-APPROVEd (thanks Arun) sanity check function.
This commit is contained in:
parent
97fe6a4ba5
commit
1d0854e6db
@ -339,6 +339,49 @@ PUBLIC void alloc_segments(register struct proc *rp)
|
|||||||
rp->p_reg.ds = (DS_LDT_INDEX*DESC_SIZE) | TI | privilege;
|
rp->p_reg.ds = (DS_LDT_INDEX*DESC_SIZE) | TI | privilege;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*===========================================================================*
|
||||||
|
* check_segments *
|
||||||
|
*===========================================================================*/
|
||||||
|
PUBLIC void check_segments(char *File, int line)
|
||||||
|
{
|
||||||
|
int checked = 0;
|
||||||
|
int fail = 0;
|
||||||
|
struct proc *rp;
|
||||||
|
for (rp = BEG_PROC_ADDR; rp < END_PROC_ADDR; ++rp) {
|
||||||
|
|
||||||
|
int privilege;
|
||||||
|
int cs, ds;
|
||||||
|
|
||||||
|
if (RTS_ISSET(rp, SLOT_FREE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( (iskernelp(rp)))
|
||||||
|
privilege = TASK_PRIVILEGE;
|
||||||
|
else
|
||||||
|
privilege = USER_PRIVILEGE;
|
||||||
|
|
||||||
|
cs = (CS_LDT_INDEX*DESC_SIZE) | TI | privilege;
|
||||||
|
ds = (DS_LDT_INDEX*DESC_SIZE) | TI | privilege;
|
||||||
|
|
||||||
|
#define CHECK(s1, s2) if(s1 != s2) { \
|
||||||
|
printf("%s:%d: " #s1 " != " #s2 " for ep %d\n", \
|
||||||
|
File, line, rp->p_endpoint); fail++; } checked++;
|
||||||
|
|
||||||
|
CHECK(rp->p_reg.cs, cs);
|
||||||
|
CHECK(rp->p_reg.gs, ds);
|
||||||
|
CHECK(rp->p_reg.fs, ds);
|
||||||
|
CHECK(rp->p_reg.ss, ds);
|
||||||
|
if(rp->p_endpoint != -2) {
|
||||||
|
CHECK(rp->p_reg.es, ds);
|
||||||
|
}
|
||||||
|
CHECK(rp->p_reg.ds, ds);
|
||||||
|
}
|
||||||
|
if(fail) {
|
||||||
|
printf("%d/%d checks failed\n", fail, checked);
|
||||||
|
minix_panic("wrong", fail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* printseg *
|
* printseg *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user