[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pmap oddity
pmap.c に、以下のような部分があります。
/*
* Find suitably aligned memory for HTAB.
*/
for (mp = avail; mp->size; mp++) {
s = mp->size % HTABSIZE;
if (mp->size < s + HTABSIZE)
continue;
ptable = (pte_t *)(mp->start + s);
この s = ... の行(のあたり)、何をしたいんでしょうか?
前後関係からすると、align したページテーブルを作ろうとしているので、
--- pmap.c~ Tue Feb 2 17:36:35 1999
+++ pmap.c Tue Feb 2 17:37:26 1999
@@ -414,7 +414,7 @@
* Find suitably aligned memory for HTAB.
*/
for (mp = avail; mp->size; mp++) {
- s = mp->size % HTABSIZE;
+ s = roundup(mp->start, HTABSIZE) - mp->start;
if (mp->size < s + HTABSIZE)
continue;
ptable = (pte_t *)(mp->start + s);
が正しいように思えます。
# なぜあのままで動くのかなあ…。