(Please use a smaller font and/or appropriate terminal width to see this line without wrapping) | |
REGION DESCRIPTORS | |
(starts at page 0) | |
+------------------------------+ | |
| major_version: u16 | | |
+------------------------------+ | |
| minor_version: u16 | | |
+------------------------------+ | |
(size of shared memory) | size: u32 | | |
+------------------------------+ | |
(number of regions) | region_count: u32 | | |
+------------------------------+ | |
(offset of region descriptor data) | vsoc_region_desc_offset: u32 |o-----+ | |
+------------------------------+ | | |
| | | | |
| .. .. .. | | | |
| | | | |
(region 0 descriptor start) +------------------------------+ <----+ | |
| current_version: u16 | | |
+------------------------------+ | |
| min_compatible_version: u16 | | |
+------------------------------+ | |
(start offset of region 0) | region_begin_offset: u32 |o--------------------+ | |
+------------------------------+ | | |
(end offset of region 0) | region_end_offset: u32 |o----------------------------------------------------------------------+ | |
+------------------------------+ | | | |
| offset_of_region_data: u32 |o-----+ | | | |
+------------------------------+ | | | | |
| guest_to_host_signal_table | | | | | |
|______________________________| | | | | |
+----------------------------+ | | | | |
| num_nodes_lg2: u32 | | | | | |
+----------------------------+ | | | | |
|futex_uaddr_table_offset:u32|o------------------+ | | | |
+----------------------------+ | | | | | |
| intr_signaled_offset: u32 |o----------------+ | | | | |
+----------------------------+ | | | | | | |
+------------------------------+ | | | | | | |
| host_to_guest_signal_table | | | | | | | |
|______________________________| | | | | | | |
+----------------------------+ | | | | | | |
| num_nodes_lg2: u32 | | | | | | | |
+----------------------------+ | | | | | | |
|futex_uaddr_table_offset:u32|o--------------+ | | | | | |
+----------------------------+ | | | | \/ REGION AREA (page aligned) | | |
| intr_signaled_offset: u32 |o------|-----+ | | | +---------------------------------------+ | | |
+----------------------------+ | | | | | | region area before start of guest to | | | |
+------------------------------+ | | | | | | host signal table. | | | |
| device_name: char[16] | | | | | | | (currently does not exist) | | | |
(region 0 descriptor end) +------------------------------+ | | | | +->+---------------------------------------+ | | |
(region 1 descriptor start) | | | | | | | uaddr_offset_0 : u32 | | | |
| current_version: u16 | | | | | +---------------------------------------+ | | |
+------------------------------+ | | | | | uaddr_offset_1 : u32 | | | |
| min_compatible_version: u16 | | | | | +---------------------------------------+ | | |
+------------------------------+ | | | | | ... .. ... | | | |
| region_begin_offset: u32 | | | | | +---------------------------------------+ | | |
+------------------------------+ | | | | | uaddr_offset_(2^num_nodes_lg2 - 1):u32| | | |
| region_end_offset: u32 | | | | +--->+---------------------------------------+ | | |
+------------------------------+ | | | | (interrupt_signaled_area) : u32 | | | |
| offset_of_region_data: u32 | | | +----->+---------------------------------------+ | | |
+------------------------------+ | | | uaddr_offset_0 : u32 | | | |
| guest_to_host_signal_table | | | +---------------------------------------+ | | |
+------------------------------+ | | | ... .. ... | | | |
| host_to_guest_signal_table | | | +---------------------------------------+ | | |
+------------------------------+ | | | uaddr_offset_(2^num_nodes_lg2 - 1):u32| | | |
| device_name: char[16] | | +------->+---------------------------------------+ | | |
(region 1 descriptor end) +------------------------------+ | | (interrupt_signaled_area) : u32 | | | |
... ... ... +------------->+---------------------------------------+ | | |
+------------------------------+ | | | | |
| current_version: u16 | | | | | |
+------------------------------+ | | | | |
| min_compatible_version: u16 | | region specific data | | | |
+------------------------------+ | (defined by region specific agreement | | | |
| region_begin_offset: u32 | | between HAL and host-side process) | | | |
+------------------------------+ | | | | |
| region_end_offset: u32 | | | | | |
+------------------------------+ | | | | |
| offset_of_region_data: u32 | +---------------------------------------+ <-------+ | |
+------------------------------+ | |
| guest_to_host_signal_table | | |
+------------------------------+ | |
| host_to_guest_signal_table | | |
+------------------------------+ | |
| device_name: char[16] | | |
+------------------------------+ | |
END OF REGION DESCRIPTORS |