Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. void get_str_kernel_version(char *str, const char *fmt) {
  3.     char *kvbuf;
  4.     char *vA, *vB, *vC, *vD;
  5.     unsigned *Rev;
  6.  
  7.     kvbuf = malloc(16);
  8.     kol_get_kernel_ver(kvbuf);
  9.     vA = kvbuf+0;
  10.     vB = kvbuf+1;
  11.     vC = kvbuf+2;
  12.     vD = kvbuf+3;
  13.     Rev = (unsigned*)(kvbuf + 5);
  14.  
  15.     sprintf (str, fmt, *vA, *vB, *vC, *vD, *Rev);
  16.  
  17.     free(kvbuf);
  18. }
  19.  
  20. void get_str_cpu_info(char *str) {
  21.     unsigned a, b, c, d;
  22.  
  23.     asm ("cpuid" :
  24.                     "=a" (a),
  25.             "=b" (b),
  26.             "=c" (c),
  27.             "=d" (d):
  28.             "a"(0));
  29.  
  30.     str[0] = (b&0x000000ff)     >> 0;
  31.     str[1] = (b&0x0000ff00)     >> 8;
  32.     str[2] = (b&0x00ff0000)     >> 16;
  33.     str[3] = (b&0xff000000)     >> 24;
  34.  
  35.     str[4] = (d&0x000000ff)     >> 0;
  36.     str[5] = (d&0x0000ff00)     >> 8;
  37.     str[6] = (d&0x00ff0000)     >> 16;
  38.     str[7] = (d&0xff000000)     >> 24;
  39.  
  40.     str[8] = (c&0x000000ff)     >> 0;
  41.     str[9] = (c&0x0000ff00)     >> 8;
  42.     str[10] = (c&0x00ff0000)    >> 16;
  43.     str[11] = (c&0xff000000)    >> 24;
  44.     str[12] = '\0';
  45. }
  46.  
  47. int cmd_ver(char param[]) {
  48.     if (!strcmp(param, "kernel")) {
  49.         get_str_kernel_version(tmpstr, CMD_VER_FMT1);
  50.         printf(tmpstr);
  51.         return TRUE;
  52.     }
  53.  
  54.     if (!strcmp(param, "cpu")) {
  55.         char str[13];
  56.         get_str_cpu_info(str);
  57.         printf("%s\n\r", str);
  58.         return TRUE;
  59.     }
  60.  
  61.     printf ("  Shell v%s\n\r", SHELL_VERSION);
  62.     return TRUE;
  63. }
  64.  
  65.