xref: /haiku/src/tests/system/kernel/port_delete_test.cpp (revision da9b743b20f15d5961a5d02f308ec515078e581c)
1*da9b743bSMarcus Overhagen /*
2*da9b743bSMarcus Overhagen  * Copyright 2006, Marcus Overhagen, <marcus@overhagen.de>
3*da9b743bSMarcus Overhagen  * Distributed under the terms of the MIT License.
4*da9b743bSMarcus Overhagen  */
5*da9b743bSMarcus Overhagen 
6*da9b743bSMarcus Overhagen 
7*da9b743bSMarcus Overhagen #include <OS.h>
8*da9b743bSMarcus Overhagen #include <stdio.h>
9*da9b743bSMarcus Overhagen #include <string.h>
10*da9b743bSMarcus Overhagen 
11*da9b743bSMarcus Overhagen int
12*da9b743bSMarcus Overhagen main()
13*da9b743bSMarcus Overhagen {
14*da9b743bSMarcus Overhagen 	port_id id;
15*da9b743bSMarcus Overhagen 	status_t s;
16*da9b743bSMarcus Overhagen 	size_t size;
17*da9b743bSMarcus Overhagen 	int32 code;
18*da9b743bSMarcus Overhagen 
19*da9b743bSMarcus Overhagen 	char data[100];
20*da9b743bSMarcus Overhagen 
21*da9b743bSMarcus Overhagen 
22*da9b743bSMarcus Overhagen 	id = create_port(10, "test port");
23*da9b743bSMarcus Overhagen 	printf("created port %ld\n", id);
24*da9b743bSMarcus Overhagen 
25*da9b743bSMarcus Overhagen 	s = write_port(id, 0x1234, data, 10);
26*da9b743bSMarcus Overhagen 	printf("write port result 0x%08lx (%s)\n", s, strerror(s));
27*da9b743bSMarcus Overhagen 
28*da9b743bSMarcus Overhagen 	s = write_port(id, 0x5678, data, 20);
29*da9b743bSMarcus Overhagen 	printf("write port result 0x%08lx (%s)\n", s, strerror(s));
30*da9b743bSMarcus Overhagen 
31*da9b743bSMarcus Overhagen 	s = delete_port(id);
32*da9b743bSMarcus Overhagen 	printf("delete port result 0x%08lx (%s)\n", s, strerror(s));
33*da9b743bSMarcus Overhagen 
34*da9b743bSMarcus Overhagen 	printf("everything should fail now\n");
35*da9b743bSMarcus Overhagen 
36*da9b743bSMarcus Overhagen 	// BeBook: does return B_BAD_PORT_ID if port was closed
37*da9b743bSMarcus Overhagen 	s = write_port(id, 0x5678, data, 20);
38*da9b743bSMarcus Overhagen 	printf("write port result 0x%08lx (%s)\n", s, strerror(s));
39*da9b743bSMarcus Overhagen 
40*da9b743bSMarcus Overhagen 	// BeBook: does block when port is empty, and unblocks when port is written to or deleted
41*da9b743bSMarcus Overhagen 	size = port_buffer_size(id);
42*da9b743bSMarcus Overhagen 	printf("port_buffer_size %ld (0x%08lx) (%s)\n", size, size, strerror(size));
43*da9b743bSMarcus Overhagen 
44*da9b743bSMarcus Overhagen 	// BeBook: does block when port is empty, and unblocks when port is written to or deleted
45*da9b743bSMarcus Overhagen 	size = read_port(id, &code, data, sizeof(data));
46*da9b743bSMarcus Overhagen 	printf("read port code %lx, size %ld (0x%08lx) (%s)\n", code, size, size, strerror(size));
47*da9b743bSMarcus Overhagen 
48*da9b743bSMarcus Overhagen 	return 0;
49*da9b743bSMarcus Overhagen }
50