summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-30 15:40:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-30 15:40:29 +0000
commit6a4096b2249439e3947d452e453427be0260e055 (patch)
tree746050e79014e657a7ef1c2c0d62917471e86f76
parentCleaned up and regenerated. (diff)
downloadrtems-6a4096b2249439e3947d452e453427be0260e055.tar.bz2
Patch to add shutdown() routine from Tony R. Ambardar <tonya@ece.ubc.ca>.
-rw-r--r--c/src/exec/libnetworking/rtems/rtems_syscall.c25
-rw-r--r--c/src/lib/libnetworking/rtems/rtems_syscall.c25
-rw-r--r--c/src/libnetworking/rtems/rtems_syscall.c25
-rw-r--r--cpukit/libnetworking/rtems/rtems_syscall.c25
4 files changed, 100 insertions, 0 deletions
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
@@ -247,6 +247,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.
*/
ssize_t
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
@@ -247,6 +247,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.
*/
ssize_t
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
@@ -247,6 +247,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.
*/
ssize_t
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
@@ -247,6 +247,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.
*/
ssize_t