小编Vin*_*nay的帖子

如何在不崩溃Linux内核的情况下访问mmaped/dev/mem?

我有一个简单的程序试图访问用户空间中的物理内存,其中内核存储第一个结构页面.在64位机器上,此地址为:

  • 内核虚拟地址:ffffea0000000000
  • 物理地址:0000620000000000

我试图通过用户空间中的mmap访问此物理地址.但是下面的代码崩溃了内核.

int *addr;
if ((fd = open("/dev/mem", O_RDWR|O_SYNC)) < 0 ) {
    printf("Error opening file. \n");
    close(fd);
    return (-1);
}
/* mmap.  address of first struct page for 64 bit architectures 
 * is 0x0000620000000000.
 */
addr = (int *)mmap(0, num*STRUCT_PAGE_SIZE, PROT_READ, MAP_PRIVATE,
            fd, 0x0000620000000000);
printf("addr: %p \n",addr);
printf("addr: %d \n",*addr); /* CRASH. */
Run Code Online (Sandbox Code Playgroud)

c linux mmap linux-kernel

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

Spark 2.0.0 Arrays.asList无法正常工作 - 不兼容的类型

以下代码适用于Spark 1.5.2,但不适用于Spark 2.0.0.我使用的是Java 1.8.

final SparkConf sparkConf = new SparkConf();
sparkConf.setMaster("local[4]"); // Four threads
final JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);
final JavaRDD<String> javaRDDLines = javaSparkContext.textFile("4300.txt");
final JavaRDD<String> javaRDDWords = javaRDDLines.flatMap(line -> Arrays.asList(line.split(" ")));
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

Error:(46, 66) java: incompatible types: no instance(s) of type variable(s) T exist so that java.util.List<T> conforms to java.util.Iterator<U>
Run Code Online (Sandbox Code Playgroud)

我无法确定Spark API是否已更改或其他内容.请帮忙.谢谢.

java apache-spark

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

标签 统计

apache-spark ×1

c ×1

java ×1

linux ×1

linux-kernel ×1

mmap ×1