小编zge*_*erd的帖子

PCIe插槽的中断路由直接连接到CPU

如果我们今天查看Haswell架构图,我们可以看到有PCIe通道直接连接到CPU(用于图形)以及其中一些路由到平台控制器集线器(南桥更换): 英特尔C22X芯片组图

如果我们看一下英特尔8系列数据表(C222的规格),我们会发现英特尔C222包含用于路由传统INTx中断的I/O APIC(第5.10章).我的问题是,如果传统的INTx中断请求直接到达CPU(通过PCIe 3.0通道)会发生什么.是否必须首先转发到C222,还是系统代理中还有另一个I/O APIC,在这种情况下我必须编程?此外,借助用于定向I/O的英特尔虚拟化技术,现在还有一个额外的间接,即中断重映射表.在CPU或C222上的系统代理(前北桥)中的那个表是否意味着在启用重映射的情况下,需要首先将PCIe 3.0通道的所有中断路由到C222?

operating-system x86-64 intel interrupt pci-e

11
推荐指数
1
解决办法
537
查看次数

运算符按值重载会导致使用移动值

编译以下使用运算符重载的Rust代码

use std::ops::{Add};

#[derive(Show)]
struct Point {
    x: int,
    y: int
}

impl Add for Point {
    type Output = Point;

    fn add(self, other: Point) -> Point {
        Point {x: self.x + other.x, y: self.y + other.y}
    }
}

fn main() {
    let p: Point = Point {x: 1, y: 0};
    let pp = p + p;
}
Run Code Online (Sandbox Code Playgroud)

由于p的所有权导致编译器错误:

<anon>:21:18: 21:19 error: use of moved value: `p`
<anon>:21     let pp = p + p;
                           ^
<anon>:21:14: 21:15 note: `p` moved …
Run Code Online (Sandbox Code Playgroud)

copy operator-overloading pass-by-value ownership rust

7
推荐指数
2
解决办法
554
查看次数