《操作系统》的实验代码。
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

27 рядки
688 B

10 роки тому
  1. #include <swap.h>
  2. #include <swapfs.h>
  3. #include <mmu.h>
  4. #include <fs.h>
  5. #include <ide.h>
  6. #include <pmm.h>
  7. #include <assert.h>
  8. void
  9. swapfs_init(void) {
  10. static_assert((PGSIZE % SECTSIZE) == 0);
  11. if (!ide_device_valid(SWAP_DEV_NO)) {
  12. panic("swap fs isn't available.\n");
  13. }
  14. max_swap_offset = ide_device_size(SWAP_DEV_NO) / (PGSIZE / SECTSIZE);
  15. }
  16. int
  17. swapfs_read(swap_entry_t entry, struct Page *page) {
  18. return ide_read_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT);
  19. }
  20. int
  21. swapfs_write(swap_entry_t entry, struct Page *page) {
  22. return ide_write_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT);
  23. }