Subversion Repositories Kolibri OS

Rev

Rev 9094 | 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 
9766 turbocat 4
#include 
8699 turbocat 5
 
6
#define DEV_ADD_DISK 1
7
 
9766 turbocat 8
#define TMPDISK_SIZE 10 // Mb
8699 turbocat 9
 
10
#pragma pack(push, 1)
9766 turbocat 11
struct {
12
    unsigned disk_size;
13
    unsigned char disk_id;
14
} tmpdisk_add;
8699 turbocat 15
#pragma pack(pop)
16
 
9766 turbocat 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
 
26
};
8699 turbocat 27
 
9766 turbocat 28
int main()
29
{
8699 turbocat 30
    ksys_drv_hand_t tmpdisk_drv = _ksys_load_driver("tmpdisk");
9766 turbocat 31
    if (!tmpdisk_drv) {
8699 turbocat 32
        puts("tmpdisk.sys driver not load!");
33
        exit(0);
9766 turbocat 34
    } else {
8699 turbocat 35
        puts("tmpdisk.sys driver is load!");
36
    }
9766 turbocat 37
 
38
    tmpdisk_add.disk_size = TMPDISK_SIZE * 1024 * 1024 / 512;
8699 turbocat 39
    tmpdisk_add.disk_id = 5;
9766 turbocat 40
 
8718 turbocat 41
    ksys_ioctl_t ioctl;
8699 turbocat 42
    ioctl.func_num = DEV_ADD_DISK;
43
    ioctl.handler = tmpdisk_drv;
44
    ioctl.in_data_ptr = &tmpdisk_add;
45
    ioctl.in_data_size = sizeof(tmpdisk_add);
46
    ioctl.out_data_ptr = NULL;
47
    ioctl.out_data_size = 0;
48
 
49
    printf("Create '/tmp%u/' disk a %u Mb size...\n", tmpdisk_add.disk_id, TMPDISK_SIZE);
9766 turbocat 50
    unsigned status = _ksys_driver_control(&ioctl);
51
    if (status < 7) {
8699 turbocat 52
        puts(tmpdisk_res_text[status]);
9766 turbocat 53
    } else {
8699 turbocat 54
        puts(tmpdisk_res_text[6]);
55
    }
56
    exit(0);
8718 turbocat 57
}