]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/moe/server/src/quota.h
update
[l4.git] / l4 / pkg / moe / server / src / quota.h
index cde2c3f82817b1d185974decefa198d491ed41a1..08d0324e999b3a5184a5d83dcbb7a9ec003777b9 100644 (file)
@@ -40,11 +40,18 @@ public:
   explicit Quota(size_t limit) : _limit(limit), _used(0) {}
   bool alloc(size_t s)
   {
-    if (_limit && (s > _limit || _used > _limit - s))
+    if (_limit && (s > _limit))
       return false;
 
+    if (_limit && (_used > _limit - s))
+      {
+        GC_gcollect_and_unmap();
+        if (_used > _limit - s)
+          return false;
+      }
+
     _used += s;
-    // printf("Q: alloc(%zx) -> %zx\n", s, _used);
+    //printf("Q: alloc(%zx) -> %zx\n", s, _used);
     return true;
   }