mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2025-08-03 19:56:31 -04:00
programs/shell: Show new fields of the sf18.13 struct
Kfetch command now reports - kernel ABI, - git hash (aka commit id), - release offset, - debug tag. No svn revision anymore.
This commit is contained in:
parent
63cd6f0ac8
commit
32466e31f4
@ -1,3 +1,4 @@
|
||||
#include "../system/kolibri.h"
|
||||
|
||||
void get_str_meminfo(char *str) {
|
||||
unsigned mem_all_mib = kol_system_mem() / 1024;
|
||||
@ -6,16 +7,28 @@ void get_str_meminfo(char *str) {
|
||||
}
|
||||
|
||||
int cmd_kfetch(char param[]) {
|
||||
char *str_krnl_ver = malloc(64);
|
||||
get_str_kernel_version(str_krnl_ver, "%d.%d.%d.%d. SVN-rev.: %d");
|
||||
char *str_uptime = malloc(64);
|
||||
struct kernel_version kv;
|
||||
int eol;
|
||||
kol_get_kernel_ver(&kv);
|
||||
char str_os_rel_offset_dbgtag[24];
|
||||
eol = sprintf(str_os_rel_offset_dbgtag, "%d.%d.%d.%d", kv.osrel[0],
|
||||
kv.osrel[1], kv.osrel[2], kv.osrel[3]);
|
||||
if (kv.offset)
|
||||
eol += sprintf(str_os_rel_offset_dbgtag + eol, "+%u", kv.offset);
|
||||
if (kv.dbgtag)
|
||||
sprintf(str_os_rel_offset_dbgtag + eol, "-%c", kv.dbgtag);
|
||||
char str_krn_abi_cmtid[32];
|
||||
eol = sprintf(str_krn_abi_cmtid, "ABI %u.%u", kv.abimaj, kv.abimin);
|
||||
if (kv.cmtid)
|
||||
sprintf(str_krn_abi_cmtid + eol, ", git %08x", kv.cmtid);
|
||||
char str_uptime[64];
|
||||
get_str_uptime(str_uptime, "%d day(s), %d:%d:%d.%d");
|
||||
char *str_resolution = malloc(24);
|
||||
char str_resolution[24];
|
||||
ksys_pos_t resol = _ksys_screen_size();
|
||||
sprintf(str_resolution, "%u x %u", resol.x + 1, resol.y + 1);
|
||||
char *str_cpu_info = malloc(16);
|
||||
char str_cpu_info[16];
|
||||
get_str_cpu_info(str_cpu_info);
|
||||
char *str_meminfo = malloc(24);
|
||||
char str_meminfo[24];
|
||||
get_str_meminfo(str_meminfo);
|
||||
|
||||
printf(
|
||||
@ -25,7 +38,7 @@ int cmd_kfetch(char param[]) {
|
||||
"\033[0;5;34;40m8\033[0;1;30;45m8\033[0;5;35;44m:\033[0;5;37;44m8\033[0;37;46m@\033[0;5;36;40m8\033[0;32;40m;;\033[0;30;44m8\033[0;1;34;45m8\033[0;5;1;35;44m8\033[0;5;37;46m8\033[0;1;36;46m%%\033[0;1;30;40m8\033[0;31;40m \033[0;34;40m \033[0;32;40m.\033[0;34;40m.\033[0;31;40mt\033[0;34;46m8\033[0;5;37;46m@\033[0;5;37;47m.\033[0;5;37;46m%%\033[0;5;36;46m @\033[0;5;36;40m8\033[0;34;40mt \033[0;32;40m \033[0;34;40m \033[0m\n\r"
|
||||
"\033[0;32;40m \033[0;1;30;44mX\033[0;37;45m8\033[0;5;35;44m.\033[0;5;35;45m;\033[0;5;35;44m \033[0;5;37;44m8\033[0;36;47m@\033[0;1;30;46m88\033[0;1;30;45m8\033[0;5;35;44m \033[0;5;37;45m8\033[0;1;34;47m8\033[0;1;30;46m@\033[0;5;36;40m8\033[0;34;40m:\033[0;32;40m \033[0;31;40m \033[0;1;30;44m8\033[0;5;36;46mt.\033[0;5;37;46mX8\033[0;1;30;46mS8\033[0;5;37;46m@\033[0;1;37;47mt\033[0;1;34;45m8\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;35;44m8\033[0;1;30;45m@\033[0;35;44m8\033[0;5;35;40m8\033[0;1;30;44m8\033[0;5;35;40m8\033[0;34;40m@\033[0m\n\r"
|
||||
"\033[0;31;40m :\033[0;5;34;40m8\033[0;1;30;45m8\033[0;1;34;47m8\033[0;1;35;45m:\033[0;5;1;34;45m8\033[0;5;37;44m8\033[0;5;1;35;44m8\033[0;1;36;47mX\033[0;1;34;47m@\033[0;37;46m8\033[0;5;36;44m.\033[0;5;35;45m.\033[0;5;36;46m%%\033[0;5;37;46mX\033[0;1;30;46m8%%\033[0;5;34;40m8\033[0;1;36;46m%%\033[0;5;36;46m \033[0;36;47m8\033[0;1;33;43mt\033[0;5;33;43m \033[0;1;33;47m8\033[0;5;33;43m \033[0;1;33;43m;\033[0;33;41m8\033[0;5;30;40m8\033[0;34;40m@S;\033[0;32;40m.\033[0;34;40m.\033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r"
|
||||
"\033[0;31;40m \033[0;34;40m .;\033[0;35;44m%%\033[0;35;47m8\033[0;5;35;44m \033[0;5;1;35;44m8\033[0;1;35;47m8\033[0;5;1;34;45m8\033[0;5;37;45m8\033[0;5;1;34;45m8\033[0;1;37;47m.\033[0;1;34;46m8\033[0;1;34;45m88\033[0;5;36;46m@;\033[0;1;36;46m.S\033[0;5;36;46m:8\033[0;5;37;43mX\033[0;5;33;41m \033[0;5;33;43m \033[0;5;1;33;41m8\033[0;1;30;43m8\033[0;31;40m;\033[0;34;40m.\033[0;32;40m::.\033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m %s\n\r"
|
||||
"\033[0;31;40m \033[0;34;40m .;\033[0;35;44m%%\033[0;35;47m8\033[0;5;35;44m \033[0;5;1;35;44m8\033[0;1;35;47m8\033[0;5;1;34;45m8\033[0;5;37;45m8\033[0;5;1;34;45m8\033[0;1;37;47m.\033[0;1;34;46m8\033[0;1;34;45m88\033[0;5;36;46m@;\033[0;1;36;46m.S\033[0;5;36;46m:8\033[0;5;37;43mX\033[0;5;33;41m \033[0;5;33;43m \033[0;5;1;33;41m8\033[0;1;30;43m8\033[0;31;40m;\033[0;34;40m.\033[0;32;40m::.\033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m %s%s\n\r"
|
||||
"\033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m%%\033[0;5;35;40m8\033[0;1;30;45m8\033[0;5;1;35;44m8\033[0;35;47m8\033[0;5;35;44m;\033[0;1;34;45m8\033[0;5;35;44m;\033[0;5;1;34;45m8\033[0;5;37;44m8\033[0;1;35;47m@\033[0;1;34;47m@\033[0;1;36;46mS\033[0;1;36;47m@\033[0;5;37;46mX\033[0;5;36;46m88\033[0;1;30;43m8\033[0;5;1;31;43m8\033[0;5;33;41m \033[0;5;31;41mS\033[0;1;30;41m@\033[0;31;40m;\033[0;34;40m. \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m %s%s\n\r"
|
||||
"\033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m ;\033[0;32;40m%%\033[0;34;40m8\033[0;1;30;44m@\033[0;1;30;45m8\033[0;1;34;45m8\033[0;37;45m@\033[0;1;30;45m8\033[0;1;34;45m88\033[0;5;35;44mX\033[0;1;30;46m8\033[0;36;47m8\033[0;5;36;46mX\033[0;5;37;42m8\033[0;37;46mS\033[0;1;32;47m8\033[0;37;43mS\033[0;1;32;46m8\033[0;5;33;40mS\033[0;32;40m:\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r"
|
||||
"\033[0;32;40m \033[0;34;40m :\033[0;32;40m;\033[0;34;40m:S\033[0;5;34;40m@\033[0;1;30;45m8\033[0;5;34;44m.\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;1;34;46m8\033[0;5;36;46m8\033[0;5;33;43m \033[0;5;37;42m8\033[0;5;37;46m8\033[0;1;33;47mX\033[0;5;36;42m;\033[0;1;36;46m%%\033[0;32;40m@.\033[0;34;40m. \033[0;32;40m \033[0;34;40m \033[0m %s%s\n\r"
|
||||
@ -41,13 +54,8 @@ int cmd_kfetch(char param[]) {
|
||||
"\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;31;40m.\033[0;32;40m;\033[0;34;40m;8\033[0;32;40m%%\033[0;5;34;40m8\033[0;34;40m8\033[0;1;30;44m8\033[0;1;30;40m8\033[0;34;40m;.\033[0;31;40m \033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r"
|
||||
"\033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;32;40m.\033[0;31;40m.\033[0;32;40m.\033[0;31;40m.\033[0;32;40m.\033[0;31;40m:. \033[0;32;40m. \033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r",
|
||||
|
||||
"\033[0;36mOS\033[0m: KolibriOS", "\033[0;36mKernel\033[0m: ", str_krnl_ver, "\033[0;36mUptime\033[0m: ", str_uptime, "\033[0;36mResolution\033[0m: ", str_resolution, "\033[0;36mCPU\033[0m: ", str_cpu_info, "\033[0;36mMemory\033[0m: ", str_meminfo
|
||||
"\033[0;36mOS\033[0m: KolibriOS ", str_os_rel_offset_dbgtag, "\033[0;36mKernel\033[0m: ", str_krn_abi_cmtid, "\033[0;36mUptime\033[0m: ", str_uptime, "\033[0;36mResolution\033[0m: ", str_resolution, "\033[0;36mCPU\033[0m: ", str_cpu_info, "\033[0;36mMemory\033[0m: ", str_meminfo
|
||||
);
|
||||
|
||||
free(str_krnl_ver);
|
||||
free(str_uptime);
|
||||
free(str_resolution);
|
||||
free(str_cpu_info);
|
||||
free(str_meminfo);
|
||||
return TRUE;
|
||||
}
|
@ -1,20 +1,21 @@
|
||||
#include "../system/kolibri.h"
|
||||
|
||||
void get_str_kernel_version(char *str, const char *fmt) {
|
||||
char *kvbuf;
|
||||
char *vA, *vB, *vC, *vD;
|
||||
unsigned *Rev;
|
||||
struct kernel_version kv;
|
||||
|
||||
kvbuf = malloc(16);
|
||||
kol_get_kernel_ver(kvbuf);
|
||||
vA = kvbuf+0;
|
||||
vB = kvbuf+1;
|
||||
vC = kvbuf+2;
|
||||
vD = kvbuf+3;
|
||||
Rev = (unsigned*)(kvbuf + 5);
|
||||
kol_get_kernel_ver(&kv);
|
||||
char str_offset[8] = {'\0'};
|
||||
if (kv.offset)
|
||||
sprintf(str_offset, "+%u", kv.offset);
|
||||
char str_dbgtag[4] = {'\0'};
|
||||
if (kv.dbgtag)
|
||||
sprintf(str_dbgtag, "-%c", kv.dbgtag);
|
||||
char str_cmtid[16] = {'\0'};
|
||||
if (kv.cmtid)
|
||||
sprintf(str_cmtid, " (%08x)", kv.cmtid);
|
||||
|
||||
sprintf (str, fmt, *vA, *vB, *vC, *vD, *Rev);
|
||||
|
||||
free(kvbuf);
|
||||
sprintf(str, fmt, kv.osrel[0], kv.osrel[1], kv.osrel[2], kv.osrel[3],
|
||||
str_offset, str_dbgtag, str_cmtid, kv.abimaj, kv.abimin);
|
||||
}
|
||||
|
||||
void get_str_cpu_info(char *str) {
|
||||
|
@ -59,7 +59,7 @@ const command_t COMMANDS[]=
|
||||
#define CMD_SLEEP_USAGE " sleep <time in the 1/100 of second>\n\r"
|
||||
#define CMD_TOUCH_USAGE " touch <filename>\n\r"
|
||||
#define CMD_UPTIME_FMT " Uptime: %d day(s), %d:%d:%d.%d\n\r"
|
||||
#define CMD_VER_FMT1 " KolibriOS v%d.%d.%d.%d. Kernel SVN-rev.: %d\n\r"
|
||||
#define CMD_VER_FMT1 " KolibriOS v%u.%u.%u.%u%s%s%s, kernel ABI %u.%u\n\r"
|
||||
#define CMD_WAITFOR_FMT " Awaing finish PID %d\n\r"
|
||||
#define EXEC_STARTED_FMT " '%s' started. PID = %d\n\r"
|
||||
#define EXEC_SCRIPT_ERROR_FMT "Error in '%s' : script must start with #SHS line\n\r"
|
||||
|
@ -59,7 +59,7 @@ const command_t COMMANDS[]=
|
||||
#define CMD_SLEEP_USAGE " sleep <¨â¥à¢ « ¢ á®âëå ¤®«ïx ᥪã¤ë>\n\r"
|
||||
#define CMD_TOUCH_USAGE " touch <¨¬ï ä ©« >\n\r"
|
||||
#define CMD_UPTIME_FMT " Uptime: %d ¤¥©, %d:%d:%d.%d\n\r"
|
||||
#define CMD_VER_FMT1 " KolibriOS v%d.%d.%d.%d. SVN-ॢ. ï¤à : %d\n\r"
|
||||
#define CMD_VER_FMT1 " KolibriOS v%u.%u.%u.%u%s%s%s, ABI ï¤à : %u.%u\n\r"
|
||||
#define CMD_WAITFOR_FMT " ަ¨¤ ¥¬ § ¢¥à襨ï PID %d\n\r"
|
||||
#define EXEC_STARTED_FMT " '%s' § ¯ãé¥. PID = %d\n\r"
|
||||
#define EXEC_SCRIPT_ERROR_FMT "Žè¨¡ª ¢ '%s' : áªà¨¯â ¤®«¦¥ ç¨ âìáï á® áâà®çª¨ #SHS\n\r"
|
||||
|
@ -405,9 +405,9 @@ int kol_kill_process(unsigned process)
|
||||
asm volatile ("int $0x40"::"a"(18), "b"(2), "c"(process));
|
||||
}
|
||||
|
||||
void kol_get_kernel_ver(char buff16b[])
|
||||
void kol_get_kernel_ver(struct kernel_version *kv)
|
||||
{
|
||||
asm volatile ("int $0x40"::"a"(18), "b"(13), "c"(buff16b));
|
||||
asm volatile ("int $0x40"::"a"(18), "b"(13), "c"(kv):"memory");
|
||||
}
|
||||
|
||||
int kol_buffer_open(char name[], int mode, int size, char **buf)
|
||||
|
@ -1,3 +1,7 @@
|
||||
#ifndef KOLIBRI_H_INCLUDED
|
||||
#define KOLIBRI_H_INCLUDED
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define NULL ((void*)0)
|
||||
|
||||
@ -54,6 +58,15 @@ void *data;
|
||||
} kol_struct_import;
|
||||
#pragma pack(pop)
|
||||
|
||||
struct kernel_version {
|
||||
unsigned char osrel[4];
|
||||
char dbgtag;
|
||||
uint8_t abimin;
|
||||
uint16_t abimaj;
|
||||
uint32_t cmtid;
|
||||
uint16_t reserved;
|
||||
uint16_t offset;
|
||||
};
|
||||
|
||||
void kol_exit();
|
||||
void kol_sleep(unsigned d);
|
||||
@ -108,7 +121,7 @@ unsigned kol_time_tick();
|
||||
unsigned kol_sound_speaker(char data[]);
|
||||
unsigned kol_process_info(unsigned slot, char buf1k[]);
|
||||
int kol_process_kill_pid(unsigned process);
|
||||
void kol_get_kernel_ver(char buff16b[]);
|
||||
void kol_get_kernel_ver(struct kernel_version *kv);
|
||||
int kol_kill_process(unsigned process);
|
||||
int kol_buffer_open(char name[], int mode, int size, char **buf);
|
||||
void kol_buffer_close(char name[]);
|
||||
@ -118,3 +131,4 @@ void kol_buffer_close(char name[]);
|
||||
void set_cwd(const char* cwd);
|
||||
int getcwd(char *buf, unsigned size);
|
||||
|
||||
#endif // KOLIBRI_H_INCLUDED
|
||||
|
Loading…
x
Reference in New Issue
Block a user