kolibrios-gitea/programs/develop/libraries/pixlib/system.h

136 lines
2.2 KiB
C
Raw Normal View History

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
///////////////////////////////////////////////////////////////////////////////
#ifdef KOLIBRI_PE
#define LFB_BASE 0xDF000000
#else
#define LFB_BASE 0xFE000000
#endif
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;
}