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引數。如果swapflagsSWAP_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)。在2.4.10之前的Linux核心版本中,最大值始終為MAX_SWAPFILES,即8。

符合標準

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

備註

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

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.