Add shutdown(2).

This commit is contained in:
Jonas 'Sortie' Termansen 2014-06-28 00:11:13 +02:00
parent a00d085b81
commit 577f2f700b
4 changed files with 18 additions and 11 deletions

View File

@ -171,6 +171,7 @@
#define SYSCALL_TCSETBLOB 143
#define SYSCALL_GETPEERNAME 144
#define SYSCALL_GETSOCKNAME 145
#define SYSCALL_MAX_NUM 146 /* index of highest constant + 1 */
#define SYSCALL_SHUTDOWN 146
#define SYSCALL_MAX_NUM 147 /* index of highest constant + 1 */
#endif

View File

@ -1080,6 +1080,13 @@ static int sys_getsockname(int fd, struct sockaddr* addr, socklen_t* addrsize)
return errno = ENOSYS, -1;
}
static int sys_shutdown(int fd, int how)
{
(void) fd;
(void) how;
return errno = ENOSYS, -1;
}
void Init()
{
Syscall::Register(SYSCALL_ACCEPT4, (void*) sys_accept4);
@ -1133,6 +1140,7 @@ void Init()
Syscall::Register(SYSCALL_SEND, (void*) sys_send);
Syscall::Register(SYSCALL_SETSOCKOPT, (void*) sys_setsockopt);
Syscall::Register(SYSCALL_SETTERMMODE, (void*) sys_settermmode);
Syscall::Register(SYSCALL_SHUTDOWN, (void*) sys_shutdown);
Syscall::Register(SYSCALL_SYMLINKAT, (void*) sys_symlinkat);
Syscall::Register(SYSCALL_TCGETBLOB, (void*) sys_tcgetblob);
Syscall::Register(SYSCALL_TCGETPGRP, (void*) sys_tcgetpgrp);

View File

@ -156,10 +156,9 @@ struct linger
#define PF_LOCAL PF_UNIX
/* TODO: Nicely wrap this in an enum, as in glibc's header? */
/* TODO: Should SHUT_RDWR = SHUT_RD | SHUT_WR? */
#define SHUT_RD 0
#define SHUT_RDWR 1
#define SHUT_WR 2
#define SHUT_RD (1 << 0)
#define SHUT_WR (1 << 1)
#define SHUT_RDWR (SHUT_RD | SHUT_WR)
int accept4(int, struct sockaddr* __restrict, socklen_t* __restrict, int);
int accept(int, struct sockaddr* __restrict, socklen_t* __restrict);

View File

@ -1,6 +1,6 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2013.
Copyright(C) Jonas 'Sortie' Termansen 2013, 2014.
This file is part of the Sortix C Library.
@ -23,12 +23,11 @@
*******************************************************************************/
#include <sys/socket.h>
#include <sys/syscall.h>
#include <errno.h>
#include <stdio.h>
DEFN_SYSCALL2(int, sys_shutdown, SYSCALL_SHUTDOWN, int, int);
extern "C" int shutdown(int, int)
extern "C" int shutdown(int fd, int how)
{
fprintf(stderr, "%s is not implemented yet.\n", __func__);
return errno = ENOSYS, -1;
return sys_shutdown(fd, how);
}