; -*- fundamental -*-
;
; These are calls that are invoked via the socketcall mechanism
; Note that on most architectures this is simply #included into
; SYSCALLS.def.
;
<?> int socket(int, int, int)
<?> int bind(int, struct sockaddr *, int)
<?> int connect(int, struct sockaddr *, socklen_t)
<?> int listen(int, int)
<?> int accept(int, struct sockaddr *, socklen_t *)
<?> int getsockname(int, struct sockaddr *, socklen_t *)
<?> int getpeername(int, struct sockaddr *, socklen_t *)
<?> int socketpair(int, int, int, int *)
<?> int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t)
<?> int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)
<?> int shutdown(int, int)
<?> int setsockopt(int, int, int, const void *, socklen_t)
<?> int getsockopt(int, int, int, void *, socklen_t *)
<?> int sendmsg(int, const struct msghdr *, unsigned int)
<?> int recvmsg(int, struct msghdr *, unsigned int)
