Changeset 7 for trunk/kernel/mm/page.c


Ignore:
Timestamp:
Apr 26, 2017, 2:15:50 PM (5 years ago)
Author:
alain
Message:

Various bugs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/mm/page.c

    r1 r7  
    265265
    266266        size = (1 << page->order) * CONFIG_PPM_PAGE_SIZE;
    267         base = ppm_page2base(page);
     267        base = ppm_page2base( page );
     268
     269// kmem_print_kcm_table();
     270
     271// printk("\n@@@ in page_zero : size = %x / base = %x / kcm_tbl = %x\n",
     272//        size , (uint32_t)base , (uint32_t)(&LOCAL_CLUSTER->kcm_tbl[0] ) );
    268273
    269274        memset( base , 0 , size );
     275
     276// kmem_print_kcm_table();
     277
    270278}
    271279
     
    285293
    286294
    287 /*
    288 /////////////////////////////////////////
    289 static void page_to_free( page_t * page )
    290 {
    291         assert((page->state == PGINVALID) ||
    292                (page->state == PGVALID)   ||
    293                (page->state == PGINIT));
    294 
    295         if(page_refcount_get(page) != 0)
    296         {
    297                 printk(ERROR, "ERROR: %s: cpu %d, pid %d, tid %x, page %x, state %x, count %d [%d]\n",
    298                        __FUNCTION__,
    299                        cpu_get_id(),
    300                        current_task->pid,
    301                        current_thread,
    302                        page,
    303                        page->state,
    304                        page_refcount_get(page),
    305                        cpu_time_stamp());
    306         }
    307         page->state = PGFREE;
    308 }
    309 
    310 ////////////////////////////////////////////
    311 static void page_to_invalid( page_t * page )
    312 {
    313         assert((page->state == PGFREE)  ||
    314                (page->state == PGVALID) ||
    315                (page->state == PGLOCKEDIO));
    316  
    317         if(page->state == PGLOCKEDIO)
    318         {
    319                 page->state = PGINVALID;
    320                 page_unlock(page);
    321                 return;
    322         }
    323  
    324         page->state = PGINVALID;
    325 }
    326 
    327 //////////////////////////////////////////
    328 static void page_to_valid( page_t * page )
    329 {
    330         assert((page->state == PGINVALID) ||
    331                (page->state == PGLOCKED)  ||
    332                (page->state == PGLOCKEDIO));
    333  
    334         if(page->state == PGINVALID)
    335         {
    336                 page->state = PGVALID;
    337                 return;
    338         }
    339 
    340         page->state = PGVALID;
    341         page_unlock(page);
    342 }
    343 
    344 //////////////////////////////////////////////
    345 static void page_to_locked_io( page_t * page )
    346 {
    347         assert((page->state == PGINVALID) ||
    348                (page->state == PGVALID));
    349 
    350         page_lock(page);
    351         page->state = PGLOCKEDIO;
    352 }
    353 
    354 ///////////////////////////////////////////
    355 static void page_to_locked( page_t * page )
    356 {
    357         assert(page->state == PGVALID);
    358         page_lock(page);
    359         page->state = PGLOCKED;
    360 }
    361 
    362 /////////////////////////////////////////
    363 void page_state_set( page_t       * page,
    364                      page_state_t   state )
    365 {
    366         switch( state )
    367         {
    368         case PGFREE:
    369                 page_to_free(page);
    370                 return;
    371 
    372         case PGINVALID:
    373                 page_to_invalid(page);
    374                 return;
    375 
    376         case PGVALID:
    377                 page_to_valid(page);
    378                 return;
    379 
    380         case PGLOCKEDIO:
    381                 page_to_locked_io(page);
    382                 return;
    383 
    384         case PGLOCKED:
    385                 page_to_locked(page);
    386                 return;
    387 
    388         case PGRESERVED:
    389                 refcount_set(&page->count,1);
    390 
    391         case PGINIT:
    392                 page->state = new_state;
    393                 return;
    394 
    395         default:
    396                 printk(ERROR, "ERROR: %s: Unknown Asked State %d\n", new_state);
    397                 return;
    398         }
    399 }
    400 */
    401 
    402 
     295
Note: See TracChangeset for help on using the changeset viewer.