diff --git a/theseus/src/kmain.rs b/theseus/src/kmain.rs index 583b4c2..e52446f 100644 --- a/theseus/src/kmain.rs +++ b/theseus/src/kmain.rs @@ -4,7 +4,7 @@ extern "C" { fn cpuid() -> u64; fn consoleinit(); fn printfinit(); - // fn printf(); + fn printf(msg: *const i8); fn kinit(); fn kvminit(); fn kvminithart(); @@ -27,9 +27,9 @@ pub unsafe fn kmain() { if cpuid() == 0 { consoleinit(); printfinit(); - // printf("\n"); - // printf("xv6 kernel is booting\n"); - // printf("\n"); + printf(c"\n".as_ptr()); + printf(c"xv6 kernel is booting\n".as_ptr()); + printf(c"\n".as_ptr()); kinit(); // physical page allocator kvminit(); // create kernel page table kvminithart(); // turn on paging diff --git a/theseus/src/spinlock.rs b/theseus/src/spinlock.rs index cfc6ac7..7753e8e 100644 --- a/theseus/src/spinlock.rs +++ b/theseus/src/spinlock.rs @@ -6,12 +6,12 @@ pub struct SpinLock { // Is the lock held? pub locked: u32, // C boolean // For debugging: - pub name: *const u8, // Name of lock. + pub name: *const i8, // Name of lock. pub cpu: *mut (), // The cpu holding the lock. } #[no_mangle] -pub unsafe extern "C" fn initlock(lock: *mut SpinLock, name: *const u8) { +pub unsafe extern "C" fn initlock(lock: *mut SpinLock, name: *const i8) { (*lock).name = name; (*lock).locked = 0; (*lock).cpu = null_mut(); diff --git a/theseus/src/uart.rs b/theseus/src/uart.rs index 1fcbf26..bf0d7e1 100644 --- a/theseus/src/uart.rs +++ b/theseus/src/uart.rs @@ -2,7 +2,10 @@ use crate::{ memlayout::UART0, spinlock::{initlock, SpinLock}, }; -use core::ptr::{addr_of_mut, null, null_mut}; +use core::{ + ffi::CStr, + ptr::{addr_of_mut, null, null_mut}, +}; extern "C" { // spinlock.c @@ -66,8 +69,7 @@ static mut uart_tx_lock: crate::spinlock::SpinLock = crate::spinlock::SpinLock { name: null(), }; -// NOTE: string 'uart\0' for c-implmentation of spinlock. Stupid but works. -static UART_LOCK_NAME: [u8; 5] = [0x75, 0x61, 0x72, 0x74, 0]; +static UART_LOCK_NAME: &CStr = c"uart"; const UART_TX_BUF_SIZE: usize = 32; static mut uart_tx_buf: [u8; UART_TX_BUF_SIZE] = [0; UART_TX_BUF_SIZE];