]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/fb-drv/server/src/fb.h
Some minor fixes.
[l4.git] / l4 / pkg / fb-drv / server / src / fb.h
1 /*
2  * (c) 2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
3  *          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 #pragma once
11
12 #include <l4/re/util/video/goos_svr>
13 #include <l4/re/util/object_registry>
14 #include <l4/re/util/dataspace_svr>
15 #include <l4/cxx/ipc_server>
16
17 class Prog_args
18 {
19 public:
20   Prog_args(int argc, char *argv[]);
21
22   int vbemode;
23   bool do_dummy;
24   char *config_str;
25 };
26
27
28 class Phys_fb :
29   public L4Re::Util::Video::Goos_svr,
30   public L4Re::Util::Dataspace_svr,
31   public L4::Epiface_t<Phys_fb, L4::Kobject_2t<void, L4Re::Dataspace, L4Re::Video::Goos> >
32 {
33 public:
34   using L4Re::Util::Video::Goos_svr::op_info;
35   using L4Re::Util::Dataspace_svr::op_info;
36
37   Phys_fb() : _vidmem_start(0), _map_done(0) {}
38
39   ~Phys_fb() throw() {}
40   virtual bool setup_drv(Prog_args *pa, L4Re::Util::Object_registry *r) = 0;
41   void setup_ds(char const *name);
42
43   int map_hook(l4_addr_t offs, unsigned long flags,
44                l4_addr_t min, l4_addr_t max);
45
46   bool running() { return _vidmem_start; };
47
48   static Phys_fb *probe();
49   static Phys_fb *get_dummy();
50
51 protected:
52   l4_addr_t _vidmem_start;
53   l4_addr_t _vidmem_end;
54   l4_addr_t _vidmem_size;
55
56 private:
57   bool _map_done;
58 };
59