2023-10-24 23:39:00 +03:00
|
|
|
|
/**
|
|
|
|
|
* system.h
|
|
|
|
|
* Системные вызовы
|
|
|
|
|
*
|
|
|
|
|
* Заголовочный файл содержащий заготовку для работы с системными вызовами
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef SYSTEM_H
|
|
|
|
|
#define SYSTEM_H
|
|
|
|
|
|
2023-10-15 18:44:29 +03:00
|
|
|
|
typedef unsigned char uint8_t;
|
|
|
|
|
typedef unsigned short uint16_t;
|
|
|
|
|
typedef unsigned int uint32_t;
|
|
|
|
|
typedef unsigned long long uint64_t;
|
|
|
|
|
typedef long long int64_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
int reserved;
|
|
|
|
|
} framebuffer_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
int reserved;
|
|
|
|
|
} sys_info_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char *name;
|
|
|
|
|
void *addr;
|
|
|
|
|
} module_func_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char *name;
|
|
|
|
|
char *message;
|
2023-11-07 22:34:26 +03:00
|
|
|
|
uint64_t type;
|
|
|
|
|
uint64_t data_size;
|
|
|
|
|
void *data;
|
|
|
|
|
int64_t err_code;
|
|
|
|
|
uint64_t module_id;
|
2023-10-15 18:44:29 +03:00
|
|
|
|
} module_info_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
int reserved;
|
|
|
|
|
} func_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
uint8_t a[4];
|
|
|
|
|
uint8_t b[4];
|
|
|
|
|
uint8_t c[4];
|
|
|
|
|
uint8_t d[4];
|
|
|
|
|
} uid_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
uint16_t year;
|
|
|
|
|
uint8_t month;
|
|
|
|
|
uint8_t day;
|
|
|
|
|
uint8_t second;
|
|
|
|
|
} time_t;
|
|
|
|
|
|
2023-10-24 23:39:00 +03:00
|
|
|
|
typedef struct {
|
|
|
|
|
uint64_t offset;
|
|
|
|
|
module_info_t *info;
|
2023-11-07 22:34:26 +03:00
|
|
|
|
void (*fb_printf)(char *str, ...); // Временная функция
|
|
|
|
|
framebuffer_t *(*alloc_framebuffer)( );
|
|
|
|
|
void (*free_framebuffer)(framebuffer_t *frame);
|
|
|
|
|
void (*exit)(int code);
|
|
|
|
|
void (*get_error)( );
|
|
|
|
|
sys_info_t *(*get_info)( );
|
|
|
|
|
module_info_t *(*get_module)(char *module_id);
|
|
|
|
|
uint64_t (*new_thread)(uint64_t func);
|
|
|
|
|
int (*delete_thread)(uint64_t thread_id);
|
|
|
|
|
time_t (*get_time)( );
|
2023-10-24 23:39:00 +03:00
|
|
|
|
} env_t;
|
|
|
|
|
|
2023-10-24 23:53:20 +03:00
|
|
|
|
extern module_info_t static_info;
|
2023-10-29 18:41:54 +03:00
|
|
|
|
static void (*fb_printf)(char *str, ...);
|
2023-11-07 22:34:26 +03:00
|
|
|
|
static uint64_t offset;
|
2023-10-24 23:39:00 +03:00
|
|
|
|
|
2023-10-24 23:53:20 +03:00
|
|
|
|
static inline void init_env(env_t *loader_env) {
|
2023-11-07 22:34:26 +03:00
|
|
|
|
offset = loader_env->offset;
|
|
|
|
|
loader_env->info = (module_info_t *)&static_info + offset;
|
2023-10-29 18:41:54 +03:00
|
|
|
|
fb_printf = loader_env->fb_printf;
|
2023-10-24 23:53:20 +03:00
|
|
|
|
}
|
2023-10-24 23:39:00 +03:00
|
|
|
|
|
|
|
|
|
#endif // system.h
|