|
khypervisor
v1
|

Go to the source code of this file.
Data Structures | |
| struct | vdev_timer_regs |
Functions | |
| void | vtimer_set_callback_chagned_status (vtimer_changed_status_callback_t callback) |
| static void | vtimer_changed_status (vmid_t vmid, uint32_t status) |
| static hvmm_status_t | access_handler (uint32_t write, uint32_t offset, uint32_t *pvalue, vdev_access_size_t access_size) |
| hvmm_status_t | vdev_timer_init (uint32_t base_addr) |
Variables | |
| static vdev_info_t | _vdev_info |
| static struct vdev_timer_regs | regs [NUM_GUESTS_STATIC] |
| static vtimer_changed_status_callback_t | _write_status = 0 |
| static hvmm_status_t access_handler | ( | uint32_t | write, |
| uint32_t | offset, | ||
| uint32_t * | pvalue, | ||
| vdev_access_size_t | access_size | ||
| ) | [static] |
Definition at line 27 of file vdev_timer.c.
{
printh( "%s: %s offset:%d value:%x\n", __FUNCTION__, write ? "write" : "read", offset, write ? *pvalue : (uint32_t) pvalue );
hvmm_status_t result = HVMM_STATUS_BAD_ACCESS;
unsigned int vmid = context_current_vmid();
if (!write) {
// READ
switch (offset){
case 0x0:
*pvalue = regs[vmid].timer_mask;
result = HVMM_STATUS_SUCCESS;
break;
}
} else {
//WRITE
switch (offset){
case 0x0:
regs[vmid].timer_mask = *pvalue;
vtimer_changed_status(vmid, *pvalue);
result = HVMM_STATUS_SUCCESS;
break;
}
}
return result;
}

| hvmm_status_t vdev_timer_init | ( | uint32_t | base_addr | ) |
Definition at line 53 of file vdev_timer.c.
{
hvmm_status_t result = HVMM_STATUS_BUSY;
_vdev_info.name = "vtimer";
_vdev_info.base = base_addr;
_vdev_info.size = sizeof(struct vdev_timer_regs);
_vdev_info.handler = access_handler;
result = vdev_reg_device(&_vdev_info);
if ( result == HVMM_STATUS_SUCCESS ) {
printh("%s: vdev registered:'%s'\n", __FUNCTION__, _vdev_info.name);
} else {
printh("%s: Unable to register vdev:'%s' code=%x\n", __FUNCTION__, _vdev_info.name, result);
}
return result;
}

| static void vtimer_changed_status | ( | vmid_t | vmid, |
| uint32_t | status | ||
| ) | [static] |
Definition at line 20 of file vdev_timer.c.
{
if( _write_status != 0 ) {
_write_status( vmid, status );
}
}
| void vtimer_set_callback_chagned_status | ( | vtimer_changed_status_callback_t | callback | ) |
Definition at line 15 of file vdev_timer.c.
{
_write_status = callback;
}
vdev_info_t _vdev_info [static] |
Definition at line 10 of file vdev_timer.c.
vtimer_changed_status_callback_t _write_status = 0 [static] |
Definition at line 13 of file vdev_timer.c.
struct vdev_timer_regs regs[NUM_GUESTS_STATIC] [static] |
Definition at line 11 of file vdev_timer.c.
1.7.6.1