diff --git a/Cargo.lock b/Cargo.lock index 4d6e421b8c..9e17891e07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ "pcid", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "spin", ] @@ -52,11 +52,11 @@ dependencies = [ "log", "num-derive", "num-traits", - "parking_lot 0.12.5", + "parking_lot 0.12.3", "plain", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "rustc-hash", "scheme-utils", @@ -76,7 +76,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -100,7 +100,7 @@ dependencies = [ "libredox", "log", "pcid", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "serde", ] @@ -181,9 +181,9 @@ checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arrayvec" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "atty" @@ -206,7 +206,7 @@ dependencies = [ "libc", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -238,7 +238,7 @@ dependencies = [ "fdt 0.2.0-alpha1", "libredox", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -342,9 +342,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.2.65" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "shlex", @@ -436,7 +436,7 @@ dependencies = [ "libredox", "log", "redox-log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -526,7 +526,7 @@ dependencies = [ "libc", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -535,14 +535,14 @@ version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" dependencies = [ - "defmt 1.1.0", + "defmt 1.1.1", ] [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -550,12 +550,11 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.118", @@ -594,7 +593,7 @@ dependencies = [ "log", "partitionlib", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -611,7 +610,7 @@ dependencies = [ "log", "redox-ioctl", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -622,7 +621,7 @@ dependencies = [ "daemon", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -678,7 +677,7 @@ dependencies = [ "i2c-interface", "libredox", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "serde", ] @@ -695,7 +694,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -775,7 +774,7 @@ dependencies = [ "ransid", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -795,7 +794,7 @@ dependencies = [ "ransid", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -952,7 +951,7 @@ dependencies = [ "libredox", "log", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "scheme-utils", "serde", @@ -1027,9 +1026,9 @@ dependencies = [ [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "hwd" @@ -1041,7 +1040,7 @@ dependencies = [ "fdt 0.1.5", "libredox", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", ] @@ -1056,7 +1055,7 @@ dependencies = [ "i2c-interface", "libredox", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "serde", ] @@ -1076,7 +1075,7 @@ dependencies = [ "log", "orbclient", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "scheme-utils", "serde", @@ -1086,7 +1085,7 @@ dependencies = [ name = "i2c-interface" version = "0.1.0" dependencies = [ - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "serde", ] @@ -1101,7 +1100,7 @@ dependencies = [ "libredox", "log", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "scheme-utils", "serde", @@ -1142,7 +1141,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -1157,7 +1156,7 @@ dependencies = [ "pcid", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "spin", ] @@ -1180,7 +1179,7 @@ dependencies = [ "range-alloc", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "void", ] @@ -1202,7 +1201,7 @@ dependencies = [ "libc", "libredox", "plain", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "serde", "serde_json", "toml", @@ -1219,7 +1218,7 @@ dependencies = [ "log", "orbclient", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -1233,7 +1232,7 @@ dependencies = [ "daemon", "libredox", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "serde", ] @@ -1249,7 +1248,7 @@ dependencies = [ "i2c-interface", "libredox", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "serde", ] @@ -1269,7 +1268,7 @@ dependencies = [ "pci_types", "pcid", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "scheme-utils", "serde", @@ -1293,10 +1292,10 @@ dependencies = [ "daemon", "libc", "libredox", - "rand 0.10.1", + "rand 0.10.2", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -1323,7 +1322,7 @@ dependencies = [ "libredox", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -1351,15 +1350,13 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libredox" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +version = "0.1.18+rb0.2.5" dependencies = [ "bitflags 2.13.0", "ioslice", "libc", "plain", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -1383,7 +1380,16 @@ dependencies = [ "driver-block", "libredox", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", +] + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "git+https://github.com/Amanieu/parking_lot.git?rev=0.12.3#a29dd3d4ff661f73fd5cf638584bc4c5de2ad347" +dependencies = [ + "autocfg", + "scopeguard", ] [[package]] @@ -1408,7 +1414,7 @@ dependencies = [ "daemon", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -1465,7 +1471,7 @@ dependencies = [ "redox-log", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "smoltcp", ] @@ -1517,11 +1523,11 @@ dependencies = [ "futures", "libredox", "log", - "parking_lot 0.12.5", + "parking_lot 0.12.3", "partitionlib", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "smallvec 1.15.2", ] @@ -1575,12 +1581,11 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +version = "0.12.3" +source = "git+https://github.com/Amanieu/parking_lot.git?rev=0.12.3#a29dd3d4ff661f73fd5cf638584bc4c5de2ad347" dependencies = [ - "lock_api", - "parking_lot_core 0.9.12", + "lock_api 0.4.12", + "parking_lot_core 0.9.10", ] [[package]] @@ -1597,15 +1602,14 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +version = "0.9.10" +source = "git+https://github.com/Amanieu/parking_lot.git?rev=0.12.3#a29dd3d4ff661f73fd5cf638584bc4c5de2ad347" dependencies = [ "cfg-if 1.0.4", "libc", "redox_syscall 0.5.18", "smallvec 1.15.2", - "windows-link", + "windows-targets", ] [[package]] @@ -1648,7 +1652,7 @@ dependencies = [ "pico-args", "plain", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "serde", ] @@ -1661,10 +1665,11 @@ dependencies = [ "common", "config", "daemon", + "libredox", "log", "pcid", "pico-args", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "serde", "toml", ] @@ -1696,28 +1701,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -1740,7 +1723,7 @@ dependencies = [ "orbclient", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -1751,7 +1734,7 @@ dependencies = [ "libredox", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "redox_termios", "scheme-utils", ] @@ -1785,7 +1768,7 @@ dependencies = [ "indexmap", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "slab", ] @@ -1816,9 +1799,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", "getrandom 0.4.3", @@ -1891,7 +1874,7 @@ dependencies = [ "rand_core 0.5.1", "raw-cpuid", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "sha2", ] @@ -1953,10 +1936,9 @@ dependencies = [ [[package]] name = "redox-ioctl" version = "0.1.0" -source = "git+https://gitlab.redox-os.org/redox-os/relibc.git#15a4a27a467a5c355b2a6ac50f2cf26e33c251c2" dependencies = [ "drm-sys", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -1972,19 +1954,17 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd26e368655cb4fdda914512c46c5640221ebe5fa6df5da19c941b9f06ed153" +version = "0.11.2+rb0.2.5" dependencies = [ "libredox", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] name = "redox_event" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c07d0d6d291e3a951bd847b1cd4af32fc6243d64116cf7702838c02797688b7" +checksum = "c5018d583d6d2f5499352aea8d177e9067d1eb03ab17c78169d5ba7a30001b15" dependencies = [ "bitflags 2.13.0", "libredox", @@ -2001,7 +1981,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.8.1" +version = "0.9.0+rb0.2.5" dependencies = [ "bitflags 2.13.0", ] @@ -2021,7 +2001,7 @@ dependencies = [ "libredox", "qemu-exit", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "redox_termios", ] @@ -2097,7 +2077,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -2112,7 +2092,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -2151,7 +2131,7 @@ dependencies = [ "log", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", "spin", ] @@ -2162,7 +2142,7 @@ version = "0.0.0" dependencies = [ "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -2329,7 +2309,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" dependencies = [ - "lock_api", + "lock_api 0.4.14", ] [[package]] @@ -2338,7 +2318,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" dependencies = [ - "lock_api", + "lock_api 0.4.14", ] [[package]] @@ -2526,7 +2506,7 @@ dependencies = [ "libredox", "log", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "ron", "scheme-utils", "serde", @@ -2557,7 +2537,7 @@ dependencies = [ "inputd", "log", "orbclient", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "rehid", "xhcid", ] @@ -2568,7 +2548,7 @@ version = "0.1.0" dependencies = [ "common", "log", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "xhcid", ] @@ -2582,7 +2562,7 @@ dependencies = [ "libredox", "plain", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "thiserror 2.0.18", "xhcid", ] @@ -2620,7 +2600,7 @@ dependencies = [ "orbclient", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -2641,7 +2621,7 @@ dependencies = [ "orbclient", "ransid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", ] [[package]] @@ -2657,7 +2637,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "spin", "static_assertions", "thiserror 2.0.18", @@ -2676,7 +2656,7 @@ dependencies = [ "log", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "static_assertions", "thiserror 2.0.18", ] @@ -2696,7 +2676,7 @@ dependencies = [ "orbclient", "pcid", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "spin", "static_assertions", "virtio-core", @@ -2713,7 +2693,7 @@ dependencies = [ "libredox", "log", "pcid", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "static_assertions", "virtio-core", ] @@ -2883,6 +2863,70 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "1.0.3" @@ -2906,7 +2950,7 @@ dependencies = [ "plain", "redox-scheme", "redox_event", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "regex", "scheme-utils", "serde", @@ -2943,7 +2987,7 @@ dependencies = [ "daemon", "libredox", "redox-scheme", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0+rb0.2.5", "scheme-utils", ] @@ -2952,7 +2996,3 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[patch.unused]] -name = "libredox" -version = "0.1.18" diff --git a/Cargo.toml b/Cargo.toml index f2ca28b04a..11a4169f10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -100,17 +100,17 @@ edid = "0.3.0" #TODO: edid is abandoned, fork it and maintain? fdt = "0.1.5" libc = "0.2.181" log = "0.4" -libredox = "0.1.17" +libredox = { path = "../libredox", default-features = true } orbclient = "0.3.51" -parking_lot = "0.12" +parking_lot = { git = "https://github.com/Amanieu/parking_lot.git", rev = "0.12.3", default-features = false } pico-args = "0.5" plain = "0.2.3" ransid = "0.4" -redox_event = "0.4.6" -redox-ioctl = { git = "https://gitlab.redox-os.org/redox-os/relibc.git" } +redox_event = "0.4.8" +redox-ioctl = { path = "../relibc/redox-ioctl" } redox-log = { git = "https://gitlab.redox-os.org/redox-os/redox-log.git" } -redox-rt = { git = "https://gitlab.redox-os.org/redox-os/relibc.git", default-features = false } -redox-scheme = "0.11.0" +redox-rt = { path = "../relibc/redox-rt", default-features = false } +redox-scheme = { path = "../redox-scheme" } redox_syscall = { path = "../syscall", features = ["std"] } redox_termios = "0.1.3" ron = "0.8.1" @@ -155,6 +155,18 @@ redox_syscall = { path = "../syscall" } # the local syscall fork). Now libredox::error::Error and # syscall::Error are the same type. libredox = { path = "../libredox" } +# Red Bear OS Phase J (extended): redox-scheme 0.11.x from crates.io +# pins redox_syscall = "0.9.0" exactly, which Cargo refuses to +# satisfy with the local +rb0.2.5 fork (0.9.0+rb0.2.5). Without this +# patch, Cargo pulls crates.io redox-scheme which transitively +# pulls crates.io redox_syscall 0.9.0, leading to two different +# `syscall::Error` types and E0277 errors in scheme-utils / daemon. +# Patch redox-scheme to the local fork at ../redox-scheme/ which +# has its redox_syscall and libredox dep requirements bumped to +# the +rb0.2.5 versions. The local fork is a thin pass-through of +# upstream redox-scheme 0.11.2 source with only the dep versions +# updated — no behavioural changes. +redox-scheme = { path = "../redox-scheme" } [patch."https://gitlab.redox-os.org/redox-os/relibc.git"] #redox-ioctl = { path = "../../relibc/source/redox-ioctl" } diff --git a/bootstrap/Cargo.lock b/bootstrap/Cargo.lock index 2cc30762a4..ef7332cd05 100644 --- a/bootstrap/Cargo.lock +++ b/bootstrap/Cargo.lock @@ -4,15 +4,15 @@ version = 4 [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" [[package]] name = "bootstrap" @@ -41,13 +41,12 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "generic-rt" version = "0.1.0" -source = "git+https://gitlab.redox-os.org/redox-os/relibc.git#2b69838a481b7be9826b41e06a0b8f1346b80f9e" [[package]] name = "goblin" -version = "0.10.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983a6aafb3b12d4c41ea78d39e189af4298ce747353945ff5105b54a056e5cd9" +checksum = "17582616a7718cca54cec18e534a76c7c4aec11a8b9a85695712f262fd15a4c8" dependencies = [ "log", "plain", @@ -71,15 +70,13 @@ checksum = "5e571352c8a3b89074d12e3ee5173ffe162159105352aaaf1fc5764da747e31b" [[package]] name = "libc" -version = "0.2.181" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libredox" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +version = "0.1.18+rb0.2.5" dependencies = [ "bitflags", "libc", @@ -89,9 +86,9 @@ dependencies = [ [[package]] name = "linked_list_allocator" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" +checksum = "2b23ac50abb8261cb38c6e2a7192d3302e0836dac1628f6a93b82b4fad185897" dependencies = [ "spinning_top", ] @@ -107,9 +104,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "plain" @@ -128,9 +125,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -151,7 +148,6 @@ checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" [[package]] name = "redox-rt" version = "0.1.0" -source = "git+https://gitlab.redox-os.org/redox-os/relibc.git#2b69838a481b7be9826b41e06a0b8f1346b80f9e" dependencies = [ "bitflags", "generic-rt", @@ -165,9 +161,7 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e58cb7dee1058575f320f9bfa32c7c0eda857e285c2a163a0eb595d37add09cd" +version = "0.11.2+rb0.2.5" dependencies = [ "libredox", "redox_syscall", @@ -175,9 +169,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" +version = "0.9.0+rb0.2.5" dependencies = [ "bitflags", ] @@ -225,9 +217,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -236,6 +228,6 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" diff --git a/bootstrap/Cargo.toml b/bootstrap/Cargo.toml index be1f8326f6..41810a01d0 100644 --- a/bootstrap/Cargo.toml +++ b/bootstrap/Cargo.toml @@ -6,6 +6,11 @@ authors = ["4lDO2 <4lDO2@protonmail.com>"] edition = "2024" license = "MIT" +[workspace.dependencies] +libredox = { path = "../../libredox", default-features = false, features = ["base", "protocol", "redox_syscall"] } +redox_syscall = { path = "../../syscall" } +redox-scheme = { path = "../../redox-scheme", default-features = false } + [workspace] [dependencies] @@ -14,18 +19,18 @@ hashbrown = { version = "0.15", default-features = false, features = [ "default-hasher", ] } linked_list_allocator = "0.10" -libredox = { version = "0.1.16", default-features = false, features = ["protocol"] } +libredox = { workspace = true } log = { version = "0.4", default-features = false } plain = "0.2" redox-initfs = { path = "../initfs", default-features = false } -redox_syscall = "0.7.4" -redox-scheme = { version = "0.11.0", default-features = false } +redox_syscall = { workspace = true } +redox-scheme = { workspace = true } redox-path = "0.3.1" slab = { version = "0.4.9", default-features = false } arrayvec = { version = "0.7.6", default-features = false } [target.'cfg(target_os = "redox")'.dependencies] -redox-rt = { git = "https://gitlab.redox-os.org/redox-os/relibc.git", default-features = false } +redox-rt = { path = "../../relibc/redox-rt", default-features = false } [profile.release] panic = "abort" @@ -35,3 +40,7 @@ opt-level = "s" [profile.dev] panic = "abort" opt-level = "s" + +[patch.crates-io] +redox_syscall = { path = "../../syscall" } +libredox = { path = "../../libredox" } diff --git a/bootstrap/src/exec.rs b/bootstrap/src/exec.rs index 24df729806..7c96927a48 100644 --- a/bootstrap/src/exec.rs +++ b/bootstrap/src/exec.rs @@ -26,7 +26,7 @@ impl log::Log for Logger { let line = record.line().unwrap_or(0); let level = record.level(); let msg = record.args(); - let _ = syscall::write( + let _ = libredox::call::write( 1, alloc::format!("[{file}:{line} {level}] {msg}\n").as_bytes(), ); @@ -70,13 +70,13 @@ pub fn main() -> ! { let mut env_bytes = [0_u8; 4096]; let mut envs = { let fd = FdGuard::new( - syscall::openat( + libredox::call::openat( kernel_schemes .get(GlobalSchemes::Sys) .expect("failed to get sys fd") .as_raw_fd(), "env", - O_RDONLY | O_CLOEXEC, + (O_RDONLY | O_CLOEXEC) as i32, 0, ) .expect("bootstrap: failed to open env"), @@ -206,7 +206,7 @@ pub fn main() -> ! { const CWD: &[u8] = b"/scheme/initfs"; let cwd_fd = FdGuard::new( - syscall::openat(initns_fd.as_raw_fd(), "/scheme/initfs", O_STAT, 0) + libredox::call::openat(initns_fd.as_raw_fd(), "/scheme/initfs", O_STAT as i32, 0) .expect("failed to open cwd fd"), ) .to_upper() @@ -225,7 +225,7 @@ pub fn main() -> ! { let path = "/scheme/initfs/bin/init"; let image_file = FdGuard::new( - syscall::openat(extrainfo.ns_fd.unwrap(), path, O_RDONLY | O_CLOEXEC, 0) + libredox::call::openat(extrainfo.ns_fd.unwrap(), path, (O_RDONLY | O_CLOEXEC) as i32, 0) .expect("failed to open init"), ) .to_upper() @@ -252,10 +252,10 @@ pub fn main() -> ! { // null-terminated. Violating this should therefore give the "format error" ENOEXEC. let interp_cstr = CStr::from_bytes_with_nul(&interp_path).expect("interpreter not valid C str"); let interp_file = FdGuard::new( - syscall::openat( + libredox::call::openat( extrainfo.ns_fd.unwrap(), // initns, not initfs! interp_cstr.to_str().expect("interpreter not UTF-8"), - O_RDONLY | O_CLOEXEC, + (O_RDONLY | O_CLOEXEC) as i32, 0, ) .expect("failed to open dynamic linker"), @@ -288,13 +288,13 @@ pub(crate) fn spawn( inner: impl FnOnce(FdGuard, Socket, FdGuard, KernelSchemeMap) -> !, ) -> (FdGuard, FdGuard, KernelSchemeMap, FdGuard) { let read = FdGuard::new( - syscall::openat( + libredox::call::openat( kernel_schemes .get(GlobalSchemes::Pipe) .expect("failed to get pipe fd") .as_raw_fd(), "", - O_CLOEXEC, + O_CLOEXEC as i32, 0, ) .expect("failed to open sync read pipe"), @@ -302,7 +302,7 @@ pub(crate) fn spawn( // The write pipe will not inherit O_CLOEXEC, but is closed by the daemon later. let write = FdGuard::new( - syscall::dup(read.as_raw_fd(), b"write").expect("failed to open sync write pipe"), + libredox::call::dup(read.as_raw_fd(), b"write").expect("failed to open sync write pipe"), ); match fork_impl(&ForkArgs::Init { diff --git a/bootstrap/src/initfs.rs b/bootstrap/src/initfs.rs index 209e771f37..d689a13d04 100644 --- a/bootstrap/src/initfs.rs +++ b/bootstrap/src/initfs.rs @@ -446,6 +446,22 @@ pub unsafe extern "C" fn redox_write_v1(fd: usize, ptr: *const u8, len: usize) - })) as isize } +#[unsafe(no_mangle)] +pub unsafe extern "C" fn redox_openat_v1( + fd: usize, + buf: *const u8, + path_len: usize, + flags: u32, + fcntl_flags: u32, +) -> isize { + let path = unsafe { core::slice::from_raw_parts(buf, path_len) }; + let path_str = match core::str::from_utf8(path) { + Ok(s) => s, + Err(_) => return -(syscall::EINVAL as isize), + }; + Error::mux(syscall::openat(fd, path_str, flags as usize, fcntl_flags as usize)) as isize +} + #[unsafe(no_mangle)] pub unsafe fn redox_dup_v1(fd: usize, buf: *const u8, len: usize) -> isize { Error::mux(syscall::dup(fd, unsafe { @@ -458,6 +474,46 @@ pub extern "C" fn redox_close_v1(fd: usize) -> isize { Error::mux(syscall::close(fd)) as isize } +#[unsafe(no_mangle)] +pub extern "C" fn redox_fcntl_v0(fd: usize, cmd: usize, arg: usize) -> isize { + Error::mux(syscall::fcntl(fd, cmd, arg)) as isize +} + +#[unsafe(no_mangle)] +pub unsafe extern "C" fn redox_strerror_v1( + dst: *mut u8, + dst_len: *mut usize, + error: u32, +) -> isize { + let msg = match error { + x if x == syscall::EPERM as u32 => "Operation not permitted", + x if x == syscall::ENOENT as u32 => "No such file or directory", + x if x == syscall::EINTR as u32 => "Interrupted system call", + x if x == syscall::EIO as u32 => "I/O error", + x if x == syscall::EBADF as u32 => "Bad file descriptor", + x if x == syscall::EAGAIN as u32 => "Resource temporarily unavailable", + x if x == syscall::ENOMEM as u32 => "Cannot allocate memory", + x if x == syscall::EACCES as u32 => "Permission denied", + x if x == syscall::EFAULT as u32 => "Bad address", + x if x == syscall::EBUSY as u32 => "Device or resource busy", + x if x == syscall::EEXIST as u32 => "File exists", + x if x == syscall::ENOTDIR as u32 => "Not a directory", + x if x == syscall::EISDIR as u32 => "Is a directory", + x if x == syscall::EINVAL as u32 => "Invalid argument", + x if x == syscall::ENOSYS as u32 => "Function not implemented", + x if x == syscall::ENOTEMPTY as u32 => "Directory not empty", + _ => "Unknown error", + }; + let msg_bytes = msg.as_bytes(); + unsafe { + let avail = *dst_len; + let copy_len = avail.min(msg_bytes.len()); + core::ptr::copy_nonoverlapping(msg_bytes.as_ptr(), dst, copy_len); + *dst_len = copy_len; + copy_len as isize + } +} + #[unsafe(no_mangle)] pub unsafe extern "C" fn redox_sys_call_v0( fd: usize, diff --git a/bootstrap/src/initnsmgr.rs b/bootstrap/src/initnsmgr.rs index fa8b728a10..4e58092d9c 100644 --- a/bootstrap/src/initnsmgr.rs +++ b/bootstrap/src/initnsmgr.rs @@ -150,7 +150,7 @@ impl<'sock> NamespaceScheme<'sock> { error!("Permission denied to get scheme creation capability"); return Err(Error::new(EACCES)); } - Ok(syscall::dup(self.scheme_creation_cap.as_raw_fd(), &[])?) + Ok(libredox::call::dup(self.scheme_creation_cap.as_raw_fd(), &[])?) } _ => { error!("Unknown special reference: {}", reference); diff --git a/bootstrap/src/main.rs b/bootstrap/src/main.rs index f7dcd537cc..c838313e95 100644 --- a/bootstrap/src/main.rs +++ b/bootstrap/src/main.rs @@ -43,7 +43,7 @@ fn panic_handler(info: &core::panic::PanicInfo) -> ! { impl Write for Writer { fn write_str(&mut self, s: &str) -> core::fmt::Result { - syscall::write(1, s.as_bytes()) + libredox::call::write(1, s.as_bytes()) .map_err(|_| core::fmt::Error) .map(|_| ()) } diff --git a/bootstrap/src/procmgr.rs b/bootstrap/src/procmgr.rs index ce37d574c9..e1196455ce 100644 --- a/bootstrap/src/procmgr.rs +++ b/bootstrap/src/procmgr.rs @@ -549,7 +549,8 @@ enum WaitpidTarget { struct RawEventQueue(FdGuard); impl RawEventQueue { pub fn new(cap_fd: usize) -> Result { - syscall::openat(cap_fd, "", O_CREAT, 0) + libredox::call::openat(cap_fd, "", O_CREAT as i32, 0) + .map_err(Into::into) .map(FdGuard::new) .map(Self) } @@ -919,7 +920,7 @@ impl<'a> ProcScheme<'a> { mut op: OpCall, awoken: &mut VecDeque, ) -> Poll { - let id = op.fd; + let id = op.fd(); let (payload, metadata) = op.payload_and_metadata(); match self.handles[id] { Handle::Init => Response::ready_err(EBADF, op), @@ -2542,8 +2543,8 @@ impl<'a> ProcScheme<'a> { // Useful for debugging memory leaks. log::trace!("NEXT FD: {}", { - let nextfd = syscall::dup(0, &[]).unwrap(); - let _ = syscall::close(nextfd); + let nextfd = libredox::call::dup(0, &[]).unwrap(); + let _ = libredox::call::close(nextfd); nextfd }); log::trace!("{} processes", self.processes.len()); diff --git a/bootstrap/src/start.rs b/bootstrap/src/start.rs index 14a97ac2ad..722ee1df47 100644 --- a/bootstrap/src/start.rs +++ b/bootstrap/src/start.rs @@ -48,9 +48,9 @@ pub unsafe extern "C" fn start() -> ! { // NOTE: Assuming the debug scheme root fd is always placed at this position let debug_fd = syscall::UPPER_FDTBL_TAG + syscall::data::GlobalSchemes::Debug as usize; - let _ = syscall::openat(debug_fd, "", syscall::O_RDONLY, 0); // stdin - let _ = syscall::openat(debug_fd, "", syscall::O_WRONLY, 0); // stdout - let _ = syscall::openat(debug_fd, "", syscall::O_WRONLY, 0); // stderr + let _ = libredox::call::openat(debug_fd, "", syscall::O_RDONLY as i32, 0); // stdin + let _ = libredox::call::openat(debug_fd, "", syscall::O_WRONLY as i32, 0); // stdout + let _ = libredox::call::openat(debug_fd, "", syscall::O_WRONLY as i32, 0); // stderr unsafe { let _ = syscall::mprotect(4096, 4096, MapFlags::PROT_READ | MapFlags::MAP_PRIVATE) diff --git a/drivers/common/src/lib.rs b/drivers/common/src/lib.rs index 0f2ada3cf6..587e93b9b6 100644 --- a/drivers/common/src/lib.rs +++ b/drivers/common/src/lib.rs @@ -294,14 +294,14 @@ pub fn acquire_port_io_rights() -> Result<()> { extern "C" { fn redox_cur_thrfd_v0() -> usize; } - let kernel_fd = syscall::dup(unsafe { redox_cur_thrfd_v0() }, b"open_via_dup")?; + let kernel_fd = libredox::call::dup(unsafe { redox_cur_thrfd_v0() }, b"open_via_dup")?; let res = libredox::call::call_wo( kernel_fd, &[], syscall::CallFlags::empty(), &[ProcSchemeVerb::Iopl as u64], ); - let _ = syscall::close(kernel_fd); + let _ = libredox::call::close(kernel_fd); res?; Ok(()) } diff --git a/drivers/pcid-spawner/Cargo.toml b/drivers/pcid-spawner/Cargo.toml index 8c03f8d33a..c88d1dcfc7 100644 --- a/drivers/pcid-spawner/Cargo.toml +++ b/drivers/pcid-spawner/Cargo.toml @@ -8,6 +8,7 @@ license = "MIT" [dependencies] anyhow.workspace = true +libredox.workspace = true log.workspace = true pico-args.workspace = true redox_syscall.workspace = true diff --git a/drivers/pcid-spawner/src/main.rs b/drivers/pcid-spawner/src/main.rs index a968f4d494..7f1dad57c8 100644 --- a/drivers/pcid-spawner/src/main.rs +++ b/drivers/pcid-spawner/src/main.rs @@ -1,11 +1,30 @@ use std::fs; use std::process::Command; +use std::thread; +use std::time::Duration; use anyhow::{anyhow, Context, Result}; use pcid_interface::config::Config; use pcid_interface::PciFunctionHandle; +fn wait_for_pci_scheme() -> Result<()> { + let mut last_err = None; + for i in 0..40 { + match fs::read_dir("/scheme/pci") { + Ok(_) => return Ok(()), + Err(err) => { + last_err = Some(err); + if i == 0 { + log::debug!("pcid-spawner: waiting for /scheme/pci to become available"); + } + thread::sleep(Duration::from_millis(50)); + } + } + } + Err(last_err.unwrap().into()) +} + fn main() -> Result<()> { let mut args = pico_args::Arguments::from_env(); let initfs = args.contains("--initfs"); @@ -31,6 +50,8 @@ fn main() -> Result<()> { let config: Config = toml::from_str(&config_data)?; + wait_for_pci_scheme().context("/scheme/pci is not available")?; + for entry in fs::read_dir("/scheme/pci")? { let entry = entry.context("failed to get entry")?; let device_path = entry.path(); @@ -94,7 +115,7 @@ fn main() -> Result<()> { #[allow(deprecated, reason = "we can't yet move this to init")] daemon::Daemon::spawn(command); - syscall::close(channel_fd as usize).unwrap(); + libredox::call::close(channel_fd as usize).unwrap(); } Ok(()) diff --git a/init.d/00_ipcd.service b/init.d/00_ipcd.service index d9252da3ad..39a359a780 100644 --- a/init.d/00_ipcd.service +++ b/init.d/00_ipcd.service @@ -3,4 +3,4 @@ description = "IPC daemon" [service] cmd = "ipcd" -type = "oneshot_async" +type = "notify" diff --git a/init.d/00_pcid-spawner.service b/init.d/00_pcid-spawner.service index eb269342b1..8ba6fc6cec 100644 --- a/init.d/00_pcid-spawner.service +++ b/init.d/00_pcid-spawner.service @@ -3,4 +3,4 @@ description = "PCI driver spawner" [service] cmd = "pcid-spawner" -type = "oneshot_async" +type = "oneshot" diff --git a/init.d/00_ptyd.service b/init.d/00_ptyd.service index f7138836ac..2879c8ad70 100644 --- a/init.d/00_ptyd.service +++ b/init.d/00_ptyd.service @@ -3,4 +3,4 @@ description = "PTY daemon" [service] cmd = "ptyd" -type = "oneshot_async" +type = "notify" diff --git a/init.d/06_serial_services.service b/init.d/06_serial_services.service new file mode 100644 index 0000000000..6fa97c5f55 --- /dev/null +++ b/init.d/06_serial_services.service @@ -0,0 +1,8 @@ +[unit] +description = "Serial boot marker: services stage" +requires_weak = ["06_services.target"] + +[service] +cmd = "echo" +args = ["RB_STAGE_06_SERVICES"] +type = "oneshot" diff --git a/init.d/08_serial_userland.service b/init.d/08_serial_userland.service new file mode 100644 index 0000000000..82fa2f8006 --- /dev/null +++ b/init.d/08_serial_userland.service @@ -0,0 +1,8 @@ +[unit] +description = "Serial boot marker: userland stage" +requires_weak = ["08_userland.target"] + +[service] +cmd = "echo" +args = ["RB_STAGE_08_USERLAND"] +type = "oneshot" diff --git a/init.d/10_evdevd.service b/init.d/10_evdevd.service new file mode 100644 index 0000000000..3ef3c577ac --- /dev/null +++ b/init.d/10_evdevd.service @@ -0,0 +1,10 @@ +[unit] +description = "Evdev input daemon" +requires_weak = [ + "12_boot-late.target", + "00_pcid-spawner.service", +] + +[service] +cmd = "evdevd" +type = "oneshot_async" diff --git a/init.d/10_smolnetd.service b/init.d/10_smolnetd.service index 7d1ee4d7b9..b0e88ae357 100644 --- a/init.d/10_smolnetd.service +++ b/init.d/10_smolnetd.service @@ -7,5 +7,5 @@ requires_weak = [ ] [service] -cmd = "netstack" -type = "oneshot_async" +cmd = "smolnetd" +type = "notify" diff --git a/init.d/20_audiod.service b/init.d/20_audiod.service index 4c9da7c425..68332093d3 100644 --- a/init.d/20_audiod.service +++ b/init.d/20_audiod.service @@ -6,4 +6,4 @@ requires_weak = [ [service] cmd = "audiod" -type = "oneshot_async" +type = { scheme = "audio" } diff --git a/init.initfs.d/10_inputd.service b/init.initfs.d/10_inputd.service index 8d1fa9eb31..ba291046ab 100644 --- a/init.initfs.d/10_inputd.service +++ b/init.initfs.d/10_inputd.service @@ -3,4 +3,4 @@ description = "VT input and graphics multiplexer" [service] cmd = "inputd" -type = "oneshot_async" +type = { scheme = "input" } diff --git a/init.initfs.d/10_lived.service b/init.initfs.d/10_lived.service index 7da522a4cb..7745f4b761 100644 --- a/init.initfs.d/10_lived.service +++ b/init.initfs.d/10_lived.service @@ -4,4 +4,4 @@ description = "Live disk" [service] cmd = "lived" -type = "oneshot_async" +type = "notify" diff --git a/init.initfs.d/20_fbbootlogd.service b/init.initfs.d/20_fbbootlogd.service index da16d763a4..5a8bf3c820 100644 --- a/init.initfs.d/20_fbbootlogd.service +++ b/init.initfs.d/20_fbbootlogd.service @@ -4,4 +4,4 @@ requires_weak = ["10_inputd.service", "20_vesad.service"] [service] cmd = "fbbootlogd" -type = "oneshot_async" +type = { scheme = "fbbootlog" } diff --git a/init.initfs.d/20_fbcond.service b/init.initfs.d/20_fbcond.service index 712c8fd7cd..8db3dfdbeb 100644 --- a/init.initfs.d/20_fbcond.service +++ b/init.initfs.d/20_fbcond.service @@ -5,4 +5,4 @@ requires_weak = ["10_inputd.service", "20_vesad.service"] [service] cmd = "fbcond" args = ["2"] -type = "oneshot_async" +type = { scheme = "fbcon" } diff --git a/init.initfs.d/20_vesad.service b/init.initfs.d/20_vesad.service index 8fa8578d0f..4d907c314f 100644 --- a/init.initfs.d/20_vesad.service +++ b/init.initfs.d/20_vesad.service @@ -10,4 +10,4 @@ inherit_envs = [ "FRAMEBUFFER_HEIGHT", "FRAMEBUFFER_STRIDE", ] -type = "oneshot_async" +type = "notify" diff --git a/init.initfs.d/40_bcm2835-sdhcid.service b/init.initfs.d/40_bcm2835-sdhcid.service index b7ccdc3da8..8c05462017 100644 --- a/init.initfs.d/40_bcm2835-sdhcid.service +++ b/init.initfs.d/40_bcm2835-sdhcid.service @@ -6,4 +6,4 @@ condition_board = ["raspi3bp"] [service] cmd = "bcm2835-sdhcid" -type = "oneshot_async" +type = "notify" diff --git a/init.initfs.d/40_hwd.service b/init.initfs.d/40_hwd.service index 993b303762..cba12dde61 100644 --- a/init.initfs.d/40_hwd.service +++ b/init.initfs.d/40_hwd.service @@ -5,4 +5,4 @@ requires_weak = ["10_inputd.service", "10_lived.service", "20_graphics.target"] [service] cmd = "hwd" inherit_envs = ["RSDP_ADDR", "RSDP_SIZE"] -type = "oneshot_async" +type = "notify" diff --git a/init.initfs.d/40_ps2d.service b/init.initfs.d/40_ps2d.service index bbee2699ed..881e75ea52 100644 --- a/init.initfs.d/40_ps2d.service +++ b/init.initfs.d/40_ps2d.service @@ -5,4 +5,4 @@ condition_architecture = ["x86", "x86_64"] [service] cmd = "ps2d" -type = "oneshot_async" +type = "notify" diff --git a/init/src/scheduler.rs b/init/src/scheduler.rs index e211e5546c..aa5980e53d 100644 --- a/init/src/scheduler.rs +++ b/init/src/scheduler.rs @@ -87,6 +87,9 @@ impl Scheduler { self.pending.push_back(job); continue 'a; } + if let Ok(mut f) = std::fs::OpenOptions::new().write(true).open("/scheme/debug/no-preserve") { + let _ = writeln!(f, "FORCE {}", job.unit.0); + } } run(unit, init_config); diff --git a/ipcd/examples/event.rs b/ipcd/examples/event.rs index 81abeac4f8..16b9133a16 100644 --- a/ipcd/examples/event.rs +++ b/ipcd/examples/event.rs @@ -18,7 +18,7 @@ fn nonblock(file: &File) -> io::Result<()> { } fn dup(file: &File, buf: &str) -> io::Result { let stream = - syscall::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; + libredox::call::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; Ok(unsafe { File::from_raw_fd(stream as RawFd) }) } diff --git a/ipcd/examples/helloserver.rs b/ipcd/examples/helloserver.rs index d2d3927602..4b3f36b160 100644 --- a/ipcd/examples/helloserver.rs +++ b/ipcd/examples/helloserver.rs @@ -13,7 +13,7 @@ fn main() -> io::Result<()> { loop { let stream = - syscall::dup(server.as_raw_fd() as usize, b"listen").map_err(from_syscall_error)?; + libredox::call::dup(server.as_raw_fd() as usize, b"listen").map_err(from_syscall_error)?; let mut stream = unsafe { File::from_raw_fd(stream as RawFd) }; stream.write(b"Hello World!\n")?; diff --git a/ipcd/examples/logserver.rs b/ipcd/examples/logserver.rs index 82d3132547..e76dc41ee4 100644 --- a/ipcd/examples/logserver.rs +++ b/ipcd/examples/logserver.rs @@ -38,7 +38,7 @@ fn main() -> io::Result<()> { println!("Listener recevied flags: {:?}", event.flags); if event.flags & syscall::EVENT_WRITE == syscall::EVENT_WRITE { loop { - let stream = match syscall::dup(server.as_raw_fd() as usize, b"listen") + let stream = match libredox::call::dup(server.as_raw_fd() as usize, b"listen") .map_err(from_syscall_error) { Err(ref err) if err.kind() == io::ErrorKind::WouldBlock => break, diff --git a/ipcd/examples/main.rs b/ipcd/examples/main.rs index 1f9553588d..c8df5eb51e 100644 --- a/ipcd/examples/main.rs +++ b/ipcd/examples/main.rs @@ -20,7 +20,7 @@ fn nonblock(file: &File) -> io::Result<()> { } fn dup(file: &File, buf: &str) -> io::Result { let stream = - syscall::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; + libredox::call::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; Ok(unsafe { File::from_raw_fd(stream as RawFd) }) } diff --git a/ipcd/examples/unnamed.rs b/ipcd/examples/unnamed.rs index e519ed5fbf..44aa416ca4 100644 --- a/ipcd/examples/unnamed.rs +++ b/ipcd/examples/unnamed.rs @@ -9,7 +9,7 @@ fn from_syscall_error(error: syscall::Error) -> io::Error { } fn dup(file: &File, buf: &str) -> io::Result { let stream = - syscall::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; + libredox::call::dup(file.as_raw_fd() as usize, buf.as_bytes()).map_err(from_syscall_error)?; Ok(unsafe { File::from_raw_fd(stream as RawFd) }) } diff --git a/netstack/src/main.rs b/netstack/src/main.rs index b18f32266c..a441b946a3 100644 --- a/netstack/src/main.rs +++ b/netstack/src/main.rs @@ -112,7 +112,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> { event_queue .subscribe(ip_fd.inner().raw(), EventSource::IpScheme, EventFlags::READ) - .context("failed to listen to ip scheme events")?; + .map_err(|e| anyhow!("failed to listen to ip scheme events: {:?}", e))?; event_queue .subscribe( @@ -120,7 +120,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> { EventSource::UdpScheme, EventFlags::READ, ) - .context("failed to listen to udp scheme events")?; + .map_err(|e| anyhow!("failed to listen to udp scheme events: {:?}", e))?; event_queue .subscribe( @@ -128,7 +128,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> { EventSource::TcpScheme, EventFlags::READ, ) - .context("failed to listen to tcp scheme events")?; + .map_err(|e| anyhow!("failed to listen to tcp scheme events: {:?}", e))?; event_queue .subscribe( @@ -136,7 +136,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> { EventSource::IcmpScheme, EventFlags::READ, ) - .context("failed to listen to icmp scheme events")?; + .map_err(|e| anyhow!("failed to listen to icmp scheme events: {:?}", e))?; event_queue .subscribe( @@ -144,7 +144,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> { EventSource::NetcfgScheme, EventFlags::READ, ) - .context("failed to listen to netcfg scheme events")?; + .map_err(|e| anyhow!("failed to listen to netcfg scheme events: {:?}", e))?; let mut smolnetd = Smolnetd::new( network_fd,