swapon() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於 TP  

swapon() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

swapon、swapoff - 啟動/停止對檔案/裝置進行交換

語法

#include <unistd.h>
#include <asm/page.h> /* 用於查詢 PAGE_SIZE */
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

描述

swapon() 將交換區設定為由 path 指定的檔案或塊裝置。swapoff() 停止對由 path 指定的檔案或塊裝置進行交換。

swapon() 接受一個 swapflags 引數。如果 swapflags 中的 SWAP_FLAG_PREFER 位被開啟,則新的交換區將具有比預設值更高的優先順序。優先順序在 swapflags 中編碼為

(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

這些函式只能由特權程序(具有 CAP_SYS_ADMIN 能力的程序)使用。

優先順序

每個交換區都有一個優先順序,高或低。預設優先順序為低。在低優先順序區域中,較新的區域優先順序甚至低於較舊的區域。

使用 swapflags 設定的所有優先順序都為高優先順序,高於預設值。它們可以具有呼叫者選擇的任何非負值。數字越大,優先順序越高。

交換頁從優先順序順序的區域分配,優先順序最高的區域優先。對於具有不同優先順序的區域,在使用較低優先順序的區域之前,會先耗盡較高優先順序的區域。如果兩個或多個區域具有相同的優先順序,並且它是可用的最高優先順序,則會在它們之間以迴圈方式分配頁面。

從 Linux 1.3.6 開始,核心通常遵循這些規則,但存在例外情況。

返回值

成功時,返回零。發生錯誤時,返回 -1,並相應地設定 errno

錯誤

標籤描述
EBUSY (對於 swapon()) 指定的 path 已經用作交換區。
EINVAL 檔案 path 存在,但既不引用常規檔案也不引用塊裝置;或者,對於 swapon(),指示的路徑不包含有效的交換籤名;或者,對於 swapoff(),path 當前不是交換區。
ENFILE 已達到系統對開啟檔案的總數的限制。
ENOENT 檔案 path 不存在。
ENOMEM 系統記憶體不足以啟動交換。
EPERM 呼叫者沒有 CAP_SYS_ADMIN 能力或已達到交換檔案的最大數量。(如果啟用了 CONFIG_MIGRATION,則最大值為 MAX_SWAPFILES-2(30),否則為 MAX_SWAPFILES (32)。在 Linux 核心版本 2.4.10 之前,最大值始終為 MAX_SWAPFILES,即 8。)

符合標準

這些函式是 Linux 特定的,不應在旨在可移植的程式中使用。第二個 swapflags 引數是在 Linux 1.3.2 中引入的。

備註

必須使用 mkswap(8) 準備分割槽或路徑。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.