提交 4b949664 编写于 作者: hm12299's avatar hm12299

commit kprobes v0.1.0 && add symbol table

上级

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
FROM ubuntu:18.04
LABEL maintainer="dinghao188" \
version="1.1" \
description="ubuntu 18.04 with tools for tsinghua's rCore-Tutorial-V3"
#install some deps
RUN set -x \
&& apt-get update \
&& apt-get install -y curl wget autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
gawk build-essential bison flex texinfo gperf libtool patchutils bc xz-utils \
zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3
#install rust and qemu
RUN set -x; \
RUSTUP='/root/rustup.sh' \
&& cd $HOME \
#install rust
&& curl https://sh.rustup.rs -sSf > $RUSTUP && chmod +x $RUSTUP \
&& $RUSTUP -y --default-toolchain nightly --profile minimal \
#compile qemu
&& wget https://ftp.osuosl.org/pub/blfs/conglomeration/qemu/qemu-5.0.0.tar.xz \
&& tar xvJf qemu-5.0.0.tar.xz \
&& cd qemu-5.0.0 \
&& ./configure --target-list=riscv64-softmmu,riscv64-linux-user \
&& make -j$(nproc) install \
&& cd $HOME && rm -rf qemu-5.0.0 qemu-5.0.0.tar.xz
#for chinese network
RUN set -x; \
APT_CONF='/etc/apt/sources.list'; \
CARGO_CONF='/root/.cargo/config'; \
BASHRC='/root/.bashrc' \
&& echo 'export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static' >> $BASHRC \
&& echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup' >> $BASHRC \
&& touch $CARGO_CONF \
&& echo '[source.crates-io]' > $CARGO_CONF \
&& echo "replace-with = 'ustc'" >> $CARGO_CONF \
&& echo '[source.ustc]' >> $CARGO_CONF \
&& echo 'registry = "git://mirrors.ustc.edu.cn/crates.io-index"' >> $CARGO_CONF
\ No newline at end of file
此差异已折叠。
DOCKER_NAME ?= dinghao188/rcore-tutorial
.PHONY: docker build_docker
docker:
docker run --rm -it --mount type=bind,source=$(shell pwd),destination=/mnt ${DOCKER_NAME}
build_docker:
docker build -t ${DOCKER_NAME} .
# 更新日志
### 11.28
提交第一代kprobes
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "ansi_term"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
dependencies = [
"winapi",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "bitflags"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "2.33.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
dependencies = [
"ansi_term",
"atty",
"bitflags",
"strsim",
"textwrap",
"unicode-width",
"vec_map",
]
[[package]]
name = "easy-fs"
version = "0.1.0"
dependencies = [
"lazy_static",
"spin 0.7.1",
]
[[package]]
name = "easy-fs-fuse"
version = "0.1.0"
dependencies = [
"clap",
"easy-fs",
"rand",
]
[[package]]
name = "getrandom"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin 0.5.2",
]
[[package]]
name = "libc"
version = "0.2.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
[[package]]
name = "ppv-lite86"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
[[package]]
name = "rand"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
"rand_hc",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom",
]
[[package]]
name = "rand_hc"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
dependencies = [
"rand_core",
]
[[package]]
name = "spin"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spin"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13287b4da9d1207a4f4929ac390916d64eacfe236a487e9a9f5b3be392be5162"
[[package]]
name = "strsim"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "textwrap"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
dependencies = [
"unicode-width",
]
[[package]]
name = "unicode-width"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
[[package]]
name = "vec_map"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[package]
name = "easy-fs-fuse"
version = "0.1.0"
authors = ["Yifan Wu <shinbokuow@163.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = "2.33.3"
easy-fs = { path = "../easy-fs" }
rand = "0.8.0"
\ No newline at end of file
use easy_fs::{
BlockDevice,
EasyFileSystem,
};
use std::fs::{File, OpenOptions, read_dir};
use std::io::{Read, Write, Seek, SeekFrom};
use std::sync::Mutex;
use std::sync::Arc;
use clap::{Arg, App};
const BLOCK_SZ: usize = 512;
struct BlockFile(Mutex<File>);
impl BlockDevice for BlockFile {
fn read_block(&self, block_id: usize, buf: &mut [u8]) {
let mut file = self.0.lock().unwrap();
file.seek(SeekFrom::Start((block_id * BLOCK_SZ) as u64))
.expect("Error when seeking!");
assert_eq!(file.read(buf).unwrap(), BLOCK_SZ, "Not a complete block!");
// file.read(buf).unwrap();
// println!("{:?}",buf);
}
fn write_block(&self, block_id: usize, buf: &[u8]) {
let mut file = self.0.lock().unwrap();
file.seek(SeekFrom::Start((block_id * BLOCK_SZ) as u64))
.expect("Error when seeking!");
assert_eq!(file.write(buf).unwrap(), BLOCK_SZ, "Not a complete block!");
}
}
fn main() {
easy_fs_pack().expect("Error when packing easy-fs!");
}
fn easy_fs_pack() -> std::io::Result<()> {
let matches = App::new("EasyFileSystem packer")
.arg(Arg::with_name("source")
.short("s")
.long("source")
.takes_value(true)
.help("Executable source dir(with backslash)")
)
.arg(Arg::with_name("target")
.short("t")
.long("target")
.takes_value(true)
.help("Executable target dir(with backslash)")
)
.get_matches();
let src_path = matches.value_of("source").unwrap();
let target_path = matches.value_of("target").unwrap();
println!("src_path = {}\ntarget_path = {}", src_path, target_path);
let block_file = Arc::new(BlockFile(Mutex::new({
let f = OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open(format!("{}{}", target_path, "fs.img"))?;
f.set_len(8192 * 512 * 2).unwrap();
f
})));
// 4MiB, at most 4095 files
let efs = EasyFileSystem::create(
block_file.clone(),
8192*2,
1,
);
let root_inode = Arc::new(EasyFileSystem::root_inode(&efs));
let apps: Vec<_> = read_dir(src_path)
.unwrap()
.into_iter()
.map(|dir_entry| {
let mut name_with_ext = dir_entry.unwrap().file_name().into_string().unwrap();
name_with_ext.drain(name_with_ext.find('.').unwrap()..name_with_ext.len());
name_with_ext
})
.collect();
for app in apps {
// load app data from host file system
let mut host_file = File::open(format!("{}{}", target_path, app)).unwrap();
let mut all_data: Vec<u8> = Vec::new();
host_file.read_to_end(&mut all_data).unwrap();
// create a file in easy-fs
let inode = root_inode.create(app.as_str()).unwrap();
// write data to easy-fs
inode.write_at(0, all_data.as_slice());
}
let mut host_file = File::open("../os/symtab").unwrap();
let mut all_data: Vec<u8> = Vec::new();
host_file.read_to_end(&mut all_data).unwrap();
let inode = root_inode.create("KERNEL_SYMTAB").unwrap();
inode.write_at(0, all_data.as_slice());
// list apps
for app in root_inode.ls() {
println!("{}", app);
}
Ok(())
}
#[test]
fn efs_test() -> std::io::Result<()> {
let block_file = Arc::new(BlockFile(Mutex::new({
let f = OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open("target/fs.img")?;
f.set_len(8192 * 512).unwrap();
f
})));
EasyFileSystem::create(
block_file.clone(),
4096,
1,
);
let efs = EasyFileSystem::open(block_file.clone());
let root_inode = EasyFileSystem::root_inode(&efs);
root_inode.create("filea");
root_inode.create("fileb");
for name in root_inode.ls() {
println!("{}", name);
}
let filea = root_inode.find("filea").unwrap();
let greet_str = "Hello, world!";
filea.write_at(0, greet_str.as_bytes());
//let mut buffer = [0u8; 512];
let mut buffer = [0u8; 233];
let len = filea.read_at(0, &mut buffer);
assert_eq!(
greet_str,
core::str::from_utf8(&buffer[..len]).unwrap(),
);
let mut random_str_test = |len: usize| {
filea.clear();
assert_eq!(
filea.read_at(0, &mut buffer),
0,
);
let mut str = String::new();
use rand;
// random digit
for _ in 0..len {
str.push(char::from('0' as u8 + rand::random::<u8>() % 10));
}
filea.write_at(0, str.as_bytes());
let mut read_buffer = [0u8; 127];
let mut offset = 0usize;
let mut read_str = String::new();
loop {
let len = filea.read_at(offset, &mut read_buffer);
if len == 0 {
break;
}
offset += len;
read_str.push_str(
core::str::from_utf8(&read_buffer[..len]).unwrap()
);
}
assert_eq!(str, read_str);
};
random_str_test(4 * BLOCK_SZ);
random_str_test(8 * BLOCK_SZ + BLOCK_SZ / 2);
random_str_test(100 * BLOCK_SZ);
random_str_test(70 * BLOCK_SZ + BLOCK_SZ / 7);
random_str_test((12 + 128) * BLOCK_SZ);
random_str_test(400 * BLOCK_SZ);
random_str_test(1000 * BLOCK_SZ);
random_str_test(2000 * BLOCK_SZ);
Ok(())
}
{"rustc_fingerprint":9680999004345779706,"outputs":{"1164083562126845933":["rustc 1.51.0-nightly (b12290861 2021-01-29)\nbinary: rustc\ncommit-hash: b122908617436af187252572ed5db96850551380\ncommit-date: 2021-01-29\nhost: x86_64-unknown-linux-gnu\nrelease: 1.51.0-nightly\nLLVM version: 11.0.1\n",""],"4476964694761187371":["___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/hm/.rustup/toolchains/nightly-2021-01-30-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n",""],"2196823701345282402":["___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/hm/.rustup/toolchains/nightly-2021-01-30-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n",""],"13789308117277828956":["___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/hm/.rustup/toolchains/nightly-2021-01-30-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n",""]},"successes":{}}
\ No newline at end of file
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by cargo.
# For information about cache directory tags see https://bford.info/cachedir/
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":6214755231582055084,"profile":16668067249205866872,"path":11739022391346436216,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ansi_term-1bcbc63fb620672b/dep-lib-ansi_term"}}],"rustflags":[],"metadata":9249065116432808780,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":6214755231582055084,"profile":6299028598154287785,"path":11739022391346436216,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ansi_term-5e807deedeef1036/dep-lib-ansi_term"}}],"rustflags":[],"metadata":9249065116432808780,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10792472713283433088,"profile":16668067249205866872,"path":10663779723273801980,"deps":[[12253354796554471582,"libc",false,437232687787719248]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atty-876f46a8227d7fe7/dep-lib-atty"}}],"rustflags":[],"metadata":2329458237537140231,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10792472713283433088,"profile":6299028598154287785,"path":10663779723273801980,"deps":[[12253354796554471582,"libc",false,12209913066501481564]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atty-dde951656ce2938f/dep-lib-atty"}}],"rustflags":[],"metadata":2329458237537140231,"config":0}
\ No newline at end of file
{"rustc":6372856551041593746,"features":"","target":0,"profile":0,"path":0,"deps":[[4117749705314174326,"build_script_build",false,14033410611206788514]],"local":[{"Precalculated":"1.2.1"}],"rustflags":[],"metadata":0,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[\"default\"]","target":14123478400658042508,"profile":16668067249205866872,"path":14577645578326381711,"deps":[[4117749705314174326,"build_script_build",false,17989479374763196208]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-921a8a475b5af532/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":0}
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[\"default\"]","target":10088282520713642473,"profile":6299028598154287785,"path":5199947035798019380,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-b5e32c36ea7dcc2f/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":14564035643000669268,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[\"default\"]","target":14123478400658042508,"profile":6299028598154287785,"path":14577645578326381711,"deps":[[4117749705314174326,"build_script_build",false,17989479374763196208]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-df474a8ca45884a8/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":834697563557903354,"profile":6299028598154287785,"path":13310414845762533661,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-2909e55669d95bfc/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":834697563557903354,"profile":16668067249205866872,"path":13310414845762533661,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-d081dc850664d3b7/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[\"ansi_term\", \"atty\", \"color\", \"default\", \"strsim\", \"suggestions\", \"vec_map\"]","target":947658362877981564,"profile":16668067249205866872,"path":2283626703714986118,"deps":[[2302671250832397697,"strsim",false,10499857497085550711],[4117749705314174326,"bitflags",false,6017305789534060649],[6825496692837620059,"textwrap",false,8477038807880572796],[7790572894300225972,"ansi_term",false,16236152872744838173],[10632722147547604258,"unicode_width",false,11770078893010464686],[15251456120363369268,"atty",false,15638282717971059642],[18026345993996883719,"vec_map",false,12959144097653559736]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clap-1b41591c7cdacae2/dep-lib-clap"}}],"rustflags":[],"metadata":11011649356328218991,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[\"ansi_term\", \"atty\", \"color\", \"default\", \"strsim\", \"suggestions\", \"vec_map\"]","target":947658362877981564,"profile":6299028598154287785,"path":2283626703714986118,"deps":[[2302671250832397697,"strsim",false,1985286608465541037],[4117749705314174326,"bitflags",false,2865718943752546283],[6825496692837620059,"textwrap",false,15018390590309627235],[7790572894300225972,"ansi_term",false,2344271431572786286],[10632722147547604258,"unicode_width",false,6529164653983159528],[15251456120363369268,"atty",false,14933299850503380764],[18026345993996883719,"vec_map",false,17365273117592827]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clap-3bce1a3039c6f357/dep-lib-clap"}}],"rustflags":[],"metadata":11011649356328218991,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10091090017494426261,"profile":1613559695681135254,"path":1355478355610263590,"deps":[[1959576847129962996,"spin",false,9846630860748373904],[8536350174477403560,"lazy_static",false,14476557575275363421]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-69c367b275c5f0dc/dep-lib-easy-fs"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10091090017494426261,"profile":1613559695681135254,"path":17477853823272855715,"deps":[[1959576847129962996,"spin",false,9846630860748373904],[8536350174477403560,"lazy_static",false,14476557575275363421]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-b19fac6bc710e92a/dep-lib-easy-fs"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10091090017494426261,"profile":18074012566298724745,"path":1355478355610263590,"deps":[[1959576847129962996,"spin",false,18319967070327315174],[8536350174477403560,"lazy_static",false,1207579899904205437]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-bfbff995042708d3/dep-lib-easy-fs"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":10091090017494426261,"profile":18074012566298724745,"path":17477853823272855715,"deps":[[1959576847129962996,"spin",false,18319967070327315174],[8536350174477403560,"lazy_static",false,1207579899904205437]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-db554bfbbf14c252/dep-lib-easy-fs"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":1613559695681135254,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,330956934968301296],[4928183015175390168,"rand",false,18183557859799844440],[11371918856526212924,"clap",false,15834969358294213503]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-4dcdbc8c02561aae/dep-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":18074012566298724745,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,648193025565236290],[4928183015175390168,"rand",false,14747511866896443737],[11371918856526212924,"clap",false,3513948095378057126]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-5dda9f64066318e0/dep-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":8341259748240011191,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,2181463752724803836],[4928183015175390168,"rand",false,18183557859799844440],[11371918856526212924,"clap",false,15834969358294213503]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-9b42dc9af1294f45/dep-test-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":8341259748240011191,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,330956934968301296],[4928183015175390168,"rand",false,18183557859799844440],[11371918856526212924,"clap",false,15834969358294213503]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-a5232c0c40dd1e16/dep-test-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":18074012566298724745,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,3268291200480764001],[4928183015175390168,"rand",false,14747511866896443737],[11371918856526212924,"clap",false,3513948095378057126]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-afe11e024a28b72d/dep-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
This file has an mtime of when this was started.
\ No newline at end of file
{"rustc":6372856551041593746,"features":"[]","target":7936748255789047174,"profile":1613559695681135254,"path":1036222786711178230,"deps":[[4093469818908271378,"easy_fs",false,2181463752724803836],[4928183015175390168,"rand",false,18183557859799844440],[11371918856526212924,"clap",false,15834969358294213503]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/easy-fs-fuse-c81fd7681cc508fe/dep-bin-easy-fs-fuse"}}],"rustflags":[],"metadata":4791657899108178287,"config":0}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册