#include <stdbool.h>
#include <stdint.h>
#include <sys/spinlock.h>
#include <sys/kmem.h>
#include <sys/thread.h>
#include "console.h"
#include "x86/vgacons.h"
#include "x86/sercons.h"
#include "x86/debugcons.h"
Go to the source code of this file.
◆ Console_Close()
int Console_Close |
( |
Handle * |
handle | ) |
|
Definition at line 193 of file console.c.
194{
195 Handle_Free(handle);
196 return 0;
197}
◆ Console_EnqueueKey()
void Console_EnqueueKey |
( |
char |
key | ) |
|
Definition at line 75 of file console.c.
76{
80 return;
81 }
85}
char keyBuf[CONSOLE_KEYBUF_MAXLEN]
#define CONSOLE_KEYBUF_MAXLEN
void Spinlock_Unlock(Spinlock *lock) __UNLOCK_EX(*lock)
void Spinlock_Lock(Spinlock *lock) __LOCK_EX(*lock)
◆ Console_Flush()
int Console_Flush |
( |
Handle * |
handle | ) |
|
◆ Console_Getc()
Definition at line 47 of file console.c.
48{
49 while (1) {
55 return key;
56 }
58
59
62 switch (key) {
63 case '\r':
64 return '\n';
65 case 0x7f:
66 return '\b';
67 default:
68 return key;
69 }
70 }
71 }
72}
◆ Console_Gets()
void Console_Gets |
( |
char * |
str, |
|
|
size_t |
n |
|
) |
| |
Definition at line 88 of file console.c.
89{
90 int i;
91
92 for (i = 0; i < (n - 1); i++)
93 {
95 if (ch == '\b') {
96 if (i > 0) {
98 i--;
99 }
100 i--;
101 continue;
102 }
103 if (ch == '\n') {
105 str[i] = '\0';
106 return;
107 }
108 if (ch == '\r') {
110 str[i] = '\0';
111 return;
112 }
113 if (ch == '\t') {
115 str[i] = '\t';
116 continue;
117 }
118 if (ch < 0x20)
119 {
120
121 continue;
122 }
124 str[i] = ch;
125 }
126
127 str[i+1] = '\0';
128}
void Console_Putc(char ch)
◆ Console_Init()
Definition at line 22 of file console.c.
23{
27
29
31
35}
void Console_Puts(const char *str)
#define SPINLOCK_TYPE_NORMAL
void Spinlock_Init(Spinlock *lock, const char *name, uint64_t type)
◆ Console_LateInit()
void Console_LateInit |
( |
| ) |
|
Definition at line 41 of file console.c.
42{
44}
void Serial_LateInit(void)
◆ Console_OpenHandle()
Handle * Console_OpenHandle |
( |
| ) |
|
Definition at line 200 of file console.c.
201{
202 Handle *handle = Handle_Alloc();
203 if (!handle)
205
210
211 return handle;
212}
int Console_Close(Handle *handle)
int Console_Write(Handle *handle, void *buf, uint64_t off, uint64_t len)
int Console_Read(Handle *handle, void *buf, uint64_t off, uint64_t len)
int Console_Flush(Handle *handle)
int(* write)(Handle *, void *, uint64_t, uint64_t)
int(* read)(Handle *, void *, uint64_t, uint64_t)
◆ Console_Putc()
void Console_Putc |
( |
char |
ch | ) |
|
Definition at line 131 of file console.c.
132{
138}
void DebugConsole_Putc(short c)
void Serial_Putc(char ch)
◆ Console_Puts()
void Console_Puts |
( |
const char * |
str | ) |
|
Definition at line 141 of file console.c.
142{
148}
void DebugConsole_Puts(const char *str)
void Serial_Puts(const char *str)
void VGA_Puts(const char *str)
◆ Console_Read()
Definition at line 151 of file console.c.
152{
155
156 for (i = 0; i <
len; i++)
157 {
161 }
162
164}
int Copy_Out(void *fromkernel, uintptr_t touser, uintptr_t len)
◆ Console_Write()
Definition at line 167 of file console.c.
168{
169 int i;
171 char kbuf[512];
173
174 while (
len > nbytes) {
176 Copy_In(b + nbytes, &kbuf, chunksz);
177 nbytes += chunksz;
178
179 for (i = 0; i < chunksz; i++)
181 }
182
183 return nbytes;
184}
int Copy_In(uintptr_t fromuser, void *tokernel, uintptr_t len)
◆ consoleLock
◆ consoles