raw: Add sw_close "syscall".
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 09:41:13 +0000 (12:41 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 09:41:18 +0000 (12:41 +0300)
sw_close is required by the internal management functions: remove socket
element when sw_close is called.

src/raw/swift_raw.c
src/raw/swift_raw.h

index 8c5b432..3809986 100644 (file)
@@ -355,3 +355,25 @@ list_elem_err:
 list_unlink_err:
        return -1;
 }
+
+/*
+ * Close file descriptor for socket FD.
+ * Returns 0 on success, -1 for errors.
+ */
+int sw_close (int __fd)
+{
+       struct sock_list *list;
+
+       /* Remove socket from socket management structure. */
+       list = list_unlink_socket(__fd);
+       if (list == NULL) {
+               errno = EBADF;
+               goto list_unlink_err;
+       }
+
+       /* Call classical interface of close(2). */
+       return close(__fd);
+
+list_unlink_err:
+       return -1;
+}
index 5724212..fd83ac2 100644 (file)
@@ -116,6 +116,12 @@ extern int sw_setsockopt (int __fd, int __level, int __optname,
  */
 extern int sw_shutdown (int __fd, int __how) __THROW;
 
+/*
+ * Close file descriptor for socket FD.
+ * Returns 0 on success, -1 for errors.
+ */
+extern int sw_close (int __fd);
+
 #ifdef __cplusplus
 }
 #endif