Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2.  
  3. typedef struct
  4. {
  5.   unsigned      handle;
  6.   unsigned      io_code;
  7.   void          *input;
  8.   int           inp_size;
  9.   void          *output;
  10.   int           out_size;
  11. }ioctl_t;
  12.  
  13.  
  14. #define ERR_OK       0
  15. #define ERR_PARAM   -1
  16. #define ERR_NOMEM   -2
  17.  
  18.  
  19. ///////////////////////////////////////////////////////////////////////////////
  20.  
  21.  
  22. void usleep(u32_t delay);
  23.  
  24. static int __attribute__ ((always_inline))
  25. abs (int i)
  26. {
  27.   return i < 0 ? -i : i;
  28. };
  29.  
  30.  
  31. extern inline u32_t get_service(char *name)
  32. {
  33.   u32_t retval;
  34.   asm("int $0x40"
  35.       :"=a"(retval)
  36.       :"a"(68),"b"(16),"c"(name));
  37.  
  38.   return retval;
  39. };
  40.  
  41. extern inline u32_t load_service(char *name)
  42. {
  43.   u32_t retval;
  44.   asm("int $0x40"
  45.       :"=a"(retval)
  46.       :"a"(68),"b"(21),"c"(name));
  47.  
  48.   return retval;
  49. };
  50.  
  51. extern inline int call_service(ioctl_t *io)
  52. {
  53.   int retval;
  54.  
  55.   asm("int $0x40"
  56.       :"=a"(retval)
  57.       :"a"(68),"b"(17),"c"(io)
  58.       :"memory");
  59.  
  60.   return retval;
  61. };
  62.  
  63. extern inline void* UserAlloc(size_t size)
  64. {
  65.   void *retval;
  66.  
  67.   asm("int $0x40"
  68.       :"=a"(retval)
  69.       :"a"(68),"b"(12),"c"(size)
  70.       :"memory");
  71.   return retval;
  72. }
  73.  
  74. extern inline void UserFree(void *mem)
  75. {
  76.      __asm__ __volatile__(
  77.      "int $0x40"
  78.      ::"a"(68),"b"(13),"c"(mem)
  79.      :"memory");
  80. }
  81.  
  82. extern inline int GetScreenSize()
  83. {
  84.      int retval;
  85.  
  86.      __asm__ __volatile__(
  87.      "int $0x40"
  88.      :"=a"(retval)
  89.      :"a"(61), "b"(1));
  90.      return retval;
  91. }
  92.  
  93. extern inline int GetScreenBpp()
  94. {
  95.      int retval;
  96.  
  97.      __asm__ __volatile__(
  98.      "int $0x40"
  99.      :"=a"(retval)
  100.      :"a"(61), "b"(2));
  101.      return retval;
  102. }
  103.  
  104. extern inline int GetScreenPitch()
  105. {
  106.      int retval;
  107.  
  108.      __asm__ __volatile__(
  109.      "int $0x40"
  110.      :"=a"(retval)
  111.      :"a"(61), "b"(3));
  112.      return retval;
  113. }
  114.  
  115. extern inline int test_mmx()
  116. {
  117.      int retval;
  118.  
  119.      __asm__ __volatile__(
  120.      "cpuid\n\t"
  121.      "testl $23, %%edx\n\t"
  122.      "setnzb %%al\n\t"
  123.      "movzx %%al, %%eax"
  124.      :"=a"(retval)
  125.      :"a"(0)
  126.      :"ebx","ecx","edx");
  127.  
  128.      return retval;
  129. }
  130.