gethugepagesizes.c   gethugepagesizes.c 
skipping to change at line 323 skipping to change at line 323
}) })
#define INIT_LIST(a, values...) \ #define INIT_LIST(a, values...) \
({ \ ({ \
long __e[] = { values }; \ long __e[] = { values }; \
memcpy(a, __e, sizeof(__e)); \ memcpy(a, __e, sizeof(__e)); \
}) })
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
long expected_sizes[MAX], actual_sizes[MAX]; int i, fakes_no;
long expected_sizes[MAX], actual_sizes[MAX], fake_sizes[MAX];
long base_size = sysconf(_SC_PAGESIZE); long base_size = sysconf(_SC_PAGESIZE);
test_init(argc, argv); test_init(argc, argv);
/* /*
* === * ===
* Argment error checking tests * Argment error checking tests
* === * ===
*/ */
meminfo_state = OVERRIDE_OFF; meminfo_state = OVERRIDE_OFF;
skipping to change at line 354 skipping to change at line 355
if (getpagesizes(NULL, 1) != -1 || errno != EINVAL) if (getpagesizes(NULL, 1) != -1 || errno != EINVAL)
FAIL("Mishandled params (pagesizes == NULL, n_elem > 0)"); FAIL("Mishandled params (pagesizes == NULL, n_elem > 0)");
/* /*
* === * ===
* Test some corner cases using a fake system configuration * Test some corner cases using a fake system configuration
* === * ===
*/ */
INIT_LIST(expected_sizes, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); INIT_LIST(expected_sizes, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024);
setup_fake_data(expected_sizes, 3); fakes_no = 0;
for (i = 0; i < 3; i++)
/* don't include base_size in 'fake' hugepagesizes */
if (base_size != expected_sizes[i]) {
fake_sizes[fakes_no] = expected_sizes[i];
fakes_no++;
}
setup_fake_data(fake_sizes, fakes_no);
/* /*
* Check handling when /proc/meminfo indicates no huge page support * Check handling when /proc/meminfo indicates no huge page support
* and the sysfs heirachy is not present. * and the sysfs heirachy is not present.
*/ */
meminfo_state = OVERRIDE_MISSING; meminfo_state = OVERRIDE_MISSING;
sysfs_state = OVERRIDE_MISSING; sysfs_state = OVERRIDE_MISSING;
kernel_default_hugepage_size_reset(); kernel_default_hugepage_size_reset();
EXPECT_SIZES(gethugepagesizes, MAX, 0, expected_sizes); EXPECT_SIZES(gethugepagesizes, MAX, 0, expected_sizes);
skipping to change at line 385 skipping to change at line 393
INIT_LIST(expected_sizes, base_size, HPAGE_KB * 1024); INIT_LIST(expected_sizes, base_size, HPAGE_KB * 1024);
EXPECT_SIZES(getpagesizes, MAX, 2, expected_sizes); EXPECT_SIZES(getpagesizes, MAX, 2, expected_sizes);
/* /*
* When sysfs defines additional sizes ... * When sysfs defines additional sizes ...
*/ */
sysfs_state = OVERRIDE_ON; sysfs_state = OVERRIDE_ON;
kernel_default_hugepage_size_reset(); kernel_default_hugepage_size_reset();
INIT_LIST(expected_sizes, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); memcpy(expected_sizes, fake_sizes, sizeof(fake_sizes));
/* ... make sure all sizes are returned without duplicates */ /* ... make sure all sizes are returned without duplicates */
/* ... while making sure we do not overstep our limit */ /* ... while making sure we do not overstep our limit */
EXPECT_SIZES(gethugepagesizes, MAX, 3, expected_sizes); EXPECT_SIZES(gethugepagesizes, MAX, fakes_no, expected_sizes);
EXPECT_SIZES(gethugepagesizes, 1, 3, expected_sizes); EXPECT_SIZES(gethugepagesizes, 1, fakes_no, expected_sizes);
EXPECT_SIZES(gethugepagesizes, 2, 3, expected_sizes); EXPECT_SIZES(gethugepagesizes, 2, fakes_no, expected_sizes);
EXPECT_SIZES(gethugepagesizes, 3, 3, expected_sizes); EXPECT_SIZES(gethugepagesizes, 3, fakes_no, expected_sizes);
EXPECT_SIZES(gethugepagesizes, 4, 3, expected_sizes); EXPECT_SIZES(gethugepagesizes, 4, fakes_no, expected_sizes);
INIT_LIST(expected_sizes, memcpy(expected_sizes, fake_sizes, sizeof(fake_sizes));
base_size, HPAGE_KB * 1024, 1024 * 1024, 64 * 1024); expected_sizes[fakes_no] = base_size;
EXPECT_SIZES(getpagesizes, MAX, 4, expected_sizes); EXPECT_SIZES(getpagesizes, MAX, fakes_no + 1, expected_sizes);
EXPECT_SIZES(getpagesizes, 1, 4, expected_sizes); EXPECT_SIZES(getpagesizes, 1, fakes_no + 1, expected_sizes);
EXPECT_SIZES(getpagesizes, 2, 4, expected_sizes); EXPECT_SIZES(getpagesizes, 2, fakes_no + 1, expected_sizes);
EXPECT_SIZES(getpagesizes, 3, 4, expected_sizes); EXPECT_SIZES(getpagesizes, 3, fakes_no + 1, expected_sizes);
EXPECT_SIZES(getpagesizes, 4, 4, expected_sizes); EXPECT_SIZES(getpagesizes, 4, fakes_no + 1, expected_sizes);
EXPECT_SIZES(getpagesizes, 5, 4, expected_sizes); EXPECT_SIZES(getpagesizes, 5, fakes_no + 1, expected_sizes);
/* ... we can check how many sizes are supported. */ /* ... we can check how many sizes are supported. */
if (gethugepagesizes(NULL, 0) != 3) if (gethugepagesizes(NULL, 0) != fakes_no)
FAIL("Unable to check the number of supported sizes"); FAIL("Unable to check the number of supported sizes");
if (getpagesizes(NULL, 0) != 4) if (getpagesizes(NULL, 0) != fakes_no + 1)
FAIL("Unable to check the number of supported sizes"); FAIL("Unable to check the number of supported sizes");
PASS(); PASS();
} }
 End of changes. 6 change blocks. 
19 lines changed or deleted 27 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/