]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ia32/vm_factory-ia32.cpp
7e8a57f681444d6ebecf0b88922a76da1c87dfa0
[l4.git] / kernel / fiasco / src / kern / ia32 / vm_factory-ia32.cpp
1 IMPLEMENTATION [svm]:
2
3 #include "ram_quota.h"
4 #include "svm.h"
5 #include "vm_svm.h"
6
7 PRIVATE static inline
8 template< typename VM >
9 VM *
10 Vm_factory::allocate(Ram_quota *quota)
11 {
12   if (void *t = Vm::allocator<VM>()->q_alloc(quota))
13     {
14       VM *a = new (t) VM(quota);
15       if (a->valid())
16         return a;
17
18       delete a;
19     }
20
21   return 0;
22 }
23
24 IMPLEMENT
25 Vm *
26 Vm_factory::create(Ram_quota *quota)
27 {
28   if (Svm::cpus.cpu(current_cpu()).svm_enabled())
29     return allocate<Vm_svm>(quota);
30
31   return 0;
32 }
33
34 IMPLEMENTATION [!svm]:
35
36 IMPLEMENT
37 Vm *
38 Vm_factory::create(Ram_quota *)
39 { return 0; }