Subversion Repositories Kolibri OS

Rev

Rev 7515 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /////////////////////////////////////////////////////////////////////////////////////////
  2. /////////////////////////                 Console                    ////////////////////
  3. /////////////////////////////////////////////////////////////////////////////////////////
  4.  
  5. #ifdef LANG_RUS
  6.         ?define DELETE_DISK_TEXT "à®¡ãî 㤠«¨âì /tmp%i"
  7.         ?define NEW_DISK_TEXT "à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª /tmp%i à §¬¥à®¬ %i MB"
  8.         char *rezult_text[]={
  9.         "TmpDisk ®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ",
  10.         "­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...",
  11.         "­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9",
  12.         "à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª",
  13.         "à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¬ «",
  14.         "®è¨¡ª  ¢ë¤¥«¥­¨ï ¯ ¬ïâ¨",
  15.         "­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o",
  16.         0};
  17. #else
  18.         ?define DELETE_DISK_TEXT "Trying to delete /tmp%i"
  19.         ?define NEW_DISK_TEXT "Trying to add virtual disk /tmp%i, the size of %i MB"
  20.         char *rezult_text[]={
  21.         "TmpDisk operation completed successfully",
  22.         "unknown IOCTL code, wrong input/output size...",
  23.         "DiskId must be from 0 to 9",
  24.         "DiskSize is too large",
  25.         "DiskSize is too small, might be too little free RAM",
  26.         "memory allocation failed",
  27.         "unknown error O_o",
  28.         0};
  29. #endif
  30.  
  31. char Console_Work()
  32. {
  33.         unsigned int disk_size, driver_rezult;
  34.         char size_t[256];
  35.  
  36.         strlwr(#param);
  37.        
  38.         switch (param[0])
  39.         {
  40.                 case 'd': //Delete disk
  41.                         del_disk.DiskId = param[1]-'0';
  42.                         ioctl.handle   = driver_handle;
  43.                         ioctl.io_code  = DEV_DEL_DISK;
  44.                         ioctl.input    = #del_disk;
  45.                         ioctl.inp_size = sizeof(del_disk);
  46.                         ioctl.output   = 0;
  47.                         ioctl.out_size = 0;
  48.                         sprintf(#size_t, DELETE_DISK_TEXT, add_disk.DiskId);
  49.                         debugln(#size_t);
  50.                         break;
  51.                 case 'a': //Add disk
  52.                         disk_size= strchr(#param, 's');
  53.                         if (!disk_size) {
  54.                                 add_disk.DiskSize = GetFreeRAM() / 5 * 2;
  55.                         } else {
  56.                                 add_disk.DiskSize = atoi(disk_size+1)*2048;
  57.                         }
  58.                         add_disk.DiskId = param[1]-'0';
  59.                         ioctl.handle   = driver_handle;
  60.                         ioctl.io_code  = DEV_ADD_DISK;
  61.                         ioctl.input    = #add_disk;
  62.                         ioctl.inp_size = sizeof(add_disk);
  63.                         ioctl.output   = 0;
  64.                         ioctl.out_size = 0;
  65.                         sprintf(#size_t, NEW_DISK_TEXT, add_disk.DiskId, add_disk.DiskSize/2048);
  66.                         debugln(#size_t);
  67.                         break;
  68.                 default:
  69.                         debugln("\ntmpdisk: unknown command line parameters!");
  70.                         debugln("valid parameters are:");
  71.                         debugln("a[number]s[size in MB] - add RAM disk");
  72.                         debugln("d[number] - delete RAM disk");
  73.                         ExitProcess();                 
  74.         }
  75.        
  76.         driver_rezult = RuleDriver(#ioctl);
  77.         if (driver_rezult<7) debugln(rezult_text[driver_rezult]);
  78.         return driver_rezult;
  79. }
  80.  
  81.