Modify user print

This commit is contained in:
songyanguang 2025-01-17 17:17:01 +08:00
parent eb5f73251c
commit 675da41f02
3 changed files with 9 additions and 5 deletions

View File

@ -49,6 +49,7 @@ int main(void)
shell.read = userShellRead; shell.read = userShellRead;
shellInit(&shell, shellBuffer, 512); shellInit(&shell, shellBuffer, 512);
printf("shell init\n");
while (connect_session(&session_fs, "MemFS", 0x10000) < 0) while (connect_session(&session_fs, "MemFS", 0x10000) < 0)
; ;

View File

@ -216,19 +216,19 @@ static inline int serial_in_shift(void* addr, int shift)
bool init_uart_mmio() bool init_uart_mmio()
{ {
static int mapped = 0; static int mapped = 0xff;
if (mapped == 0) { if (mapped != 0) {
if (-1 == mmap(UART_ADDR, UART_ADDR, 4096, true)) { if (-1 == mmap(UART_ADDR, UART_ADDR, 4096, true)) {
return false; return false;
} }
mapped = 1; mapped = 0;
} }
return true; return true;
} }
void putc(char ch) void putc(char ch)
{ {
static struct NS16550* com_port = (struct NS16550*)UART_ADDR; struct NS16550* com_port = (struct NS16550*)UART_ADDR;
if (ch == '\n') { if (ch == '\n') {
putc('\r'); putc('\r');
@ -241,7 +241,7 @@ void putc(char ch)
char getc(void) char getc(void)
{ {
static struct NS16550* com_port = (struct NS16550*)UART_ADDR; struct NS16550* com_port = (struct NS16550*)UART_ADDR;
while (!(serial_din(&com_port->lsr) & UART_LSR_DR)) while (!(serial_din(&com_port->lsr) & UART_LSR_DR))
; ;

View File

@ -203,6 +203,7 @@ void shellInit(Shell* shell, char* buffer, unsigned short size)
shellAdd(shell); shellAdd(shell);
shellSetUser(shell, shellSeekCommand(shell, SHELL_DEFAULT_USER, shell->commandList.base, 0)); shellSetUser(shell, shellSeekCommand(shell, SHELL_DEFAULT_USER, shell->commandList.base, 0));
shellWritePrompt(shell, 1); shellWritePrompt(shell, 1);
} }
@ -322,9 +323,11 @@ static void shellWritePrompt(Shell* shell, unsigned char newline)
if (newline) { if (newline) {
shellWriteString(shell, "\r\n"); shellWriteString(shell, "\r\n");
} }
#ifndef __riscv
shellWriteString(shell, shell->info.user->data.user.name); shellWriteString(shell, shell->info.user->data.user.name);
shellWriteString(shell, ":"); shellWriteString(shell, ":");
shellWriteString(shell, shell->info.path ? shell->info.path : "/"); shellWriteString(shell, shell->info.path ? shell->info.path : "/");
#endif
shellWriteString(shell, "$ "); shellWriteString(shell, "$ ");
} else { } else {
shellWriteString(shell, shellText[SHELL_TEXT_PASSWORD_HINT]); shellWriteString(shell, shellText[SHELL_TEXT_PASSWORD_HINT]);