diff --git a/src/tests/system/kernel/Jamfile b/src/tests/system/kernel/Jamfile index 8a6ed11566..1f58d2ef04 100644 --- a/src/tests/system/kernel/Jamfile +++ b/src/tests/system/kernel/Jamfile @@ -11,6 +11,10 @@ SimpleTest port_close_test_2 : port_close_test_2.cpp ; +SimpleTest port_delete_test : + port_delete_test.cpp + ; + SimpleTest transfer_area_test : transfer_area_test.cpp ; diff --git a/src/tests/system/kernel/port_close_test_1.cpp b/src/tests/system/kernel/port_close_test_1.cpp index fcdbc1de86..23b2b48c2f 100644 --- a/src/tests/system/kernel/port_close_test_1.cpp +++ b/src/tests/system/kernel/port_close_test_1.cpp @@ -37,25 +37,25 @@ main() // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = port_buffer_size(id); - printf("port_buffer_size %ld\n", size); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = read_port(id, &code, data, sizeof(data)); - printf("read port size %ld, code %lx, result 0x%08lx (%s)\n", size, code, s, strerror(s)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = port_buffer_size(id); - printf("port_buffer_size %ld\n", size); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = read_port(id, &code, data, sizeof(data)); - printf("read port size %ld, code %lx, result 0x%08lx (%s)\n", size, code, s, strerror(s)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); printf("should block now\n"); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = port_buffer_size(id); - printf("port_buffer_size %ld\n", size); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); return 0; } diff --git a/src/tests/system/kernel/port_close_test_2.cpp b/src/tests/system/kernel/port_close_test_2.cpp index ad692f98b1..4b3983ddab 100644 --- a/src/tests/system/kernel/port_close_test_2.cpp +++ b/src/tests/system/kernel/port_close_test_2.cpp @@ -37,25 +37,25 @@ main() // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = port_buffer_size(id); - printf("port_buffer_size %ld\n", size); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = read_port(id, &code, data, sizeof(data)); - printf("read port size %ld, code %lx, result 0x%08lx (%s)\n", size, code, s, strerror(s)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = port_buffer_size(id); - printf("port_buffer_size %ld\n", size); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = read_port(id, &code, data, sizeof(data)); - printf("read port size %ld, code %lx, result 0x%08lx (%s)\n", size, code, s, strerror(s)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); printf("should block now\n"); // BeBook: does block when port is empty, and unblocks when port is written to or deleted size = read_port(id, &code, data, sizeof(data)); - printf("read port size %ld, code %lx, result 0x%08lx (%s)\n", size, code, s, strerror(s)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); return 0; } diff --git a/src/tests/system/kernel/port_delete_test.cpp b/src/tests/system/kernel/port_delete_test.cpp new file mode 100644 index 0000000000..25700a5c7f --- /dev/null +++ b/src/tests/system/kernel/port_delete_test.cpp @@ -0,0 +1,49 @@ +/* + * Copyright 2006, Marcus Overhagen, + * Distributed under the terms of the MIT License. + */ + + +#include +#include +#include + +int +main() +{ + port_id id; + status_t s; + size_t size; + int32 code; + + char data[100]; + + + id = create_port(10, "test port"); + printf("created port %ld\n", id); + + s = write_port(id, 0x1234, data, 10); + printf("write port result 0x%08lx (%s)\n", s, strerror(s)); + + s = write_port(id, 0x5678, data, 20); + printf("write port result 0x%08lx (%s)\n", s, strerror(s)); + + s = delete_port(id); + printf("delete port result 0x%08lx (%s)\n", s, strerror(s)); + + printf("everything should fail now\n"); + + // BeBook: does return B_BAD_PORT_ID if port was closed + s = write_port(id, 0x5678, data, 20); + printf("write port result 0x%08lx (%s)\n", s, strerror(s)); + + // BeBook: does block when port is empty, and unblocks when port is written to or deleted + size = port_buffer_size(id); + printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size)); + + // BeBook: does block when port is empty, and unblocks when port is written to or deleted + size = read_port(id, &code, data, sizeof(data)); + printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size)); + + return 0; +}