forked from Imagelibrary/rtems
Patch to add shutdown() routine from Tony R. Ambardar <tonya@ece.ubc.ca>.
This commit is contained in:
@@ -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.
|
* All `transmit' operations end up calling this routine.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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.
|
* All `transmit' operations end up calling this routine.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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.
|
* All `transmit' operations end up calling this routine.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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.
|
* All `transmit' operations end up calling this routine.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user