- Info
1
6
7
13
14 #ifndef _INCLUDE__RAM_SESSION__RAM_SESSION_H_
15 #define _INCLUDE__RAM_SESSION__RAM_SESSION_H_
16
17 #include <base/stdint.h>
18 #include <base/capability.h>
19 #include <base/exception.h>
20 #include <dataspace/capability.h>
21 #include <ram_session/capability.h>
22
23 namespace Genode {
24
25 typedef Typed_capability<Dataspace, Dataspace_capability> Ram_dataspace_capability;
26
27 class Ram_session
28 {
29 protected:
30
31 enum Opcode {
32 ALLOC, FREE, REF_ACCOUNT, TRANSFER_QUOTA, QUOTA, USED
33 };
34
35 public:
36
37 static const char *service_name() { return "RAM"; }
38
39
40
43
44 class Alloc_failed : public Exception { };
45 class Quota_exceeded : public Alloc_failed { };
46
47
48
51 virtual ~Ram_session() { }
52
53
61 virtual Ram_dataspace_capability alloc(size_t size) = 0;
62
63
68 virtual void free(Ram_dataspace_capability ds) = 0;
69
70
81 virtual int ref_account(Ram_session_capability ram_session) = 0;
82
83
94 virtual int transfer_quota(Ram_session_capability ram_session, size_t amount) = 0;
95
96
99 virtual size_t quota() = 0;
100
101
104 virtual size_t used() = 0;
105
106
109 size_t avail()
110 {
111 size_t q = quota(), u = used();
112 return q > u ? q - u : 0;
113 }
114 };
115 }
116
117 #endif