Cody Schuffelen | 134ff03 | 2019-11-22 00:25:32 -0800 | [diff] [blame^] | 1 | (Please use a smaller font and/or appropriate terminal width to see this line without wrapping) |
| 2 | |
| 3 | |
| 4 | REGION DESCRIPTORS |
| 5 | (starts at page 0) |
| 6 | +------------------------------+ |
| 7 | | major_version: u16 | |
| 8 | +------------------------------+ |
| 9 | | minor_version: u16 | |
| 10 | +------------------------------+ |
| 11 | (size of shared memory) | size: u32 | |
| 12 | +------------------------------+ |
| 13 | (number of regions) | region_count: u32 | |
| 14 | +------------------------------+ |
| 15 | (offset of region descriptor data) | vsoc_region_desc_offset: u32 |o-----+ |
| 16 | +------------------------------+ | |
| 17 | | | | |
| 18 | | .. .. .. | | |
| 19 | | | | |
| 20 | (region 0 descriptor start) +------------------------------+ <----+ |
| 21 | | current_version: u16 | |
| 22 | +------------------------------+ |
| 23 | | min_compatible_version: u16 | |
| 24 | +------------------------------+ |
| 25 | (start offset of region 0) | region_begin_offset: u32 |o--------------------+ |
| 26 | +------------------------------+ | |
| 27 | (end offset of region 0) | region_end_offset: u32 |o----------------------------------------------------------------------+ |
| 28 | +------------------------------+ | | |
| 29 | | offset_of_region_data: u32 |o-----+ | | |
| 30 | +------------------------------+ | | | |
| 31 | | guest_to_host_signal_table | | | | |
| 32 | |______________________________| | | | |
| 33 | +----------------------------+ | | | |
| 34 | | num_nodes_lg2: u32 | | | | |
| 35 | +----------------------------+ | | | |
| 36 | |futex_uaddr_table_offset:u32|o------------------+ | | |
| 37 | +----------------------------+ | | | | |
| 38 | | intr_signaled_offset: u32 |o----------------+ | | | |
| 39 | +----------------------------+ | | | | | |
| 40 | +------------------------------+ | | | | | |
| 41 | | host_to_guest_signal_table | | | | | | |
| 42 | |______________________________| | | | | | |
| 43 | +----------------------------+ | | | | | |
| 44 | | num_nodes_lg2: u32 | | | | | | |
| 45 | +----------------------------+ | | | | | |
| 46 | |futex_uaddr_table_offset:u32|o--------------+ | | | | |
| 47 | +----------------------------+ | | | | \/ REGION AREA (page aligned) | |
| 48 | | intr_signaled_offset: u32 |o------|-----+ | | | +---------------------------------------+ | |
| 49 | +----------------------------+ | | | | | | region area before start of guest to | | |
| 50 | +------------------------------+ | | | | | | host signal table. | | |
| 51 | | device_name: char[16] | | | | | | | (currently does not exist) | | |
| 52 | (region 0 descriptor end) +------------------------------+ | | | | +->+---------------------------------------+ | |
| 53 | (region 1 descriptor start) | | | | | | | uaddr_offset_0 : u32 | | |
| 54 | | current_version: u16 | | | | | +---------------------------------------+ | |
| 55 | +------------------------------+ | | | | | uaddr_offset_1 : u32 | | |
| 56 | | min_compatible_version: u16 | | | | | +---------------------------------------+ | |
| 57 | +------------------------------+ | | | | | ... .. ... | | |
| 58 | | region_begin_offset: u32 | | | | | +---------------------------------------+ | |
| 59 | +------------------------------+ | | | | | uaddr_offset_(2^num_nodes_lg2 - 1):u32| | |
| 60 | | region_end_offset: u32 | | | | +--->+---------------------------------------+ | |
| 61 | +------------------------------+ | | | | (interrupt_signaled_area) : u32 | | |
| 62 | | offset_of_region_data: u32 | | | +----->+---------------------------------------+ | |
| 63 | +------------------------------+ | | | uaddr_offset_0 : u32 | | |
| 64 | | guest_to_host_signal_table | | | +---------------------------------------+ | |
| 65 | +------------------------------+ | | | ... .. ... | | |
| 66 | | host_to_guest_signal_table | | | +---------------------------------------+ | |
| 67 | +------------------------------+ | | | uaddr_offset_(2^num_nodes_lg2 - 1):u32| | |
| 68 | | device_name: char[16] | | +------->+---------------------------------------+ | |
| 69 | (region 1 descriptor end) +------------------------------+ | | (interrupt_signaled_area) : u32 | | |
| 70 | ... ... ... +------------->+---------------------------------------+ | |
| 71 | +------------------------------+ | | | |
| 72 | | current_version: u16 | | | | |
| 73 | +------------------------------+ | | | |
| 74 | | min_compatible_version: u16 | | region specific data | | |
| 75 | +------------------------------+ | (defined by region specific agreement | | |
| 76 | | region_begin_offset: u32 | | between HAL and host-side process) | | |
| 77 | +------------------------------+ | | | |
| 78 | | region_end_offset: u32 | | | | |
| 79 | +------------------------------+ | | | |
| 80 | | offset_of_region_data: u32 | +---------------------------------------+ <-------+ |
| 81 | +------------------------------+ |
| 82 | | guest_to_host_signal_table | |
| 83 | +------------------------------+ |
| 84 | | host_to_guest_signal_table | |
| 85 | +------------------------------+ |
| 86 | | device_name: char[16] | |
| 87 | +------------------------------+ |
| 88 | END OF REGION DESCRIPTORS |