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

广告


  

广告



广告