commit bb99c3001d274ef1847021a16bbe512ffcc4623b Author: Gabriel Kaszewski Date: Fri Oct 16 02:32:24 2026 +0200 init diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..c8627c8 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c41cc9e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..5166958 --- /dev/null +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3083fd4 --- /dev/null +++ b/Cargo.toml @@ -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" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..baf7599 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# K-Os +my operating system. \ No newline at end of file diff --git a/crates/apps/snake/Cargo.toml b/crates/apps/snake/Cargo.toml new file mode 100644 index 0000000..e547623 --- /dev/null +++ b/crates/apps/snake/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "snake" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/apps/snake/src/main.rs b/crates/apps/snake/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/crates/apps/snake/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/crates/domain/Cargo.toml b/crates/domain/Cargo.toml new file mode 100644 index 0000000..2f841ed --- /dev/null +++ b/crates/domain/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "domain" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/domain/src/lib.rs b/crates/domain/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/domain/src/lib.rs @@ -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); + } +} diff --git a/crates/kernel/Cargo.toml b/crates/kernel/Cargo.toml new file mode 100644 index 0000000..c9211be --- /dev/null +++ b/crates/kernel/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "kernel" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/kernel/src/lib.rs b/crates/kernel/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/kernel/src/lib.rs @@ -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); + } +} diff --git a/crates/platform/Cargo.toml b/crates/platform/Cargo.toml new file mode 100644 index 0000000..147ec6c --- /dev/null +++ b/crates/platform/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "platform" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/platform/src/lib.rs b/crates/platform/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/platform/src/lib.rs @@ -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); + } +} diff --git a/crates/server-framework/Cargo.toml b/crates/server-framework/Cargo.toml new file mode 100644 index 0000000..4788454 --- /dev/null +++ b/crates/server-framework/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "server-framework" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/server-framework/src/lib.rs b/crates/server-framework/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/server-framework/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/accessibility-server/Cargo.toml b/crates/servers/accessibility-server/Cargo.toml new file mode 100644 index 0000000..b83bb4f --- /dev/null +++ b/crates/servers/accessibility-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "accessibility-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/accessibility-server/src/lib.rs b/crates/servers/accessibility-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/accessibility-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/alarm-server/Cargo.toml b/crates/servers/alarm-server/Cargo.toml new file mode 100644 index 0000000..fbed466 --- /dev/null +++ b/crates/servers/alarm-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "alarm-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/alarm-server/src/lib.rs b/crates/servers/alarm-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/alarm-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/audio-capture-server/Cargo.toml b/crates/servers/audio-capture-server/Cargo.toml new file mode 100644 index 0000000..7c9cc8a --- /dev/null +++ b/crates/servers/audio-capture-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "audio-capture-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/audio-capture-server/src/lib.rs b/crates/servers/audio-capture-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/audio-capture-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/audio-playback-server/Cargo.toml b/crates/servers/audio-playback-server/Cargo.toml new file mode 100644 index 0000000..1bfa2bd --- /dev/null +++ b/crates/servers/audio-playback-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "audio-playback-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/audio-playback-server/src/lib.rs b/crates/servers/audio-playback-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/audio-playback-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/bluetooth-server/Cargo.toml b/crates/servers/bluetooth-server/Cargo.toml new file mode 100644 index 0000000..6f13781 --- /dev/null +++ b/crates/servers/bluetooth-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "bluetooth-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/bluetooth-server/src/lib.rs b/crates/servers/bluetooth-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/bluetooth-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/calendar-server/Cargo.toml b/crates/servers/calendar-server/Cargo.toml new file mode 100644 index 0000000..ced4962 --- /dev/null +++ b/crates/servers/calendar-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "calendar-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/calendar-server/src/lib.rs b/crates/servers/calendar-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/calendar-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/camera-server/Cargo.toml b/crates/servers/camera-server/Cargo.toml new file mode 100644 index 0000000..ee3efd7 --- /dev/null +++ b/crates/servers/camera-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "camera-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/camera-server/src/lib.rs b/crates/servers/camera-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/camera-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/clipboard-server/Cargo.toml b/crates/servers/clipboard-server/Cargo.toml new file mode 100644 index 0000000..7355db3 --- /dev/null +++ b/crates/servers/clipboard-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "clipboard-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/clipboard-server/src/lib.rs b/crates/servers/clipboard-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/clipboard-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/contacts-server/Cargo.toml b/crates/servers/contacts-server/Cargo.toml new file mode 100644 index 0000000..58c25a6 --- /dev/null +++ b/crates/servers/contacts-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "contacts-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/contacts-server/src/lib.rs b/crates/servers/contacts-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/contacts-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/display-server/Cargo.toml b/crates/servers/display-server/Cargo.toml new file mode 100644 index 0000000..8c3b045 --- /dev/null +++ b/crates/servers/display-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "display-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/display-server/src/lib.rs b/crates/servers/display-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/display-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/gatekeeper/Cargo.toml b/crates/servers/gatekeeper/Cargo.toml new file mode 100644 index 0000000..5db048a --- /dev/null +++ b/crates/servers/gatekeeper/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "gatekeeper" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/gatekeeper/src/lib.rs b/crates/servers/gatekeeper/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/gatekeeper/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/gps-server/Cargo.toml b/crates/servers/gps-server/Cargo.toml new file mode 100644 index 0000000..cc01680 --- /dev/null +++ b/crates/servers/gps-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "gps-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/gps-server/src/lib.rs b/crates/servers/gps-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/gps-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/input-server/Cargo.toml b/crates/servers/input-server/Cargo.toml new file mode 100644 index 0000000..12177ff --- /dev/null +++ b/crates/servers/input-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "input-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/input-server/src/lib.rs b/crates/servers/input-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/input-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/keychain-server/Cargo.toml b/crates/servers/keychain-server/Cargo.toml new file mode 100644 index 0000000..fc9e62b --- /dev/null +++ b/crates/servers/keychain-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "keychain-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/keychain-server/src/lib.rs b/crates/servers/keychain-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/keychain-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/media-index-server/Cargo.toml b/crates/servers/media-index-server/Cargo.toml new file mode 100644 index 0000000..c28ae75 --- /dev/null +++ b/crates/servers/media-index-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "media-index-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/media-index-server/src/lib.rs b/crates/servers/media-index-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/media-index-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/network-server/Cargo.toml b/crates/servers/network-server/Cargo.toml new file mode 100644 index 0000000..942dd8d --- /dev/null +++ b/crates/servers/network-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "network-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/network-server/src/lib.rs b/crates/servers/network-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/network-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/notification-server/Cargo.toml b/crates/servers/notification-server/Cargo.toml new file mode 100644 index 0000000..c42daed --- /dev/null +++ b/crates/servers/notification-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "notification-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/notification-server/src/lib.rs b/crates/servers/notification-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/notification-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/package-manager/Cargo.toml b/crates/servers/package-manager/Cargo.toml new file mode 100644 index 0000000..257ae52 --- /dev/null +++ b/crates/servers/package-manager/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "package-manager" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/package-manager/src/lib.rs b/crates/servers/package-manager/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/package-manager/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/permission-manager/Cargo.toml b/crates/servers/permission-manager/Cargo.toml new file mode 100644 index 0000000..58d0f56 --- /dev/null +++ b/crates/servers/permission-manager/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "permission-manager" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/permission-manager/src/lib.rs b/crates/servers/permission-manager/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/permission-manager/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/power-server/Cargo.toml b/crates/servers/power-server/Cargo.toml new file mode 100644 index 0000000..2798031 --- /dev/null +++ b/crates/servers/power-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "power-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/power-server/src/lib.rs b/crates/servers/power-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/power-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/print-server/Cargo.toml b/crates/servers/print-server/Cargo.toml new file mode 100644 index 0000000..afc3b41 --- /dev/null +++ b/crates/servers/print-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "print-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/print-server/src/lib.rs b/crates/servers/print-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/print-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/storage-server/Cargo.toml b/crates/servers/storage-server/Cargo.toml new file mode 100644 index 0000000..32c0100 --- /dev/null +++ b/crates/servers/storage-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "storage-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/storage-server/src/lib.rs b/crates/servers/storage-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/storage-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/sync-server/Cargo.toml b/crates/servers/sync-server/Cargo.toml new file mode 100644 index 0000000..3f3f904 --- /dev/null +++ b/crates/servers/sync-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "sync-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/sync-server/src/lib.rs b/crates/servers/sync-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/sync-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/telephony-server/Cargo.toml b/crates/servers/telephony-server/Cargo.toml new file mode 100644 index 0000000..d790f60 --- /dev/null +++ b/crates/servers/telephony-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "telephony-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/telephony-server/src/lib.rs b/crates/servers/telephony-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/telephony-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/usb-server/Cargo.toml b/crates/servers/usb-server/Cargo.toml new file mode 100644 index 0000000..06aa511 --- /dev/null +++ b/crates/servers/usb-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "usb-server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/usb-server/src/lib.rs b/crates/servers/usb-server/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/usb-server/src/lib.rs @@ -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); + } +} diff --git a/crates/servers/user-manager/Cargo.toml b/crates/servers/user-manager/Cargo.toml new file mode 100644 index 0000000..afd92e9 --- /dev/null +++ b/crates/servers/user-manager/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "user-manager" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/servers/user-manager/src/lib.rs b/crates/servers/user-manager/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/servers/user-manager/src/lib.rs @@ -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); + } +} diff --git a/crates/types/Cargo.toml b/crates/types/Cargo.toml new file mode 100644 index 0000000..616db51 --- /dev/null +++ b/crates/types/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "types" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/types/src/address.rs b/crates/types/src/address.rs new file mode 100644 index 0000000..691c7f1 --- /dev/null +++ b/crates/types/src/address.rs @@ -0,0 +1,5 @@ +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct EntryPoint(usize); + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct StackPointer(usize); diff --git a/crates/types/src/bounded.rs b/crates/types/src/bounded.rs new file mode 100644 index 0000000..28a601a --- /dev/null +++ b/crates/types/src/bounded.rs @@ -0,0 +1,4 @@ +use crate::macros::bounded; + +bounded!(CapSlot, u8, 0, 63); +bounded!(Priority, u8, 0, 31); diff --git a/crates/types/src/generation.rs b/crates/types/src/generation.rs new file mode 100644 index 0000000..34b0c4d --- /dev/null +++ b/crates/types/src/generation.rs @@ -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 + } +} diff --git a/crates/types/src/id.rs b/crates/types/src/id.rs new file mode 100644 index 0000000..d93e6b9 --- /dev/null +++ b/crates/types/src/id.rs @@ -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); diff --git a/crates/types/src/lib.rs b/crates/types/src/lib.rs new file mode 100644 index 0000000..f356f1d --- /dev/null +++ b/crates/types/src/lib.rs @@ -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; diff --git a/crates/types/src/macros.rs b/crates/types/src/macros.rs new file mode 100644 index 0000000..86078fd --- /dev/null +++ b/crates/types/src/macros.rs @@ -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 { + 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; diff --git a/crates/types/src/permission.rs b/crates/types/src/permission.rs new file mode 100644 index 0000000..21a23a3 --- /dev/null +++ b/crates/types/src/permission.rs @@ -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 + } +} diff --git a/crates/types/src/time.rs b/crates/types/src/time.rs new file mode 100644 index 0000000..b7d89d7 --- /dev/null +++ b/crates/types/src/time.rs @@ -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); diff --git a/crates/userspace/Cargo.toml b/crates/userspace/Cargo.toml new file mode 100644 index 0000000..e620937 --- /dev/null +++ b/crates/userspace/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "userspace" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/userspace/src/lib.rs b/crates/userspace/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/crates/userspace/src/lib.rs @@ -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); + } +}