8
8
#include < string.h>
9
9
10
10
struct alignas (4096 ) page {
11
- int x;
11
+ int x;
12
12
};
13
13
14
14
struct alignas (16384 ) larry {
15
- int x;
15
+ int x;
16
16
};
17
17
18
18
bool misaligned = false ;
@@ -23,15 +23,15 @@ void grandchild(void) {
23
23
if (alignment != 0 )
24
24
misaligned = true ;
25
25
26
- printf (" Grandchild: address modulo alignment %u\n " , alignment);
26
+ printf (" Grandchild: address modulo alignment %u\n " , alignment);
27
27
}
28
28
29
29
// Even if the FakeStack frame is aligned by chance to 16384, we can use an
30
30
// intervening stack frame to knock it out of alignment.
31
31
void child (void ) {
32
32
page p1;
33
33
uint alignment = (unsigned long )&p1 % alignof (page);
34
- printf (" Child: address modulo alignment is %u\n " , alignment);
34
+ printf (" Child: address modulo alignment is %u\n " , alignment);
35
35
if (alignment != 0 )
36
36
misaligned = true ;
37
37
@@ -40,10 +40,10 @@ void child(void) {
40
40
41
41
// Check whether the FakeStack frame is sufficiently aligned. Alignment can
42
42
// happen by chance, so try this on many threads if you don't want
43
- void *Thread (void *unused) {
43
+ void *Thread (void *unused) {
44
44
larry l1;
45
45
uint alignment = (unsigned long )&l1 % alignof (larry);
46
- printf (" Thread: address modulo alignment is %u\n " , alignment);
46
+ printf (" Thread: address modulo alignment is %u\n " , alignment);
47
47
if (alignment != 0 )
48
48
misaligned = true ;
49
49
@@ -58,15 +58,15 @@ int main(int argc, char **argv) {
58
58
59
59
pthread_t t[10 ];
60
60
for (int i = 0 ; i < 10 ; i++) {
61
- pthread_create (&t[i], &attr, Thread, 0 );
61
+ pthread_create (&t[i], &attr, Thread, 0 );
62
62
}
63
63
pthread_attr_destroy (&attr);
64
64
for (int i = 0 ; i < 10 ; i++) {
65
- pthread_join (t[i], 0 );
65
+ pthread_join (t[i], 0 );
66
66
}
67
67
68
68
if (misaligned) {
69
- printf (" Test failed: not perfectly aligned\n " );
69
+ printf (" Test failed: not perfectly aligned\n " );
70
70
exit (1 );
71
71
}
72
72
0 commit comments