init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/target
|
||||||
135
Cargo.lock
generated
Normal file
135
Cargo.lock
generated
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "accessibility-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "alarm-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "audio-capture-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "audio-playback-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bluetooth-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "calendar-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "camera-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clipboard-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "contacts-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "display-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "domain"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gatekeeper"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gps-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "input-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "kernel"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "keychain-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "media-index-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "network-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "notification-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "package-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "permission-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "platform"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "power-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "print-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "server-framework"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "snake"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "storage-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sync-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "telephony-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "types"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "usb-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "user-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "userspace"
|
||||||
|
version = "0.1.0"
|
||||||
83
Cargo.toml
Normal file
83
Cargo.toml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
"crates/apps/snake",
|
||||||
|
"crates/domain",
|
||||||
|
"crates/kernel",
|
||||||
|
"crates/platform",
|
||||||
|
"crates/server-framework",
|
||||||
|
"crates/servers/accessibility-server",
|
||||||
|
"crates/servers/alarm-server",
|
||||||
|
"crates/servers/audio-capture-server",
|
||||||
|
"crates/servers/audio-playback-server",
|
||||||
|
"crates/servers/bluetooth-server",
|
||||||
|
"crates/servers/calendar-server",
|
||||||
|
"crates/servers/camera-server",
|
||||||
|
"crates/servers/clipboard-server",
|
||||||
|
"crates/servers/contacts-server",
|
||||||
|
"crates/servers/display-server",
|
||||||
|
"crates/servers/gatekeeper",
|
||||||
|
"crates/servers/gps-server",
|
||||||
|
"crates/servers/input-server",
|
||||||
|
"crates/servers/keychain-server",
|
||||||
|
"crates/servers/media-index-server",
|
||||||
|
"crates/servers/network-server",
|
||||||
|
"crates/servers/notification-server",
|
||||||
|
"crates/servers/package-manager",
|
||||||
|
"crates/servers/permission-manager",
|
||||||
|
"crates/servers/power-server",
|
||||||
|
"crates/servers/print-server",
|
||||||
|
"crates/servers/storage-server",
|
||||||
|
"crates/servers/sync-server",
|
||||||
|
"crates/servers/telephony-server",
|
||||||
|
"crates/servers/usb-server",
|
||||||
|
"crates/servers/user-manager",
|
||||||
|
"crates/types",
|
||||||
|
"crates/userspace",
|
||||||
|
]
|
||||||
|
resolver = "2"
|
||||||
|
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
# kernel
|
||||||
|
types = { path = "crates/types" }
|
||||||
|
domain = { path = "crates/domain" }
|
||||||
|
platform = { path = "crates/platform" }
|
||||||
|
kernel = { path = "crates/kernel" }
|
||||||
|
server-framework = { path = "crates/server-framework" }
|
||||||
|
userspace = { path = "crates/userspace" }
|
||||||
|
|
||||||
|
# servers
|
||||||
|
accessibility-server = { path = "crates/servers/accessibility-server" }
|
||||||
|
alarm-server = { path = "crates/servers/alarm-server" }
|
||||||
|
audio-capture-server = { path = "crates/servers/audio-capture-server" }
|
||||||
|
audio-playback-server = { path = "crates/servers/audio-playback-server" }
|
||||||
|
bluetooth-server = { path = "crates/servers/bluetooth-server" }
|
||||||
|
calendar-server = { path = "crates/servers/calendar-server" }
|
||||||
|
camera-server = { path = "crates/servers/camera-server" }
|
||||||
|
clipboard-server = { path = "crates/servers/clipboard-server" }
|
||||||
|
contacts-server = { path = "crates/servers/contacts-server" }
|
||||||
|
display-server = { path = "crates/servers/display-server" }
|
||||||
|
gatekeeper = { path = "crates/servers/gatekeeper" }
|
||||||
|
gps-server = { path = "crates/servers/gps-server" }
|
||||||
|
input-server = { path = "crates/servers/input-server" }
|
||||||
|
keychain-server = { path = "crates/servers/keychain-server" }
|
||||||
|
media-index-server = { path = "crates/servers/media-index-server" }
|
||||||
|
network-server = { path = "crates/servers/network-server" }
|
||||||
|
notification-server = { path = "crates/servers/notification-server" }
|
||||||
|
package-manager = { path = "crates/servers/package-manager" }
|
||||||
|
permission-manager = { path = "crates/servers/permission-manager" }
|
||||||
|
power-server = { path = "crates/servers/power-server" }
|
||||||
|
print-server = { path = "crates/servers/print-server" }
|
||||||
|
storage-server = { path = "crates/servers/storage-server" }
|
||||||
|
sync-server = { path = "crates/servers/sync-server" }
|
||||||
|
telephony-server = { path = "crates/servers/telephony-server" }
|
||||||
|
usb-server = { path = "crates/servers/usb-server" }
|
||||||
|
user-manager = { path = "crates/servers/user-manager" }
|
||||||
|
|
||||||
|
# apps
|
||||||
|
snake = { path = "crates/apps/snake" }
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
strip = true
|
||||||
|
lto = true
|
||||||
|
opt-level = "z"
|
||||||
6
crates/apps/snake/Cargo.toml
Normal file
6
crates/apps/snake/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "snake"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
3
crates/apps/snake/src/main.rs
Normal file
3
crates/apps/snake/src/main.rs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
||||||
6
crates/domain/Cargo.toml
Normal file
6
crates/domain/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "domain"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/domain/src/lib.rs
Normal file
14
crates/domain/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/kernel/Cargo.toml
Normal file
6
crates/kernel/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "kernel"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/kernel/src/lib.rs
Normal file
14
crates/kernel/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/platform/Cargo.toml
Normal file
6
crates/platform/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "platform"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/platform/src/lib.rs
Normal file
14
crates/platform/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/server-framework/Cargo.toml
Normal file
6
crates/server-framework/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "server-framework"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/server-framework/src/lib.rs
Normal file
14
crates/server-framework/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/accessibility-server/Cargo.toml
Normal file
6
crates/servers/accessibility-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "accessibility-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/accessibility-server/src/lib.rs
Normal file
14
crates/servers/accessibility-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/alarm-server/Cargo.toml
Normal file
6
crates/servers/alarm-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "alarm-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/alarm-server/src/lib.rs
Normal file
14
crates/servers/alarm-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/audio-capture-server/Cargo.toml
Normal file
6
crates/servers/audio-capture-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "audio-capture-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/audio-capture-server/src/lib.rs
Normal file
14
crates/servers/audio-capture-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/audio-playback-server/Cargo.toml
Normal file
6
crates/servers/audio-playback-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "audio-playback-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/audio-playback-server/src/lib.rs
Normal file
14
crates/servers/audio-playback-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/bluetooth-server/Cargo.toml
Normal file
6
crates/servers/bluetooth-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "bluetooth-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/bluetooth-server/src/lib.rs
Normal file
14
crates/servers/bluetooth-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/calendar-server/Cargo.toml
Normal file
6
crates/servers/calendar-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "calendar-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/calendar-server/src/lib.rs
Normal file
14
crates/servers/calendar-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/camera-server/Cargo.toml
Normal file
6
crates/servers/camera-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "camera-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/camera-server/src/lib.rs
Normal file
14
crates/servers/camera-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/clipboard-server/Cargo.toml
Normal file
6
crates/servers/clipboard-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "clipboard-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/clipboard-server/src/lib.rs
Normal file
14
crates/servers/clipboard-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/contacts-server/Cargo.toml
Normal file
6
crates/servers/contacts-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "contacts-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/contacts-server/src/lib.rs
Normal file
14
crates/servers/contacts-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/display-server/Cargo.toml
Normal file
6
crates/servers/display-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "display-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/display-server/src/lib.rs
Normal file
14
crates/servers/display-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/gatekeeper/Cargo.toml
Normal file
6
crates/servers/gatekeeper/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "gatekeeper"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/gatekeeper/src/lib.rs
Normal file
14
crates/servers/gatekeeper/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/gps-server/Cargo.toml
Normal file
6
crates/servers/gps-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "gps-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/gps-server/src/lib.rs
Normal file
14
crates/servers/gps-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/input-server/Cargo.toml
Normal file
6
crates/servers/input-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "input-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/input-server/src/lib.rs
Normal file
14
crates/servers/input-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/keychain-server/Cargo.toml
Normal file
6
crates/servers/keychain-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "keychain-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/keychain-server/src/lib.rs
Normal file
14
crates/servers/keychain-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/media-index-server/Cargo.toml
Normal file
6
crates/servers/media-index-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "media-index-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/media-index-server/src/lib.rs
Normal file
14
crates/servers/media-index-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/network-server/Cargo.toml
Normal file
6
crates/servers/network-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "network-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/network-server/src/lib.rs
Normal file
14
crates/servers/network-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/notification-server/Cargo.toml
Normal file
6
crates/servers/notification-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "notification-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/notification-server/src/lib.rs
Normal file
14
crates/servers/notification-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/package-manager/Cargo.toml
Normal file
6
crates/servers/package-manager/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "package-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/package-manager/src/lib.rs
Normal file
14
crates/servers/package-manager/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/permission-manager/Cargo.toml
Normal file
6
crates/servers/permission-manager/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "permission-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/permission-manager/src/lib.rs
Normal file
14
crates/servers/permission-manager/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/power-server/Cargo.toml
Normal file
6
crates/servers/power-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "power-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/power-server/src/lib.rs
Normal file
14
crates/servers/power-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/print-server/Cargo.toml
Normal file
6
crates/servers/print-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "print-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/print-server/src/lib.rs
Normal file
14
crates/servers/print-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/storage-server/Cargo.toml
Normal file
6
crates/servers/storage-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "storage-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/storage-server/src/lib.rs
Normal file
14
crates/servers/storage-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/sync-server/Cargo.toml
Normal file
6
crates/servers/sync-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "sync-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/sync-server/src/lib.rs
Normal file
14
crates/servers/sync-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/telephony-server/Cargo.toml
Normal file
6
crates/servers/telephony-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "telephony-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/telephony-server/src/lib.rs
Normal file
14
crates/servers/telephony-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/usb-server/Cargo.toml
Normal file
6
crates/servers/usb-server/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "usb-server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/usb-server/src/lib.rs
Normal file
14
crates/servers/usb-server/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/servers/user-manager/Cargo.toml
Normal file
6
crates/servers/user-manager/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "user-manager"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/servers/user-manager/src/lib.rs
Normal file
14
crates/servers/user-manager/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
crates/types/Cargo.toml
Normal file
6
crates/types/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "types"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
5
crates/types/src/address.rs
Normal file
5
crates/types/src/address.rs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct EntryPoint(usize);
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct StackPointer(usize);
|
||||||
4
crates/types/src/bounded.rs
Normal file
4
crates/types/src/bounded.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
use crate::macros::bounded;
|
||||||
|
|
||||||
|
bounded!(CapSlot, u8, 0, 63);
|
||||||
|
bounded!(Priority, u8, 0, 31);
|
||||||
16
crates/types/src/generation.rs
Normal file
16
crates/types/src/generation.rs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct Generation(u32);
|
||||||
|
|
||||||
|
impl Generation {
|
||||||
|
pub fn initial() -> Self {
|
||||||
|
Self(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn next(&self) -> Self {
|
||||||
|
Self(self.0.wrapping_add(1))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_valid_against(&self, current: &Generation) -> bool {
|
||||||
|
self == current
|
||||||
|
}
|
||||||
|
}
|
||||||
8
crates/types/src/id.rs
Normal file
8
crates/types/src/id.rs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
use crate::macros::kernel_id;
|
||||||
|
|
||||||
|
kernel_id!(ProcessId, u16);
|
||||||
|
kernel_id!(ThreadId, u16);
|
||||||
|
kernel_id!(EndpointId, u16);
|
||||||
|
kernel_id!(RegionId, u16);
|
||||||
|
kernel_id!(IrqId, u16);
|
||||||
|
kernel_id!(CoreId, u8);
|
||||||
9
crates/types/src/lib.rs
Normal file
9
crates/types/src/lib.rs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#![no_std]
|
||||||
|
|
||||||
|
pub mod address;
|
||||||
|
pub mod bounded;
|
||||||
|
pub mod generation;
|
||||||
|
pub mod id;
|
||||||
|
pub mod macros;
|
||||||
|
pub mod permission;
|
||||||
|
pub mod time;
|
||||||
43
crates/types/src/macros.rs
Normal file
43
crates/types/src/macros.rs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
macro_rules! kernel_id {
|
||||||
|
($name:ident, $inner:ty) => {
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
|
pub struct $name($inner);
|
||||||
|
|
||||||
|
impl $name {
|
||||||
|
pub fn from_raw(value: $inner) -> Self {
|
||||||
|
Self(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn raw(&self) -> $inner {
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! bounded {
|
||||||
|
($name:ident, $inner:ty, $min:expr, $max:expr) => {
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
|
pub struct $name($inner);
|
||||||
|
|
||||||
|
impl $name {
|
||||||
|
pub const MIN: $inner = $min;
|
||||||
|
pub const MAX: $inner = $max;
|
||||||
|
|
||||||
|
pub fn new(value: $inner) -> Option<Self> {
|
||||||
|
if value >= Self::MIN && value <= Self::MAX {
|
||||||
|
Some(Self(value))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn value(&self) -> $inner {
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) use bounded;
|
||||||
|
pub(crate) use kernel_id;
|
||||||
43
crates/types/src/permission.rs
Normal file
43
crates/types/src/permission.rs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum Permission {
|
||||||
|
Read,
|
||||||
|
Write,
|
||||||
|
Execute,
|
||||||
|
Delegate,
|
||||||
|
Revoke,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Permission {
|
||||||
|
fn bit(&self) -> u8 {
|
||||||
|
1 << (*self as u8)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct PermissionSet(u8);
|
||||||
|
|
||||||
|
impl PermissionSet {
|
||||||
|
pub fn empty() -> Self {
|
||||||
|
Self(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn with(self, p: Permission) -> Self {
|
||||||
|
Self(self.0 | p.bit())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn without(self, p: Permission) -> Self {
|
||||||
|
Self(self.0 & !p.bit())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn allows(&self, p: Permission) -> bool {
|
||||||
|
self.0 & p.bit() != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn restrict_to(&self, other: &PermissionSet) -> Self {
|
||||||
|
Self(self.0 & other.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_subset_of(&self, other: &PermissionSet) -> bool {
|
||||||
|
self.0 & other.0 == self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
11
crates/types/src/time.rs
Normal file
11
crates/types/src/time.rs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
|
pub struct Ticks(u64);
|
||||||
|
|
||||||
|
impl Ticks {
|
||||||
|
pub fn elapsed_since(&self, earlier: &Ticks) -> Ticks {
|
||||||
|
Ticks(self.0.saturating_sub(earlier.0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct TimerDuration(u32);
|
||||||
6
crates/userspace/Cargo.toml
Normal file
6
crates/userspace/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "userspace"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
crates/userspace/src/lib.rs
Normal file
14
crates/userspace/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user