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 | }> |