MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / send_impl

Function send_impl

api/src/syscall/net/io.rs:19–46  ·  view source on GitHub ↗
(
    fd: i32,
    mut src: impl Read + IoBuf,
    flags: u32,
    addr: UserConstPtr<sockaddr>,
    addrlen: socklen_t,
    cmsg: Vec<CMsgData>,
)

Source from the content-addressed store, hash-verified

17};
18
19fn send_impl(
20 fd: i32,
21 mut src: impl Read + IoBuf,
22 flags: u32,
23 addr: UserConstPtr<sockaddr>,
24 addrlen: socklen_t,
25 cmsg: Vec<CMsgData>,
26) -> AxResult<isize> {
27 let addr = if addr.is_null() || addrlen == 0 {
28 None
29 } else {
30 Some(SocketAddrEx::read_from_user(addr, addrlen)?)
31 };
32
33 debug!("sys_send <= fd: {fd}, flags: {flags}, addr: {addr:?}");
34
35 let socket = Socket::from_fd(fd)?;
36 let sent = socket.send(
37 &mut src,
38 SendOptions {
39 to: addr,
40 flags: SendFlags::default(),
41 cmsg,
42 },
43 )?;
44
45 Ok(sent as isize)
46}
47
48pub fn sys_sendto(
49 fd: i32,

Callers 2

sys_sendtoFunction · 0.85
sys_sendmsgFunction · 0.85

Calls 1

is_nullMethod · 0.80

Tested by

no test coverage detected