小编kum*_*mar的帖子

缓存 - 刷新和无效操作

我对缓存同步操作有一些疑问.

无效:在cpu尝试读取设备更新的部分内存之前,需要使相应的内存无效.

刷新:在设备读取CPU更新的部分内存之前,CPU必须刷新(写回也是正确的?)从缓存到内存的内容,以便设备从内存中读取更新内容的内容.

如果不执行刷新,则它可以读取存储器中存在的垃圾数据,因为存储器仍未使用写入高速缓存的内容进行更新.

请确认我的上述理解是否正确?

您想什么时候将flush和invalidate结合起来?我听说在使用设备控制描述符时,我们需要通过组合flush和invalidate进行同步.为什么这样?

我们是否需要遵循像flush这样的序列然后无效?

是否有一个场景,其中有效的后续执行无效?

hardware caching driver device-driver dma

17
推荐指数
2
解决办法
3万
查看次数

在CMD之前执行脚本

根据Docker文档:Dockerfile中只能有一条CMD指令.如果列出多个CMD,则只有最后一个CMD才会生效.

我希望在CMD命令(在我的情况下是init)之前执行一个简单的bash脚本(处理docker环境变量).

有没有办法做到这一点?

environment-variables docker

17
推荐指数
2
解决办法
1万
查看次数

-lgcc_s和gcc之间的区别

链接gcc_sgcc通过链接有什么区别LDFLAGS

gcc_s静态库和gcc共享库吗?

因为我正在寻找一个解决方案,其中提到链接反对,gcc而只gcc_s在我的情况下工作.我想知道真正的区别.

<<hidden symbol `__name_here' in /some/library/path.a(_filename.o) is referenced by DSO
Run Code Online (Sandbox Code Playgroud)

在这种情况下,通常通过向gcc -print-libgcc-file-name链接标志(LDFLAGS)添加"-l gcc"或" "来解决问题.但是,与我的其他常规平台(i386,amd64,sparc64)不同,这还不够.经过大量的头脑冲击(公平地说,它也来自音乐)我意识到这个标志在链接libc 最终的可执行文件时都是必要的.链接:http://people.defora.org/~khorben/200903.html

compiler-construction linker gcc loader

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

读取CPU缓存内容

有没有办法读取CPU缓存内容?架构适用于ARM.

我使一系列地址无效,然后想确定它是否无效.虽然我可以读取和写入地址范围,无论是否有无效和检查失效,我想知道是否可以读取缓存内容

谢谢!!

hardware cpu caching cpu-cache

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

sizeof float(3.0)vs(3.0f)

sizeof(3.0)和sizeof(3.0f)有什么区别

我期待他们两个给出相同的结果(sizeof float)..但它的不同.

在32位机器中,gcc编译器,sizeof(3.0f)=> 4 sizeof(3.0)=> 8

为什么这样?

c sizeof

11
推荐指数
3
解决办法
9236
查看次数

如何通过Linux上的名称对某些目录中的文件进行排序

我使用opendir()readdir()在目录中显示文件名.但他们是无序的.我怎么能对它们进行排序?语言是C.

c linux sorting file scandir

11
推荐指数
2
解决办法
2万
查看次数

TLB中的内核内存(虚拟地址条目)?

Linux是操作系统,ARM是在此上下文中引用的处理器.

TLB是否包含内核和用户空间虚拟地址?内核内存开始于0xc000_0000并转到0xFFFF_FFFF 前3 GB属于用户空间的位置.在进程之间的上下文切换之间,刷新TLB.

TLB是否包含内核和用户空间虚拟地址?

内核内存(虚拟)直接对应物理内存(只是偏移0xC000_0000将给我们物理地址).是否有必要在TLB中使用内核(虚拟)(如果你说它存在于TLB中)?它应该只有用户空间地址.

linux hardware kernel memory-management tlb

8
推荐指数
2
解决办法
4850
查看次数

USB和PCI之间的关系

我对linux设备驱动程序书中的以下语句感到困惑. http://www.linuxdriver.co.il/ldd3/

13.2.USB和Sysfs为了帮助理解这个长设备路径的含义,我们描述了内核如何标记USB设备.第一个USB设备是根集线器.这是USB控制器,通常包含在PCI设备中.控制器如此命名,因为它控制连接到它的整个USB总线.控制器是PCI总线和USB总线之间的桥梁,也是该总线上的第一个USB设备.

特别声明"控制器是PCI总线和USB总线之间的桥梁"

是这样吗?我的印象是PCI和USB都是不同的总线.请澄清.

hardware linux-kernel

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

左侧后增量

我的印象是,后增量(OR preincrement)只能在相等(=)的右侧进行.但我能够编译下面的代码.你能帮助我理解这个特定的代码,特别是在线下.来源:http://www.ibm.com/developerworks/library/pa-dalign/

*data8++ = -*data8;


void Munge8( void *data, uint32_t size ) {
    uint8_t *data8 = (uint8_t*) data;
    uint8_t *data8End = data8 + size;

    while( data8 != data8End ) {
        *data8++ = -*data8;
    }
}
Run Code Online (Sandbox Code Playgroud)

c pointers

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

systemd 脚本 - 由 ExecStartPre 更新的环境文件

我正在 Docker 环境中试用 systemd 脚本。

考虑一下:

ExecStartPre 更新环境文件中提到的命令和 ExecStart 实际上利用了 env 中提到的环境变量。文件。?(都在同一个 systemd 文件中)。

像这样:

[Unit]
Description=test service
Before=memcached.service

[Service]
Type=oneshot
EnvironmentFile=-/etc/sysconfig/testfile
ExecStartPre=/usr/local/bin/update_sysconfig_testfile.sh
ExecStart=/usr/bin/testmebinary $VOLUMES

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这里,$VOLUMES 定义在 testfile 中,它由 update_sysconfig_testfile.sh 脚本更新。

systemd 会知道 ExecStartPre (或)所做的更改它只是加载测试文件中的任何值吗?

如果有更好的方法,请分享。

linux bash systemd

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