MCPcopy Create free account
hub / github.com/ElementsProject/lightning / main

Function main

ccan/ccan/ptr_valid/test/run.c:24–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22}
23
24int main(void)
25{
26 char *page;
27
28 /* This is how many tests you plan to run */
29 plan_tests(30);
30
31 page = mmap(NULL, getpagesize(), PROT_READ|PROT_WRITE,
32 MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
33 ok1(ptr_valid_read(page));
34 ok1(ptr_valid_write(page));
35 ok1(ptr_valid(page, 1, getpagesize(), false));
36 ok1(ptr_valid(page, 1, getpagesize(), true));
37
38 /* Test alignment constraints. */
39 ok1(ptr_valid(page, getpagesize(), getpagesize(), false));
40 ok1(ptr_valid(page, getpagesize(), getpagesize(), true));
41 ok1(!ptr_valid(page+1, getpagesize(), 1, false));
42 ok1(!ptr_valid(page+1, getpagesize(), 1, true));
43
44 /* Test batch. */
45 ok1(check_batch(page, getpagesize(), true));
46
47 /* Unmap, all should fail. */
48 munmap(page, getpagesize());
49 ok1(!ptr_valid_read(page));
50 ok1(!ptr_valid_write(page));
51 ok1(!ptr_valid(page, 1, getpagesize(), false));
52 ok1(!ptr_valid(page, 1, getpagesize(), true));
53
54 /* Test alignment constraints. */
55 ok1(!ptr_valid(page, getpagesize(), getpagesize(), false));
56 ok1(!ptr_valid(page, getpagesize(), getpagesize(), true));
57 ok1(!ptr_valid(page+1, getpagesize(), 1, false));
58 ok1(!ptr_valid(page, getpagesize(), 1, true));
59
60 /* Test batch (slow, since each fails, so reduce count). */
61 ok1(check_batch(page, 4, false));
62
63 /* Check read-only */
64 page = mmap(NULL, getpagesize(), PROT_READ,
65 MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
66 ok1(ptr_valid_read(page));
67 ok1(!ptr_valid_write(page));
68 ok1(ptr_valid(page, 1, getpagesize(), false));
69 ok1(!ptr_valid(page, 1, getpagesize(), true));
70
71 /* Test alignment constraints. */
72 ok1(ptr_valid(page, getpagesize(), getpagesize(), false));
73 ok1(!ptr_valid(page, getpagesize(), getpagesize(), true));
74 ok1(!ptr_valid(page+1, getpagesize(), 1, false));
75 ok1(!ptr_valid(page+1, getpagesize(), 1, true));
76 munmap(page, getpagesize());
77
78 /* Check for overrun. */
79 page = mmap(NULL, getpagesize()*2, PROT_READ|PROT_WRITE,
80 MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
81 munmap(page + getpagesize(), getpagesize());

Callers

nothing calls this directly

Calls 2

ptr_validFunction · 0.85
check_batchFunction · 0.85

Tested by

no test coverage detected