Changeset 7 for trunk/kernel/mm/page.c
- Timestamp:
- Apr 26, 2017, 2:15:50 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/mm/page.c
r1 r7 265 265 266 266 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] ) ); 268 273 269 274 memset( base , 0 , size ); 275 276 // kmem_print_kcm_table(); 277 270 278 } 271 279 … … 285 293 286 294 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.