Tizen 2.1 base
[sdk/emulator/qemu.git] / target-i386 / helper_gpi_test.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <fcntl.h>
4 #include <string.h>
5
6 #define SIZE_OUT_HEADER (4*4)
7
8 static inline int call_gpi(int fd, int args_len, int ret_len, int ftn_num, char *args_buf)
9 {
10         int ret = 0;
11         //volatile int *i = (volatile int*)args_buf;
12         int *i = (int*)args_buf;
13
14         /* i[0] = pid; ...is filled in by the kernel module for virtio GL */
15         i[1] = args_len;
16         i[2] = ret_len;
17         i[3] = ftn_num;
18
19         fprintf(stdout, "args_len(%d), ret_len(%d), ftn_num(%d)  \n", i[1], i[2], i[3]);
20
21         ret = write(fd, args_buf, args_len);
22         if( ret != args_len) {
23                 perror("write fail");
24                 exit(0);
25         }  
26
27         return ret;
28 }
29
30 int main(int argc, char** argv)
31 {
32
33         int fd;
34         int ftn_num;
35         char write_buf[4096] = {0};
36         char read_buf[4096] = {0};
37
38
39         if((fd = open("/dev/virt_gpi", O_RDWR)) == -1) {
40                 perror("open");
41                 exit(0);
42         }
43
44         if( argc >= 1 && argv[1] != NULL ){
45                 ftn_num = atoi(argv[1]);
46         }else{
47                 exit(0);
48         }
49
50         if( argc >= 2 && argv[2] != NULL ){
51                 strcpy(write_buf, argv[2]);
52         }
53
54         if(call_gpi(fd, SIZE_OUT_HEADER + strlen(write_buf), sizeof(read_buf), ftn_num, write_buf) <= 0) {
55                 perror("call_gpi");
56                 exit(0);
57         }
58
59         if(read(fd, read_buf, sizeof(read_buf)) <= 0){
60                 perror("read");
61                 exit(0);
62         }
63
64         fprintf(stdout, "read_buf[%s] \n", read_buf);
65
66         close(fd);
67         return 0;
68 }
69
70