openblt

a hobby OS from the late 90s
git clone http://frotz.net/git/openblt.git
Log | Files | Refs | LICENSE

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