"Fossies" - the Fresh Open Source Software Archive
Member "stress-ng-0.09.56/core-mlock.c" (15 Mar 2019, 1705 Bytes) of package /linux/privat/stress-ng-0.09.56.tar.xz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard
) with prefixed line numbers and code folding
Alternatively you can here view
the uninterpreted source code file.
For more information about "core-mlock.c" see the Fossies "Dox" file reference
2 * Copyright (C) 2013-2019 Canonical, Ltd.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * This code is a complete clean re-write of the stress tool by
19 * Colin Ian King <firstname.lastname@example.org> and attempts to be
20 * backwardly compatible with the stress tool by Amos Waterland
21 * <email@example.com> but has more stress tests and more
22 * functionality.
25 #include "stress-ng.h"
28 * stress_mlock_region
29 * mlock a region of memory so it can't be swapped out
30 * - used to lock sighandlers for faster response
32 int stress_mlock_region(const void *addr_start, const void *addr_end)
34 #if defined(HAVE_MLOCK)
35 const size_t page_size = stress_get_pagesize();
36 void *m_addr_start =
37 (void *)((ptrdiff_t)addr_start & ~(page_size - 1));
38 const void *m_addr_end =
39 (void *)(((ptrdiff_t)addr_end + page_size - 1) &
40 ~(page_size - 1));
41 const size_t len = (ptrdiff_t)m_addr_end - (ptrdiff_t)m_addr_start;
43 return mlock((void *)m_addr_start, len);
48 return 0;