diff options
author | Andrew Waterman <waterman@s141.Millennium.Berkeley.EDU> | 2010-12-29 18:38:28 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@s141.Millennium.Berkeley.EDU> | 2010-12-29 18:38:28 -0800 |
commit | 5490b1d62710f5cf485e3ccf711bc462b9a52623 (patch) | |
tree | cc24f8b929fdba9a2550d43bfa00c41c8e54b69e | |
parent | 37ed1d3297fcb84c67040a9bcebbfc2274f62735 (diff) | |
download | pk-5490b1d62710f5cf485e3ccf711bc462b9a52623.zip pk-5490b1d62710f5cf485e3ccf711bc462b9a52623.tar.gz pk-5490b1d62710f5cf485e3ccf711bc462b9a52623.tar.bz2 |
[pk] send stdout/stderr to both fesvr and debug console
-rw-r--r-- | pk/file.c | 11 | ||||
-rw-r--r-- | pk/file.h | 6 | ||||
-rw-r--r-- | pk/pcr.h | 1 | ||||
-rw-r--r-- | pk/pk.c | 2 |
4 files changed, 13 insertions, 7 deletions
@@ -3,6 +3,7 @@ #include "file.h" #include "pk.h" #include "frontend.h" +#include "pcr.h" #define MAX_FDS 128 file_t* fds[MAX_FDS]; @@ -112,13 +113,19 @@ int fd_close(int fd) return 0; } -sysret_t file_read(file_t* f, void* buf, size_t size) +sysret_t file_read(file_t* f, char* buf, size_t size) { return frontend_syscall(SYS_read,f->kfd,(long)buf,size,0); } -sysret_t file_write(file_t* f, const void* buf, size_t size) +sysret_t file_write(file_t* f, const char* buf, size_t size) { + if(f->kfd == 1 || f->kfd == 2) + { + for(size_t i = 0; i < size; i++) + mtpcr(buf[i],PCR_CONSOLE); + } + return frontend_syscall(SYS_write,f->kfd,(long)buf,size,0); } @@ -17,14 +17,12 @@ file_t* file_get(int fd); sysret_t file_open(const char* fn, size_t len, int flags, int mode); int file_dup(file_t*); -sysret_t file_write(file_t* f, const void* buf, size_t n); -sysret_t file_read(file_t* f, void* buf, size_t n); +sysret_t file_write(file_t* f, const char* buf, size_t n); +sysret_t file_read(file_t* f, char* buf, size_t n); sysret_t file_stat(file_t* f, struct stat* s); sysret_t file_lseek(file_t* f, size_t ptr, int dir); int fd_close(int fd); void file_init(); -#define cons_write(buf,sz) file_write(stdout,buf,sz) - #endif @@ -20,6 +20,7 @@ #define PCR_CAUSE 6 #define PCR_TOHOST 16 #define PCR_FROMHOST 17 +#define PCR_CONSOLE 18 #define PCR_K0 24 #define PCR_K1 25 @@ -87,7 +87,7 @@ void printk(const char* s, ...) char out[1024]; // XXX vsprintk(out,s,vl); - cons_write(out,strlen(out)); + file_write(stderr,out,strlen(out)); va_end(vl); } |