aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/sam
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/sam')
-rw-r--r--src/cmd/sam/unix.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/cmd/sam/unix.c b/src/cmd/sam/unix.c
index cc15db44..205af4cd 100644
--- a/src/cmd/sam/unix.c
+++ b/src/cmd/sam/unix.c
@@ -270,3 +270,39 @@ int create(char *name, int omode, int perm)
return fd;
}
+
+/* SHOULD BE ELSEWHERE */
+#ifdef __APPLE__
+#include <lib9.h>
+
+Lock plk;
+
+ulong
+pread(int fd, void *buf, ulong n, ulong off)
+{
+ ulong rv;
+
+ lock(&plk);
+ if (lseek(fd, off, 0) != off)
+ return -1;
+ rv = read(fd, buf, n);
+ unlock(&plk);
+
+ return rv;
+}
+
+ulong
+pwrite(int fd, void *buf, ulong n, ulong off)
+{
+ ulong rv;
+
+ lock(&plk);
+ if (lseek(fd, off, 0) != off)
+ return -1;
+ rv = write(fd, buf, n);
+ unlock(&plk);
+
+ return rv;
+}
+#endif
+