linux里面的workspace有啥用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux里面的workspace有啥用相关的知识,希望对你有一定的参考价值。

参考技术A 你要是开的东西特别多的话,可以帮助自己整理一下,或者把之前的工作停一下,干某些别的事的时候给自己一个清静的环境之类的

这个要等用了的时候才知道怎么有用
比如我以前在windows里,由于系统资源问题,大部分QQ群都蔽掉了
现在44个群一个也没蔽,有的时候不想看那么多的群,或者桌面的东西太多了,就都拉到别的工作区,等想看的时候还可以去看,也不会漏掉什么有用的东西本回答被提问者采纳
参考技术B 就是虚拟工作区

在编写设备驱动程序时,linux中的__iomem有啥用?

【中文标题】在编写设备驱动程序时,linux中的__iomem有啥用?【英文标题】:What is the use of __iomem in linux while writing device drivers?在编写设备驱动程序时,linux中的__iomem有什么用? 【发布时间】:2013-10-06 16:32:21 【问题描述】:

我看到__iomem用于存储ioremap()的返回类型,但是我在ARM架构中使用了u32,效果很好。

那么__iomem 在这里有什么不同呢?究竟应该在什么情况下使用呢?

【问题讨论】:

【参考方案1】:

许多类型转换只会“正常工作”。但是,这不是很严格。没有什么能阻止您将 u32 转换为 u32 * 并取消引用它,但这不遵循内核 API 并且容易出错。

__iomem 是Sparse 使用的cookie,这是一个用于查找内核中可能的编码错误的工具。如果你没有在启用 Sparse 的情况下编译你的内核代码,__iomem 无论如何都会被忽略。

首先安装 Sparse,然后将 C=1 添加到您的 make 调用中。例如,在构建模块时,使用:

make -C $KPATH M=$PWD C=1 modules

__iomem 是这样定义的:

# define __iomem        __attribute__((noderef, address_space(2)))

为所有 I/O 访问添加(并要求)像 __iomem 这样的 cookie 是一种更严格并避免编程错误的方法。您不想使用绝对地址读取/写入 I/O 内存区域,因为您通常使用虚拟内存。因此,

void __iomem *ioremap(phys_addr_t offset, unsigned long size);

通常被调用以获取指定长度size(以字节为单位)的 I/O 物理地址 offset 的虚拟地址。 ioremap() 返回一个带有__iomem cookie 的指针,所以这个现在可以readl()/writel() 等内联函数一起使用(尽管现在最好使用更明确的宏@987654340 @/iowrite32(),例如),它接受__iomem 地址。

此外,Sparse 使用 noderef 属性来确保您不会取消引用 __iomem 指针。取消引用应该适用于 I/O 确实是内存映射的某些架构,但其他架构使用特殊指令来访问 I/O,在这种情况下,取消引用将不起作用。

我们来看一个例子:

void *io = ioremap(42, 4);

稀疏不高兴:

warning: incorrect type in initializer (different address spaces)
    expected void *io
    got void [noderef] <asn:2>*

或者:

u32 __iomem* io = ioremap(42, 4);
pr_info("%x\n", *io);

Sparse 也不高兴:

warning: dereference of noderef expression

在最后一个示例中,第一行是正确的,因为ioremap() 将其值返回给__iomem 变量。但是,我们尊重它,我们不应该这样做。

这让 Sparse 很高兴:

void __iomem* io = ioremap(42, 4);
pr_info("%x\n", ioread32(io));

底线:总是在需要的地方使用__iomem(作为返回类型或作为参数类型),并使用 Sparse 来确保你这样做了。另外:不要取消引用 __iomem 指针。

编辑:这是一个很棒的LWN article,讲述了__iomem 的诞生以及使用它的功能。

【讨论】:

美丽的解释。这就是一些很好的参考。

以上是关于linux里面的workspace有啥用的主要内容,如果未能解决你的问题,请参考以下文章

学unix有啥用

Linux中文件目录的inode 号有啥用?

sol 是啥文件有啥用

HTML表单input里面的value有啥用?

js里面的getattribute在实际中有啥用?怎样使用?

希捷硬盘里面的setup.exe文件和seagatedashboard有啥用的?