]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/mag/server/src/object_gc.h
Update
[l4.git] / l4 / pkg / mag / server / src / object_gc.h
1 // vi:ft=cpp
2 /*
3  * (c) 2010 Alexander Warg <warg@os.inf.tu-dresden.de>
4  *     economic rights: Technische Universität Dresden (Germany)
5  *
6  * This file is part of TUD:OS and distributed under the terms of the
7  * GNU General Public License 2.
8  * Please see the COPYING-GPL-2 file for details.
9  */
10
11 #pragma once
12
13 #include <l4/mag/server/object>
14
15 namespace Mag_server {
16
17 class Object_gc
18 {
19 private:
20   Object_gc(Object_gc const &);
21   void operator = (Object_gc const &);
22
23 protected:
24   typedef cxx::H_list<Object> Obj_list;
25   typedef Obj_list::Iterator Obj_iter;
26
27   Obj_list _life;
28   Obj_list _sweep;
29
30 public:
31   Object_gc() {}
32
33   void gc_sweep();
34   void gc_step();
35   void add_obj(Object *o) { o->enqueue(&_life); }
36
37   virtual void gc_obj(Object *o) = 0;
38 };
39
40 }