diff --git a/Cargo.toml b/Cargo.toml index 7ad78a13d85d405f270daa82f2f4fb3e044a03c6..e5b4d61e49a8576cd2adcc5799f6d4b2db317fb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,8 @@ -[package] -name = "process1" -version = "0.1.0" -authors = ["Shinwell Hu "] -edition = "2018" - -license = "MulanPSL-2.0" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -signal-hook = { version = "0.3.7", features = ["extended-siginfo"] } - +[workspace] +members = [ + "libs/utils", + "libs/event", + "libs/dbus", + "src/main", + "tests", +] diff --git a/docker-run.sh b/docker-run.sh index 1fd24a28252f080e20e762a7eab1fe32bbce6320..35ef3e1808f6477c6858d45e73be02d2ed845632 100755 --- a/docker-run.sh +++ b/docker-run.sh @@ -47,6 +47,7 @@ cargo build --target x86_64-unknown-linux-musl || exit 1 #!.docker build echo -e "\n\n\n---!!!DOCKER BUILD!!!---" +docker rmi process1 -f > /dev/null 2>&1 docker build --no-cache --tag process1 `pwd` || exit 1 #!.docker run diff --git a/libs/cgroup/Cargo.toml b/libs/cgroup/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..b99993879713154f5c9ed121e69ce4102314708d --- /dev/null +++ b/libs/cgroup/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "cgroup" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/cgroup/src/lib.rs b/libs/cgroup/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/cgroup/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/dbus/Cargo.toml b/libs/dbus/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..ad47cd972b989fe55da2b8a12461f062f047ae49 --- /dev/null +++ b/libs/dbus/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "dbus" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/dbus/src/lib.rs b/libs/dbus/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/dbus/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/event/Cargo.toml b/libs/event/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..591a69e3db73f0150acbc7af19ee8ff00c6a9f5d --- /dev/null +++ b/libs/event/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "event" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/event/src/lib.rs b/libs/event/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/event/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/job/Cargo.toml b/libs/job/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..2c506d8c879b9e31a5d0ffa9109b8d3ddb8103c3 --- /dev/null +++ b/libs/job/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "job" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/job/src/lib.rs b/libs/job/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/job/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/udev/Cargo.toml b/libs/udev/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..e9d2444cfd42b3c16b6868f60baf7578681a20c3 --- /dev/null +++ b/libs/udev/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "udev" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/udev/src/lib.rs b/libs/udev/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/udev/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/unit/Cargo.toml b/libs/unit/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..7a7e1f703428788d7861d414dc23b839270bb453 --- /dev/null +++ b/libs/unit/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "unit" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/libs/unit/src/lib.rs b/libs/unit/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/libs/unit/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/libs/utils/Cargo.toml b/libs/utils/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..ff2cec4289fd66d94ef4b0ac9dcb2f6ce729b2bf --- /dev/null +++ b/libs/utils/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "utils" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["dylib", "rlib"] + +[dependencies] diff --git a/libs/utils/src/lib.rs b/libs/utils/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..eda363d607040451f0af7beca14cf3f1266f3c89 --- /dev/null +++ b/libs/utils/src/lib.rs @@ -0,0 +1 @@ +pub mod macros; diff --git a/libs/utils/src/macros.rs b/libs/utils/src/macros.rs new file mode 100644 index 0000000000000000000000000000000000000000..3ae0c1d8ef2637ef80f706a3f1f214eae32975de --- /dev/null +++ b/libs/utils/src/macros.rs @@ -0,0 +1,14 @@ +#![allow(unused_macros)] +#[macro_export] + +macro_rules! syscall { + ($fn: ident ( $($arg: expr),* $(,)* ) ) => {{ + let res = unsafe { libc::$fn($($arg, )*) }; + if res == -1 { + Err(std::io::Error::last_os_error()) + } else { + Ok(res) + } + }}; +} + diff --git a/src/bootup/Cargo.toml b/src/bootup/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..b03c8583902857264e5c14d8c6d19413f27992f2 --- /dev/null +++ b/src/bootup/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "bootup" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/bootup/src/main.rs b/src/bootup/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a --- /dev/null +++ b/src/bootup/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/src/loggerd/Cargo.toml b/src/loggerd/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..4315a66b33c75bd4beafa317841a5b7c64ef1451 --- /dev/null +++ b/src/loggerd/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "loggerd" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/loggerd/src/main.rs b/src/loggerd/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a --- /dev/null +++ b/src/loggerd/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/src/logind/Cargo.toml b/src/logind/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..ca1b9e38a1492d0cc2bd9ba3969f388112ed65b4 --- /dev/null +++ b/src/logind/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "logind" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/logind/src/lib.rs b/src/logind/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/src/logind/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/src/main/Cargo.toml b/src/main/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..8fe34953067c03b1937927194c652a602902b5b0 --- /dev/null +++ b/src/main/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "process1" +version = "0.1.0" +authors = ["Shinwell Hu "] +edition = "2018" + +license = "MulanPSL-2.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +signal-hook = { version = "0.3.7", features = ["extended-siginfo"] } +utils = { path = "../../libs/utils" } +libc = { version = "^0.2" } + diff --git a/src/main.rs b/src/main/src/main.rs similarity index 96% rename from src/main.rs rename to src/main/src/main.rs index 2a927300aba3afa4ef355855eb5d8ddab3375599..7dfdc111aa8244e226912ceba80e182b3e88483b 100644 --- a/src/main.rs +++ b/src/main/src/main.rs @@ -1,3 +1,5 @@ +use utils::syscall; + use std::io::Error; use std::io::BufRead; use std::fs::File; @@ -29,6 +31,7 @@ fn main() -> Result<(), Error> { // inittab is obsolated by systemd, should we honor the legacy config in that ? // systemd use /etc/systemd/system/default.target, which is a sym link to actual target. // fork process to do system initializaion + println!("PID: {:?}", syscall!(fork())); match parse_inittab() { Err(why) => panic!("{:?}", why), @@ -52,6 +55,5 @@ fn main() -> Result<(), Error> { } } } - println!("Hello, world!"); Ok(()) } diff --git a/src/manager/Cargo.toml b/src/manager/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..2b70869722790ea970341e9bdbb4752e6b868cd9 --- /dev/null +++ b/src/manager/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "manager" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/manager/src/main.rs b/src/manager/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a --- /dev/null +++ b/src/manager/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/src/shutdown/Cargo.toml b/src/shutdown/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..ac0f04e4c523441b4b123359f4a7439b74edd8f3 --- /dev/null +++ b/src/shutdown/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "shutdown" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/shutdown/src/main.rs b/src/shutdown/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a --- /dev/null +++ b/src/shutdown/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/src/udevd/Cargo.toml b/src/udevd/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..76e2913930be5aebd16017a5404b4f1935e08d38 --- /dev/null +++ b/src/udevd/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "udevd" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/udevd/src/lib.rs b/src/udevd/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..31e1bb209f98ec5fc6b7cbea4c4766a555c87247 --- /dev/null +++ b/src/udevd/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/tests/Cargo.toml b/tests/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..558d991bd9051fe95f93e924ebea67fc476e38c0 --- /dev/null +++ b/tests/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "tests" +version = "0.1.0" +authors = ["overweight "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/tests/src/main.rs b/tests/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a --- /dev/null +++ b/tests/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}