> I think it should be
> if(mapsize > (SEGMAPSIZE))
>             mapsize = SEGMAPSIZE;

hmm.  i think this code is correct.  ssegmap is a static map
to handle small segments.  small segments fit in ssegmap.
the point must have been to avoid malloc.

this test is a little more questionable

>       if(mapsize > (SEGMAPSIZE*PTEPERTAB))
>               mapsize = (SEGMAPSIZE*PTEPERTAB);

cf. the check in ibrk

        if(newsize > (SEGMAPSIZE*PTEPERTAB)) {
                qunlock(&s->lk);
                error(Enovmem);
        }

i think this check is either not wrong, or more extensive rework
is necessary.

@anthony, do you know if this code or similar occurred in even older kernels?
if there was a cap also in ibrk() then i would suspect this code was originally
correct.

i don't know where a history of stuff older than sources (2002) is.

> Also why in the kernel they use 'struct Pte' instead of the better name 
> Pagetable.
> In many places this is very confusing because when I see Pte I think of a 
> Pagetable Entry
> where really they are speaking about a Pagetable.

i would naturally think a Pte* would be an array of Pte's, i.e. a Pte table,
just like an array of uchar* could be used as a table.

- erik

Reply via email to