From: Rom Lemarchand Date: Thu, 6 Jun 2013 21:29:40 +0000 (-0700) Subject: libc: add swapon and swapoff syscalls X-Git-Tag: android-x86-4.4-r1~19^2~56^2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d206b560e72e791b5dfeb339b5f7c18354bf95fd;p=android-x86%2Fbionic.git libc: add swapon and swapoff syscalls Change-Id: Ie79dc8e3f2ff1cd427dd6d95e3850920c4b407b0 Signed-off-by: Rom Lemarchand --- diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index ac04e51e4..88c980f6c 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -201,6 +201,8 @@ int removexattr(const char *, const char *) 1 int lremovexattr(const char *, const char *) 1 int __statfs64:statfs64(const char *, size_t, struct statfs *) 1 long unshare(unsigned long) 1 +int swapon(const char *, int) 1 +int swapoff(const char *) 1 # time int pause () 1 diff --git a/libc/arch-arm/syscalls.mk b/libc/arch-arm/syscalls.mk index 3c8f20490..252a428c4 100644 --- a/libc/arch-arm/syscalls.mk +++ b/libc/arch-arm/syscalls.mk @@ -126,6 +126,8 @@ syscall_src += arch-arm/syscalls/removexattr.S syscall_src += arch-arm/syscalls/lremovexattr.S syscall_src += arch-arm/syscalls/__statfs64.S syscall_src += arch-arm/syscalls/unshare.S +syscall_src += arch-arm/syscalls/swapon.S +syscall_src += arch-arm/syscalls/swapoff.S syscall_src += arch-arm/syscalls/pause.S syscall_src += arch-arm/syscalls/gettimeofday.S syscall_src += arch-arm/syscalls/settimeofday.S diff --git a/libc/arch-arm/syscalls/swapoff.S b/libc/arch-arm/syscalls/swapoff.S new file mode 100644 index 000000000..070d16092 --- /dev/null +++ b/libc/arch-arm/syscalls/swapoff.S @@ -0,0 +1,15 @@ +/* autogenerated by gensyscalls.py */ +#include +#include +#include + +ENTRY(swapoff) + mov ip, r7 + ldr r7, =__NR_swapoff + swi #0 + mov r7, ip + cmn r0, #(MAX_ERRNO + 1) + bxls lr + neg r0, r0 + b __set_errno +END(swapoff) diff --git a/libc/arch-arm/syscalls/swapon.S b/libc/arch-arm/syscalls/swapon.S new file mode 100644 index 000000000..a77e0cdba --- /dev/null +++ b/libc/arch-arm/syscalls/swapon.S @@ -0,0 +1,15 @@ +/* autogenerated by gensyscalls.py */ +#include +#include +#include + +ENTRY(swapon) + mov ip, r7 + ldr r7, =__NR_swapon + swi #0 + mov r7, ip + cmn r0, #(MAX_ERRNO + 1) + bxls lr + neg r0, r0 + b __set_errno +END(swapon) diff --git a/libc/arch-mips/syscalls.mk b/libc/arch-mips/syscalls.mk index d3096bc78..23393a244 100644 --- a/libc/arch-mips/syscalls.mk +++ b/libc/arch-mips/syscalls.mk @@ -129,6 +129,8 @@ syscall_src += arch-mips/syscalls/removexattr.S syscall_src += arch-mips/syscalls/lremovexattr.S syscall_src += arch-mips/syscalls/__statfs64.S syscall_src += arch-mips/syscalls/unshare.S +syscall_src += arch-mips/syscalls/swapon.S +syscall_src += arch-mips/syscalls/swapoff.S syscall_src += arch-mips/syscalls/pause.S syscall_src += arch-mips/syscalls/gettimeofday.S syscall_src += arch-mips/syscalls/settimeofday.S diff --git a/libc/arch-mips/syscalls/swapoff.S b/libc/arch-mips/syscalls/swapoff.S new file mode 100644 index 000000000..4f204c92c --- /dev/null +++ b/libc/arch-mips/syscalls/swapoff.S @@ -0,0 +1,22 @@ +/* autogenerated by gensyscalls.py */ +#include + .text + .globl swapoff + .align 4 + .ent swapoff + +swapoff: + .set noreorder + .cpload $t9 + li $v0, __NR_swapoff + syscall + bnez $a3, 1f + move $a0, $v0 + j $ra + nop +1: + la $t9,__set_errno + j $t9 + nop + .set reorder + .end swapoff diff --git a/libc/arch-mips/syscalls/swapon.S b/libc/arch-mips/syscalls/swapon.S new file mode 100644 index 000000000..af3dda60b --- /dev/null +++ b/libc/arch-mips/syscalls/swapon.S @@ -0,0 +1,22 @@ +/* autogenerated by gensyscalls.py */ +#include + .text + .globl swapon + .align 4 + .ent swapon + +swapon: + .set noreorder + .cpload $t9 + li $v0, __NR_swapon + syscall + bnez $a3, 1f + move $a0, $v0 + j $ra + nop +1: + la $t9,__set_errno + j $t9 + nop + .set reorder + .end swapon diff --git a/libc/arch-x86/syscalls.mk b/libc/arch-x86/syscalls.mk index 31eb93008..11573de6c 100644 --- a/libc/arch-x86/syscalls.mk +++ b/libc/arch-x86/syscalls.mk @@ -130,6 +130,8 @@ syscall_src += arch-x86/syscalls/removexattr.S syscall_src += arch-x86/syscalls/lremovexattr.S syscall_src += arch-x86/syscalls/__statfs64.S syscall_src += arch-x86/syscalls/unshare.S +syscall_src += arch-x86/syscalls/swapon.S +syscall_src += arch-x86/syscalls/swapoff.S syscall_src += arch-x86/syscalls/pause.S syscall_src += arch-x86/syscalls/gettimeofday.S syscall_src += arch-x86/syscalls/settimeofday.S diff --git a/libc/arch-x86/syscalls/swapoff.S b/libc/arch-x86/syscalls/swapoff.S new file mode 100644 index 000000000..f2d6ddb51 --- /dev/null +++ b/libc/arch-x86/syscalls/swapoff.S @@ -0,0 +1,21 @@ +/* autogenerated by gensyscalls.py */ +#include +#include +#include + +ENTRY(swapoff) + pushl %ebx + mov 8(%esp), %ebx + movl $__NR_swapoff, %eax + int $0x80 + cmpl $-MAX_ERRNO, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %ebx + ret +END(swapoff) diff --git a/libc/arch-x86/syscalls/swapon.S b/libc/arch-x86/syscalls/swapon.S new file mode 100644 index 000000000..08602fbb5 --- /dev/null +++ b/libc/arch-x86/syscalls/swapon.S @@ -0,0 +1,24 @@ +/* autogenerated by gensyscalls.py */ +#include +#include +#include + +ENTRY(swapon) + pushl %ebx + pushl %ecx + mov 12(%esp), %ebx + mov 16(%esp), %ecx + movl $__NR_swapon, %eax + int $0x80 + cmpl $-MAX_ERRNO, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno + addl $4, %esp + orl $-1, %eax +1: + popl %ecx + popl %ebx + ret +END(swapon) diff --git a/libc/include/sys/swap.h b/libc/include/sys/swap.h new file mode 100644 index 000000000..85627f94d --- /dev/null +++ b/libc/include/sys/swap.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _SYS_SWAP_H_ +#define _SYS_SWAP_H_ + +#include + +__BEGIN_DECLS + +extern int swapon(const char *, int) __attribute__((__nonnull__(1))); +extern int swapoff(const char *) __attribute__((__nonnull__(1))); + +__END_DECLS + +#endif /* _SYS_SWAP_H_ */