#include <unistd.h>
#include <errno.h>
#include <assert.h>
-#include <syscall.h>
+#include <sys/syscall.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <sys/syscall.h>
#include <sys/socket.h>
+#ifdef __linux__
#include <linux/net.h>
+#endif
#include <sys/uio.h>
#include <sys/queue.h>
-#include "xtio.h"
#include "sysio.h"
+#include "xtio.h"
+#include "native.h"
#include "fs.h"
#include "inode.h"
#include "file.h"
(void (*)(struct filesys *))sockets_illop
};
-static struct filesys *sockets_fs;
+static struct filesys *sockets_fs = NULL;
static struct inode_ops sockets_i_ops;
_sysio_sockets_init()
{
+ assert(!sockets_fs);
+
sockets_i_ops = _sysio_nodev_ops;
sockets_i_ops.inop_close = sockets_inop_close;
sockets_i_ops.inop_read = sockets_inop_read;
if (ski->ski_fd < 0)
return -EBADF;
- err = syscall(SYS_close, ski->ski_fd);
+ err = syscall(SYSIO_SYS_close, ski->ski_fd);
if (err)
return -errno;
ski->ski_fd = -1;
_readv(int fd, const struct iovec *vector, int count)
{
- return syscall(SYS_readv, fd, vector, count);
+ return syscall(SYSIO_SYS_readv, fd, vector, count);
}
static int
_writev(int fd, const struct iovec *vector, int count)
{
- return syscall(SYS_writev, fd, vector, count);
+ return syscall(SYSIO_SYS_writev, fd, vector, count);
}
static int
case F_GETFD:
case F_GETFL:
case F_GETOWN:
- *rtn = syscall(SYS_fcntl, I2SKI(ino)->ski_fd, cmd);
+ *rtn = syscall(SYSIO_SYS_fcntl, I2SKI(ino)->ski_fd, cmd);
break;
case F_DUPFD:
case F_SETFD:
case F_SETLKW:
case F_SETOWN:
arg = va_arg(ap, long);
- *rtn = syscall(SYS_fcntl, I2SKI(ino)->ski_fd, cmd, arg);
+ *rtn = syscall(SYSIO_SYS_fcntl, I2SKI(ino)->ski_fd, cmd, arg);
break;
default:
*rtn = -1;
assert(I2SKI(ino)->ski_fd >= 0);
- return syscall(SYS_fsync, I2SKI(ino)->ski_fd);
+ return syscall(SYSIO_SYS_fsync, I2SKI(ino)->ski_fd);
}
static int
assert(I2SKI(ino)->ski_fd >= 0);
- return syscall(SYS_fdatasync, I2SKI(ino)->ski_fd);
+ return syscall(SYSIO_SYS_fdatasync, I2SKI(ino)->ski_fd);
}
#ifdef HAVE_LUSTRE_HACK
arg3 = va_arg(ap, long);
arg4 = va_arg(ap, long);
- return syscall(SYS_ioctl, I2SKI(ino)->ski_fd, request,
+ return syscall(SYSIO_SYS_ioctl, I2SKI(ino)->ski_fd, request,
arg1, arg2, arg3, arg4);
}
#else
static ino_t inum = 1;
struct socket_info *ski;
struct inode *ino;
+ static struct intnl_stat zero_stat;
ski = malloc(sizeof(struct socket_info));
if (!ski)
ino =
_sysio_i_new(sockets_fs,
&ski->ski_fileid,
- 0,
- 0,
+ &zero_stat,
0,
&sockets_i_ops,
ski);
}
int
-socket(int domain, int type, int protocol)
+SYSIO_INTERFACE_NAME(socket)(int domain, int type, int protocol)
{
int err;
struct inode *ino;
}
ski = I2SKI(ino);
-#ifndef SYS_socketcall
- ski->ski_fd = syscall(SYS_socket, domain, type, protocol);
+#ifndef SYSIO_SYS_socketcall
+ ski->ski_fd = syscall(SYSIO_SYS_socket, domain, type, protocol);
#else
{
unsigned long avec[3] = {domain, type, protocol};
- ski->ski_fd = syscall(SYS_socketcall, SYS_SOCKET, avec);
+ ski->ski_fd =
+ syscall(SYSIO_SYS_socketcall, SYS_SOCKET, avec);
}
#endif
if (ski->ski_fd < 0) {
}
int
-accept(int s, struct sockaddr *addr, socklen_t *addrlen)
+SYSIO_INTERFACE_NAME(accept)(int s, struct sockaddr *addr, socklen_t *addrlen)
{
int err;
struct inode *ino;
}
ski = I2SKI(ino);
-#ifndef SYS_socketcall
- ski->ski_fd = syscall(SYS_accept, I2SKI(ofil->f_ino)->ski_fd,
- addr, addrlen);
+#ifndef SYSIO_SYS_socketcall
+ ski->ski_fd =
+ syscall(SYSIO_SYS_accept,
+ I2SKI(ofil->f_ino)->ski_fd,
+ addr,
+ addrlen);
#else
{
unsigned long avec[3] = {
(unsigned long) I2SKI(ofil->f_ino)->ski_fd,
(unsigned long) addr,
(unsigned long) addrlen};
- ski->ski_fd = syscall(SYS_socketcall, SYS_ACCEPT, avec);
+ ski->ski_fd =
+ syscall(SYSIO_SYS_socketcall, SYS_ACCEPT, avec);
}
#endif
if (ski->ski_fd < 0) {
}
int
-bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen)
+SYSIO_INTERFACE_NAME(bind)(int sockfd,
+ const struct sockaddr *my_addr,
+ socklen_t addrlen)
{
int err;
struct file *fil;
+#ifdef SYSIO_SYS_socketcall
unsigned long avec[3];
+#endif
err = 0;
goto out;
}
-#ifndef SYS_socketcall
- if (syscall(SYS_bind, I2SKI(fil->f_ino)->ski_fd, my_addr, addrlen)) {
+#ifndef SYSIO_SYS_socketcall
+ if (syscall(SYSIO_SYS_bind,
+ I2SKI(fil->f_ino)->ski_fd,
+ my_addr,
+ addrlen)) {
#else
avec[0] = I2SKI(fil->f_ino)->ski_fd;
avec[1] = (unsigned long )my_addr;
avec[2] = addrlen;
- if (syscall(SYS_socketcall, SYS_BIND, avec) != 0) {
+ if (syscall(SYSIO_SYS_socketcall, SYS_BIND, avec) != 0) {
#endif
err = -errno;
goto out;
}
int
-listen(int s, int backlog)
+SYSIO_INTERFACE_NAME(listen)(int s, int backlog)
{
int err;
struct file *fil;
+#ifdef SYSIO_SYS_socketcall
unsigned long avec[2];
+#endif
err = 0;
goto out;
}
-#ifndef SYS_socketcall
- if (syscall(SYS_listen, I2SKI(fil->f_ino)->ski_fd, backlog) != 0) {
+#ifndef SYSIO_SYS_socketcall
+ if (syscall(SYSIO_SYS_listen,
+ I2SKI(fil->f_ino)->ski_fd,
+ backlog) != 0) {
#else
avec[0] = I2SKI(fil->f_ino)->ski_fd;
avec[1] = backlog;
- if (syscall(SYS_socketcall, SYS_LISTEN, avec) != 0) {
+ if (syscall(SYSIO_SYS_socketcall, SYS_LISTEN, avec) != 0) {
#endif
err = -errno;
goto out;
}
int
-connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen)
+SYSIO_INTERFACE_NAME(connect)(int sockfd,
+ const struct sockaddr *serv_addr,
+ socklen_t addrlen)
{
int err;
struct file *fil;
+#ifdef SYSIO_SYS_socketcall
unsigned long avec[3];
+#endif
err = 0;
goto out;
}
-#ifndef SYS_socketcall
- if (syscall(SYS_connect, I2SKI(fil->f_ino)->ski_fd,
- serv_addr, addrlen) != 0) {
+#ifndef SYSIO_SYS_socketcall
+ if (syscall(SYSIO_SYS_connect,
+ I2SKI(fil->f_ino)->ski_fd,
+ serv_addr,
+ addrlen) != 0) {
#else
avec[0] = I2SKI(fil->f_ino)->ski_fd;
avec[1] = (unsigned long )serv_addr;
avec[2] = addrlen;
- if (syscall(SYS_socketcall, SYS_CONNECT, avec) != 0) {
+ if (syscall(SYSIO_SYS_socketcall, SYS_CONNECT, avec) != 0) {
#endif
err = -errno;
goto out;