1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. 4*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) Linux Test Project, 2021-2024 5*49cdfc7eSAndroid Build Coastguard Worker * Author: Stanislav Kholmanskikh <[email protected]> 6*49cdfc7eSAndroid Build Coastguard Worker */ 7*49cdfc7eSAndroid Build Coastguard Worker 8*49cdfc7eSAndroid Build Coastguard Worker /* 9*49cdfc7eSAndroid Build Coastguard Worker * Contains common content for all swapon/swapoff tests. 10*49cdfc7eSAndroid Build Coastguard Worker */ 11*49cdfc7eSAndroid Build Coastguard Worker 12*49cdfc7eSAndroid Build Coastguard Worker #ifndef __LIBSWAP_H__ 13*49cdfc7eSAndroid Build Coastguard Worker #define __LIBSWAP_H__ 14*49cdfc7eSAndroid Build Coastguard Worker 15*49cdfc7eSAndroid Build Coastguard Worker enum swapfile_method { 16*49cdfc7eSAndroid Build Coastguard Worker SWAPFILE_BY_SIZE, 17*49cdfc7eSAndroid Build Coastguard Worker SWAPFILE_BY_BLKS 18*49cdfc7eSAndroid Build Coastguard Worker }; 19*49cdfc7eSAndroid Build Coastguard Worker 20*49cdfc7eSAndroid Build Coastguard Worker /* 21*49cdfc7eSAndroid Build Coastguard Worker * Create a swapfile of a specified size or number of blocks. 22*49cdfc7eSAndroid Build Coastguard Worker */ 23*49cdfc7eSAndroid Build Coastguard Worker int make_swapfile(const char *file, const int lineno, 24*49cdfc7eSAndroid Build Coastguard Worker const char *swapfile, unsigned int num, 25*49cdfc7eSAndroid Build Coastguard Worker int safe, enum swapfile_method method); 26*49cdfc7eSAndroid Build Coastguard Worker 27*49cdfc7eSAndroid Build Coastguard Worker /** 65536 bytes is minimum for 64kb page size, let's use 1 MB */ 28*49cdfc7eSAndroid Build Coastguard Worker #define MINIMAL_SWAP_SIZE_MB 1 29*49cdfc7eSAndroid Build Coastguard Worker 30*49cdfc7eSAndroid Build Coastguard Worker /** 31*49cdfc7eSAndroid Build Coastguard Worker * MAKE_SMALL_SWAPFILE - create small swap file. 32*49cdfc7eSAndroid Build Coastguard Worker * 33*49cdfc7eSAndroid Build Coastguard Worker * Macro to create small swap file. Size defined with MINIMAL_SWAP_SIZE_MB. 34*49cdfc7eSAndroid Build Coastguard Worker * 35*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap filename. 36*49cdfc7eSAndroid Build Coastguard Worker */ 37*49cdfc7eSAndroid Build Coastguard Worker #define MAKE_SMALL_SWAPFILE(swapfile) \ 38*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, MINIMAL_SWAP_SIZE_MB, 0, \ 39*49cdfc7eSAndroid Build Coastguard Worker SWAPFILE_BY_SIZE) 40*49cdfc7eSAndroid Build Coastguard Worker 41*49cdfc7eSAndroid Build Coastguard Worker /** 42*49cdfc7eSAndroid Build Coastguard Worker * SAFE_MAKE_SMALL_SWAPFILE - create small swap file (safe version). 43*49cdfc7eSAndroid Build Coastguard Worker * 44*49cdfc7eSAndroid Build Coastguard Worker * Macro to create small swap file. Size defined with MINIMAL_SWAP_SIZE_MB. 45*49cdfc7eSAndroid Build Coastguard Worker * Includes safety checks to handle potential errors. 46*49cdfc7eSAndroid Build Coastguard Worker * 47*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap filename. 48*49cdfc7eSAndroid Build Coastguard Worker */ 49*49cdfc7eSAndroid Build Coastguard Worker #define SAFE_MAKE_SMALL_SWAPFILE(swapfile) \ 50*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, MINIMAL_SWAP_SIZE_MB, 1, \ 51*49cdfc7eSAndroid Build Coastguard Worker SWAPFILE_BY_SIZE) 52*49cdfc7eSAndroid Build Coastguard Worker 53*49cdfc7eSAndroid Build Coastguard Worker /** 54*49cdfc7eSAndroid Build Coastguard Worker * MAKE_SWAPFILE_SIZE - create swap file (MB). 55*49cdfc7eSAndroid Build Coastguard Worker * 56*49cdfc7eSAndroid Build Coastguard Worker * Macro to create swap file, size specified in megabytes (MB). 57*49cdfc7eSAndroid Build Coastguard Worker * 58*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap filename. 59*49cdfc7eSAndroid Build Coastguard Worker * @size: swap size in MB. 60*49cdfc7eSAndroid Build Coastguard Worker */ 61*49cdfc7eSAndroid Build Coastguard Worker #define MAKE_SWAPFILE_SIZE(swapfile, size) \ 62*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, size, 0, SWAPFILE_BY_SIZE) 63*49cdfc7eSAndroid Build Coastguard Worker 64*49cdfc7eSAndroid Build Coastguard Worker /** 65*49cdfc7eSAndroid Build Coastguard Worker * MAKE_SWAPFILE_BLKS - create swap file (blocks). 66*49cdfc7eSAndroid Build Coastguard Worker * 67*49cdfc7eSAndroid Build Coastguard Worker * Macro to create swap file, size specified in block numbers. 68*49cdfc7eSAndroid Build Coastguard Worker * 69*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap filename. 70*49cdfc7eSAndroid Build Coastguard Worker * @blocks: number of blocks. 71*49cdfc7eSAndroid Build Coastguard Worker */ 72*49cdfc7eSAndroid Build Coastguard Worker #define MAKE_SWAPFILE_BLKS(swapfile, blocks) \ 73*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, blocks, 0, SWAPFILE_BY_BLKS) 74*49cdfc7eSAndroid Build Coastguard Worker 75*49cdfc7eSAndroid Build Coastguard Worker /** 76*49cdfc7eSAndroid Build Coastguard Worker * SAFE_MAKE_SWAPFILE_SIZE - create swap file (MB, safe version). 77*49cdfc7eSAndroid Build Coastguard Worker * 78*49cdfc7eSAndroid Build Coastguard Worker * Macro to safely create swap file, size specified in megabytes (MB). 79*49cdfc7eSAndroid Build Coastguard Worker * Includes safety checks to handle potential errors. 80*49cdfc7eSAndroid Build Coastguard Worker * 81*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap file name. 82*49cdfc7eSAndroid Build Coastguard Worker * @size: swap size in MB. 83*49cdfc7eSAndroid Build Coastguard Worker */ 84*49cdfc7eSAndroid Build Coastguard Worker #define SAFE_MAKE_SWAPFILE_SIZE(swapfile, size) \ 85*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, size, 1, SWAPFILE_BY_SIZE) 86*49cdfc7eSAndroid Build Coastguard Worker 87*49cdfc7eSAndroid Build Coastguard Worker /** 88*49cdfc7eSAndroid Build Coastguard Worker * SAFE_MAKE_SWAPFILE_BLKS - create swap file (block, safe version) 89*49cdfc7eSAndroid Build Coastguard Worker * 90*49cdfc7eSAndroid Build Coastguard Worker * Macro to safely create swap file, size specified in block numbers. 91*49cdfc7eSAndroid Build Coastguard Worker * Includes safety checks to handle potential errors. 92*49cdfc7eSAndroid Build Coastguard Worker * 93*49cdfc7eSAndroid Build Coastguard Worker * @swapfile: swap file name. 94*49cdfc7eSAndroid Build Coastguard Worker * @blocks: number of blocks. 95*49cdfc7eSAndroid Build Coastguard Worker */ 96*49cdfc7eSAndroid Build Coastguard Worker #define SAFE_MAKE_SWAPFILE_BLKS(swapfile, blocks) \ 97*49cdfc7eSAndroid Build Coastguard Worker make_swapfile(__FILE__, __LINE__, swapfile, blocks, 1, SWAPFILE_BY_BLKS) 98*49cdfc7eSAndroid Build Coastguard Worker 99*49cdfc7eSAndroid Build Coastguard Worker /** 100*49cdfc7eSAndroid Build Coastguard Worker * is_swap_supported() - Check swapon/swapoff support. 101*49cdfc7eSAndroid Build Coastguard Worker * 102*49cdfc7eSAndroid Build Coastguard Worker * Check swapon/swapoff support status of filesystems or files 103*49cdfc7eSAndroid Build Coastguard Worker * we are testing on. 104*49cdfc7eSAndroid Build Coastguard Worker * 105*49cdfc7eSAndroid Build Coastguard Worker * @filename: swap file name. 106*49cdfc7eSAndroid Build Coastguard Worker * Return: true if swap is supported, false if not. 107*49cdfc7eSAndroid Build Coastguard Worker */ 108*49cdfc7eSAndroid Build Coastguard Worker bool is_swap_supported(const char *filename); 109*49cdfc7eSAndroid Build Coastguard Worker 110*49cdfc7eSAndroid Build Coastguard Worker /** 111*49cdfc7eSAndroid Build Coastguard Worker * tst_max_swapfiles() - Get kernel constant MAX_SWAPFILES value. 112*49cdfc7eSAndroid Build Coastguard Worker * 113*49cdfc7eSAndroid Build Coastguard Worker * Return: MAX_SWAPFILES value. 114*49cdfc7eSAndroid Build Coastguard Worker */ 115*49cdfc7eSAndroid Build Coastguard Worker int tst_max_swapfiles(void); 116*49cdfc7eSAndroid Build Coastguard Worker 117*49cdfc7eSAndroid Build Coastguard Worker /** 118*49cdfc7eSAndroid Build Coastguard Worker * tst_count_swaps() - Get the used swapfiles number. 119*49cdfc7eSAndroid Build Coastguard Worker * 120*49cdfc7eSAndroid Build Coastguard Worker * Return: used swapfiles number. 121*49cdfc7eSAndroid Build Coastguard Worker */ 122*49cdfc7eSAndroid Build Coastguard Worker int tst_count_swaps(void); 123*49cdfc7eSAndroid Build Coastguard Worker 124*49cdfc7eSAndroid Build Coastguard Worker #endif /* __LIBSWAP_H__ */ 125