Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 881 → Rev 882

/programs/develop/libraries/pixlib/system.h
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;
}