From 6a4096b2249439e3947d452e453427be0260e055 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 30 Mar 1999 15:40:29 +0000 Subject: Patch to add shutdown() routine from Tony R. Ambardar . --- c/src/exec/libnetworking/rtems/rtems_syscall.c | 25 +++++++++++++++++++++++++ c/src/lib/libnetworking/rtems/rtems_syscall.c | 25 +++++++++++++++++++++++++ c/src/libnetworking/rtems/rtems_syscall.c | 25 +++++++++++++++++++++++++ cpukit/libnetworking/rtems/rtems_syscall.c | 25 +++++++++++++++++++++++++ 4 files changed, 100 insertions(+) diff --git a/c/src/exec/libnetworking/rtems/rtems_syscall.c b/c/src/exec/libnetworking/rtems/rtems_syscall.c index 7797e46a2a..2032df1e52 100644 --- a/c/src/exec/libnetworking/rtems/rtems_syscall.c +++ b/c/src/exec/libnetworking/rtems/rtems_syscall.c @@ -246,6 +246,31 @@ accept (int s, struct sockaddr *name, int *namelen) } +/* + * Shutdown routine + */ + +int +shutdown (int s, int how) +{ + struct socket *so; + int error; + + rtems_bsdnet_semaphore_obtain (); + if ((so = rtems_bsdnet_fdToSocket (s)) == NULL) { + rtems_bsdnet_semaphore_release (); + return -1; + } + error = soshutdown(so, how); + if (error) { + errno = error; + rtems_bsdnet_semaphore_release (); + return -1; + } + rtems_bsdnet_semaphore_release (); + return 0; +} + /* * All `transmit' operations end up calling this routine. */ diff --git a/c/src/lib/libnetworking/rtems/rtems_syscall.c b/c/src/lib/libnetworking/rtems/rtems_syscall.c index 7797e46a2a..2032df1e52 100644 --- a/c/src/lib/libnetworking/rtems/rtems_syscall.c +++ b/c/src/lib/libnetworking/rtems/rtems_syscall.c @@ -246,6 +246,31 @@ accept (int s, struct sockaddr *name, int *namelen) } +/* + * Shutdown routine + */ + +int +shutdown (int s, int how) +{ + struct socket *so; + int error; + + rtems_bsdnet_semaphore_obtain (); + if ((so = rtems_bsdnet_fdToSocket (s)) == NULL) { + rtems_bsdnet_semaphore_release (); + return -1; + } + error = soshutdown(so, how); + if (error) { + errno = error; + rtems_bsdnet_semaphore_release (); + return -1; + } + rtems_bsdnet_semaphore_release (); + return 0; +} + /* * All `transmit' operations end up calling this routine. */ diff --git a/c/src/libnetworking/rtems/rtems_syscall.c b/c/src/libnetworking/rtems/rtems_syscall.c index 7797e46a2a..2032df1e52 100644 --- a/c/src/libnetworking/rtems/rtems_syscall.c +++ b/c/src/libnetworking/rtems/rtems_syscall.c @@ -246,6 +246,31 @@ accept (int s, struct sockaddr *name, int *namelen) } +/* + * Shutdown routine + */ + +int +shutdown (int s, int how) +{ + struct socket *so; + int error; + + rtems_bsdnet_semaphore_obtain (); + if ((so = rtems_bsdnet_fdToSocket (s)) == NULL) { + rtems_bsdnet_semaphore_release (); + return -1; + } + error = soshutdown(so, how); + if (error) { + errno = error; + rtems_bsdnet_semaphore_release (); + return -1; + } + rtems_bsdnet_semaphore_release (); + return 0; +} + /* * All `transmit' operations end up calling this routine. */ diff --git a/cpukit/libnetworking/rtems/rtems_syscall.c b/cpukit/libnetworking/rtems/rtems_syscall.c index 7797e46a2a..2032df1e52 100644 --- a/cpukit/libnetworking/rtems/rtems_syscall.c +++ b/cpukit/libnetworking/rtems/rtems_syscall.c @@ -246,6 +246,31 @@ accept (int s, struct sockaddr *name, int *namelen) } +/* + * Shutdown routine + */ + +int +shutdown (int s, int how) +{ + struct socket *so; + int error; + + rtems_bsdnet_semaphore_obtain (); + if ((so = rtems_bsdnet_fdToSocket (s)) == NULL) { + rtems_bsdnet_semaphore_release (); + return -1; + } + error = soshutdown(so, how); + if (error) { + errno = error; + rtems_bsdnet_semaphore_release (); + return -1; + } + rtems_bsdnet_semaphore_release (); + return 0; +} + /* * All `transmit' operations end up calling this routine. */ -- cgit v1.2.3