diff options
author | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2011-04-08 01:57:38 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2011-04-08 02:11:57 -0700 |
commit | 666ae0c9e5355e578c2487b81f48b4b74cc16dda (patch) | |
tree | c8e5ddbb6cd1dfe2c4fe0e5995c57efaf65d4299 /pk/file.c | |
parent | c6fef75003abf36c618b9fff4f64f3bda76af804 (diff) | |
download | riscv-pk-666ae0c9e5355e578c2487b81f48b4b74cc16dda.zip riscv-pk-666ae0c9e5355e578c2487b81f48b4b74cc16dda.tar.gz riscv-pk-666ae0c9e5355e578c2487b81f48b4b74cc16dda.tar.bz2 |
[pk,fesvr] pk now loads elfs itself
this allows it to detect 32b binaries
Diffstat (limited to 'pk/file.c')
-rw-r--r-- | pk/file.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -16,7 +16,7 @@ static void file_incref(file_t* f) atomic_add(&f->refcnt,1); } -static void file_decref(file_t* f) +void file_decref(file_t* f) { if(atomic_add(&f->refcnt,-1) == 2) { @@ -118,6 +118,11 @@ 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_pread(file_t* f, char* buf, size_t size, off_t offset) +{ + return frontend_syscall(SYS_pread,f->kfd,(long)buf,size,offset); +} + sysret_t file_write(file_t* f, const char* buf, size_t size) { if(f->kfd == 1 || f->kfd == 2) @@ -129,6 +134,11 @@ sysret_t file_write(file_t* f, const char* buf, size_t size) return frontend_syscall(SYS_write,f->kfd,(long)buf,size,0); } +sysret_t file_pwrite(file_t* f, const char* buf, size_t size, off_t offset) +{ + return frontend_syscall(SYS_pwrite,f->kfd,(long)buf,size,offset); +} + sysret_t file_stat(file_t* f, struct stat* s) { return frontend_syscall(SYS_fstat,f->kfd,(long)s,0,0); |