Proc changes

This commit is contained in:
Able 2022-02-04 18:47:05 -06:00
parent b3b9cc3c76
commit 2d5e8d24eb
8 changed files with 81 additions and 6 deletions

View file

@ -1,5 +1,9 @@
[build] [build]
target = "./json_targets/x86_64-ableos.json" # target = "./json_targets/x86_64-ableos.json"
target = "x86_64-unknown-uefi"
[unstable] [unstable]
build-std = ["core", "compiler_builtins", "alloc"] build-std = ["core", "compiler_builtins", "alloc"]
@ -7,6 +11,7 @@ build-std-features = ["compiler-builtins-mem"]
[target.'cfg(target_arch = "x86_64")'] [target.'cfg(target_arch = "x86_64")']
rustflags = ["-C", "target-feature=+rdrnd"]
runner = "bootimage runner" runner = "bootimage runner"
[target.riscv64gc-unknown-none-elf] [target.riscv64gc-unknown-none-elf]

49
ableos/Cargo.lock generated
View file

@ -39,6 +39,7 @@ dependencies = [
"pic8259", "pic8259",
"picorand", "picorand",
"pretty-hex", "pretty-hex",
"rdrand",
"rkyv", "rkyv",
"serde", "serde",
"serde_json", "serde_json",
@ -46,6 +47,7 @@ dependencies = [
"smoltcp", "smoltcp",
"spin", "spin",
"uart_16550", "uart_16550",
"uefi",
"unicode-width", "unicode-width",
"vga", "vga",
"volatile 0.2.7", "volatile 0.2.7",
@ -410,6 +412,21 @@ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]]
name = "rand_core"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
[[package]]
name = "rdrand"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4e0d5cb05cb40e4e5805399c27b12a064427cf553081ae9b82bc1a88111a576"
dependencies = [
"rand_core",
]
[[package]] [[package]]
name = "rhai" name = "rhai"
version = "1.4.0" version = "1.4.0"
@ -604,6 +621,38 @@ dependencies = [
"x86_64", "x86_64",
] ]
[[package]]
name = "ucs2"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bad643914094137d475641b6bab89462505316ec2ce70907ad20102d28a79ab8"
dependencies = [
"bit_field",
]
[[package]]
name = "uefi"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21398a404f6fa14f6df34756714874eccdf73587eba863cb5bd55d8bada7496"
dependencies = [
"bitflags",
"log",
"ucs2",
"uefi-macros",
]
[[package]]
name = "uefi-macros"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7006b85ae8acaf2b448c5f1630a434caaacaedcc0907f12404e4e31c9dafcdb3"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "unicode-width" name = "unicode-width"
version = "0.1.9" version = "0.1.9"

View file

@ -10,7 +10,12 @@ panic = "abort"
[package.metadata.bootimage] [package.metadata.bootimage]
run-args = [ run-args = [
"-cpu", "-cpu",
"kvm64-v1", # "kvm64-v1",
# Support for rdrand
# "Broadwell",
"EPYC-v1",
"-serial", "-serial",
"stdio", "stdio",
"-smp", "-smp",
@ -18,8 +23,8 @@ run-args = [
# An example gpu used with ableOS # An example gpu used with ableOS
"-device", # "-device",
"virtio-gpu", # "virtio-gpu",
# An example disk used with ableOS # An example disk used with ableOS
"-device", "-device",
@ -46,6 +51,14 @@ pretty-hex = "0.2.1"
unicode-width = "0.1.7" unicode-width = "0.1.7"
picorand = "*" picorand = "*"
# watson = "0.4" # watson = "0.4"
uefi = { version="*", features = ["exts"] }
[dependencies.rdrand]
version = "0.8.1"
default-features = false
[dependencies.serde] [dependencies.serde]
version = "*" version = "*"

View file

@ -12,4 +12,4 @@
"panic-strategy": "abort", "panic-strategy": "abort",
"disable-redzone": true, "disable-redzone": true,
"features": "-mmx,-sse,+soft-float" "features": "-mmx,-sse,+soft-float"
} }

View file

@ -1,4 +1,5 @@
use log::LevelFilter; use log::LevelFilter;
// use rkyv::{Deserialize, Serialize};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Serialize, Debug, Deserialize)] #[derive(Serialize, Debug, Deserialize)]

View file

@ -17,7 +17,7 @@ use proc::{Process, PID};
#[cfg(test)] #[cfg(test)]
mod tests; mod tests;
use crate::file::PathRep; use crate::{file::PathRep, kmain::generate_process_pass};
use self::capabilities::Capabilities; use self::capabilities::Capabilities;
@ -117,6 +117,7 @@ impl Scheduler {
pub fn new_process(&mut self, priority: Priority) -> Process { pub fn new_process(&mut self, priority: Priority) -> Process {
let process = Process { let process = Process {
id: self.free_pid.clone(), id: self.free_pid.clone(),
password: generate_process_pass(),
capabilities: Capabilities::empty(), capabilities: Capabilities::empty(),
priority, priority,
}; };

View file

@ -2,6 +2,7 @@ use alloc::vec::Vec;
use crate::{ use crate::{
capabilities::Capabilities, capabilities::Capabilities,
kmain::generate_process_pass,
proc::{Process, PID}, proc::{Process, PID},
Priority, Priority,
}; };
@ -66,6 +67,7 @@ impl Scheduler {
pub fn new_process(&mut self, priority: Priority) -> Process { pub fn new_process(&mut self, priority: Priority) -> Process {
let process = Process { let process = Process {
id: self.free_pid, id: self.free_pid,
password: generate_process_pass(),
priority, priority,
capabilities: Capabilities::empty(), capabilities: Capabilities::empty(),
}; };

View file

@ -12,6 +12,10 @@ pub struct PID(pub usize);
pub struct Process { pub struct Process {
/// Internal PID /// Internal PID
pub id: PID, pub id: PID,
/// Process password
pub password: u128,
/// ///
pub capabilities: Capabilities, pub capabilities: Capabilities,
/// A process's priority /// A process's priority