tag->type != MULTIBOOT_TAG_TYPE_END;
tag = (struct multiboot_tag*)((uint8_t*)tag + ((tag->size + 7) & ~7))) {
if (tag->type == MULTIBOOT_TAG_TYPE_MODULE) {
- struct multiboot_tag_module* mod = (struct multiboot_tag_module*)tag;
+ const struct multiboot_tag_module* mod = (const struct multiboot_tag_module*)tag;
bi.initrd_start = mod->mod_start;
bi.initrd_end = mod->mod_end;
break;
}
if (tag->type == MULTIBOOT_TAG_TYPE_CMDLINE) {
- struct multiboot_tag_string* s = (struct multiboot_tag_string*)tag;
+ const struct multiboot_tag_string* s = (const struct multiboot_tag_string*)tag;
bi.cmdline = s->string;
}
}
return 0;
}
- uint32_t* src_pd = (uint32_t*)P2V((uint32_t)src_as);
+ const uint32_t* src_pd = (const uint32_t*)P2V((uint32_t)src_as);
// Best-effort clone: copy present user mappings (USER PTEs), ignore kernel half.
for (uint32_t pdi = 0; pdi < 768; pdi++) {
if (!(pde & X86_PTE_PRESENT)) continue;
uint32_t src_pt_phys = pde & 0xFFFFF000;
- uint32_t* src_pt = (uint32_t*)P2V(src_pt_phys);
+ const uint32_t* src_pt = (const uint32_t*)P2V(src_pt_phys);
for (uint32_t pti = 0; pti < 1024; pti++) {
uint32_t pte = src_pt[pti];
uint32_t pd_index = virt >> 22;
uint32_t pt_index = (virt >> 12) & 0x03FF;
- uint32_t* pd = vmm_active_pd_virt();
+ const uint32_t* pd = vmm_active_pd_virt();
if (!(pd[pd_index] & X86_PTE_PRESENT)) {
return;
uint32_t pd_index = virt >> 22;
uint32_t pt_index = (virt >> 12) & 0x03FF;
- uint32_t* pd = vmm_active_pd_virt();
+ const uint32_t* pd = vmm_active_pd_virt();
if (pd[pd_index] & X86_PTE_PRESENT) {
uint32_t pt_phys = pd[pd_index] & 0xFFFFF000;
uint32_t* pt = (uint32_t*)P2V(pt_phys);
if (!ready_queue_head) return NULL;
struct process* it = ready_queue_head;
- struct process* start = it;
+ const struct process* const start = it;
do {
if (it->pid == pid) return it;
it = it->next;