Also print the expected value. Some comment on what should happen.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22140 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
b33a19a278
commit
e5c9c9e371
@ -52,6 +52,7 @@ main()
|
|||||||
const int kAreaCount = 4;
|
const int kAreaCount = 4;
|
||||||
area_id areas[kAreaCount];
|
area_id areas[kAreaCount];
|
||||||
int* areaAddresses[kAreaCount];
|
int* areaAddresses[kAreaCount];
|
||||||
|
|
||||||
areas[0] = create_test_area("area0", &areaAddresses[0], B_READ_AREA);
|
areas[0] = create_test_area("area0", &areaAddresses[0], B_READ_AREA);
|
||||||
areas[1] = create_test_area("area1", &areaAddresses[1], B_READ_AREA);
|
areas[1] = create_test_area("area1", &areaAddresses[1], B_READ_AREA);
|
||||||
areas[2] = create_test_area("area2", &areaAddresses[2], B_READ_AREA);
|
areas[2] = create_test_area("area2", &areaAddresses[2], B_READ_AREA);
|
||||||
@ -62,8 +63,10 @@ main()
|
|||||||
/*area_id area2Clone =*/ clone_test_area("area2clone", &area2CloneAddress,
|
/*area_id area2Clone =*/ clone_test_area("area2clone", &area2CloneAddress,
|
||||||
B_READ_AREA | B_WRITE_AREA, areas[2]);
|
B_READ_AREA | B_WRITE_AREA, areas[2]);
|
||||||
|
|
||||||
|
int area3Value = *areaAddresses[3];
|
||||||
|
|
||||||
for (int i = 0; i < kAreaCount; i++) {
|
for (int i = 0; i < kAreaCount; i++) {
|
||||||
printf("parent: areas[%d]: %ld, %p (%d)\n", i, areas[i],
|
printf("parent: areas[%d]: %ld, %p (0x%08x)\n", i, areas[i],
|
||||||
areaAddresses[i], *areaAddresses[i]);
|
areaAddresses[i], *areaAddresses[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,6 +79,18 @@ main()
|
|||||||
|
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
// child
|
// child
|
||||||
|
pid = find_thread(NULL);
|
||||||
|
|
||||||
|
int expectedValues[kAreaCount] = {
|
||||||
|
0, // CoW -- the child should see the original value
|
||||||
|
pid, // clone -- the child should see the change
|
||||||
|
pid, // clone -- the child should see the change
|
||||||
|
area3Value // CoW -- the child should see the original value
|
||||||
|
// Note: It looks alright in BeOS in the first run,
|
||||||
|
// but the parent actually seems to modify some
|
||||||
|
// cached page, and in the next run, we'll see
|
||||||
|
// the changed value.
|
||||||
|
};
|
||||||
|
|
||||||
// get the IDs of the copied areas
|
// get the IDs of the copied areas
|
||||||
area_id parentAreas[kAreaCount];
|
area_id parentAreas[kAreaCount];
|
||||||
@ -101,8 +116,10 @@ main()
|
|||||||
|
|
||||||
snooze(400000);
|
snooze(400000);
|
||||||
|
|
||||||
for (int i = 0; i < kAreaCount; i++)
|
for (int i = 0; i < kAreaCount; i++) {
|
||||||
printf("child: area[%d] contains: %d\n", i, *areaAddresses[i]);
|
printf("child: area[%d] contains: 0x%08x (expected: 0x%08x)\n", i,
|
||||||
|
*areaAddresses[i], expectedValues[i]);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// parent
|
// parent
|
||||||
|
Loading…
Reference in New Issue
Block a user