mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-24 15:56:41 +00:00
vancouver: coding style
This commit is contained in:
parent
b0d23abaa7
commit
4b8f991f52
@ -97,7 +97,7 @@ volatile bool console_init = false;
|
|||||||
volatile bool disk_init = false;
|
volatile bool disk_init = false;
|
||||||
|
|
||||||
|
|
||||||
/* Timer Service */
|
/* timer service */
|
||||||
using Genode::Thread;
|
using Genode::Thread;
|
||||||
using Genode::Alarm_scheduler;
|
using Genode::Alarm_scheduler;
|
||||||
using Genode::Alarm;
|
using Genode::Alarm;
|
||||||
@ -240,7 +240,6 @@ class Guest_memory
|
|||||||
((Genode::addr_t) _local_addr)+backing_store_size-fb_size);
|
((Genode::addr_t) _local_addr)+backing_store_size-fb_size);
|
||||||
|
|
||||||
} catch (Genode::Rm_session::Region_conflict) { }
|
} catch (Genode::Rm_session::Region_conflict) { }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~Guest_memory()
|
~Guest_memory()
|
||||||
@ -274,11 +273,12 @@ class Guest_memory
|
|||||||
|
|
||||||
Genode::size_t fb_size() { return _fb_size; }
|
Genode::size_t fb_size() { return _fb_size; }
|
||||||
|
|
||||||
Genode::Dataspace_capability fb_ds() { return _fb_ds; }
|
Genode::Dataspace_capability fb_ds() { return _fb_ds; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class Vcpu_thread : Genode::Thread<STACK_SIZE> {
|
|
||||||
|
|
||||||
|
class Vcpu_thread : Genode::Thread<STACK_SIZE>
|
||||||
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -321,7 +321,7 @@ class Vcpu_thread : Genode::Thread<STACK_SIZE> {
|
|||||||
|
|
||||||
void start(Genode::addr_t sel_ec)
|
void start(Genode::addr_t sel_ec)
|
||||||
{
|
{
|
||||||
this->Thread_base::start();
|
this->Thread_base::start();
|
||||||
|
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
@ -338,12 +338,12 @@ class Vcpu_thread : Genode::Thread<STACK_SIZE> {
|
|||||||
|
|
||||||
if (!ec_cap.valid() || sel_ec != ec_cap.local_name())
|
if (!ec_cap.valid() || sel_ec != ec_cap.local_name())
|
||||||
Logging::panic("Could not collocate EC cap");
|
Logging::panic("Could not collocate EC cap");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void entry() { }
|
void entry() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
||||||
public StaticReceiver<Vcpu_dispatcher>
|
public StaticReceiver<Vcpu_dispatcher>
|
||||||
{
|
{
|
||||||
@ -445,11 +445,11 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
msg.cpu->mtd = msg.mtr_out;
|
msg.cpu->mtd = msg.mtr_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get position of the least significant 1 bit.
|
* Get position of the least significant 1 bit.
|
||||||
* bsf is undefined for value == 0.
|
* bsf is undefined for value == 0.
|
||||||
*/
|
*/
|
||||||
Genode::addr_t bsf(Genode::addr_t value) {
|
Genode::addr_t bsf(Genode::addr_t value) {
|
||||||
return __builtin_ctz(value); }
|
return __builtin_ctz(value); }
|
||||||
|
|
||||||
bool max_map_crd(Nova::Mem_crd &crd, Genode::addr_t vmm_start,
|
bool max_map_crd(Nova::Mem_crd &crd, Genode::addr_t vmm_start,
|
||||||
@ -561,10 +561,12 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
if (utcb->inj_info & 0x80000000) {
|
if (utcb->inj_info & 0x80000000) {
|
||||||
utcb->mtd |= MTD_INJ;
|
utcb->mtd |= MTD_INJ;
|
||||||
Logging::printf("EPT violation during IDT vectoring.\n");
|
Logging::printf("EPT violation during IDT vectoring.\n");
|
||||||
CpuMessage _win(CpuMessage::TYPE_CALC_IRQWINDOW, static_cast<CpuState *>(utcb), utcb->mtd);
|
CpuMessage _win(CpuMessage::TYPE_CALC_IRQWINDOW,
|
||||||
|
static_cast<CpuState *>(utcb), utcb->mtd);
|
||||||
_win.mtr_out = MTD_INJ;
|
_win.mtr_out = MTD_INJ;
|
||||||
if (!_vcpu->executor.send(_win, true))
|
if (!_vcpu->executor.send(_win, true))
|
||||||
Logging::panic("nobody to execute %s at %x:%x\n", __func__, utcb->cs.sel, utcb->eip);
|
Logging::panic("nobody to execute %s at %x:%x\n",
|
||||||
|
__func__, utcb->cs.sel, utcb->eip);
|
||||||
}
|
}
|
||||||
|
|
||||||
Nova::Utcb * u = (Nova::Utcb *)utcb;
|
Nova::Utcb * u = (Nova::Utcb *)utcb;
|
||||||
@ -582,12 +584,14 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
is_in, io_order, port);
|
is_in, io_order, port);
|
||||||
|
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
CpuMessage msg(is_in, static_cast<CpuState *>(utcb), io_order, port, &utcb->eax, utcb->mtd);
|
CpuMessage msg(is_in, static_cast<CpuState *>(utcb), io_order,
|
||||||
|
port, &utcb->eax, utcb->mtd);
|
||||||
_skip_instruction(msg);
|
_skip_instruction(msg);
|
||||||
{
|
{
|
||||||
Genode::Lock::Guard l(global_lock);
|
Genode::Lock::Guard l(global_lock);
|
||||||
if (!_vcpu->executor.send(msg, true))
|
if (!_vcpu->executor.send(msg, true))
|
||||||
Logging::panic("nobody to execute %s at %x:%x\n", __func__, msg.cpu->cs.sel, msg.cpu->eip);
|
Logging::panic("nobody to execute %s at %x:%x\n",
|
||||||
|
__func__, msg.cpu->cs.sel, msg.cpu->eip);
|
||||||
}
|
}
|
||||||
|
|
||||||
utcb->mtd = msg.mtr_out;
|
utcb->mtd = msg.mtr_out;
|
||||||
@ -694,7 +698,8 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
void _vmx_pause()
|
void _vmx_pause()
|
||||||
{
|
{
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
CpuMessage msg(CpuMessage::TYPE_SINGLE_STEP, static_cast<CpuState *>(utcb), utcb->mtd);
|
CpuMessage msg(CpuMessage::TYPE_SINGLE_STEP,
|
||||||
|
static_cast<CpuState *>(utcb), utcb->mtd);
|
||||||
_skip_instruction(msg);
|
_skip_instruction(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -709,10 +714,10 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
void _vmx_startup()
|
void _vmx_startup()
|
||||||
{
|
{
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
_handle_vcpu(NO_SKIP, CpuMessage::TYPE_HLT);
|
_handle_vcpu(NO_SKIP, CpuMessage::TYPE_HLT);
|
||||||
utcb->mtd |= MTD_CTRL;
|
utcb->mtd |= MTD_CTRL;
|
||||||
utcb->ctrl[0] = 0;
|
utcb->ctrl[0] = 0;
|
||||||
utcb->ctrl[1] = 0;
|
utcb->ctrl[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _vmx_recall()
|
void _vmx_recall()
|
||||||
@ -729,7 +734,7 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
} else {
|
} else {
|
||||||
order = utcb->qual[0] & 7;
|
order = utcb->qual[0] & 7;
|
||||||
if (order > 2) order = 2;
|
if (order > 2) order = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
_handle_io(utcb->qual[0] & 8, order, utcb->qual[0] >> 16);
|
_handle_io(utcb->qual[0] & 8, order, utcb->qual[0] >> 16);
|
||||||
}
|
}
|
||||||
@ -738,10 +743,9 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
{
|
{
|
||||||
Utcb *utcb = _utcb_of_myself();
|
Utcb *utcb = _utcb_of_myself();
|
||||||
|
|
||||||
if (!_handle_map_memory(utcb->qual[0] & 0x38))
|
if (!_handle_map_memory(utcb->qual[0] & 0x38))
|
||||||
/* this is an access to MMIO */
|
/* this is an access to MMIO */
|
||||||
_handle_vcpu(NO_SKIP, CpuMessage::TYPE_SINGLE_STEP);
|
_handle_vcpu(NO_SKIP, CpuMessage::TYPE_SINGLE_STEP);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _vmx_cpuid()
|
void _vmx_cpuid()
|
||||||
@ -800,11 +804,9 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
|
|
||||||
Native_capability thread(tid().ec_sel);
|
Native_capability thread(tid().ec_sel);
|
||||||
Native_capability handler =
|
Native_capability handler =
|
||||||
_cap_session.alloc(thread, (Nova::mword_t)portal_entry,
|
_cap_session.alloc(thread, (Nova::mword_t)portal_entry, mtd.value());
|
||||||
mtd.value());
|
|
||||||
|
|
||||||
if (!handler.valid() ||
|
if (!handler.valid() || exc_base + EV != handler.local_name())
|
||||||
exc_base + EV != handler.local_name())
|
|
||||||
Logging::panic("Could not get EC cap");
|
Logging::panic("Could not get EC cap");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -871,6 +873,7 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
Mtd const mtd_all(Mtd::ALL);
|
Mtd const mtd_all(Mtd::ALL);
|
||||||
Mtd const mtd_cpuid(Mtd::EIP | Mtd::ACDB | Mtd::IRQ);
|
Mtd const mtd_cpuid(Mtd::EIP | Mtd::ACDB | Mtd::IRQ);
|
||||||
Mtd const mtd_irq(Mtd::IRQ);
|
Mtd const mtd_irq(Mtd::IRQ);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Register vCPU event handlers
|
* Register vCPU event handlers
|
||||||
*/
|
*/
|
||||||
@ -996,8 +999,10 @@ class Vcpu_dispatcher : public Genode::Thread<STACK_SIZE>,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const void * _forward_pkt;
|
const void * _forward_pkt;
|
||||||
|
|
||||||
|
|
||||||
class Machine : public StaticReceiver<Machine>
|
class Machine : public StaticReceiver<Machine>
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -1052,7 +1057,7 @@ class Machine : public StaticReceiver<Machine>
|
|||||||
|
|
||||||
if (verbose_debug)
|
if (verbose_debug)
|
||||||
Logging::printf(" -> len=0x%lx, ptr=0x%p\n",
|
Logging::printf(" -> len=0x%lx, ptr=0x%p\n",
|
||||||
msg.len, msg.ptr);
|
msg.len, msg.ptr);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1215,7 +1220,7 @@ class Machine : public StaticReceiver<Machine>
|
|||||||
((Genode::uint64_t)_nic->mac_address().addr[4] & 0xff) << 8 |
|
((Genode::uint64_t)_nic->mac_address().addr[4] & 0xff) << 8 |
|
||||||
((Genode::uint64_t)_nic->mac_address().addr[5] & 0xff);
|
((Genode::uint64_t)_nic->mac_address().addr[5] & 0xff);
|
||||||
|
|
||||||
/* Start receiver thread for this MAC */
|
/* start receiver thread for this MAC */
|
||||||
Vancouver_network * netreceiver = new Vancouver_network(_motherboard, _nic);
|
Vancouver_network * netreceiver = new Vancouver_network(_motherboard, _nic);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1289,7 +1294,7 @@ class Machine : public StaticReceiver<Machine>
|
|||||||
Logging::printf("Got time %llx\n", msg.wallclocktime);
|
Logging::printf("Got time %llx\n", msg.wallclocktime);
|
||||||
msg.timestamp = _motherboard.clock()->clock(TimerProtocol::WALLCLOCK_FREQUENCY);
|
msg.timestamp = _motherboard.clock()->clock(TimerProtocol::WALLCLOCK_FREQUENCY);
|
||||||
|
|
||||||
*Genode::Thread_base::myself()->utcb() = utcb_backup;
|
*Genode::Thread_base::myself()->utcb() = utcb_backup;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1502,14 +1507,12 @@ class Machine : public StaticReceiver<Machine>
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
extern unsigned long _prog_img_beg; /* begin of program image (link address) */
|
extern unsigned long _prog_img_beg; /* begin of program image (link address) */
|
||||||
extern unsigned long _prog_img_end; /* end of program image */
|
extern unsigned long _prog_img_end; /* end of program image */
|
||||||
|
|
||||||
namespace Genode {
|
namespace Genode { Rm_session *env_context_area_rm_session(); }
|
||||||
|
|
||||||
Rm_session *env_context_area_rm_session();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -1539,7 +1542,7 @@ int main(int argc, char **argv)
|
|||||||
unsigned long val;
|
unsigned long val;
|
||||||
arg.value(&val);
|
arg.value(&val);
|
||||||
fb_size = val*1024;
|
fb_size = val*1024;
|
||||||
} catch (...) { }
|
} catch (...) { }
|
||||||
|
|
||||||
static Guest_memory guest_memory(vm_size, fb_size);
|
static Guest_memory guest_memory(vm_size, fb_size);
|
||||||
|
|
||||||
@ -1575,14 +1578,15 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
static Machine machine(boot_modules, guest_memory);
|
static Machine machine(boot_modules, guest_memory);
|
||||||
|
|
||||||
/* Create Console Thread */
|
/* create console thread */
|
||||||
Vancouver_console vcon(machine.get_mb(), fb_size, guest_memory.fb_ds());
|
Vancouver_console vcon(machine.get_mb(), fb_size, guest_memory.fb_ds());
|
||||||
|
|
||||||
/* Create Disk Thread */
|
/* create disk thread */
|
||||||
Vancouver_disk vdisk(machine.get_mb(), guest_memory.backing_store_local_base(),
|
Vancouver_disk vdisk(machine.get_mb(),
|
||||||
guest_memory.backing_store_fb_local_base());
|
guest_memory.backing_store_local_base(),
|
||||||
|
guest_memory.backing_store_fb_local_base());
|
||||||
|
|
||||||
/* Wait for services */
|
/* wait for services */
|
||||||
while (!console_init || !disk_init);
|
while (!console_init || !disk_init);
|
||||||
|
|
||||||
machine.setup_devices(Genode::config()->xml_node().sub_node("machine"));
|
machine.setup_devices(Genode::config()->xml_node().sub_node("machine"));
|
||||||
|
Loading…
Reference in New Issue
Block a user