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 }
strlen
size_t strlen(const char *str)
Возращает длину строки
Definition: string.c:88
memset
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
Definition: string.c:203
memcpy
void * memcpy(void *restrict destination, const void *restrict source, size_t n)
Копирование непересекающихся массивов используя SSE.
Definition: string.c:173
setUserName
char * setUserName(char *new_name)
Устанавливает имя пользователя
Definition: system.c:87
setHostname
char * setHostname(char *new_name)
Устанавливает имя устройства
Definition: system.c:117
shutdown
void shutdown()
Выключение устройства
Definition: system.c:64
whoami
char * whoami
Имя пользователя
Definition: system.c:16
setSysPath
void setSysPath(char *path)
Установить текущий путь
Definition: system.c:35
syspath
char * syspath
Путь по умолчанию
Definition: system.c:18
getUserName
char * getUserName()
Возращает имя пользователя
Definition: system.c:76
reboot
void reboot()
Перезагрузка устройства
Definition: system.c:49
getHostname
char * getHostname()
Возращает имя устройства
Definition: system.c:106
getSysPath
char * getSysPath()
Получить текущий путь
Definition: system.c:24
hostname
char * hostname
Имя устройства
Definition: system.c:17