/media/sda-magnetic/david/Extern-Magnetic-2022-06-29/Extern01/Dokumente-11-2021-07-05/informatik-math/informatik2/bash-programming/lex-yacc-bash-etc/minix00001.txt


public phys_clicks alloc_mem (phys_clicks clicks) {
    register struct hole *hp, *prev_ptr;
    phys_clicks old_base;
    
    hp = hole_head;
    while ( hp != nil_hole ) {
        if (hp->h_len >= clicks) {
            old_base = hp->h_base;
            hp->h_len -= clicks;
            hp->h_base += clicks;
            
            if (hp->h_len != 0) return old_base;
            
            del_slot (prev_ptr, hp);
            return old_base;
        }
        prev_ptr = hp;
        hp = hp->h_next;
    }
return (E_NO_MEM);
}

mm/alloc.c

alloc_mem()
free_mem()
del_slot()
merge()
max_hole()
mem_init()

PUBLIC del_slot (register struct hole *hp, register struct hole *prev_ptr) {
    if (hp == hole_head)
        hole_head = hp -> h_next;
    else
        prev_ptr -> h_next = hp->h_next;
    hp->h_next = free_slots;
    free_slots = hp;
}