Browse Source

固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258)

* 固定编译工具链、修复由于新版rust编译器问题导致的报错。

* 完善github workflow环境配置
login 1 year ago
parent
commit
b11bb1b256
3 changed files with 10 additions and 7 deletions
  1. 1 1
      .github/workflows/makefile.yml
  2. 6 6
      kernel/src/driver/uart/uart.rs
  3. 3 0
      rust-toolchain.toml

+ 1 - 1
.github/workflows/makefile.yml

@@ -44,7 +44,7 @@ jobs:
     - if: ${{ steps.cache-build-tools.outputs.cache-hit != 'true' }}
       name: Install toolchain
       continue-on-error: true
-      run:  sudo apt install -y llvm-dev libclang-dev clang gcc-multilib && cargo install cargo-binutils && rustup toolchain install nightly && rustup default nightly && rustup component add rust-src && rustup component add llvm-tools-preview && rustup target add x86_64-unknown-none 
+      run:  sudo apt install -y llvm-dev libclang-dev clang gcc-multilib && cargo install cargo-binutils && rustup toolchain install nightly && rustup default nightly && rustup component add rust-src && rustup component add llvm-tools-preview && rustup target add x86_64-unknown-none && rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
     
     - name: build the DragonOS
       run: bash -c "source ~/.cargo/env && export DragonOS_GCC=$HOME/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin && make -j $(nproc) "

+ 6 - 6
kernel/src/driver/uart/uart.rs

@@ -156,10 +156,10 @@ impl UartDriver {
     /// @param str 发送字符切片
     /// @return None
     #[allow(dead_code)]
-    fn uart_send(uart_port: &UartPort, str: &str) {
+    fn uart_send(uart_port: &UartPort, s: &str) {
         let port = uart_port.to_u16();
         while UartDriver::is_transmit_empty(port) == false {
-            for c in str.bytes() {
+            for c in s.bytes() {
                 unsafe {
                     io_out8(port, c);
                 }
@@ -202,11 +202,11 @@ pub extern "C" fn c_uart_read(port: u16) -> u8 {
 ///@param port 串口端口
 ///@param str 字符串S
 #[no_mangle]
-pub extern "C" fn c_uart_send_str(port: u16, str: *const u8) {
+pub extern "C" fn c_uart_send_str(port: u16, s: *const u8) {
     unsafe {
-        let mut i = 0;
-        while *offset(str, i) != '\0' as u8 {
-            c_uart_send(port, *offset(str, i));
+        let mut i = 0isize;
+        while *offset(s, i) != '\0' as u8 {
+            c_uart_send(port, *offset(s, i));
             i = i + 1;
         }
     }

+ 3 - 0
rust-toolchain.toml

@@ -0,0 +1,3 @@
+[toolchain]
+channel = "nightly-2023-01-21"
+components = ["rust-src"]