validate.c (1982B)
1 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <blt/syscall.h> 5 #include <blt/namer.h> 6 7 int send_port, recv_port; 8 9 10 void sender(void) 11 { 12 char buffer[32]; 13 msg_hdr_t mh; 14 15 os_sleep(20); 16 17 for(;;){ 18 mh.src = send_port; 19 mh.dst = recv_port; 20 mh.size = 32; 21 mh.flags = 0; 22 mh.data = buffer; 23 24 old_port_send(&mh); 25 } 26 } 27 28 void receiver(void) 29 { 30 char buffer[32]; 31 msg_hdr_t mh; 32 33 recv_port = port_create(0,"recv port"); 34 os_sleep(20); 35 36 for(;;){ 37 mh.src = 0; 38 mh.dst = recv_port; 39 mh.size = 32; 40 mh.flags = 0; 41 mh.data = buffer; 42 43 old_port_recv(&mh); 44 } 45 } 46 47 int port_test(void) 48 { 49 int s,c; 50 printf("port_test: starting\n"); 51 for(c=0;c<1000000;c++){ 52 if(!(c % 100000)) printf("port_test: %dth port\n",c); 53 if((s = port_create(0,"port test")) < 1) { 54 printf("port_test: failed (in create) - iteration %d\n",c); 55 return 1; 56 } 57 if(port_destroy(s)){ 58 printf("port_test: failed (in destroy) - iteration %d\n",c); 59 return 1; 60 } 61 } 62 printf("port_test: passed\n"); 63 return 0; 64 } 65 66 int semid; 67 68 void tt_thread(void *data) 69 { 70 sem_release(semid); 71 os_terminate(0); 72 } 73 74 int thread_test(void) 75 { 76 int n; 77 semid = sem_create(0, "thread_test_step"); 78 79 for(n=0;n<100000;n++){ 80 if(!(n % 1000)) printf("thread_test: %dth thread\n",n); 81 thr_create(tt_thread, NULL, "thread test"); 82 sem_acquire(semid); 83 } 84 85 } 86 87 int sem_test(void) 88 { 89 int s,c; 90 printf("sem_test: starting\n"); 91 for(c=0;c<1000000;c++){ 92 if(!(c % 100000)) printf("sem_test: %dth semaphore\n",c); 93 if((s = sem_create(1,"sem test")) < 1) { 94 printf("sem_test: failed (in create) - iteration %d\n",c); 95 return 1; 96 } 97 if(sem_destroy(s)){ 98 printf("sem_test: failed (in destroy) - iteration %d\n",c); 99 return 1; 100 } 101 } 102 printf("sem_test: passed\n"); 103 return 0; 104 } 105 106 int main (int argc, char **argv) 107 { 108 int s,c; 109 110 #if 0 111 send_port = port_create(0,"xmit port"); 112 os_thread(sender); 113 receiver(); 114 #endif 115 116 #if 0 117 if(sem_test()) return 0; 118 if(port_test()) return 0; 119 #endif 120 121 if(thread_test()) return 0; 122 123 return 0; 124 } 125