Rev 3205 | Rev 3207 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3205 | Rev 3206 | ||
|---|---|---|---|
| Line 316... | Line 316... | ||
| 316 | } |
316 | } |
| 317 | } while(index-- > 0); |
317 | } while(index-- > 0); |
| 318 | return NULL; |
318 | return NULL; |
| 319 | } |
319 | } |
| 320 | 320 | ||
| 321 | static void zone_buddy_print_id(buddy_system_t *b, link_t *block) |
- | |
| 322 | { |
- | |
| 323 | frame_t *frame; |
- | |
| 324 | zone_t *zone; |
- | |
| 325 | index_t index; |
- | |
| 326 | - | ||
| 327 | frame = list_get_instance(block, frame_t, buddy_link); |
- | |
| 328 | zone = (zone_t *) b->data; |
- | |
| 329 | index = frame_index(zone, frame); |
- | |
| 330 | printf("%" PRIi, index); |
- | |
| 331 | } |
- | |
| 332 | - | ||
| 333 | /** Buddy system find_buddy implementation. |
321 | /** Buddy system find_buddy implementation. |
| 334 | * |
322 | * |
| 335 | * @param b Buddy system. |
323 | * @param b Buddy system. |
| 336 | * @param block Block for which buddy should be found. |
324 | * @param block Block for which buddy should be found. |
| 337 | * |
325 | * |
| Line 467... | Line 455... | ||
| 467 | .coalesce = zone_buddy_coalesce, |
455 | .coalesce = zone_buddy_coalesce, |
| 468 | .set_order = zone_buddy_set_order, |
456 | .set_order = zone_buddy_set_order, |
| 469 | .get_order = zone_buddy_get_order, |
457 | .get_order = zone_buddy_get_order, |
| 470 | .mark_busy = zone_buddy_mark_busy, |
458 | .mark_busy = zone_buddy_mark_busy, |
| 471 | .mark_available = zone_buddy_mark_available, |
459 | .mark_available = zone_buddy_mark_available, |
| 472 | .find_block = zone_buddy_find_block, |
460 | .find_block = zone_buddy_find_block |
| 473 | .print_id = zone_buddy_print_id |
- | |
| 474 | }; |
461 | }; |
| 475 | 462 | ||
| 476 | /******************/ |
463 | /******************/ |
| 477 | /* Zone functions */ |
464 | /* Zone functions */ |
| 478 | /******************/ |
465 | /******************/ |
| Line 1281... | Line 1268... | ||
| 1281 | void zone_print_one(unsigned int num) |
1268 | void zone_print_one(unsigned int num) |
| 1282 | { |
1269 | { |
| 1283 | zone_t *zone = NULL; |
1270 | zone_t *zone = NULL; |
| 1284 | ipl_t ipl; |
1271 | ipl_t ipl; |
| 1285 | unsigned int i; |
1272 | unsigned int i; |
| - | 1273 | uintptr_t base; |
|
| - | 1274 | count_t count; |
|
| - | 1275 | count_t busy_count; |
|
| - | 1276 | count_t free_count; |
|
| 1286 | 1277 | ||
| 1287 | ipl = interrupts_disable(); |
1278 | ipl = interrupts_disable(); |
| 1288 | spinlock_lock(&zones.lock); |
1279 | spinlock_lock(&zones.lock); |
| 1289 | 1280 | ||
| 1290 | for (i = 0; i < zones.count; i++) { |
1281 | for (i = 0; i < zones.count; i++) { |
| Line 1292... | Line 1283... | ||
| 1292 | zone = zones.info[i]; |
1283 | zone = zones.info[i]; |
| 1293 | break; |
1284 | break; |
| 1294 | } |
1285 | } |
| 1295 | } |
1286 | } |
| 1296 | if (!zone) { |
1287 | if (!zone) { |
| - | 1288 | spinlock_unlock(&zones.lock); |
|
| - | 1289 | interrupts_restore(ipl); |
|
| 1297 | printf("Zone not found.\n"); |
1290 | printf("Zone not found.\n"); |
| 1298 | goto out; |
1291 | return; |
| 1299 | } |
1292 | } |
| 1300 | 1293 | ||
| 1301 | spinlock_lock(&zone->lock); |
1294 | spinlock_lock(&zone->lock); |
| 1302 | printf("Memory zone information\n"); |
- | |
| 1303 | printf("Zone base address: %p\n", PFN2ADDR(zone->base)); |
1295 | base = PFN2ADDR(zone->base); |
| 1304 | printf("Zone size: %" PRIc " frames (%" PRIs " KB)\n", zone->count, |
- | |
| 1305 | SIZE2KB(FRAMES2SIZE(zone->count))); |
1296 | count = zone->count; |
| 1306 | printf("Allocated space: %" PRIc " frames (%" PRIs " KB)\n", |
- | |
| 1307 | zone->busy_count, SIZE2KB(FRAMES2SIZE(zone->busy_count))); |
1297 | busy_count = zone->busy_count; |
| 1308 | printf("Available space: %" PRIc " frames (%" PRIs " KB)\n", |
- | |
| 1309 | zone->free_count, SIZE2KB(FRAMES2SIZE(zone->free_count))); |
1298 | free_count = zone->free_count; |
| 1310 | buddy_system_structure_print(zone->buddy_system, FRAME_SIZE); |
- | |
| 1311 | spinlock_unlock(&zone->lock); |
1299 | spinlock_unlock(&zone->lock); |
| 1312 | - | ||
| 1313 | out: |
- | |
| 1314 | spinlock_unlock(&zones.lock); |
1300 | spinlock_unlock(&zones.lock); |
| 1315 | interrupts_restore(ipl); |
1301 | interrupts_restore(ipl); |
| - | 1302 | ||
| - | 1303 | printf("Zone base address: %p\n", base); |
|
| - | 1304 | printf("Zone size: %" PRIc " frames (%" PRIs " KiB)\n", count, |
|
| - | 1305 | SIZE2KB(FRAMES2SIZE(count))); |
|
| - | 1306 | printf("Allocated space: %" PRIc " frames (%" PRIs " KiB)\n", |
|
| - | 1307 | busy_count, SIZE2KB(FRAMES2SIZE(busy_count))); |
|
| - | 1308 | printf("Available space: %" PRIc " frames (%" PRIs " KiB)\n", |
|
| - | 1309 | free_count, SIZE2KB(FRAMES2SIZE(free_count))); |
|
| 1316 | } |
1310 | } |
| 1317 | 1311 | ||
| 1318 | /** @} |
1312 | /** @} |
| 1319 | */ |
1313 | */ |
| 1320 | 1314 | ||