Subversion Repositories Kolibri OS

Rev

Rev 8699 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8699 turbocat 1
#include "stddef.h"
2
#include 
3
#include 
4
#include 
5
 
6
#define DEV_ADD_DISK 1
7
 
8
#define TMPDISK_SIZE 10 //Mb
9
 
10
#pragma pack(push, 1)
11
struct{
12
	unsigned disk_size;
13
	unsigned char disk_id;
14
}tmpdisk_add;
15
#pragma pack(pop)
16
 
17
char *tmpdisk_res_text[]={
18
	"TmpDisk operation completed successfully",
19
	"Unknown IOCTL code, wrong input/output size...",
20
	"DiskId must be from 0 to 9",
21
	"DiskSize is too large",
22
	"DiskSize is too small, might be too little free RAM",
23
	"Memory allocation failed",
24
	"Unknown error O_o",
25
	0};
26
 
27
 
28
int main(){
29
    ksys_drv_hand_t tmpdisk_drv = _ksys_load_driver("tmpdisk");
30
    if(!tmpdisk_drv){
31
        puts("tmpdisk.sys driver not load!");
32
        exit(0);
33
    }else{
34
        puts("tmpdisk.sys driver is load!");
35
    }
36
 
37
    tmpdisk_add.disk_size = TMPDISK_SIZE*1024*1024/512;
38
    tmpdisk_add.disk_id = 5;
39
 
8718 turbocat 40
    ksys_ioctl_t ioctl;
8699 turbocat 41
    ioctl.func_num = DEV_ADD_DISK;
42
    ioctl.handler = tmpdisk_drv;
43
    ioctl.in_data_ptr = &tmpdisk_add;
44
    ioctl.in_data_size = sizeof(tmpdisk_add);
45
    ioctl.out_data_ptr = NULL;
46
    ioctl.out_data_size = 0;
47
 
48
    printf("Create '/tmp%u/' disk a %u Mb size...\n", tmpdisk_add.disk_id, TMPDISK_SIZE);
49
    unsigned status =_ksys_work_driver(&ioctl);
50
    if(status<7){
51
        puts(tmpdisk_res_text[status]);
52
    }else{
53
        puts(tmpdisk_res_text[6]);
54
    }
55
    exit(0);
8718 turbocat 56
}