- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
任何人都可以看出为什么以下 ifs,xv6-rev6 代码中的第 3279-3285 行,使用:
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < SYS_open && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else if (num >= SYS_open && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
不只是:
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
最佳答案
我的原答案如下,部分正确。
我冒昧地联系了麻省理工学院的作者,并收到了以下回复:
The code in the second half of the
if
wrapped the system call in abegin_trans/commit_trans
. We later moved the transaction start/end deeper into individual system calls, but forgot to fixsyscall()
.
所以这两个部分是不同的,当它们被更改为相同时,修改根本没有将这两个部分合并回一起。
不,这两段代码是等价的。
可能是在某些时候对 syscalls[?]()
的调用在某种程度上有所不同,无论是参数还是返回位置,但现在情况并非如此。
那里也可能存在某种差距,第 3115 行有一个空行这一事实可能支持这一点:
// System call numbers
#define SYS_fork 1
#define SYS_exit 2
#define SYS_wait 3
#define SYS_pipe 4
#define SYS_read 5
#define SYS_kill 6
#define SYS_exec 7
#define SYS_fstat 8
#define SYS_chdir 9
#define SYS_dup 10
#define SYS_getpid 11
#define SYS_sbrk 12
#define SYS_sleep 13
#define SYS_uptime 14
#define SYS_open 15
#define SYS_write 16
#define SYS_mknod 17
#define SYS_unlink 18
#define SYS_link 19
#define SYS_mkdir 20
#define SYS_close 21
这是syscalls.h
的全部内容,空行有点可疑。
没有明显的功能分组 - 尽管所有 15 及以上的似乎都与文件系统操作有关,SYS_read
和 SYS_fstat
属于第一组。
也许您应该联系作者询问他们(6.828-staff at pdos.csail.mit.edu
)。
我知道(因为我有这本书)它没有从狮子时代的代码中继承下来,因为列表中没有这样的空白 - 它们的顺序也不同,旁边是读和写例如彼此。
关于c - syscall() 中的 xv6 rev6 奇怪代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939069/
我正在尝试使用 gulp-rev、gulp-rev-replace 和 gulp-rev-css-url 重写对我的版本图像文件的引用。 我已设法修改文件并将 list 与以下 gulp 代码合并:
与此问题类似:How do I replace the filenames listed in index.html with the output of gulp-rev? 我使用 gulp-use
git blame --ignore-revs-file显然是现代 Git 中存在的一个选项。 只有一个问题。它不起作用。 或者至少,它对我不起作用: 您可以将其添加到 shell 脚本中: mkdi
我想将我在 eclipse 中的项目从 SDK rev 15 移动到 rev 17,但现在我不能再运行简单的项目导入示例,这些示例在 rev 15 下没有问题。在 rev 15 下,我只是使用构建路径
使用 Three.js Rev 82,我的实验飞行模拟器应用程序显示了此显示(根据需要显示并支持对象拾取):- 当我将应用程序更改为使用 Three.js Rev 89 时,执行错误为零(令人满意),
背景 我正在使用 Yeoman webapp 来搭建我的前端。 在 gruntfile 中,他们使用 grunt-rev 和 grunt-usemin Grunt-rev 将“修改”我的 Assets
我在将 android SDK 工具 rev 19 更新到 rev 20 和 Android SDK Platform-tool rev 11 到 rev 12 时遇到问题。 我检查了 SDK 管理器
这是来自 pre-commit 的 .pre-commit-config.yaml . 它将 git 克隆 git 存储库的指定 rev。 我怎样才能忽略 rev 并始终 git clone 最新的?
我是 OCaml 的新手,并试图将 List.append 实现为一种学习练习。这就是我所拥有的: let rec append a b = match (List.rev a) with
这是我的矩阵: df <- data.frame(matrix(1:25,5)) X1 X2 X3 X4 X5 1 1 6 11 16 21 2 2 7 12 17 22 3
我有一个 say {a,b,c,d,...} 的列表,每个元素 a,b,c,d, ... 是 data.table但是,对于 data.table,我需要颠倒顺序我只想rev()除了第一列之外的所有内
我发现在gradle构建期间将git版本号添加到我的项目版本中是一个 super 聪明的主意,例如major.minor.commit。这是通过以下方式实现的 git rev-list --count
如果我这样做 git clone - 它完美无缺。 但如果之后我尝试使用 git pull它挂起(有时工作正常): git 客户端版本:2.6.3 git 服务器版本:2.1.4 输出: $ GIT_
gulp-rev-all 有问题。我有以下基本的 gulpfile: var gulp = require('gulp'), RevAll = require('gulp-rev-all'),
我试着写了一段代码来旋转文本文件中的每一行。例如,给定下一行: a b c 输出将是: c b a 此脚本仅获取一个参数作为参数 - 文本文件的名称。另外,我想这样做对额外的空间很重要。即,给定下一行
正在使用yeoman angular generator (1.4.x)的代码库进行工作. gulp-rev 正在被使用,即使对于相同的代码库,它每次都会生成一个新的文件(哈希)名称,我如何保留相同的
以下命令的作用是什么? git rev-parse --short HEAD 答案应该包括: 一个简短而中肯的答案,解释这个命令作为一个整体的作用 rev-parse的解释 --short 的解释 H
在寻找 git hook 示例时,我遇到了以下帖子:https://github.com/Movidone/git-hooks/blob/master/pre-receive我想了解以下命令: git
所以我知道这个问题已经被问了很多,但我没有找到任何合适的答案。我希望在我的提示中显示当前 git rev 的名称,但以一种漂亮的方式:如果我在一个分支上,我想要分支的名称;如果它不是分支,我希望在我的
根据 git name-rev doc , Finds symbolic names suitable for human digestion for revisions given in any f
我是一名优秀的程序员,十分优秀!