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

广告


  

广告



广告