traslate
user_0531932
c_cpp
3 years ago
830 B
12
Indexable
/* Translate virtual address to physical address. If [virtual_addr] is valid,
* return 1 and write its physical counterpart to [physical_addr].
* Otherwise, return 0 */
static int translate(
addr_t virtual_addr, // Given virtual address
addr_t *physical_addr, // Physical address to be returned
struct pcb_t *proc)
{ // Process uses given virtual address
/* Offset of the virtual address */
addr_t offset = get_offset(virtual_addr);
offset++;
offset--;
/* The first layer index */
addr_t first_lv = get_first_lv(virtual_addr);
/* The second layer index */
// addr_t second_lv = get_second_lv(virtual_addr);
/* Search in the first level */
struct trans_table_t *trans_table = NULL;
trans_table = get_trans_table(first_lv, proc->page_table);
if (trans_table == NULL)
{
return 0;
}
}Editor is loading...