SayoriOS  0.3.3
system.c
См. документацию.
1 
10 #include <io/status_loggers.h>
11 #include "mem/vmm.h"
12 #include "io/ports.h"
13 
14 // FIXME: These variables gets rewritten to address 0 when
15 // user types 'cd /' in shell
16 char* whoami = "root";
17 char* hostname = "oem";
18 char* syspath = "/";
24 char* getSysPath(){
25  return syspath;
26 }
27 
35 void setSysPath(char* path){
36  kfree(syspath);
37 
38  syspath = (char*)kmalloc(sizeof(char) * (strlen(path) + 1));
39 
40  memset(syspath,0,strlen(path)+1);
41  memcpy(syspath,path,strlen(path));
42 
43  // syspath[strlen(path)-1] = 0;
44 }
45 
49 void reboot() {
50  qemu_log("REBOOT");
51 
52  uint8_t good = 0x02;
53 
54  while (good & 0x02)
55  good = inb(0x64);
56  outb(0x64, 0xFE);
57 
58  __asm__ volatile("hlt");
59 }
60 
64 void shutdown(){
65  qemu_log("SHUTDOWN");
66  outw(0xB004, 0x2000);
67  outw(0x604, 0x2000);
68  outw(0x4004, 0x3400);
69 }
70 
76 char* getUserName(){
77  return whoami;
78 }
79 
87 char* setUserName(char* new_name){
88  kfree(whoami);
89 
90  size_t len = strlen(new_name) + 1;
91 
92  whoami = kcalloc(len, 1);
93 
94  memcpy(whoami, new_name, strlen(new_name));
95 
96  whoami[len] = 0;
97 
98  return whoami;
99 }
100 
106 char* getHostname(){
107  return hostname;
108 }
109 
117 char* setHostname(char* new_name){
118  if (strlen(new_name) < 2){
119  tty_error("[ОШИБКА] Имя устройства должно быть больше 2 символов");
120  return hostname;
121  }
122 
123  kfree(hostname);
124 
125  hostname = (char*)kmalloc(sizeof(char)*(strlen(new_name)+1));
126 
127  memset(hostname,0,strlen(new_name)+1);
128  memcpy(hostname, new_name, strlen(new_name));
129 
130  // hostname[strlen(new)-1] = 0;
131  return hostname;
132 }
size_t strlen(const char *str)
Возращает длину строки
Definition: string.c:88
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
Definition: string.c:203
void * memcpy(void *restrict destination, const void *restrict source, size_t n)
Копирование непересекающихся массивов используя SSE.
Definition: string.c:173
char * setUserName(char *new_name)
Устанавливает имя пользователя
Definition: system.c:87
char * setHostname(char *new_name)
Устанавливает имя устройства
Definition: system.c:117
void shutdown()
Выключение устройства
Definition: system.c:64
char * whoami
Имя пользователя
Definition: system.c:16
void setSysPath(char *path)
Установить текущий путь
Definition: system.c:35
char * syspath
Путь по умолчанию
Definition: system.c:18
char * getUserName()
Возращает имя пользователя
Definition: system.c:76
void reboot()
Перезагрузка устройства
Definition: system.c:49
char * getHostname()
Возращает имя устройства
Definition: system.c:106
char * getSysPath()
Получить текущий путь
Definition: system.c:24
char * hostname
Имя устройства
Definition: system.c:17