提交 b6a87fd8 创建 作者: Frans Kaashoek's avatar Frans Kaashoek

From user-space:

- working crange_search - crange_search takes sz as argument - better for deciding when a node can be delayed freed
上级 dbc11d57
差异被折叠。
...@@ -72,7 +72,7 @@ struct crange* crange_alloc(int nlevel); ...@@ -72,7 +72,7 @@ struct crange* crange_alloc(int nlevel);
void crange_free(struct crange *cr); void crange_free(struct crange *cr);
void crange_del(struct crange *cr, u64 k, u64 sz); void crange_del(struct crange *cr, u64 k, u64 sz);
void crange_add(struct crange *cr, u64 k, u64 sz, void *v); void crange_add(struct crange *cr, u64 k, u64 sz, void *v);
struct clist_range* crange_search(struct crange *cr, u64 k); struct clist_range* crange_search(struct crange *cr, u64 k, u64 sz);
int crange_foreach(struct crange *crk, int (*f)(struct clist_range *r, void *st), void *st); int crange_foreach(struct crange *crk, int (*f)(struct clist_range *r, void *st), void *st);
void crange_print(struct crange *cr, int); void crange_print(struct crange *cr, int);
......
...@@ -345,7 +345,7 @@ vmap_lookup(struct vmap *m, uptr start, uptr len) ...@@ -345,7 +345,7 @@ vmap_lookup(struct vmap *m, uptr start, uptr len)
if(start + len < start) if(start + len < start)
panic("vmap_lookup bad len"); panic("vmap_lookup bad len");
struct clist_range *r = crange_search(m->cr, start); struct clist_range *r = crange_search(m->cr, start, len);
if (r != 0) { if (r != 0) {
struct vma *e = (struct vma *) (r->value); struct vma *e = (struct vma *) (r->value);
if (e->va_end <= e->va_start) if (e->va_end <= e->va_start)
...@@ -446,7 +446,7 @@ vmap_remove(struct vmap *m, uptr va_start, u64 len) ...@@ -446,7 +446,7 @@ vmap_remove(struct vmap *m, uptr va_start, u64 len)
{ {
acquire(&m->lock); acquire(&m->lock);
uptr va_end = va_start + len; uptr va_end = va_start + len;
struct clist_range *r = crange_search(m->cr, va_start); struct clist_range *r = crange_search(m->cr, va_start, len);
if (r == 0) if (r == 0)
panic("no vma?"); panic("no vma?");
struct vma *e = (struct vma *) r->value; struct vma *e = (struct vma *) r->value;
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论