1 use crate::unix::*; 2 use dsc::syscall; 3 use crate::unix::platform::pal::{e,errno}; 4 use sockaddr; 5 #[no_mangle] 6 pub unsafe extern "C" fn accept(socket: ::c_int, address: *mut sockaddr, address_len: *mut socklen_t) -> ::c_int{ 7 e(syscall!( 8 SYS_ACCEPT, 9 socket as usize, 10 address as usize, 11 address_len as usize 12 )) as ::c_int 13 } 14 15 #[no_mangle] 16 pub unsafe extern "C" fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_int{ 17 e(syscall!(SYS_BIND, socket, address, address_len)) as ::c_int 18 } 19 20 #[no_mangle] 21 pub unsafe extern "C" fn connect(socket: ::c_int, address: *const sockaddr, address_len: socklen_t) -> ::c_int { 22 e(syscall!(SYS_CONNECT, socket, address, address_len)) as ::c_int 23 } 24 25 #[no_mangle] 26 pub unsafe extern "C" fn getpeername( 27 socket: ::c_int, 28 address: *mut sockaddr, 29 address_len: *mut socklen_t, 30 ) -> ::c_int { 31 e(syscall!(SYS_GETPEERNAME, socket, address, address_len)) as ::c_int 32 } 33 34 #[no_mangle] 35 pub unsafe extern "C" fn getsockname( 36 socket: ::c_int, 37 address: *mut sockaddr, 38 address_len: *mut socklen_t, 39 ) -> ::c_int { 40 e(syscall!(SYS_GETSOCKNAME, socket, address, address_len)) as ::c_int 41 } 42 43 #[no_mangle] 44 pub extern "C" fn getsockopt( 45 socket: ::c_int, 46 level: ::c_int, 47 option_name: ::c_int, 48 option_value: *mut c_void, 49 option_len: *mut socklen_t, 50 ) -> ::c_int { 51 e(unsafe { 52 syscall!( 53 SYS_GETSOCKOPT, 54 socket, 55 level, 56 option_name, 57 option_value, 58 option_len 59 ) 60 }) as ::c_int 61 } 62 63 #[no_mangle] 64 pub extern "C" fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int { 65 e(unsafe { syscall!(SYS_LISTEN, socket, backlog) }) as ::c_int 66 } 67 68 #[no_mangle] 69 pub extern "C" fn recvfrom( 70 socket: ::c_int, 71 buf: *mut ::c_void, 72 len: ::size_t, 73 flags: ::c_int, 74 addr: *mut ::sockaddr, 75 addrlen: *mut ::socklen_t, 76 ) -> ::ssize_t{ 77 e(unsafe{syscall!( 78 SYS_RECVFROM, 79 socket, 80 buf, 81 len, 82 flags, 83 addr, 84 addrlen 85 )}) as ssize_t 86 } 87 88 #[no_mangle] 89 pub extern "C" fn sendto( 90 socket: ::c_int, 91 buf: *const ::c_void, 92 len: ::size_t, 93 flags: ::c_int, 94 addr: *const sockaddr, 95 addrlen: socklen_t, 96 ) -> ::ssize_t{ 97 e(unsafe{syscall!( 98 SYS_SENDTO, socket, buf, len, flags, addr, addrlen 99 )}) as ssize_t 100 } 101 102 #[no_mangle] 103 pub extern "C" fn setsockopt( 104 socket: ::c_int, 105 level: ::c_int, 106 name: ::c_int, 107 value: *const ::c_void, 108 option_len: socklen_t, 109 ) -> ::c_int{ 110 e(unsafe { 111 syscall!( 112 SYS_SETSOCKOPT, 113 socket, 114 level, 115 name, 116 value, 117 option_len 118 ) 119 }) as ::c_int 120 } 121 122 #[no_mangle] 123 pub extern "C" fn shutdown(socket: ::c_int, how: ::c_int) -> ::c_int{ 124 e(unsafe { syscall!(SYS_SHUTDOWN, socket, how) }) as ::c_int 125 } 126 127 #[no_mangle] 128 pub extern "C" fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int{ 129 e(unsafe{syscall!(SYS_SOCKET, domain, ty, protocol)}) as ::c_int 130 } 131 132 #[no_mangle] 133 pub extern "C" fn socketpair( 134 domain: ::c_int, 135 type_: ::c_int, 136 protocol: ::c_int, 137 socket_vector: *mut ::c_int, 138 ) -> ::c_int{ 139 unimplemented!() 140 }