Add network syscalls

This commit is contained in:
Jianfeng Jiang
2023-05-31 10:48:43 +08:00
committed by Tate, Hongliang Tian
parent 8719234dc2
commit 2b59a406a6
12 changed files with 580 additions and 0 deletions

View File

@ -0,0 +1,22 @@
use crate::fs::file_table::FileDescripter;
use crate::get_socket_without_holding_filetable_lock;
use crate::log_syscall_entry;
use crate::prelude::*;
use crate::util::read_socket_addr_from_user;
use super::SyscallReturn;
use super::SYS_CONNECT;
pub fn sys_connect(
sockfd: FileDescripter,
sockaddr_ptr: Vaddr,
addr_len: u32,
) -> Result<SyscallReturn> {
log_syscall_entry!(SYS_CONNECT);
let socket_addr = read_socket_addr_from_user(sockaddr_ptr, addr_len as _)?;
debug!("fd = {sockfd}, socket_addr = {socket_addr:?}");
let current = current!();
get_socket_without_holding_filetable_lock!(socket, current, sockfd);
socket.connect(socket_addr)?;
Ok(SyscallReturn::Return(0))
}