Initial commit

This commit is contained in:
2024-04-03 17:00:29 +02:00
commit c12ae64d78
5 changed files with 92 additions and 0 deletions

50
src/main.rs Normal file
View File

@@ -0,0 +1,50 @@
use libc::{c_int, c_void, mmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE};
use std::{env, ptr};
const SHARED_MEMORY_SIZE: usize = 1024;
#[link(name = "agent")]
extern "C" {
fn agent_start(shared_memory: *mut u8, sync_memory: *mut u8);
}
fn main() {
let args: Vec<String> = env::args().collect();
let shared_fd: c_int = args[1]
.parse()
.expect("Please provide a valid file descriptor as first argument");
let sync_fd: c_int = args[2]
.parse()
.expect("Please provide a valid file descriptor as first argument");
let shared_memory = unsafe {
mmap(
ptr::null_mut() as *mut c_void,
SHARED_MEMORY_SIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED,
shared_fd,
0,
)
} as *mut u8;
assert_ne!(shared_memory, MAP_FAILED as *mut u8);
let sync_memory = unsafe {
mmap(
ptr::null_mut() as *mut c_void,
SHARED_MEMORY_SIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED,
sync_fd,
0,
)
} as *mut u8;
assert_ne!(sync_memory, MAP_FAILED as *mut u8);
println!("Starting agent...");
unsafe {
agent_start(shared_memory, sync_memory);
}
}