sys_change_vcore() (XCC)
[akaros.git] / tests / arsc_mt.c
1 #ifdef __CONFIG_ARSC_SERVER__
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <pthread.h>
5 #include <unistd.h>
6 #include <vcore.h>
7 #include <parlib.h>
8 #include <ros/syscall.h>
9 #include <arc.h>
10 #include <stdio.h>
11
12 #define NUM_THREADS 4
13
14 pthread_t t1;
15
16 async_desc_t desc1;
17
18 syscall_desc_t* sys_cputs_async(const char *s, size_t len,                                             
19                      void (*cleanup_handler)(void*), void* cleanup_data)
20 {                                                                                                                     
21         return arc_call(SYS_cputs, s, len);
22 }
23
24 void *syscall_thread(void* arg)
25 {
26         char testme ='a';
27         char buf[20] = {0};
28         sprintf(buf, "%d", (pthread_self()->id % 10) );
29         char tid = buf[0];
30         syscall_desc_t* sysdesc;
31         sysdesc = sys_cputs_async(&tid, 1, NULL, NULL);
32         assert (-1 != waiton_syscall(sysdesc));
33 }
34
35 int main(int argc, char** argv){
36         int pid = sys_getpid();
37         pthread_t *my_threads = malloc(sizeof(pthread_t) * NUM_THREADS);
38         char testme = 't';
39         printf ("multi thread - init arsc \n");
40         init_arc(&SYS_CHANNEL);
41         for (int i = 0; i < NUM_THREADS ; i++)
42                 pthread_create(&my_threads[i], NULL, &syscall_thread, NULL);
43         
44         for (int i = 0; i < NUM_THREADS; i++){
45                 pthread_join(my_threads[i], NULL);
46         }
47
48         printf("multi thread - end\n");
49 }
50 #else
51 int main(){};
52 #endif