SHARE
TWEET

Untitled

a guest Aug 13th, 2017 44 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uint32_t list::find_first_hole(uint32_t sz)
  2. {  
  3.     uint32_t i=0;
  4.    
  5.     //array Durchsuchen
  6.        
  7.     while(i < anzahl_items)
  8.     {      
  9.         if(array[i].groesse == sz && array[i].used == 0 )
  10.         {
  11.             return i;          
  12.         }
  13.         else if(array[i].groesse == 0)
  14.         {
  15.             uint32_t tmp = heap_placement;
  16.          
  17.            
  18.             heap_placement += sz;  
  19.            
  20.             while(heap_placement >= (uint32_t) (HEAP_START + 4096 + actual_size))
  21.             {
  22.                 vmm_alloc(kernel_context, (uint32_t) ((array + 4096) + actual_size));
  23.              
  24.                 actual_size += 4096;
  25.                 changes++;
  26.                 //cout << "Heap wurde vergroessert: neue groesse == " << actual_size << " byte." << endl;
  27.                 //cout << "Aenderungen: " << changes << endl;
  28.            
  29.                
  30.              
  31.                 //cout << "Heap Error: Nicht genug Speicherplatz Verfuegbar!" << endl;
  32.                 //asm("cli; hlt");
  33.             }
  34.          
  35.             array[i].groesse = sz;
  36.             array[i].anfang = tmp;  
  37.            
  38.             return i;  
  39.           }
  40.         i++;
  41.     }
  42.    
  43.     return 0;
  44. }
RAW Paste Data
Top