Subversion Repositories Kolibri OS

Rev

Rev 5238 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "config.h"
  2.  
  3. #pragma pack(push,1)
  4.  
  5. typedef struct {
  6.     __u32 func;
  7.     __u32 l_off;
  8.     __u32 h_off_flags;
  9.     __u32 size;
  10.     char* data;
  11.     char  null;
  12.     char* name;
  13. } fs_info;
  14.  
  15. #pragma pack(pop)
  16.  
  17. char path[] = "/sys/games/2048.dat";
  18.  
  19. __u8 config_load(config_state* st)
  20. {
  21.     fs_info cfg = {0};
  22.     cfg.func = 0;
  23.     cfg.size = sizeof(config_state);
  24.     cfg.data = (char*)st;
  25.     cfg.name = path;
  26.  
  27.     __u32 ret = 0;
  28.     __u32 rnum = 0;
  29.  
  30.     __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(rnum):
  31.                          "a"(70),
  32.                          "b"((__u32)(&cfg)):
  33.                          "memory");
  34.  
  35.     return !ret || (rnum == cfg.size);
  36. }
  37.  
  38. __u8 config_save(config_state* st)
  39. {
  40.     fs_info cfg = {0};
  41.     cfg.func = 2;
  42.     cfg.size = sizeof(config_state);
  43.     cfg.data = (char*)st;
  44.     cfg.name = path;
  45.  
  46.     __u32 ret = 0;
  47.     __u32 wnum = 0;
  48.  
  49.     __asm__ __volatile__("int $0x40":"=a"(ret),"=b"(wnum):
  50.                          "a"(70),
  51.                          "b"((__u32)(&cfg)):
  52.                          "memory");
  53.  
  54.     return !ret || (wnum == cfg.size);
  55. }
  56.