diff options
Diffstat (limited to 'src/cmd/sam')
-rw-r--r-- | src/cmd/sam/unix.c | 36 |
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 + |