aboutsummaryrefslogtreecommitdiff
path: root/pk/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'pk/file.c')
-rw-r--r--pk/file.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/pk/file.c b/pk/file.c
index e35256e..13f7d38 100644
--- a/pk/file.c
+++ b/pk/file.c
@@ -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);