* The transfer_area() test was not updated to its newer semantics, works again
now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34553 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2005, Axel Dörfler, [email protected].
|
* Copyright 2005-2009, Axel Dörfler, [email protected].
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -32,42 +32,48 @@ main(int argc, char **argv)
|
|||||||
get_port_info(port, &info);
|
get_port_info(port, &info);
|
||||||
|
|
||||||
char *address;
|
char *address;
|
||||||
area = create_area("test transfer area", (void **)&address, B_ANY_ADDRESS, B_PAGE_SIZE,
|
area = create_area("test transfer area", (void **)&address,
|
||||||
B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
B_ANY_ADDRESS, B_PAGE_SIZE, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
if (area < B_OK) {
|
if (area < 0) {
|
||||||
fprintf(stderr, "Could not create area: %s.\n", strerror(area));
|
fprintf(stderr, "Could not create area: %s.\n", strerror(area));
|
||||||
return -1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(address, "Oh my god - it's working! (%s)", argv[1]);
|
sprintf(address, "Oh my god - it's working! (%s)", argv[1]);
|
||||||
|
|
||||||
status_t status = _kern_transfer_area(area, (void **)&address, B_ANY_ADDRESS, info.team);
|
area_id targetArea = _kern_transfer_area(area, (void **)&address,
|
||||||
if (status < B_OK) {
|
B_ANY_ADDRESS, info.team);
|
||||||
fprintf(stderr, "Could not transfer area: %s.\n", strerror(status));
|
if (targetArea < 0) {
|
||||||
return -1;
|
fprintf(stderr, "Could not transfer area: %s.\n",
|
||||||
|
strerror(targetArea));
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_port(port, area, NULL, 0);
|
write_port(port, targetArea, NULL, 0);
|
||||||
} else {
|
} else {
|
||||||
// we're the receiver
|
// we're the receiver
|
||||||
port = create_port(1, kPortName);
|
port = create_port(1, kPortName);
|
||||||
if (port < B_OK) {
|
if (port < 0) {
|
||||||
fprintf(stderr, "Could not create port: %s.\n", strerror(area));
|
fprintf(stderr, "Could not create port: %s.\n", strerror(area));
|
||||||
return -1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
puts("Waiting for an area to be received (start same command again with an argument)...");
|
puts("Waiting for an area to be received (start command again with an "
|
||||||
|
"argument)...");
|
||||||
|
|
||||||
ssize_t size;
|
ssize_t size;
|
||||||
if ((size = read_port(port, (int32 *)&area, NULL, 0)) < B_OK) {
|
if ((size = read_port(port, (int32 *)&area, NULL, 0)) < B_OK) {
|
||||||
fprintf(stderr, "Reading from port failed: %s.\n", strerror(size));
|
fprintf(stderr, "Reading from port failed: %s.\n", strerror(size));
|
||||||
return -1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Received Area %ld\n", area);
|
printf("Received Area %ld\n", area);
|
||||||
|
|
||||||
area_info info;
|
area_info info;
|
||||||
get_area_info(area, &info);
|
if (get_area_info(area, &info) != B_OK) {
|
||||||
|
fprintf(stderr, "Could not get area info.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
printf(" name = \"%s\", base = %p, size = %#lx, team = %ld\n",
|
printf(" name = \"%s\", base = %p, size = %#lx, team = %ld\n",
|
||||||
info.name, info.address, info.size, info.team);
|
info.name, info.address, info.size, info.team);
|
||||||
printf(" contents: %s\n", (char *)info.address);
|
printf(" contents: %s\n", (char *)info.address);
|
||||||
|
|||||||
Reference in New Issue
Block a user