xref: /xnu-8792.81.2/tests/port_exhaustion_client.c (revision 19c3b8c28c31cb8130e034cfb5df6bf9ba342d90)
1*19c3b8c2SApple OSS Distributions #include <stdio.h>
2*19c3b8c2SApple OSS Distributions #include <mach/mach.h>
3*19c3b8c2SApple OSS Distributions #include <mach/message.h>
4*19c3b8c2SApple OSS Distributions #include <unistd.h>
5*19c3b8c2SApple OSS Distributions #include <assert.h>
6*19c3b8c2SApple OSS Distributions #include <string.h>
7*19c3b8c2SApple OSS Distributions #include <stdlib.h>
8*19c3b8c2SApple OSS Distributions 
9*19c3b8c2SApple OSS Distributions static inline mach_port_type_t
get_port_type(mach_port_t mp)10*19c3b8c2SApple OSS Distributions get_port_type(mach_port_t mp)
11*19c3b8c2SApple OSS Distributions {
12*19c3b8c2SApple OSS Distributions 	mach_port_type_t type = 0;
13*19c3b8c2SApple OSS Distributions 	mach_port_type(mach_task_self(), mp, &type);
14*19c3b8c2SApple OSS Distributions 	return type;
15*19c3b8c2SApple OSS Distributions }
16*19c3b8c2SApple OSS Distributions 
17*19c3b8c2SApple OSS Distributions int
main()18*19c3b8c2SApple OSS Distributions main()
19*19c3b8c2SApple OSS Distributions {
20*19c3b8c2SApple OSS Distributions 	mach_port_t port = MACH_PORT_NULL;
21*19c3b8c2SApple OSS Distributions 	kern_return_t retval = KERN_SUCCESS;
22*19c3b8c2SApple OSS Distributions 
23*19c3b8c2SApple OSS Distributions 	mach_port_t task = mach_task_self();
24*19c3b8c2SApple OSS Distributions 
25*19c3b8c2SApple OSS Distributions 	printf("Starting the receive right allocation loop\n");
26*19c3b8c2SApple OSS Distributions 	int i = 0;
27*19c3b8c2SApple OSS Distributions 	while (!retval) {
28*19c3b8c2SApple OSS Distributions 		retval = mach_port_allocate(task, MACH_PORT_RIGHT_RECEIVE, &port);
29*19c3b8c2SApple OSS Distributions 		assert(retval == 0);
30*19c3b8c2SApple OSS Distributions 		//printf("%d. allocate a port=[%d]\n", i, port);
31*19c3b8c2SApple OSS Distributions 		assert(get_port_type(port) == MACH_PORT_TYPE_RECEIVE);
32*19c3b8c2SApple OSS Distributions 		i++;
33*19c3b8c2SApple OSS Distributions 	}
34*19c3b8c2SApple OSS Distributions 
35*19c3b8c2SApple OSS Distributions 	exit(1);
36*19c3b8c2SApple OSS Distributions }
37