Fixed C-string usage
parent
24df740c4d
commit
1d51f09bd1
|
|
@ -4,7 +4,7 @@ extern "C" {
|
||||||
fn cpuid() -> u64;
|
fn cpuid() -> u64;
|
||||||
fn consoleinit();
|
fn consoleinit();
|
||||||
fn printfinit();
|
fn printfinit();
|
||||||
// fn printf();
|
fn printf(msg: *const i8);
|
||||||
fn kinit();
|
fn kinit();
|
||||||
fn kvminit();
|
fn kvminit();
|
||||||
fn kvminithart();
|
fn kvminithart();
|
||||||
|
|
@ -27,9 +27,9 @@ pub unsafe fn kmain() {
|
||||||
if cpuid() == 0 {
|
if cpuid() == 0 {
|
||||||
consoleinit();
|
consoleinit();
|
||||||
printfinit();
|
printfinit();
|
||||||
// printf("\n");
|
printf(c"\n".as_ptr());
|
||||||
// printf("xv6 kernel is booting\n");
|
printf(c"xv6 kernel is booting\n".as_ptr());
|
||||||
// printf("\n");
|
printf(c"\n".as_ptr());
|
||||||
kinit(); // physical page allocator
|
kinit(); // physical page allocator
|
||||||
kvminit(); // create kernel page table
|
kvminit(); // create kernel page table
|
||||||
kvminithart(); // turn on paging
|
kvminithart(); // turn on paging
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ pub struct SpinLock {
|
||||||
// Is the lock held?
|
// Is the lock held?
|
||||||
pub locked: u32, // C boolean
|
pub locked: u32, // C boolean
|
||||||
// For debugging:
|
// For debugging:
|
||||||
pub name: *const u8, // Name of lock.
|
pub name: *const i8, // Name of lock.
|
||||||
pub cpu: *mut (), // The cpu holding the lock.
|
pub cpu: *mut (), // The cpu holding the lock.
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[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).name = name;
|
||||||
(*lock).locked = 0;
|
(*lock).locked = 0;
|
||||||
(*lock).cpu = null_mut();
|
(*lock).cpu = null_mut();
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ use crate::{
|
||||||
memlayout::UART0,
|
memlayout::UART0,
|
||||||
spinlock::{initlock, SpinLock},
|
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" {
|
extern "C" {
|
||||||
// spinlock.c
|
// spinlock.c
|
||||||
|
|
@ -66,8 +69,7 @@ static mut uart_tx_lock: crate::spinlock::SpinLock = crate::spinlock::SpinLock {
|
||||||
name: null(),
|
name: null(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// NOTE: string 'uart\0' for c-implmentation of spinlock. Stupid but works.
|
static UART_LOCK_NAME: &CStr = c"uart";
|
||||||
static UART_LOCK_NAME: [u8; 5] = [0x75, 0x61, 0x72, 0x74, 0];
|
|
||||||
|
|
||||||
const UART_TX_BUF_SIZE: usize = 32;
|
const UART_TX_BUF_SIZE: usize = 32;
|
||||||
static mut uart_tx_buf: [u8; UART_TX_BUF_SIZE] = [0; UART_TX_BUF_SIZE];
|
static mut uart_tx_buf: [u8; UART_TX_BUF_SIZE] = [0; UART_TX_BUF_SIZE];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue