Subversion Repositories Kolibri OS

Rev

Rev 9012 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8703 turbocat 1
#include 
2
#include 
3
#include 
4
 
5
char* drv_name = NULL;
6
 
7
struct{
8
    int a;
9
    int b;
10
}add_struct;
11
 
12
int sum=0;
13
ksys_drv_hand_t drv = 0;
14
 
15
#define DRV_ADD_FUNC 0
16
 
17
int main(int argc, char** argv){
18
    puts("Which driver?");
19
    puts("1 - asm_drv.sys\n2 - c_drv.dll");
20
    int num_drv = (char)getchar()-'0';
21
    switch (num_drv) {
22
        case 1 :
23
            drv_name = "asm_drv";
24
            drv = _ksys_load_driver(drv_name);
25
            break;
26
        case 2 :
9583 vitalkrilo 27
            drv_name = "/sys/drivers/c_drv.dll";
8703 turbocat 28
            drv = _ksys_load_pe_driver(drv_name, NULL);
29
            break;
30
        default:
31
            printf("No driver selected!\n");
32
            exit(0);
33
    }
34
 
35
    if(!drv){
36
        printf("'%s' driver not load!\n", drv_name);
37
        exit(0);
38
    }else{
39
        printf("'%s' driver is load!\n", drv_name);
40
    }
41
 
42
 
43
    add_struct.a = 43;
44
    add_struct.b = 532;
45
 
9012 Boppan 46
    ksys_ioctl_t ioctl;
8703 turbocat 47
    ioctl.func_num = DRV_ADD_FUNC;
48
    ioctl.handler = drv;
49
    ioctl.in_data_ptr = &add_struct;
50
    ioctl.in_data_size = sizeof(add_struct);
51
    ioctl.out_data_ptr = ∑
52
    ioctl.out_data_size = sizeof(sum);
53
 
54
    unsigned status =_ksys_work_driver(&ioctl);
55
    if(status==-1){
56
        puts("Error!");
57
    }else {
58
        printf("%d + %d  = %d\n", add_struct.a, add_struct.b, sum);
59
        if(sum == add_struct.a + add_struct.b){
60
            puts("True!");
61
        }else{
62
            puts("False!");
63
        }
64
    }
65
    exit(0);
66
}