transfer to local git!
This commit is contained in:
86
Cargo.lock
generated
Normal file
86
Cargo.lock
generated
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit_field"
|
||||||
|
version = "0.10.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "2.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
dependencies = [
|
||||||
|
"spin 0.9.8",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pic8259"
|
||||||
|
version = "0.10.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cb844b5b01db1e0b17938685738f113bfc903846f18932b378bc0eabfa40e194"
|
||||||
|
dependencies = [
|
||||||
|
"x86_64",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustversion"
|
||||||
|
version = "1.0.22"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scarab"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"pic8259",
|
||||||
|
"spin 0.5.2",
|
||||||
|
"volatile 0.2.7",
|
||||||
|
"x86_64",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.9.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "volatile"
|
||||||
|
version = "0.2.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f6b06ad3ed06fef1713569d547cdbdb439eafed76341820fb0e0344f29a41945"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "volatile"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "442887c63f2c839b346c192d047a7c87e73d0689c9157b00b53dcc27dd5ea793"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "x86_64"
|
||||||
|
version = "0.14.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b835097a84e4457323331ec5d6eb23d096066cbfb215d54096dcb4b2e85f500"
|
||||||
|
dependencies = [
|
||||||
|
"bit_field",
|
||||||
|
"bitflags",
|
||||||
|
"rustversion",
|
||||||
|
"volatile 0.4.6",
|
||||||
|
]
|
||||||
20
Cargo.toml
Normal file
20
Cargo.toml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[package]
|
||||||
|
name = "scarab"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Alexander Michael Feetham <123alexfeetham@gmail.com>"]
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# Building a static library
|
||||||
|
[lib]
|
||||||
|
crate-type = ["staticlib"]
|
||||||
|
|
||||||
|
# a basic libc implementation
|
||||||
|
[dependencies]
|
||||||
|
volatile = "0.2.6"
|
||||||
|
spin = "0.5.2"
|
||||||
|
x86_64 = "=0.14.11"
|
||||||
|
pic8259 = "0.10"
|
||||||
|
|
||||||
|
[dependencies.lazy_static]
|
||||||
|
version = "1.0"
|
||||||
|
features = ["spin_no_std"]
|
||||||
36
Makefile
Normal file
36
Makefile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
./out/scarab.img: ./out/isodir/boot/kernel.bin
|
||||||
|
cp ./boot/grub.cfg ./out/isodir/boot/grub/grub.cfg
|
||||||
|
grub-mkrescue -o ./out/scarab.img ./out/isodir
|
||||||
|
|
||||||
|
./out/isodir/boot/grub/grub.cfg: ./boot/grub.cfg
|
||||||
|
cp ./boot/grub.cfg ./out/isodir/boot/grub/grub.cfg
|
||||||
|
|
||||||
|
./out/isodir/boot/kernel.bin: ./out/boot.o ./out/rust_handshake.o ./out/multiboot_header.o ./out/libscarab.a ./boot/linker.ld
|
||||||
|
ld -n --gc-sections -o ./out/isodir/boot/kernel.bin -T ./boot/linker.ld ./out/multiboot_header.o ./out/boot.o ./out/rust_handshake.o ./target/x86_64-scarab_os/release/libscarab.a
|
||||||
|
|
||||||
|
# Rust code
|
||||||
|
./out/libscarab.a: ./src/lib.rs
|
||||||
|
@RUST_TARGET_PATH=$(shell pwd) cargo build --release
|
||||||
|
|
||||||
|
# Assembly booter
|
||||||
|
|
||||||
|
./out/multiboot_header.o: ./boot/multiboot_header.asm
|
||||||
|
nasm -felf64 ./boot/multiboot_header.asm -o ./out/multiboot_header.o
|
||||||
|
|
||||||
|
./out/rust_handshake.o: ./boot/rust_handshake.asm
|
||||||
|
nasm -felf64 ./boot/rust_handshake.asm -o ./out/rust_handshake.o
|
||||||
|
|
||||||
|
./out/boot.o: ./boot/boot.asm
|
||||||
|
nasm -felf64 ./boot/boot.asm -o ./out/boot.o
|
||||||
|
|
||||||
|
./out:
|
||||||
|
mkdir out
|
||||||
|
|
||||||
|
run:
|
||||||
|
qemu-system-x86_64 -display curses -drive format=raw,file=out/scarab.img -drive file=disk.img,format=raw,media=disk
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ./out/*
|
||||||
|
mkdir -p ./out/isodir/boot/grub
|
||||||
|
rm -rf target
|
||||||
|
cargo clean
|
||||||
99
README.md
Normal file
99
README.md
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# 🪲 ScarabOS
|
||||||
|
|
||||||
|
A minimal hobby operating system written in Rust for x86_64-EFI architecture.
|
||||||
|
|
||||||
|
ScarabOS is a learning project focused on systems programming concepts. Purely a project for understanding how operating systems work from the ground up.
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
Ensure you have the following installed:
|
||||||
|
|
||||||
|
| Tool | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `rustup` | Rust toolchain manager ([install here](https://rustup.rs/)) |
|
||||||
|
| `grub` | Bootloader |
|
||||||
|
| `nasm` | x86 assembler |
|
||||||
|
| `qemu-full` | Virtualization (recommended for testing) |
|
||||||
|
| `xorriso` | ISO image creation |
|
||||||
|
| `mtools` | FAT filesystem utilities |
|
||||||
|
|
||||||
|
**On Arch Linux:**
|
||||||
|
```bash
|
||||||
|
sudo pacman -S grub nasm qemu-full xorriso mtools
|
||||||
|
```
|
||||||
|
|
||||||
|
**On Ubuntu/Debian:**
|
||||||
|
```bash
|
||||||
|
sudo apt install grub-pc-bin nasm qemu-system-x86 xorriso mtools
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Building from Source
|
||||||
|
|
||||||
|
### 1. Set up Rust
|
||||||
|
|
||||||
|
Install the nightly toolchain (pinned to January 2024 for stability):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rustup install nightly
|
||||||
|
rustup component add rust-src
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Create virtual disk
|
||||||
|
|
||||||
|
Generate a raw disk image for the filesystem:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
qemu-img create -f raw disk.img 10M
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note:** Adjust size as needed (e.g. `50M` for 50 megabytes)
|
||||||
|
|
||||||
|
### 3. Compile
|
||||||
|
|
||||||
|
**First time setup:**
|
||||||
|
```bash
|
||||||
|
make clean
|
||||||
|
```
|
||||||
|
> ⚠️ Run `make clean` once before your first build
|
||||||
|
|
||||||
|
**Build the OS:**
|
||||||
|
```bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates `scarab.img`, your bootable OS image!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Running ScarabOS
|
||||||
|
|
||||||
|
Launch in QEMU with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make run
|
||||||
|
```
|
||||||
|
|
||||||
|
You'll boot into a minimal terminal where you can explore the basic command system.
|
||||||
|
> Use alt + 2 to open up the Qemu terminal and then type q or quit to exit the VM
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Learning Resources
|
||||||
|
|
||||||
|
This project was heavily inspired by:
|
||||||
|
- [Writing an OS in Rust](https://os.phil-opp.com/) by Philipp Oppermann
|
||||||
|
- My Operating Systems professor in university
|
||||||
|
- The Pintos educational OS
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
This is a personal learning project, but feel free to:
|
||||||
|
- **Fork** and experiment
|
||||||
|
- **Open issues** for interesting ideas
|
||||||
|
- **Share** your own OS development journey!
|
||||||
96
boot/boot.asm
Normal file
96
boot/boot.asm
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
global start
|
||||||
|
extern rust_handshake
|
||||||
|
|
||||||
|
section .text
|
||||||
|
bits 32
|
||||||
|
start:
|
||||||
|
; Grab stack pointer from GRUB
|
||||||
|
mov esp, stack_top
|
||||||
|
|
||||||
|
; Setup paging for long mode
|
||||||
|
call set_up_page_tables
|
||||||
|
call enable_paging
|
||||||
|
|
||||||
|
; load the 64-bit GDT
|
||||||
|
lgdt [gdt64.pointer]
|
||||||
|
|
||||||
|
jmp gdt64.code:rust_handshake
|
||||||
|
|
||||||
|
; move 'ok' characters to VGA buffer
|
||||||
|
mov dword [0xb8000], 0x2f4b2f4f
|
||||||
|
hlt
|
||||||
|
|
||||||
|
set_up_page_tables:
|
||||||
|
; map first page-map table to page pointer table
|
||||||
|
mov eax, page_pointer_table
|
||||||
|
or eax, 0b11
|
||||||
|
mov [page_map_table], eax
|
||||||
|
|
||||||
|
; map first page pointer table entry to page table table
|
||||||
|
mov eax, page_table
|
||||||
|
or eax, 0b11
|
||||||
|
mov [page_pointer_table], eax
|
||||||
|
|
||||||
|
; map each page table entry to a 2M page
|
||||||
|
mov ecx, 0
|
||||||
|
|
||||||
|
.map_page_table:
|
||||||
|
; map ecx-th page_table entry to a page that starts at address 2MiB*ecx
|
||||||
|
mov eax, 0x200000 ; 2MiB
|
||||||
|
mul ecx ; start address of ecx-th page
|
||||||
|
or eax, 0b10000011 ; present + writable + huge
|
||||||
|
mov [page_table + ecx * 8], eax ; map entry
|
||||||
|
|
||||||
|
; This is a for loop to map all 512 entries
|
||||||
|
; inside the page table
|
||||||
|
inc ecx ; i++
|
||||||
|
cmp ecx, 512 ; i != 512
|
||||||
|
jne .map_page_table ; loop!
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
enable_paging:
|
||||||
|
; load page map table to cr3 reg
|
||||||
|
mov eax, page_map_table
|
||||||
|
mov cr3, eax
|
||||||
|
|
||||||
|
; enable physical address extension flag to cr4 reg
|
||||||
|
mov eax, cr4
|
||||||
|
or eax, 1 << 5
|
||||||
|
mov cr4, eax
|
||||||
|
|
||||||
|
; set the long mode bit in the MSR
|
||||||
|
mov ecx, 0xC0000080
|
||||||
|
rdmsr
|
||||||
|
or eax, 1 << 8
|
||||||
|
wrmsr
|
||||||
|
|
||||||
|
; enable paging in the cr0 reg
|
||||||
|
mov eax, cr0
|
||||||
|
or eax, 1 << 31
|
||||||
|
mov cr0, eax
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
; Align each table
|
||||||
|
section .bss
|
||||||
|
align 4096
|
||||||
|
page_map_table:
|
||||||
|
resb 4096
|
||||||
|
page_pointer_table:
|
||||||
|
resb 4096
|
||||||
|
page_table:
|
||||||
|
resb 4096
|
||||||
|
stack_bottom:
|
||||||
|
resb 64
|
||||||
|
stack_top:
|
||||||
|
|
||||||
|
; Global Descriptor Table Setup
|
||||||
|
section .rodata
|
||||||
|
gdt64:
|
||||||
|
dq 0
|
||||||
|
.code: equ $ - gdt64
|
||||||
|
dq (1<<43) | (1<<44) | (1<<47) | (1<<53) ; code segment
|
||||||
|
.pointer:
|
||||||
|
dw $ - gdt64 - 1
|
||||||
|
dq gdt64
|
||||||
7
boot/grub.cfg
Normal file
7
boot/grub.cfg
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
set timeout=5
|
||||||
|
set default=0
|
||||||
|
|
||||||
|
menuentry "Scarab" {
|
||||||
|
multiboot2 /boot/kernel.bin
|
||||||
|
boot
|
||||||
|
}
|
||||||
16
boot/linker.ld
Normal file
16
boot/linker.ld
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
ENTRY(start)
|
||||||
|
|
||||||
|
SECTIONS {
|
||||||
|
. = 1M;
|
||||||
|
|
||||||
|
.boot :
|
||||||
|
{
|
||||||
|
/* ensure that the multiboot header is at the beginning */
|
||||||
|
KEEP(*(.multiboot_header))
|
||||||
|
}
|
||||||
|
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
*(.text)
|
||||||
|
}
|
||||||
|
}
|
||||||
15
boot/multiboot_header.asm
Normal file
15
boot/multiboot_header.asm
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
section .multiboot_header
|
||||||
|
header_start:
|
||||||
|
dd 0xe85250d6 ; magic number (multiboot 2)
|
||||||
|
dd 0 ; architecture 0 (protected mode i386)
|
||||||
|
dd header_end - header_start ; header length
|
||||||
|
; checksum
|
||||||
|
dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start))
|
||||||
|
|
||||||
|
; insert optional multiboot tags here
|
||||||
|
|
||||||
|
; required end tag
|
||||||
|
dw 0 ; type
|
||||||
|
dw 0 ; flags
|
||||||
|
dd 8 ; size
|
||||||
|
header_end:
|
||||||
20
boot/rust_handshake.asm
Normal file
20
boot/rust_handshake.asm
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
global rust_handshake
|
||||||
|
extern rust_main
|
||||||
|
|
||||||
|
section .text
|
||||||
|
bits 64
|
||||||
|
rust_handshake:
|
||||||
|
|
||||||
|
; load 0 into all data segment registers
|
||||||
|
mov ax, 0
|
||||||
|
mov ss, ax
|
||||||
|
mov ds, ax
|
||||||
|
mov es, ax
|
||||||
|
mov fs, ax
|
||||||
|
mov gs, ax
|
||||||
|
|
||||||
|
; Offload to rust
|
||||||
|
extern rust_main
|
||||||
|
call rust_main
|
||||||
|
|
||||||
|
hlt
|
||||||
BIN
out/boot.o
Normal file
BIN
out/boot.o
Normal file
Binary file not shown.
7
out/isodir/boot/grub/grub.cfg
Normal file
7
out/isodir/boot/grub/grub.cfg
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
set timeout=5
|
||||||
|
set default=0
|
||||||
|
|
||||||
|
menuentry "Scarab" {
|
||||||
|
multiboot2 /boot/kernel.bin
|
||||||
|
boot
|
||||||
|
}
|
||||||
BIN
out/isodir/boot/kernel.bin
Executable file
BIN
out/isodir/boot/kernel.bin
Executable file
Binary file not shown.
BIN
out/multiboot_header.o
Normal file
BIN
out/multiboot_header.o
Normal file
Binary file not shown.
BIN
out/rust_handshake.o
Normal file
BIN
out/rust_handshake.o
Normal file
Binary file not shown.
BIN
out/scarab.img
Normal file
BIN
out/scarab.img
Normal file
Binary file not shown.
1
rust-toolchain
Normal file
1
rust-toolchain
Normal file
@@ -0,0 +1 @@
|
|||||||
|
nightly-2024-03-01
|
||||||
29
src/boot.rs
Normal file
29
src/boot.rs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
use crate::interrupts;
|
||||||
|
use crate::keyboard;
|
||||||
|
use crate::vga_buffer;
|
||||||
|
use crate::{print, println};
|
||||||
|
|
||||||
|
pub extern "C" fn init() {
|
||||||
|
// Draw text in brown
|
||||||
|
vga_buffer::TERMINAL
|
||||||
|
.lock()
|
||||||
|
.set_color(vga_buffer::Color::Brown, vga_buffer::Color::Black);
|
||||||
|
|
||||||
|
println!(" _____ _ _____ _____");
|
||||||
|
println!("/ ___| | | | _ / ___|");
|
||||||
|
println!("\\ `--. ___ __ _ _ __ __ _| |__ | | | \\ `--.");
|
||||||
|
println!(" `--. \\/ __/ _` | '__/ _` | '_ \\| | | |`--. \\");
|
||||||
|
println!("/\\__/ / (_| (_| | | | (_| | |_) \\ \\_/ /\\__/ /");
|
||||||
|
println!("\\____/ \\___\\__,_|_| \\__,_|_.__/ \\___/\\____/");
|
||||||
|
|
||||||
|
// Reset Color
|
||||||
|
vga_buffer::TERMINAL
|
||||||
|
.lock()
|
||||||
|
.set_color(vga_buffer::Color::White, vga_buffer::Color::Black);
|
||||||
|
|
||||||
|
print!("try 'help'\n\n> ");
|
||||||
|
|
||||||
|
interrupts::init();
|
||||||
|
|
||||||
|
keyboard::keyboard_loop();
|
||||||
|
}
|
||||||
130
src/cli.rs
Normal file
130
src/cli.rs
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
use crate::vga_buffer::{Color, TERMINAL};
|
||||||
|
use crate::{print, println, vec};
|
||||||
|
use alloc::vec::Vec;
|
||||||
|
|
||||||
|
fn find_seperator(cmd: &vec::Vec<char>) -> usize {
|
||||||
|
// Finds first space in cmd
|
||||||
|
for i in 0..cmd.len() {
|
||||||
|
if cmd[i] == ' ' {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if unable to find space
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vec_char_starts_with(vec: &vec::Vec<char>, s: &str, n: usize) -> bool {
|
||||||
|
if vec.len() < n {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in 0..n {
|
||||||
|
if vec[i] != s.as_bytes()[i] as char {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vec_char_range_match(vec: &vec::Vec<char>, s: &str, a: usize, b: usize) -> bool {
|
||||||
|
if vec.len() < a || vec.len() < b {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in a..b {
|
||||||
|
if vec[i] != s.as_bytes()[i - a] as char {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_cmd(cmd: vec::Vec<char>) {
|
||||||
|
if cmd.len() == 0 {
|
||||||
|
print!("\n> ");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
print!("\n");
|
||||||
|
|
||||||
|
// Location of space in commands with arguments
|
||||||
|
let seperator = find_seperator(&cmd);
|
||||||
|
|
||||||
|
if seperator == 0 {
|
||||||
|
check_single_commands(&cmd);
|
||||||
|
} else {
|
||||||
|
check_arg_commands(&cmd, seperator);
|
||||||
|
}
|
||||||
|
|
||||||
|
print!("\n> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_single_commands(cmd: &vec::Vec<char>) {
|
||||||
|
if vec_char_starts_with(cmd, "clear", cmd.len()) {
|
||||||
|
TERMINAL.lock().clear();
|
||||||
|
} else if vec_char_starts_with(cmd, "error", cmd.len()) {
|
||||||
|
// This will fail, it is just here
|
||||||
|
// To produce a panic for debugging
|
||||||
|
let mut fail = vec![1];
|
||||||
|
fail[2] = 2;
|
||||||
|
} else if vec_char_starts_with(cmd, "color-test", cmd.len()) {
|
||||||
|
TERMINAL.lock().color_test();
|
||||||
|
} else if vec_char_starts_with(cmd, "help", cmd.len()) {
|
||||||
|
println!("======== Help: COMMANDS ========");
|
||||||
|
println!("Single commands:");
|
||||||
|
println!(" = help - shows this message");
|
||||||
|
println!(" = clear - clears the terminal");
|
||||||
|
println!(" = color-test - displays the possible colors");
|
||||||
|
println!(" = error - causes a kernel panic (via accessing a vector out of bounds)");
|
||||||
|
|
||||||
|
println!("Argument commands:");
|
||||||
|
println!(" = echo <text> - repeats entered text back");
|
||||||
|
println!(" = color <color> - changes the current terminal foreground color");
|
||||||
|
println!(" OPTIONS:");
|
||||||
|
println!(" - red");
|
||||||
|
println!(" - cyan");
|
||||||
|
println!(" - magenta");
|
||||||
|
println!(" - green");
|
||||||
|
println!(" - brown");
|
||||||
|
println!(" - light magenta");
|
||||||
|
println!(" - white");
|
||||||
|
} else {
|
||||||
|
println!("Command not found!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_arg_commands(cmd: &vec::Vec<char>, seperator: usize) {
|
||||||
|
if vec_char_starts_with(cmd, "echo ", seperator) {
|
||||||
|
print!("Scarab: ");
|
||||||
|
for letter in seperator + 1..cmd.len() {
|
||||||
|
print!("{}", cmd[letter]);
|
||||||
|
}
|
||||||
|
} else if vec_char_starts_with(cmd, "color ", seperator) {
|
||||||
|
let mut color: Color = Color::White;
|
||||||
|
|
||||||
|
if vec_char_range_match(cmd, "red", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::Red;
|
||||||
|
} else if vec_char_range_match(cmd, "cyan", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::Cyan;
|
||||||
|
} else if vec_char_range_match(cmd, "magenta", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::Magenta;
|
||||||
|
} else if vec_char_range_match(cmd, "green", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::Green;
|
||||||
|
} else if vec_char_range_match(cmd, "brown", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::Brown;
|
||||||
|
} else if vec_char_range_match(cmd, "light magenta", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::LightMagenta;
|
||||||
|
} else if vec_char_range_match(cmd, "white", seperator + 1, cmd.len()) {
|
||||||
|
color = Color::White;
|
||||||
|
} else {
|
||||||
|
println!("Unable to set color");
|
||||||
|
}
|
||||||
|
|
||||||
|
TERMINAL.lock().set_color(color, Color::Black);
|
||||||
|
} else {
|
||||||
|
println!("Command not found!");
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/interrupts.rs
Normal file
16
src/interrupts.rs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
use lazy_static::lazy_static;
|
||||||
|
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref IDT: InterruptDescriptorTable = {
|
||||||
|
let mut idt = InterruptDescriptorTable::new();
|
||||||
|
|
||||||
|
// TODO Register handlers here
|
||||||
|
|
||||||
|
idt
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn init() {
|
||||||
|
IDT.load();
|
||||||
|
}
|
||||||
220
src/keyboard.rs
Normal file
220
src/keyboard.rs
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
use crate::cli;
|
||||||
|
use crate::print;
|
||||||
|
use crate::vec::Vec;
|
||||||
|
use crate::vga_buffer;
|
||||||
|
use core::arch::asm;
|
||||||
|
|
||||||
|
// Reading ports using asm
|
||||||
|
#[inline(always)]
|
||||||
|
unsafe fn inb(port: u16) -> u8 {
|
||||||
|
let result: u8;
|
||||||
|
asm!("in al, dx", out("al") result, in("dx") port, options(nomem, nostack));
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_key() -> u8 {
|
||||||
|
unsafe {
|
||||||
|
loop {
|
||||||
|
// Poll the keyboard controller
|
||||||
|
let status: u8 = inb(0x64);
|
||||||
|
|
||||||
|
if status & 0x01 == 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the input
|
||||||
|
return inb(0x60);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn keyboard_loop() {
|
||||||
|
/*
|
||||||
|
|
||||||
|
No need to initialize the keyboard controller
|
||||||
|
as we did this in boot.asm
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Track keyboard inputs
|
||||||
|
let mut cmd = Vec::<char>::new();
|
||||||
|
|
||||||
|
//tracks if shift is held
|
||||||
|
let mut shift: bool = false;
|
||||||
|
|
||||||
|
// Wait for input
|
||||||
|
loop {
|
||||||
|
let scancode = get_key();
|
||||||
|
|
||||||
|
// check if shift is being held
|
||||||
|
match scancode {
|
||||||
|
0x2A | 0x36 => {
|
||||||
|
shift = true;
|
||||||
|
}
|
||||||
|
0xAA | 0xB6 => {
|
||||||
|
shift = false;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle the input
|
||||||
|
let key = if shift {
|
||||||
|
translate_upper_alphanum(scancode)
|
||||||
|
} else {
|
||||||
|
translate_alphanum(scancode)
|
||||||
|
};
|
||||||
|
|
||||||
|
if key != '\0' {
|
||||||
|
// print char
|
||||||
|
print!("{}", key);
|
||||||
|
cmd.push(key);
|
||||||
|
} else {
|
||||||
|
// Other key press functions
|
||||||
|
match scancode {
|
||||||
|
0x4B => { // Left arrow
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
0x4D => { // Right arrow
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
0x0E => {
|
||||||
|
// Backspace
|
||||||
|
|
||||||
|
if cmd.len() > 0 {
|
||||||
|
vga_buffer::TERMINAL.lock().back(1);
|
||||||
|
cmd.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0x1C => {
|
||||||
|
// Enter
|
||||||
|
|
||||||
|
// Process command
|
||||||
|
cli::process_cmd(cmd);
|
||||||
|
|
||||||
|
cmd = Vec::<char>::new(); // Pops all elements and frees memory
|
||||||
|
}
|
||||||
|
_ => { // Ignore other keys
|
||||||
|
//print!("scancode: {}", scancode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn translate_alphanum(code: u8) -> char {
|
||||||
|
return match code {
|
||||||
|
0x02 => '1',
|
||||||
|
0x03 => '2',
|
||||||
|
0x04 => '3',
|
||||||
|
0x05 => '4',
|
||||||
|
0x06 => '5',
|
||||||
|
0x07 => '6',
|
||||||
|
0x08 => '7',
|
||||||
|
0x09 => '8',
|
||||||
|
0x0A => '9',
|
||||||
|
0x0B => '0',
|
||||||
|
0x0C => '-',
|
||||||
|
0x0D => '=',
|
||||||
|
0x10 => 'q',
|
||||||
|
0x11 => 'w',
|
||||||
|
0x12 => 'e',
|
||||||
|
0x13 => 'r',
|
||||||
|
0x14 => 't',
|
||||||
|
0x15 => 'y',
|
||||||
|
0x16 => 'u',
|
||||||
|
0x17 => 'i',
|
||||||
|
0x18 => 'o',
|
||||||
|
0x19 => 'p',
|
||||||
|
0x1A => '[',
|
||||||
|
0x1B => ']',
|
||||||
|
0x1E => 'a',
|
||||||
|
0x1F => 's',
|
||||||
|
0x20 => 'd',
|
||||||
|
0x21 => 'f',
|
||||||
|
0x22 => 'g',
|
||||||
|
0x23 => 'h',
|
||||||
|
0x24 => 'j',
|
||||||
|
0x25 => 'k',
|
||||||
|
0x26 => 'l',
|
||||||
|
0x27 => ';',
|
||||||
|
0x28 => '\'', // Single quote
|
||||||
|
0x29 => '`', // Grave accent
|
||||||
|
0x2B => '\\',
|
||||||
|
0x2C => 'z',
|
||||||
|
0x2D => 'x',
|
||||||
|
0x2E => 'c',
|
||||||
|
0x2F => 'v',
|
||||||
|
0x30 => 'b',
|
||||||
|
0x31 => 'n',
|
||||||
|
0x32 => 'm',
|
||||||
|
0x33 => ',',
|
||||||
|
0x34 => '.',
|
||||||
|
0x35 => '/', // Forward slash
|
||||||
|
0x37 => '*', // Numeric keypad multiplication symbol
|
||||||
|
0x39 => ' ', // Space bar
|
||||||
|
0x4A => '-', // Numeric keypad subtraction symbol
|
||||||
|
0x4E => '+', // Numeric keypad addition symbol
|
||||||
|
0x53 => '.', // Numeric keypad decimal point symbol
|
||||||
|
_ => '\0', // unregistered
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn translate_upper_alphanum(code: u8) -> char {
|
||||||
|
return match code {
|
||||||
|
0x02 => '!',
|
||||||
|
0x03 => '@',
|
||||||
|
0x04 => '#',
|
||||||
|
0x05 => '$',
|
||||||
|
0x06 => '%',
|
||||||
|
0x07 => '^',
|
||||||
|
0x08 => '&',
|
||||||
|
0x09 => '*',
|
||||||
|
0x0A => '(',
|
||||||
|
0x0B => ')',
|
||||||
|
0x0C => '_',
|
||||||
|
0x0D => '+',
|
||||||
|
0x10 => 'Q',
|
||||||
|
0x11 => 'W',
|
||||||
|
0x12 => 'E',
|
||||||
|
0x13 => 'R',
|
||||||
|
0x14 => 'T',
|
||||||
|
0x15 => 'Y',
|
||||||
|
0x16 => 'U',
|
||||||
|
0x17 => 'I',
|
||||||
|
0x18 => 'O',
|
||||||
|
0x19 => 'P',
|
||||||
|
0x1A => '{',
|
||||||
|
0x1B => '}',
|
||||||
|
0x1E => 'A',
|
||||||
|
0x1F => 'S',
|
||||||
|
0x20 => 'D',
|
||||||
|
0x21 => 'F',
|
||||||
|
0x22 => 'G',
|
||||||
|
0x23 => 'H',
|
||||||
|
0x24 => 'J',
|
||||||
|
0x25 => 'K',
|
||||||
|
0x26 => 'L',
|
||||||
|
0x27 => ':',
|
||||||
|
0x28 => '"',
|
||||||
|
0x29 => '~', // Tilde
|
||||||
|
0x2B => '|',
|
||||||
|
0x2C => 'Z',
|
||||||
|
0x2D => 'X',
|
||||||
|
0x2E => 'C',
|
||||||
|
0x2F => 'V',
|
||||||
|
0x30 => 'B',
|
||||||
|
0x31 => 'N',
|
||||||
|
0x32 => 'M',
|
||||||
|
0x33 => '<',
|
||||||
|
0x34 => '>',
|
||||||
|
0x35 => '?', // Forward slash
|
||||||
|
0x37 => '*', // Numeric keypad multiplication symbol
|
||||||
|
0x39 => ' ', // Space bar
|
||||||
|
0x4A => '-', // Numeric keypad subtraction symbol
|
||||||
|
0x4E => '+', // Numeric keypad addition symbol
|
||||||
|
0x53 => '.', // Numeric keypad decimal point symbol
|
||||||
|
_ => '\0', // unregistered
|
||||||
|
};
|
||||||
|
}
|
||||||
38
src/lib.rs
Normal file
38
src/lib.rs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#![no_std] // don't link the Rust standard library
|
||||||
|
#![no_main]
|
||||||
|
|
||||||
|
pub mod boot;
|
||||||
|
pub mod cli;
|
||||||
|
pub mod keyboard;
|
||||||
|
pub mod scalloc;
|
||||||
|
pub mod vec;
|
||||||
|
pub mod vga_buffer;
|
||||||
|
extern crate alloc;
|
||||||
|
pub mod interrupts;
|
||||||
|
|
||||||
|
#[no_mangle] // don't mangle the name of this function
|
||||||
|
pub extern "C" fn rust_main() -> ! {
|
||||||
|
boot::init();
|
||||||
|
loop {}
|
||||||
|
}
|
||||||
|
|
||||||
|
use core::panic::PanicInfo;
|
||||||
|
|
||||||
|
#[panic_handler]
|
||||||
|
fn panic(info: &PanicInfo) -> ! {
|
||||||
|
vga_buffer::TERMINAL.lock().panic();
|
||||||
|
print!(
|
||||||
|
"
|
||||||
|
_ __ _ ______ _ __
|
||||||
|
| | / / | | | ___ \\ (_) _ / /
|
||||||
|
| |/ / ___ _ __ _ __ ___| | | |_/ /_ _ _ __ _ ___ (_) |
|
||||||
|
| \\ / _ \\ '__| '_ \\ / _ \\ | | __/ _` | '_ \\| |/ __| | |
|
||||||
|
| |\\ \\ __/ | | | | | __/ | | | | (_| | | | | | (__ _| |
|
||||||
|
\\_| \\_/\\___|_| |_| |_|\\___|_| \\_| \\__,_|_| |_|_|\\___| (_) |
|
||||||
|
\\_\\
|
||||||
|
|
||||||
|
"
|
||||||
|
);
|
||||||
|
println!("{}", info);
|
||||||
|
loop {}
|
||||||
|
}
|
||||||
105
src/scalloc.rs
Normal file
105
src/scalloc.rs
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
use core::alloc::{GlobalAlloc, Layout};
|
||||||
|
|
||||||
|
pub struct ScarabAllocator;
|
||||||
|
|
||||||
|
#[global_allocator]
|
||||||
|
static ALLOCATOR: ScarabAllocator = ScarabAllocator;
|
||||||
|
unsafe impl GlobalAlloc for ScarabAllocator {
|
||||||
|
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
|
||||||
|
alloc(layout.size())
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe fn dealloc(&self, ptr: *mut u8, _layout: Layout) {
|
||||||
|
free(ptr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const BLOCK_SIZE: usize = 4096; // 4KB blocks
|
||||||
|
const HEAP_SIZE: usize = 1024 * 1024; // 1MB heap
|
||||||
|
const HEADER_LEN: usize = 8;
|
||||||
|
|
||||||
|
static mut HEAP: [u8; HEAP_SIZE] = [0; HEAP_SIZE];
|
||||||
|
static mut BITMAP: [u8; HEAP_SIZE / BLOCK_SIZE / 8] = [0; HEAP_SIZE / BLOCK_SIZE / 8];
|
||||||
|
|
||||||
|
pub fn alloc(size: usize) -> *mut u8 {
|
||||||
|
// Round up size to nearest block size
|
||||||
|
|
||||||
|
let num_blocks = (size + HEADER_LEN + BLOCK_SIZE - 1) / BLOCK_SIZE;
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
// Find first free set of blocks in bitmap
|
||||||
|
let mut byte_idx = 0;
|
||||||
|
let mut bit_idx = 0;
|
||||||
|
let mut free_counter = 0;
|
||||||
|
let mut found = false;
|
||||||
|
|
||||||
|
for (i, byte) in BITMAP.iter().enumerate() {
|
||||||
|
if *byte != 0xff {
|
||||||
|
// Check if byte is full
|
||||||
|
for j in 0..8 {
|
||||||
|
/* Loop through bits to find free
|
||||||
|
// Increment timer until all blocks accounted for
|
||||||
|
// Reset upon taken space
|
||||||
|
*/
|
||||||
|
if (*byte & (1 << j)) == 0 {
|
||||||
|
free_counter += 1;
|
||||||
|
if free_counter == num_blocks {
|
||||||
|
// Storing the last available block
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
free_counter = 0;
|
||||||
|
bit_idx = j + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
free_counter = 0;
|
||||||
|
byte_idx = i + 1;
|
||||||
|
bit_idx = 0;
|
||||||
|
}
|
||||||
|
if found {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
return core::ptr::null_mut(); // Out of memory
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mark blocks as allocated in bitmap
|
||||||
|
for i in 0..num_blocks {
|
||||||
|
let byte = &mut BITMAP[byte_idx + (bit_idx + i) / 8];
|
||||||
|
*byte |= 1 << ((bit_idx + i) % 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return pointer to allocated memory
|
||||||
|
let header = byte_idx * 8 * BLOCK_SIZE + bit_idx * BLOCK_SIZE;
|
||||||
|
// Track size of alloc
|
||||||
|
let header_ptr = HEAP.as_mut_ptr().add(header) as *mut usize;
|
||||||
|
header_ptr.write(num_blocks);
|
||||||
|
&mut HEAP[header + HEADER_LEN] as *mut u8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn free(ptr: *mut u8) {
|
||||||
|
if ptr.is_null() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
unsafe {
|
||||||
|
// Read from the header
|
||||||
|
let header = ptr.sub(HEADER_LEN) as *mut usize;
|
||||||
|
let num_blocks = header.read();
|
||||||
|
// Find starting block in heap
|
||||||
|
let start_block = ((header as usize) - (HEAP.as_ptr() as usize)) / BLOCK_SIZE;
|
||||||
|
|
||||||
|
// Mark blocks as free in bitmap
|
||||||
|
for i in 0..num_blocks {
|
||||||
|
let block_number = start_block + i;
|
||||||
|
let byte_idx = block_number / 8;
|
||||||
|
let bit_idx = block_number % 8;
|
||||||
|
let byte = &mut BITMAP[byte_idx];
|
||||||
|
*byte &= !(1 << (bit_idx));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
202
src/vec.rs
Normal file
202
src/vec.rs
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
use crate::scalloc::alloc;
|
||||||
|
use crate::scalloc::free;
|
||||||
|
|
||||||
|
use core::fmt;
|
||||||
|
use core::ops::{Index, IndexMut};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct Vec<T> {
|
||||||
|
ptr: *mut T,
|
||||||
|
len: usize,
|
||||||
|
cap: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> Vec<T> {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Vec {
|
||||||
|
ptr: core::ptr::null_mut(),
|
||||||
|
len: 0,
|
||||||
|
cap: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn push(&mut self, val: T) {
|
||||||
|
if self.len == self.cap {
|
||||||
|
let new_cap = if self.cap == 0 { 1 } else { self.cap * 2 };
|
||||||
|
let new_ptr = alloc(new_cap * core::mem::size_of::<T>()) as *mut T;
|
||||||
|
unsafe {
|
||||||
|
// Copy old elements to new memory
|
||||||
|
core::ptr::copy_nonoverlapping(self.ptr, new_ptr, self.len);
|
||||||
|
|
||||||
|
// Free old memory
|
||||||
|
free(self.ptr as *mut u8);
|
||||||
|
|
||||||
|
// Update fields
|
||||||
|
self.ptr = new_ptr;
|
||||||
|
self.cap = new_cap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
// Write new element to end of vector
|
||||||
|
core::ptr::write(self.ptr.offset(self.len as isize), val);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.len += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn pop(&mut self) -> Option<T> {
|
||||||
|
if self.len == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.len -= 1;
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
// Read and return last element of vector
|
||||||
|
Some(core::ptr::read(self.ptr.offset(self.len as isize)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(&self, idx: usize) -> Option<&T> {
|
||||||
|
if idx < self.len {
|
||||||
|
unsafe { Some(&*self.ptr.offset(idx as isize)) }
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_mut(&mut self, idx: usize) -> Option<&mut T> {
|
||||||
|
if idx < self.len {
|
||||||
|
unsafe { Some(&mut *self.ptr.offset(idx as isize)) }
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set(&mut self, idx: usize, val: T) -> Option<T> {
|
||||||
|
if idx < self.len {
|
||||||
|
unsafe {
|
||||||
|
let old_val = core::ptr::replace(self.ptr.offset(idx as isize), val);
|
||||||
|
Some(old_val)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn len(&self) -> usize {
|
||||||
|
self.len
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_empty(&self) -> bool {
|
||||||
|
self.len == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dropping a vector in memory (I hope this frees memory)
|
||||||
|
impl<T> Drop for Vec<T> {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
// Drop all elements of vector
|
||||||
|
while let Some(_) = self.pop() {}
|
||||||
|
|
||||||
|
// Free memory
|
||||||
|
if !self.ptr.is_null() {
|
||||||
|
free(self.ptr as *mut u8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code for compareing vectors against eachother
|
||||||
|
impl<T: PartialEq> PartialEq for Vec<T> {
|
||||||
|
fn eq(&self, other: &Self) -> bool {
|
||||||
|
if self.len() != other.len() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in 0..self.len() {
|
||||||
|
if self.get(i) != other.get(i) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Being able to print Vec<char>
|
||||||
|
|
||||||
|
impl fmt::Display for Vec<char> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
for i in 0..self.len() {
|
||||||
|
write!(f, "{}", self.get(i).unwrap())?;
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code needed for interations
|
||||||
|
pub struct Iter<'a, T> {
|
||||||
|
ptr: *const T,
|
||||||
|
len: usize,
|
||||||
|
idx: usize,
|
||||||
|
_marker: core::marker::PhantomData<&'a T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T> Iter<'a, T> {
|
||||||
|
fn new(ptr: *const T, len: usize) -> Self {
|
||||||
|
Self {
|
||||||
|
ptr,
|
||||||
|
len,
|
||||||
|
idx: 0,
|
||||||
|
_marker: core::marker::PhantomData,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T> Iterator for Iter<'a, T> {
|
||||||
|
type Item = &'a T;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
if self.idx < self.len {
|
||||||
|
let item_ptr = unsafe { self.ptr.offset(self.idx as isize) };
|
||||||
|
self.idx += 1;
|
||||||
|
Some(unsafe { &*item_ptr })
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> Vec<T> {
|
||||||
|
pub fn iter(&self) -> Iter<T> {
|
||||||
|
Iter::new(self.ptr, self.len)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Indexing implementation
|
||||||
|
impl<T> Index<usize> for Vec<T> {
|
||||||
|
type Output = T;
|
||||||
|
|
||||||
|
fn index(&self, index: usize) -> &T {
|
||||||
|
self.get(index).expect("index out of bounds")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> IndexMut<usize> for Vec<T> {
|
||||||
|
fn index_mut(&mut self, index: usize) -> &mut T {
|
||||||
|
self.get_mut(index).expect("index out of bounds")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Macro for easily creating vectors
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! vec {
|
||||||
|
( $( $x:expr ),* ) => {{
|
||||||
|
let mut v = Vec::new();
|
||||||
|
$(
|
||||||
|
v.push($x);
|
||||||
|
)*
|
||||||
|
v
|
||||||
|
}};
|
||||||
|
}
|
||||||
307
src/vga_buffer.rs
Normal file
307
src/vga_buffer.rs
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
extern crate volatile;
|
||||||
|
extern crate lazy_static;
|
||||||
|
extern crate spin;
|
||||||
|
|
||||||
|
use self::volatile::Volatile;
|
||||||
|
use self::lazy_static::lazy_static;
|
||||||
|
use self::spin::Mutex;
|
||||||
|
use core::fmt;
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
#[repr(u8)]
|
||||||
|
pub enum Color {
|
||||||
|
Black = 0,
|
||||||
|
Blue = 1,
|
||||||
|
Green = 2,
|
||||||
|
Cyan = 3,
|
||||||
|
Red = 4,
|
||||||
|
Magenta = 5,
|
||||||
|
Brown = 6,
|
||||||
|
LightGrey = 7,
|
||||||
|
DarkGrey = 8,
|
||||||
|
LightBlue = 9,
|
||||||
|
LightGreen = 10,
|
||||||
|
LightCyan = 11,
|
||||||
|
LightRed = 12,
|
||||||
|
LightMagenta = 13,
|
||||||
|
LightBrown = 14,
|
||||||
|
White = 15,
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
pub static ref TERMINAL: Mutex<Terminal> = Mutex::new(Terminal {
|
||||||
|
row: 0,
|
||||||
|
column: 0,
|
||||||
|
color: make_color(Color::White, Color::Black),
|
||||||
|
buffer: unsafe {&mut *(0xb8000 as *mut [Volatile<u16>; VGA_WIDTH * VGA_HEIGHT ])},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dimensions for the screen
|
||||||
|
pub const VGA_WIDTH: usize = 80;
|
||||||
|
pub const VGA_HEIGHT: usize = 25;
|
||||||
|
|
||||||
|
// converting enum to u8
|
||||||
|
pub fn make_color(fg: Color, bg: Color) -> u8 {
|
||||||
|
return (fg as u8) | (bg as u8) << 4; // big brain
|
||||||
|
}
|
||||||
|
|
||||||
|
// just makes converting easier
|
||||||
|
fn make_vga_entry(c: char, color: u8) -> u16 {
|
||||||
|
let c16 = c as u16;
|
||||||
|
let color16 = color as u16;
|
||||||
|
return c16 | color16 << 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Terminal {
|
||||||
|
row: usize,
|
||||||
|
column: usize,
|
||||||
|
color: u8,
|
||||||
|
buffer: &'static mut [Volatile<u16>; (VGA_WIDTH) * (VGA_HEIGHT)],
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Terminal {
|
||||||
|
|
||||||
|
fn put_entry_at(&mut self, c: char, color: u8, x: usize, y: usize) {
|
||||||
|
let index = y * VGA_WIDTH + x;
|
||||||
|
self.buffer[index].write(make_vga_entry(c, color));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_color(&mut self, fg: Color, bg: Color) {
|
||||||
|
self.color = make_color(fg, bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
//For removing characters, aka backspace functionality
|
||||||
|
pub fn back(&mut self, len: usize) {
|
||||||
|
|
||||||
|
// remove current cursor
|
||||||
|
self.update_cursor(false);
|
||||||
|
|
||||||
|
for _ in 0..len {
|
||||||
|
|
||||||
|
// if go back
|
||||||
|
if self.column <= 0 && self.row > 0 {
|
||||||
|
|
||||||
|
// Undo a new line
|
||||||
|
self.column = 0;
|
||||||
|
self.row -= 1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
self.column -= 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear space and draw cursor
|
||||||
|
self.put_entry_at(' ', self.color, self.column, self.row);
|
||||||
|
self.update_cursor(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// To empty all contents of vga buffer
|
||||||
|
pub fn clear(&mut self) {
|
||||||
|
self.row = 0;
|
||||||
|
self.column = 0;
|
||||||
|
|
||||||
|
for y in 0..VGA_HEIGHT {
|
||||||
|
for x in 0..VGA_WIDTH {
|
||||||
|
// Always sets bg black, could be later issue
|
||||||
|
self.put_entry_at(' ', make_color(Color::White, Color::Black), x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn scroll(&mut self) {
|
||||||
|
for y in 0..VGA_HEIGHT-1 {
|
||||||
|
for x in 0..VGA_WIDTH {
|
||||||
|
let prev = (y * VGA_WIDTH) + x;
|
||||||
|
let next = ((y + 1) * VGA_WIDTH) + x;
|
||||||
|
// Transfer all contents up one row
|
||||||
|
self.buffer[prev].write(self.buffer[next].read());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.row -= 1;
|
||||||
|
self.column = 0;
|
||||||
|
|
||||||
|
// Create empty last line
|
||||||
|
for x in 0..VGA_WIDTH {
|
||||||
|
self.put_entry_at(' ', make_color(Color::LightGrey, Color::Black), x, self.row);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fn put_char(&mut self, c: char) {
|
||||||
|
if c == '\n' {
|
||||||
|
|
||||||
|
self.row += 1;
|
||||||
|
if self.row >= VGA_HEIGHT {
|
||||||
|
self.scroll();
|
||||||
|
}
|
||||||
|
|
||||||
|
self.column = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
self.put_entry_at(c, self.color, self.column, self.row);
|
||||||
|
self.column += 1;
|
||||||
|
if self.column == VGA_WIDTH {
|
||||||
|
self.column = 0;
|
||||||
|
|
||||||
|
self.row += 1;
|
||||||
|
if self.row >= VGA_HEIGHT {
|
||||||
|
self.scroll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn print(&mut self, data: &str) {
|
||||||
|
|
||||||
|
self.update_cursor(false);
|
||||||
|
|
||||||
|
for c in data.chars() {
|
||||||
|
self.put_char(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.update_cursor(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_cursor(&mut self, visable: bool) {
|
||||||
|
|
||||||
|
// Can change these depends how I feel
|
||||||
|
let color = if visable { make_color(Color::Black, Color::White) } else { self.color };
|
||||||
|
let c_char = ' ';
|
||||||
|
|
||||||
|
self.put_entry_at(c_char, color, self.column, self.row);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Empties contents and replaces with red screen (scary!)
|
||||||
|
pub fn panic(&mut self) {
|
||||||
|
self.row = 0;
|
||||||
|
self.column = 0;
|
||||||
|
self.set_color(Color::White, Color::Red);
|
||||||
|
|
||||||
|
for y in 0..VGA_HEIGHT {
|
||||||
|
for x in 0..VGA_WIDTH {
|
||||||
|
self.put_entry_at(' ', make_color(Color::White, Color::Red), x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn color_test(&mut self) {
|
||||||
|
let backup_color = self.color;
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Black
|
||||||
|
);
|
||||||
|
self.print(" White + Black ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Blue
|
||||||
|
);
|
||||||
|
self.print(" White + Blue ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Green
|
||||||
|
);
|
||||||
|
self.print(" White + Green ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::Cyan
|
||||||
|
);
|
||||||
|
self.print(" Black + Cyan ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Red
|
||||||
|
);
|
||||||
|
self.print(" White + Red ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Magenta
|
||||||
|
);
|
||||||
|
self.print(" White + Magenta ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::Brown
|
||||||
|
);
|
||||||
|
self.print(" White + Brown ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightGrey
|
||||||
|
);
|
||||||
|
self.print(" Black + LightGrey ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::White, Color::DarkGrey
|
||||||
|
);
|
||||||
|
self.print(" White + DarkGrey ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightBlue
|
||||||
|
);
|
||||||
|
self.print(" Black + LightBlue ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightGreen
|
||||||
|
);
|
||||||
|
self.print(" Black + LightGreen ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightCyan
|
||||||
|
);
|
||||||
|
self.print(" Black + LightCyan ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightRed
|
||||||
|
);
|
||||||
|
self.print(" Black + LightRed ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightMagenta
|
||||||
|
);
|
||||||
|
self.print(" Black + LightMagenta ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::LightBrown
|
||||||
|
);
|
||||||
|
self.print(" Black + LightBrown ");
|
||||||
|
|
||||||
|
self.color = make_color(
|
||||||
|
Color::Black, Color::White
|
||||||
|
);
|
||||||
|
self.print(" Black + White ");
|
||||||
|
|
||||||
|
self.color = backup_color;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Write for Terminal {
|
||||||
|
fn write_str(&mut self, s: &str) -> fmt::Result {
|
||||||
|
self.print(s);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Macros
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! print {
|
||||||
|
($($arg:tt)*) => ($crate::vga_buffer::_print(format_args!($($arg)*)));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! println {
|
||||||
|
() => (print!("\n"));
|
||||||
|
($($arg:tt)*) => (print!("{}\n", format_args!($($arg)*)));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub fn _print(args: fmt::Arguments) {
|
||||||
|
use core::fmt::Write;
|
||||||
|
TERMINAL.lock().write_fmt(args).unwrap();
|
||||||
|
}
|
||||||
1
target/.rustc_info.json
Normal file
1
target/.rustc_info.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"rustc_fingerprint":10546204349593706313,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.78.0-nightly (878c8a2a6 2024-02-29)\nbinary: rustc\ncommit-hash: 878c8a2a62d49ca5c454547ad67290a1df746cb5\ncommit-date: 2024-02-29\nhost: x86_64-unknown-linux-gnu\nrelease: 1.78.0-nightly\nLLVM version: 18.1.0\n","stderr":""},"9030312521483228047":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.a\n/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu\noff\n___\ndebug_assertions\noverflow_checks\npanic=\"abort\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_has_atomic\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\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=\"none\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\n","stderr":"warning: dropping unsupported crate type `dylib` for target `x86_64-scarab_os-7181296097111577465`\n\nwarning: dropping unsupported crate type `cdylib` for target `x86_64-scarab_os-7181296097111577465`\n\nwarning: dropping unsupported crate type `proc-macro` for target `x86_64-scarab_os-7181296097111577465`\n\nwarning: 3 warnings emitted\n\n"},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\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\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\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","stderr":""}},"successes":{}}
|
||||||
3
target/CACHEDIR.TAG
Normal file
3
target/CACHEDIR.TAG
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Signature: 8a477f597d28d172789f06886806bc55
|
||||||
|
# This file is a cache directory tag created by cargo.
|
||||||
|
# For information about cache directory tags see https://bford.info/cachedir/
|
||||||
0
target/debug/.cargo-lock
Normal file
0
target/debug/.cargo-lock
Normal file
@@ -0,0 +1 @@
|
|||||||
|
59656e763f08feba
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[\"compiler-builtins\", \"core\", \"default\", \"mem\", \"rustc-dep-of-std\"]","declared_features":"","target":2297296889237502566,"profile":12206360443249279867,"path":10267838516325275768,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/compiler_builtins-fc32ac8f2fe27923/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":14701936454766889299,"config":2202906307356721367,"compile_kind":0}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
282aa96b42effac5
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":2297296889237502566,"profile":12206360443249279867,"path":3079374256050985207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rustversion-18d14d0cad5f4b63/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":11946384680894284015,"config":2202906307356721367,"compile_kind":0}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
07d79350e6fe6c8d
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":8237524127607741655,"profile":12206360443249279867,"path":4277567828688431170,"deps":[[12213898014817073798,"build_script_build",false,13587651077309795580]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rustversion-4fb0f24087d3908d/dep-lib-rustversion"}}],"rustflags":[],"metadata":11946384680894284015,"config":2202906307356721367,"compile_kind":0}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fc0c0113aa0891bc
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[12213898014817073798,"build_script_build",false,14265977838202595880]],"local":[{"RerunIfChanged":{"output":"debug/build/rustversion-b7cbf248789263fa/output","paths":["build/build.rs"]}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0}
|
||||||
BIN
target/debug/build/compiler_builtins-fc32ac8f2fe27923/build-script-build
Executable file
BIN
target/debug/build/compiler_builtins-fc32ac8f2fe27923/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,5 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/compiler_builtins-fc32ac8f2fe27923/build_script_build-fc32ac8f2fe27923: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/compiler_builtins-fc32ac8f2fe27923/build_script_build-fc32ac8f2fe27923.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs:
|
||||||
BIN
target/debug/build/rustversion-18d14d0cad5f4b63/build-script-build
Executable file
BIN
target/debug/build/rustversion-18d14d0cad5f4b63/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/rustversion-18d14d0cad5f4b63/build_script_build-18d14d0cad5f4b63: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/rustversion-18d14d0cad5f4b63/build_script_build-18d14d0cad5f4b63.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs:
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
crate::version::Version {
|
||||||
|
minor: 78,
|
||||||
|
patch: 0,
|
||||||
|
channel: crate::version::Channel::Nightly(
|
||||||
|
crate::date::Date {
|
||||||
|
year: 2024,
|
||||||
|
month: 2,
|
||||||
|
day: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
}
|
||||||
1
target/debug/build/rustversion-b7cbf248789263fa/output
Normal file
1
target/debug/build/rustversion-b7cbf248789263fa/output
Normal file
@@ -0,0 +1 @@
|
|||||||
|
cargo:rerun-if-changed=build/build.rs
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out
|
||||||
BIN
target/debug/deps/librustversion-4fb0f24087d3908d.so
Executable file
BIN
target/debug/deps/librustversion-4fb0f24087d3908d.so
Executable file
Binary file not shown.
20
target/debug/deps/rustversion-4fb0f24087d3908d.d
Normal file
20
target/debug/deps/rustversion-4fb0f24087d3908d.d
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/debug/deps/librustversion-4fb0f24087d3908d.so: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs /home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out/version.expr
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/debug/deps/rustversion-4fb0f24087d3908d.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs /home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out/version.expr
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs:
|
||||||
|
/home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out/version.expr:
|
||||||
|
|
||||||
|
# env-dep:OUT_DIR=/home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out
|
||||||
0
target/release/.cargo-lock
Normal file
0
target/release/.cargo-lock
Normal file
@@ -0,0 +1 @@
|
|||||||
|
25b80ca46d3e002b
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[\"compiler-builtins\", \"core\", \"default\", \"mem\", \"rustc-dep-of-std\"]","declared_features":"","target":2297296889237502566,"profile":1680656715729475402,"path":10267838516325275768,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/compiler_builtins-1c776185c174c1da/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":14701936454766889299,"config":2202906307356721367,"compile_kind":0}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
df6683b3cde33f47
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":8237524127607741655,"profile":1680656715729475402,"path":4277567828688431170,"deps":[[12213898014817073798,"build_script_build",false,6820143794375409276]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/rustversion-48c66c2b709cad2b/dep-lib-rustversion"}}],"rustflags":[],"metadata":11946384680894284015,"config":2202906307356721367,"compile_kind":0}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
586ae754f05a6510
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":2297296889237502566,"profile":1680656715729475402,"path":3079374256050985207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/rustversion-e1bd09c9636cfedc/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":11946384680894284015,"config":2202906307356721367,"compile_kind":0}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
7cbed474a504a65e
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[12213898014817073798,"build_script_build",false,1181450465517726296]],"local":[{"RerunIfChanged":{"output":"release/build/rustversion-fa31af35e4407b4b/output","paths":["build/build.rs"]}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0}
|
||||||
BIN
target/release/build/compiler_builtins-1c776185c174c1da/build-script-build
Executable file
BIN
target/release/build/compiler_builtins-1c776185c174c1da/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,5 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/release/build/compiler_builtins-1c776185c174c1da/build_script_build-1c776185c174c1da: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/release/build/compiler_builtins-1c776185c174c1da/build_script_build-1c776185c174c1da.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs:
|
||||||
BIN
target/release/build/rustversion-e1bd09c9636cfedc/build-script-build
Executable file
BIN
target/release/build/rustversion-e1bd09c9636cfedc/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/release/build/rustversion-e1bd09c9636cfedc/build_script_build-e1bd09c9636cfedc: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/release/build/rustversion-e1bd09c9636cfedc/build_script_build-e1bd09c9636cfedc.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/rustc.rs:
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
crate::version::Version {
|
||||||
|
minor: 78,
|
||||||
|
patch: 0,
|
||||||
|
channel: crate::version::Channel::Nightly(
|
||||||
|
crate::date::Date {
|
||||||
|
year: 2024,
|
||||||
|
month: 2,
|
||||||
|
day: 29,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
}
|
||||||
1
target/release/build/rustversion-fa31af35e4407b4b/output
Normal file
1
target/release/build/rustversion-fa31af35e4407b4b/output
Normal file
@@ -0,0 +1 @@
|
|||||||
|
cargo:rerun-if-changed=build/build.rs
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/release/build/rustversion-fa31af35e4407b4b/out
|
||||||
BIN
target/release/deps/librustversion-48c66c2b709cad2b.so
Executable file
BIN
target/release/deps/librustversion-48c66c2b709cad2b.so
Executable file
Binary file not shown.
20
target/release/deps/rustversion-48c66c2b709cad2b.d
Normal file
20
target/release/deps/rustversion-48c66c2b709cad2b.d
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/home/grimm/coding/ScarabOS/target/release/deps/librustversion-48c66c2b709cad2b.so: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs /home/grimm/coding/ScarabOS/target/release/build/rustversion-fa31af35e4407b4b/out/version.expr
|
||||||
|
|
||||||
|
/home/grimm/coding/ScarabOS/target/release/deps/rustversion-48c66c2b709cad2b.d: /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs /home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs /home/grimm/coding/ScarabOS/target/release/build/rustversion-fa31af35e4407b4b/out/version.expr
|
||||||
|
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/attr.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/bound.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/constfn.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/date.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/error.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expand.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/expr.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/iter.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/release.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/time.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/token.rs:
|
||||||
|
/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/version.rs:
|
||||||
|
/home/grimm/coding/ScarabOS/target/release/build/rustversion-fa31af35e4407b4b/out/version.expr:
|
||||||
|
|
||||||
|
# env-dep:OUT_DIR=/home/grimm/coding/ScarabOS/target/release/build/rustversion-fa31af35e4407b4b/out
|
||||||
8
target/rust-analyzer/flycheck0/stderr
Normal file
8
target/rust-analyzer/flycheck0/stderr
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
0.023374227s INFO cargo::core::compiler::fingerprint: stale: changed "/home/grimm/coding/ScarabOS/src/interrupts.rs"
|
||||||
|
0.023382933s INFO cargo::core::compiler::fingerprint: (vs) "/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/.fingerprint/scarab-aeb53d9b0747168f/dep-lib-scarab"
|
||||||
|
0.023385999s INFO cargo::core::compiler::fingerprint: FileTime { seconds: 1762532377, nanos: 501074777 } < FileTime { seconds: 1762870759, nanos: 894106082 }
|
||||||
|
0.023519780s INFO cargo::core::compiler::fingerprint: fingerprint dirty for scarab v0.1.0 (/home/grimm/coding/ScarabOS)/Check { test: false }/TargetInner { ..: lib_target("scarab", ["staticlib"], "/home/grimm/coding/ScarabOS/src/lib.rs", Edition2021) }
|
||||||
|
0.023527945s INFO cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/.fingerprint/scarab-aeb53d9b0747168f/dep-lib-scarab", reference_mtime: FileTime { seconds: 1762532377, nanos: 501074777 }, stale: "/home/grimm/coding/ScarabOS/src/interrupts.rs", stale_mtime: FileTime { seconds: 1762870759, nanos: 894106082 } }))
|
||||||
|
0.024005521s INFO cargo::core::compiler::fingerprint: fingerprint dirty for scarab v0.1.0 (/home/grimm/coding/ScarabOS)/Check { test: true }/TargetInner { ..: lib_target("scarab", ["staticlib"], "/home/grimm/coding/ScarabOS/src/lib.rs", Edition2021) }
|
||||||
|
0.024011903s INFO cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(Stale)
|
||||||
|
Checking scarab v0.1.0 (/home/grimm/coding/ScarabOS)
|
||||||
24
target/rust-analyzer/flycheck0/stdout
Normal file
24
target/rust-analyzer/flycheck0/stdout
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#compiler_builtins@0.1.108","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["compiler-builtins","core","default","mem","rustc-dep-of-std"],"filenames":["/home/grimm/coding/ScarabOS/target/debug/build/compiler_builtins-fc32ac8f2fe27923/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"path+file:///home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core#0.0.0","manifest_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"core","src_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libcore-5f3616797832647b.rlib","/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libcore-5f3616797832647b.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#compiler_builtins@0.1.108","linked_libs":[],"linked_paths":[],"cfgs":["feature=\"unstable\"","feature=\"mem-unaligned\""],"env":[],"out_dir":"/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/build/compiler_builtins-be236747bda2f785/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"path+file:///home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core#1.99.0","manifest_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rustc-std-workspace-core","src_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/librustc_std_workspace_core-e7a1c4b9e5854414.rlib","/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/librustc_std_workspace_core-e7a1c4b9e5854414.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/build/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/debug/build/rustversion-18d14d0cad5f4b63/build-script-build"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#compiler_builtins@0.1.108","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"compiler_builtins","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.108/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["compiler-builtins","core","default","mem","rustc-dep-of-std"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libcompiler_builtins-3ebbf73f0e78443c.rlib","/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libcompiler_builtins-3ebbf73f0e78443c.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/grimm/coding/ScarabOS/target/debug/build/rustversion-b7cbf248789263fa/out"}
|
||||||
|
{"reason":"compiler-artifact","package_id":"path+file:///home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc#0.0.0","manifest_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"alloc","src_path":"/home/grimm/.rustup/toolchains/nightly-2024-03-01-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["compiler-builtins-mem"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/liballoc-628cc052b207c544.rlib","/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/liballoc-628cc052b207c544.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"rustversion","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.22/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/debug/deps/librustversion-4fb0f24087d3908d.so"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#volatile@0.4.6","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/volatile-0.4.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"volatile","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/volatile-0.4.6/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libvolatile-8b10296e299a0cc0.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bitflags@2.10.0","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bitflags-2.10.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bitflags","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bitflags-2.10.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libbitflags-58ce0cdb92e58d08.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bit_field@0.10.3","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bit_field-0.10.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bit_field","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bit_field-0.10.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libbit_field-4eb2560dc7888740.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#spin@0.9.8","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spin-0.9.8/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"spin","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spin-0.9.8/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["once"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libspin-c991e2e5c69c359a.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#spin@0.5.2","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spin-0.5.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"spin","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spin-0.5.2/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libspin-580aeecb01db0a52.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#volatile@0.2.7","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/volatile-0.2.7/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"volatile","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/volatile-0.2.7/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libvolatile-9b5392082f680a57.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#x86_64@0.14.11","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/x86_64-0.14.11/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"x86_64","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/x86_64-0.14.11/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["abi_x86_interrupt","const_fn","default","inline_asm","instructions","nightly","step_trait"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libx86_64-5a56b0a0acfa19b8.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#lazy_static@1.5.0","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.5.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"lazy_static","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.5.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["spin","spin_no_std"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/liblazy_static-322f0590db73abdc.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#pic8259@0.10.4","manifest_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pic8259-0.10.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pic8259","src_path":"/home/grimm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pic8259-0.10.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","nightly"],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libpic8259-cd7cc39d257f94a9.rmeta"],"executable":null,"fresh":true}
|
||||||
|
{"reason":"compiler-message","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"message":{"rendered":"error[E0463]: can't find crate for `test`\n\n","$message_type":"diagnostic","children":[],"code":{"code":"E0463","explanation":"A crate was declared but cannot be found.\n\nErroneous code example:\n\n```compile_fail,E0463\nextern crate foo; // error: can't find crate\n```\n\nYou need to link your code to the relevant crate in order to be able to use it\n(through Cargo or the `-L` option of rustc, for example).\n\n## Common causes\n\n- The crate is not present at all. If using Cargo, add it to `[dependencies]`\n in Cargo.toml.\n- The crate is present, but under a different name. If using Cargo, look for\n `package = ` under `[dependencies]` in Cargo.toml.\n\n## Common causes for missing `std` or `core`\n\n- You are cross-compiling for a target which doesn't have `std` prepackaged.\n Consider one of the following:\n + Adding a pre-compiled version of std with `rustup target add`\n + Building std from source with `cargo build -Z build-std`\n + Using `#![no_std]` at the crate root, so you won't need `std` in the first\n place.\n- You are developing the compiler itself and haven't built libstd from source.\n You can usually build it with `x.py build library/std`. More information\n about x.py is available in the [rustc-dev-guide].\n\n[rustc-dev-guide]: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html#building-the-compiler\n"},"level":"error","message":"can't find crate for `test`","spans":[{"byte_end":0,"byte_start":0,"column_end":1,"column_start":1,"expansion":null,"file_name":"src/lib.rs","is_primary":true,"label":"can't find crate","line_end":1,"line_start":1,"suggested_replacement":null,"suggestion_applicability":null,"text":[]}]}}
|
||||||
|
{"reason":"compiler-message","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unused import: `InterruptStackFrame`\n --> src/interrupts.rs:2:57\n |\n2 | use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};\n | ^^^^^^^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unused_imports)]` on by default","rendered":null,"spans":[]},{"children":[],"code":null,"level":"help","message":"remove the unused import","rendered":null,"spans":[{"byte_end":105,"byte_start":84,"column_end":76,"column_start":55,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":2,"line_start":2,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","text":[{"highlight_end":76,"highlight_start":55,"text":"use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};"}]}]}],"code":{"code":"unused_imports","explanation":null},"level":"warning","message":"unused import: `InterruptStackFrame`","spans":[{"byte_end":105,"byte_start":86,"column_end":76,"column_start":57,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":2,"line_start":2,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":76,"highlight_start":57,"text":"use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};"}]}]}}
|
||||||
|
{"reason":"compiler-message","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unused import: `InterruptStackFrame`\n --> src/interrupts.rs:2:57\n |\n2 | use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};\n | ^^^^^^^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unused_imports)]` on by default","rendered":null,"spans":[]},{"children":[],"code":null,"level":"help","message":"remove the unused import","rendered":null,"spans":[{"byte_end":105,"byte_start":84,"column_end":76,"column_start":55,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":2,"line_start":2,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","text":[{"highlight_end":76,"highlight_start":55,"text":"use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};"}]}]}],"code":{"code":"unused_imports","explanation":null},"level":"warning","message":"unused import: `InterruptStackFrame`","spans":[{"byte_end":105,"byte_start":86,"column_end":76,"column_start":57,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":2,"line_start":2,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":76,"highlight_start":57,"text":"use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};"}]}]}}
|
||||||
|
{"reason":"compiler-message","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: variable does not need to be mutable\n --> src/interrupts.rs:6:13\n |\n6 | let mut idt = InterruptDescriptorTable::new();\n | ----^^^\n | |\n | help: remove this `mut`\n |\n = note: `#[warn(unused_mut)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unused_mut)]` on by default","rendered":null,"spans":[]},{"children":[],"code":null,"level":"help","message":"remove this `mut`","rendered":null,"spans":[{"byte_end":189,"byte_start":185,"column_end":17,"column_start":13,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":6,"line_start":6,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","text":[{"highlight_end":17,"highlight_start":13,"text":" let mut idt = InterruptDescriptorTable::new();"}]}]}],"code":{"code":"unused_mut","explanation":null},"level":"warning","message":"variable does not need to be mutable","spans":[{"byte_end":192,"byte_start":185,"column_end":20,"column_start":13,"expansion":null,"file_name":"src/interrupts.rs","is_primary":true,"label":null,"line_end":6,"line_start":6,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":20,"highlight_start":13,"text":" let mut idt = InterruptDescriptorTable::new();"}]}]}}
|
||||||
|
{"reason":"compiler-message","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: 2 warnings emitted\n\n","$message_type":"diagnostic","children":[],"code":null,"level":"warning","message":"2 warnings emitted","spans":[]}}
|
||||||
|
{"reason":"compiler-artifact","package_id":"path+file:///home/grimm/coding/ScarabOS#scarab@0.1.0","manifest_path":"/home/grimm/coding/ScarabOS/Cargo.toml","target":{"kind":["staticlib"],"crate_types":["staticlib"],"name":"scarab","src_path":"/home/grimm/coding/ScarabOS/src/lib.rs","edition":"2021","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/grimm/coding/ScarabOS/target/x86_64-scarab_os/debug/deps/libscarab-aeb53d9b0747168f.rmeta"],"executable":null,"fresh":false}
|
||||||
3
target/x86_64-scarab_os/CACHEDIR.TAG
Normal file
3
target/x86_64-scarab_os/CACHEDIR.TAG
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Signature: 8a477f597d28d172789f06886806bc55
|
||||||
|
# This file is a cache directory tag created by cargo.
|
||||||
|
# For information about cache directory tags see https://bford.info/cachedir/
|
||||||
0
target/x86_64-scarab_os/debug/.cargo-lock
Normal file
0
target/x86_64-scarab_os/debug/.cargo-lock
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
24f14b6b281e0396
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[\"compiler-builtins-mem\"]","declared_features":"","target":7747317146343669809,"profile":12206360443249279867,"path":13511094938272109025,"deps":[[3873069036846618750,"compiler_builtins",false,6706847359268318591],[15769198103576810567,"core",false,14177146887236239996]],"local":[{"CheckDepInfo":{"dep_info":"x86_64-scarab_os/debug/.fingerprint/alloc-628cc052b207c544/dep-lib-alloc"}}],"rustflags":[],"metadata":8311380272888801894,"config":2202906307356721367,"compile_kind":561777056300942331}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
3c8247a553b82e10
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":6313009939182101684,"profile":10243973527296709326,"path":17476463656692350267,"deps":[[2874578906321136246,"alloc",true,10809516689566986532],[3873069036846618750,"compiler_builtins",true,6706847359268318591],[15769198103576810567,"core",true,14177146887236239996]],"local":[{"CheckDepInfo":{"dep_info":"x86_64-scarab_os/debug/.fingerprint/bit_field-4eb2560dc7888740/dep-lib-bit_field"}}],"rustflags":[],"metadata":17425952649129549558,"config":2202906307356721367,"compile_kind":561777056300942331}
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
7acbd65b7ecb03c1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"rustc":8908927309315482140,"features":"[]","declared_features":"","target":17263469766201294439,"profile":10243973527296709326,"path":17380761964386775035,"deps":[[2874578906321136246,"alloc",true,10809516689566986532],[3873069036846618750,"compiler_builtins",true,6706847359268318591],[15769198103576810567,"core",true,14177146887236239996]],"local":[{"CheckDepInfo":{"dep_info":"x86_64-scarab_os/debug/.fingerprint/bitflags-58ce0cdb92e58d08/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":561777056300942331}
|
||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user