New thread library
This commit is contained in:
parent
7788fd5409
commit
1544f90960
70 changed files with 1041 additions and 4684 deletions
178
src/libthread/iorw.c
Normal file
178
src/libthread/iorw.c
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
#include <u.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <libc.h>
|
||||
#include <fcall.h>
|
||||
#include <thread.h>
|
||||
#include "ioproc.h"
|
||||
|
||||
static long
|
||||
_ioclose(va_list *arg)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
return close(fd);
|
||||
}
|
||||
int
|
||||
ioclose(Ioproc *io, int fd)
|
||||
{
|
||||
return iocall(io, _ioclose, fd);
|
||||
}
|
||||
|
||||
static long
|
||||
_iodial(va_list *arg)
|
||||
{
|
||||
char *addr, *local, *dir;
|
||||
int *cdfp, fd;
|
||||
|
||||
addr = va_arg(*arg, char*);
|
||||
local = va_arg(*arg, char*);
|
||||
dir = va_arg(*arg, char*);
|
||||
cdfp = va_arg(*arg, int*);
|
||||
|
||||
fd = dial(addr, local, dir, cdfp);
|
||||
return fd;
|
||||
}
|
||||
int
|
||||
iodial(Ioproc *io, char *addr, char *local, char *dir, int *cdfp)
|
||||
{
|
||||
return iocall(io, _iodial, addr, local, dir, cdfp);
|
||||
}
|
||||
|
||||
static long
|
||||
_ioopen(va_list *arg)
|
||||
{
|
||||
char *path;
|
||||
int mode;
|
||||
|
||||
path = va_arg(*arg, char*);
|
||||
mode = va_arg(*arg, int);
|
||||
return open(path, mode);
|
||||
}
|
||||
int
|
||||
ioopen(Ioproc *io, char *path, int mode)
|
||||
{
|
||||
return iocall(io, _ioopen, path, mode);
|
||||
}
|
||||
|
||||
static long
|
||||
_ioread(va_list *arg)
|
||||
{
|
||||
int fd;
|
||||
void *a;
|
||||
long n;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
a = va_arg(*arg, void*);
|
||||
n = va_arg(*arg, long);
|
||||
return read(fd, a, n);
|
||||
}
|
||||
long
|
||||
ioread(Ioproc *io, int fd, void *a, long n)
|
||||
{
|
||||
return iocall(io, _ioread, fd, a, n);
|
||||
}
|
||||
|
||||
static long
|
||||
_ioreadn(va_list *arg)
|
||||
{
|
||||
int fd;
|
||||
void *a;
|
||||
long n;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
a = va_arg(*arg, void*);
|
||||
n = va_arg(*arg, long);
|
||||
n = readn(fd, a, n);
|
||||
return n;
|
||||
}
|
||||
long
|
||||
ioreadn(Ioproc *io, int fd, void *a, long n)
|
||||
{
|
||||
return iocall(io, _ioreadn, fd, a, n);
|
||||
}
|
||||
|
||||
static long
|
||||
_iosleep(va_list *arg)
|
||||
{
|
||||
long n;
|
||||
|
||||
n = va_arg(*arg, long);
|
||||
return sleep(n);
|
||||
}
|
||||
int
|
||||
iosleep(Ioproc *io, long n)
|
||||
{
|
||||
return iocall(io, _iosleep, n);
|
||||
}
|
||||
|
||||
static long
|
||||
_iowrite(va_list *arg)
|
||||
{
|
||||
int fd;
|
||||
void *a;
|
||||
long n, nn;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
a = va_arg(*arg, void*);
|
||||
n = va_arg(*arg, long);
|
||||
nn = write(fd, a, n);
|
||||
return nn;
|
||||
}
|
||||
long
|
||||
iowrite(Ioproc *io, int fd, void *a, long n)
|
||||
{
|
||||
return iocall(io, _iowrite, fd, a, n);
|
||||
}
|
||||
|
||||
static long
|
||||
_iosendfd(va_list *arg)
|
||||
{
|
||||
int n, fd, fd2;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
fd2 = va_arg(*arg, int);
|
||||
n = sendfd(fd, fd2);
|
||||
return n;
|
||||
}
|
||||
int
|
||||
iosendfd(Ioproc *io, int fd, int fd2)
|
||||
{
|
||||
return iocall(io, _iosendfd, fd, fd2);
|
||||
}
|
||||
|
||||
static long
|
||||
_iorecvfd(va_list *arg)
|
||||
{
|
||||
int n, fd;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
n = recvfd(fd);
|
||||
return n;
|
||||
}
|
||||
int
|
||||
iorecvfd(Ioproc *io, int fd)
|
||||
{
|
||||
return iocall(io, _iorecvfd, fd);
|
||||
}
|
||||
|
||||
static long
|
||||
_ioread9pmsg(va_list *arg)
|
||||
{
|
||||
int fd;
|
||||
void *a;
|
||||
int n;
|
||||
int r;
|
||||
|
||||
fd = va_arg(*arg, int);
|
||||
a = va_arg(*arg, void*);
|
||||
n = va_arg(*arg, int);
|
||||
r = read9pmsg(fd, a, n);
|
||||
return n;
|
||||
}
|
||||
int
|
||||
ioread9pmsg(Ioproc *io, int fd, void *a, int n)
|
||||
{
|
||||
return iocall(io, _ioread9pmsg, fd, a, n);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue