aboutsummaryrefslogtreecommitdiff
path: root/pk/file.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2010-12-29 18:38:28 -0800
committerAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2010-12-29 18:38:28 -0800
commit5490b1d62710f5cf485e3ccf711bc462b9a52623 (patch)
treecc24f8b929fdba9a2550d43bfa00c41c8e54b69e /pk/file.c
parent37ed1d3297fcb84c67040a9bcebbfc2274f62735 (diff)
downloadpk-5490b1d62710f5cf485e3ccf711bc462b9a52623.zip
pk-5490b1d62710f5cf485e3ccf711bc462b9a52623.tar.gz
pk-5490b1d62710f5cf485e3ccf711bc462b9a52623.tar.bz2
[pk] send stdout/stderr to both fesvr and debug console
Diffstat (limited to 'pk/file.c')
-rw-r--r--pk/file.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/pk/file.c b/pk/file.c
index febd9f7..e35256e 100644
--- a/pk/file.c
+++ b/pk/file.c
@@ -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);
}