#include "config.h" #pragma pack(push,1) typedef struct { __u32 func; __u32 l_off; __u32 h_off_flags; __u32 size; char* data; char null; char* name; } fs_info; #pragma pack(pop) char path[] = "/sys/games/2048.dat"; __u8 config_load(config_state* st) { fs_info cfg = {0}; cfg.func = 0; cfg.size = sizeof(config_state); cfg.data = (char*)st; cfg.name = path; __u32 ret = 0; __u32 rnum = 0; __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(rnum): "a"(70), "b"((__u32)(&cfg)): "memory"); return !ret || (rnum == cfg.size); } __u8 config_save(config_state* st) { fs_info cfg = {0}; cfg.func = 2; cfg.size = sizeof(config_state); cfg.data = (char*)st; cfg.name = path; __u32 ret = 0; __u32 wnum = 0; __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(wnum): "a"(70), "b"((__u32)(&cfg)): "memory"); return !ret || (wnum == cfg.size); }