Skip to content

Commit 3b9ec95

Browse files
[libc] Simplify mman tests (#161748)
Previously they called sysconf and capget. Those were blocking adding bazel rules for those tests since sysconf isn't done.
1 parent 4f63a60 commit 3b9ec95

File tree

5 files changed

+25
-38
lines changed

5 files changed

+25
-38
lines changed

libc/test/src/sys/mman/linux/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ add_libc_unittest(
9999
libc.src.sys.mman.mincore
100100
libc.src.sys.mman.mlock
101101
libc.src.sys.mman.munlock
102-
libc.src.unistd.sysconf
103102
libc.test.UnitTest.ErrnoCheckingTest
104103
libc.test.UnitTest.ErrnoSetterMatcher
105104
)
@@ -125,7 +124,6 @@ add_libc_unittest(
125124
libc.src.sys.mman.munlockall
126125
libc.src.sys.resource.getrlimit
127126
libc.src.__support.OSUtil.osutil
128-
libc.src.unistd.sysconf
129127
libc.test.UnitTest.ErrnoCheckingTest
130128
libc.test.UnitTest.ErrnoSetterMatcher
131129
)
@@ -146,7 +144,6 @@ add_libc_unittest(
146144
libc.src.sys.mman.mincore
147145
libc.src.sys.mman.mlock
148146
libc.src.sys.mman.munlock
149-
libc.src.unistd.sysconf
150147
libc.test.UnitTest.ErrnoCheckingTest
151148
libc.test.UnitTest.ErrnoSetterMatcher
152149
)
@@ -160,13 +157,14 @@ add_libc_unittest(
160157
DEPENDS
161158
libc.include.sys_mman
162159
libc.include.sys_stat
163-
libc.src.unistd.sysconf
164160
libc.test.UnitTest.ErrnoCheckingTest
165161
libc.test.UnitTest.ErrnoSetterMatcher
166162
libc.src.sys.mman.remap_file_pages
167163
libc.src.errno.errno
168164
libc.src.sys.mman.mmap
169165
libc.src.sys.mman.munmap
166+
libc.src.fcntl.open
167+
libc.src.unistd.close
170168
)
171169

172170
add_libc_unittest(

libc/test/src/sys/mman/linux/mincore_test.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include "src/sys/mman/mmap.h"
1313
#include "src/sys/mman/munlock.h"
1414
#include "src/sys/mman/munmap.h"
15-
#include "src/unistd/sysconf.h"
1615
#include "test/UnitTest/ErrnoCheckingTest.h"
1716
#include "test/UnitTest/ErrnoSetterMatcher.h"
1817
#include "test/UnitTest/Test.h"
@@ -21,14 +20,17 @@ using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
2120
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
2221
using LlvmLibcMincoreTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
2322

23+
// TODO: Replace with sysconf call once the function is properly implemented.
24+
constexpr size_t PAGE_SIZE = 4096;
25+
2426
TEST_F(LlvmLibcMincoreTest, UnMappedMemory) {
2527
unsigned char vec;
2628
int res = LIBC_NAMESPACE::mincore(nullptr, 1, &vec);
2729
EXPECT_THAT(res, Fails(ENOMEM, -1));
2830
}
2931

3032
TEST_F(LlvmLibcMincoreTest, UnalignedAddr) {
31-
unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
33+
unsigned long page_size = PAGE_SIZE;
3234
void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
3335
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
3436
EXPECT_NE(addr, MAP_FAILED);
@@ -39,7 +41,7 @@ TEST_F(LlvmLibcMincoreTest, UnalignedAddr) {
3941
}
4042

4143
TEST_F(LlvmLibcMincoreTest, InvalidVec) {
42-
unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
44+
unsigned long page_size = PAGE_SIZE;
4345
void *addr = LIBC_NAMESPACE::mmap(nullptr, 4 * page_size, PROT_READ,
4446
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
4547
EXPECT_NE(addr, MAP_FAILED);
@@ -49,7 +51,7 @@ TEST_F(LlvmLibcMincoreTest, InvalidVec) {
4951
}
5052

5153
TEST_F(LlvmLibcMincoreTest, NoError) {
52-
unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
54+
unsigned long page_size = PAGE_SIZE;
5355
void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
5456
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
5557
EXPECT_NE(addr, MAP_FAILED);
@@ -61,7 +63,7 @@ TEST_F(LlvmLibcMincoreTest, NoError) {
6163
}
6264

6365
TEST_F(LlvmLibcMincoreTest, NegativeLength) {
64-
unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
66+
unsigned long page_size = PAGE_SIZE;
6567
void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
6668
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
6769
EXPECT_NE(addr, MAP_FAILED);
@@ -73,7 +75,7 @@ TEST_F(LlvmLibcMincoreTest, NegativeLength) {
7375
}
7476

7577
TEST_F(LlvmLibcMincoreTest, PageOut) {
76-
unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
78+
unsigned long page_size = PAGE_SIZE;
7779
unsigned char vec;
7880
void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ | PROT_WRITE,
7981
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);

libc/test/src/sys/mman/linux/mlock_test.cpp

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,15 @@
2222
#include "src/sys/mman/munlockall.h"
2323
#include "src/sys/mman/munmap.h"
2424
#include "src/sys/resource/getrlimit.h"
25-
#include "src/unistd/sysconf.h"
2625
#include "test/UnitTest/ErrnoCheckingTest.h"
2726
#include "test/UnitTest/ErrnoSetterMatcher.h"
2827
#include "test/UnitTest/Test.h"
2928

30-
#include <linux/capability.h>
3129
#include <sys/syscall.h>
3230

31+
// TODO: Replace with sysconf call once the function is properly implemented.
32+
constexpr size_t PAGE_SIZE = 4096;
33+
3334
using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
3435
using LlvmLibcMlockTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
3536

@@ -38,7 +39,7 @@ struct PageHolder {
3839
void *addr;
3940

4041
PageHolder()
41-
: size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)),
42+
: size(PAGE_SIZE),
4243
addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE,
4344
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {}
4445
~PageHolder() {
@@ -51,28 +52,10 @@ struct PageHolder {
5152
bool is_valid() { return addr != MAP_FAILED; }
5253
};
5354

54-
static bool get_capacity(unsigned int cap) {
55-
__user_cap_header_struct header;
56-
header.pid = 0;
57-
header.version = _LINUX_CAPABILITY_VERSION_3;
58-
__user_cap_data_struct data[_LINUX_CAPABILITY_U32S_3];
59-
// TODO: use capget wrapper once implemented.
60-
// https://github.com/llvm/llvm-project/issues/80037
61-
long res = LIBC_NAMESPACE::syscall_impl(
62-
SYS_capget, LIBC_NAMESPACE::cpp::bit_cast<long>(&header),
63-
LIBC_NAMESPACE::cpp::bit_cast<long>(&data));
64-
if (res < 0)
65-
return false;
66-
unsigned idx = CAP_TO_INDEX(cap);
67-
unsigned shift = CAP_TO_MASK(cap);
68-
return (data[idx].effective & shift) != 0;
69-
}
70-
7155
static bool is_permitted_size(size_t size) {
7256
rlimit rlimits;
7357
LIBC_NAMESPACE::getrlimit(RLIMIT_MEMLOCK, &rlimits);
74-
return size <= static_cast<size_t>(rlimits.rlim_cur) ||
75-
get_capacity(CAP_IPC_LOCK);
58+
return size <= static_cast<size_t>(rlimits.rlim_cur);
7659
}
7760

7861
TEST_F(LlvmLibcMlockTest, UnMappedMemory) {

libc/test/src/sys/mman/linux/msync_test.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
#include "src/sys/mman/msync.h"
1212
#include "src/sys/mman/munlock.h"
1313
#include "src/sys/mman/munmap.h"
14-
#include "src/unistd/sysconf.h"
1514
#include "test/UnitTest/ErrnoCheckingTest.h"
1615
#include "test/UnitTest/ErrnoSetterMatcher.h"
1716
#include "test/UnitTest/Test.h"
1817

18+
// TODO: Replace with sysconf call once the function is properly implemented.
19+
constexpr size_t PAGE_SIZE = 4096;
20+
1921
using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
2022
using LlvmLibcMsyncTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
2123

@@ -24,7 +26,7 @@ struct PageHolder {
2426
void *addr;
2527

2628
PageHolder()
27-
: size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)),
29+
: size(PAGE_SIZE),
2830
addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE,
2931
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {}
3032
~PageHolder() {

libc/test/src/sys/mman/linux/remap_file_pages_test.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@
1111
#include "src/sys/mman/munmap.h"
1212
#include "src/sys/mman/remap_file_pages.h"
1313
#include "src/unistd/close.h"
14-
#include "src/unistd/sysconf.h"
1514
#include "test/UnitTest/ErrnoCheckingTest.h"
1615
#include "test/UnitTest/ErrnoSetterMatcher.h"
1716
#include "test/UnitTest/Test.h"
1817

1918
#include <sys/mman.h>
2019
#include <sys/stat.h> // For S_IRWXU
2120

21+
// TODO: Replace with sysconf call once the function is properly implemented.
22+
constexpr size_t PAGE_SIZE = 4096;
23+
2224
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
2325
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
2426
using LlvmLibcRemapFilePagesTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
2527

2628
TEST_F(LlvmLibcRemapFilePagesTest, NoError) {
27-
size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
29+
size_t page_size = PAGE_SIZE;
2830
ASSERT_GT(page_size, size_t(0));
2931

3032
// Create a file-backed mapping
@@ -50,7 +52,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, NoError) {
5052
}
5153

5254
TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
53-
size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
55+
size_t page_size = PAGE_SIZE;
5456
ASSERT_GT(page_size, size_t(0));
5557

5658
// Create a file-backed mapping
@@ -77,7 +79,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
7779
}
7880

7981
TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidAddress) {
80-
size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
82+
size_t page_size = PAGE_SIZE;
8183
ASSERT_GT(page_size, size_t(0));
8284

8385
// Use an address that we haven't mapped

0 commit comments

Comments
 (0)