小编Rog*_*tha的帖子

处理内核中未定义的指令

所以我正在尝试读取内核中的系统寄存器,最近我遇到了一些障碍。

在 ARM64 中,某些系统寄存器(例如OSECCR_EL1)并不总是被实现。如果它们被实施,那么尝试 mrs 指令就可以了——没有什么不好的事情发生。但是如果它们没有实现,那么内核会由于未定义的指令而抛出 Oops。

然而,这并非不合理,因为我在运行这mrs条指令时处于内核模块中,我没有看到从这个 oops 中恢复的简单方法,甚至没有认识到特定的系统寄存器读取将在第一名。

是否有任何简单的方法可以预先确定系统寄存器是否有效,或者至少以一种不会立即停止我的内核模块函数执行的方式处理内核 oops?

c kernel kernel-module linux-kernel arm64

7
推荐指数
1
解决办法
690
查看次数

从语句内部的函数返回

我要做的就是使用when语句返回一个值:(我想要的功能:

if(x)
    return y
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用:

(when (x) y)
Run Code Online (Sandbox Code Playgroud)

但是when语句没有以退出函数并返回y的方式进行评估.它很高兴继续下一行.有没有办法做到这一点,而不是一个非常难看的if-else块?mzscheme/racket不允许单臂ifs.

lisp scheme racket

5
推荐指数
3
解决办法
779
查看次数

一个有效的C++语句?

我在网上找不到,所以我想我应该问一下.将

arr[0]++;
Run Code Online (Sandbox Code Playgroud)

表现得一样

arr[0] = arr[0] + 1;
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
144
查看次数

将 stdout 通过管道传输到另一个进程的文件描述符

到目前为止,这个一直在挫败我。我知道如何将我的标准输出重定向到同一进程中的另一个文件描述符。我知道如何将标准输出传输到另一个进程的标准输入。但是如果我想将一个进程的标准输出通过管道传输到另一个进程中的文件描述符怎么办?具体来说,对于 while read 的情况...

  cat file | while read -u 9 line; do //some stuff; done
Run Code Online (Sandbox Code Playgroud)

如何将 cat 的输出放到 while 循环的文件描述符 9 上?

bash

3
推荐指数
1
解决办法
1721
查看次数

标签 统计

arm64 ×1

bash ×1

c ×1

c++ ×1

kernel ×1

kernel-module ×1

linux-kernel ×1

lisp ×1

racket ×1

scheme ×1