0,0 → 1,129 |
|
|
typedef struct |
{ |
unsigned handle; |
unsigned io_code; |
void *input; |
int inp_size; |
void *output; |
int out_size; |
}ioctl_t; |
|
|
#define ERR_OK 0 |
#define ERR_PARAM -1 |
#define ERR_NOMEM -2 |
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
void usleep(u32_t delay); |
|
static int __attribute__ ((always_inline)) |
abs (int i) |
{ |
return i < 0 ? -i : i; |
}; |
|
|
extern inline u32_t get_service(char *name) |
{ |
u32_t retval; |
asm("int $0x40" |
:"=a"(retval) |
:"a"(68),"b"(16),"c"(name)); |
|
return retval; |
}; |
|
extern inline u32_t load_service(char *name) |
{ |
u32_t retval; |
asm("int $0x40" |
:"=a"(retval) |
:"a"(68),"b"(21),"c"(name)); |
|
return retval; |
}; |
|
extern inline int call_service(ioctl_t *io) |
{ |
int retval; |
|
asm("int $0x40" |
:"=a"(retval) |
:"a"(68),"b"(17),"c"(io) |
:"memory"); |
|
return retval; |
}; |
|
extern inline void* UserAlloc(size_t size) |
{ |
void *retval; |
|
asm("int $0x40" |
:"=a"(retval) |
:"a"(68),"b"(12),"c"(size) |
:"memory"); |
return retval; |
} |
|
extern inline void UserFree(void *mem) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(68),"b"(13),"c"(mem) |
:"memory"); |
} |
|
extern inline int GetScreenSize() |
{ |
int retval; |
|
__asm__ __volatile__( |
"int $0x40" |
:"=a"(retval) |
:"a"(61), "b"(1)); |
return retval; |
} |
|
extern inline int GetScreenBpp() |
{ |
int retval; |
|
__asm__ __volatile__( |
"int $0x40" |
:"=a"(retval) |
:"a"(61), "b"(2)); |
return retval; |
} |
|
extern inline int GetScreenPitch() |
{ |
int retval; |
|
__asm__ __volatile__( |
"int $0x40" |
:"=a"(retval) |
:"a"(61), "b"(3)); |
return retval; |
} |
|
extern inline int test_mmx() |
{ |
int retval; |
|
__asm__ __volatile__( |
"cpuid\n\t" |
"testl $23, %%edx\n\t" |
"setnzb %%al\n\t" |
"movzx %%al, %%eax" |
:"=a"(retval) |
:"a"(0) |
:"ebx","ecx","edx"); |
|
return retval; |
} |