0,0 → 1,56 |
#include "stddef.h" |
#include <sys/ksys.h> |
#include <stdio.h> |
#include <stdlib.h> |
|
#define DEV_ADD_DISK 1 |
|
#define TMPDISK_SIZE 10 //Mb |
|
#pragma pack(push, 1) |
struct{ |
unsigned disk_size; |
unsigned char disk_id; |
}tmpdisk_add; |
#pragma pack(pop) |
|
char *tmpdisk_res_text[]={ |
"TmpDisk operation completed successfully", |
"Unknown IOCTL code, wrong input/output size...", |
"DiskId must be from 0 to 9", |
"DiskSize is too large", |
"DiskSize is too small, might be too little free RAM", |
"Memory allocation failed", |
"Unknown error O_o", |
0}; |
|
|
int main(){ |
ksys_drv_hand_t tmpdisk_drv = _ksys_load_driver("tmpdisk"); |
if(!tmpdisk_drv){ |
puts("tmpdisk.sys driver not load!"); |
exit(0); |
}else{ |
puts("tmpdisk.sys driver is load!"); |
} |
|
tmpdisk_add.disk_size = TMPDISK_SIZE*1024*1024/512; |
tmpdisk_add.disk_id = 5; |
|
ksys_drv_ctl_t ioctl; |
ioctl.func_num = DEV_ADD_DISK; |
ioctl.handler = tmpdisk_drv; |
ioctl.in_data_ptr = &tmpdisk_add; |
ioctl.in_data_size = sizeof(tmpdisk_add); |
ioctl.out_data_ptr = NULL; |
ioctl.out_data_size = 0; |
|
printf("Create '/tmp%u/' disk a %u Mb size...\n", tmpdisk_add.disk_id, TMPDISK_SIZE); |
unsigned status =_ksys_work_driver(&ioctl); |
if(status<7){ |
puts(tmpdisk_res_text[status]); |
}else{ |
puts(tmpdisk_res_text[6]); |
} |
exit(0); |
} |