Add nix derivation
This commit is contained in:
26
src/main.rs
26
src/main.rs
@@ -1,21 +1,23 @@
|
||||
use libc::{c_int, c_void, mmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE};
|
||||
use libc::{
|
||||
c_int, c_void, mmap, MAP_ANON, MAP_FAILED, MAP_PRIVATE, 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 agent_start(shared_memory: *mut u8, sync_memory: *mut u8, private_mem: *mut u8);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
|
||||
let shared_fd: c_int = args[1]
|
||||
let shared_fd: c_int = args[0]
|
||||
.parse()
|
||||
.expect("Please provide a valid file descriptor as first argument");
|
||||
|
||||
let sync_fd: c_int = args[2]
|
||||
let sync_fd: c_int = args[1]
|
||||
.parse()
|
||||
.expect("Please provide a valid file descriptor as first argument");
|
||||
|
||||
@@ -43,8 +45,20 @@ fn main() {
|
||||
} as *mut u8;
|
||||
assert_ne!(sync_memory, MAP_FAILED as *mut u8);
|
||||
|
||||
println!("Starting agent...");
|
||||
let private_mem = unsafe {
|
||||
mmap(
|
||||
ptr::null_mut() as *mut c_void,
|
||||
32 * 100,
|
||||
PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANON,
|
||||
0,
|
||||
0,
|
||||
)
|
||||
} as *mut u8;
|
||||
assert_ne!(private_mem, MAP_FAILED as *mut u8);
|
||||
|
||||
println!("Agent: starting agent...");
|
||||
unsafe {
|
||||
agent_start(shared_memory, sync_memory);
|
||||
agent_start(shared_memory, sync_memory, private_mem);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user