小编Chi*_*nna的帖子

查找连接到Linux计算机的所有存储设备

我需要找到连接到给定机器的所有可写存储设备,无论它们是否已安装.

执行此操作的有趣方法是尝试/dev对应于可写设备的每个条目(hd* and sd*)......

有没有更好的解决方案,还是应该坚持使用这个?

linux bash shell

108
推荐指数
5
解决办法
46万
查看次数

uint16_t和64位处理器的unsigned short int之间有什么区别?

我开始使用类型的变量uint16_t,但由于我的项目限制,我无法使用该数据类型.有可能unsigned short int代替uint16_t吗?我不知道他们俩之间的区别.有人可以澄清一下吗?

c linux

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

21
推荐指数
2
解决办法
1107
查看次数

内核虚拟内存如何映射到物理内存

如何找到内核空间的内存映射?VA - > PA

我知道proc文件系统/proc/pid/maps,/proc/pid/mappings它为我们提供了用户空间应用程序的映射.有什么类似于查找内核空间映射的东西吗?

谢谢!

linux memory-management linux-kernel

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

如何分配页面大小对齐的内存?

我需要分配应该页面大小对齐的内存.我需要将此内存传递给ASM计算所有数据块的xor 的代码.我需要这样做malloc().

c linux memory memory-management

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

在位字段的情况下,哪一个更好用,unsigned char或unsigned int以及为什么?

我只想知道以下结构声明.哪一个更适合用于内存分配?为什么?那么在unsigned char和unsigned int的情况下填充呢?

struct data{
 unsigned char a:3;
 unsigned char b:4;
}; 
Run Code Online (Sandbox Code Playgroud)

struct data{
 unsigned int a:3;
 unsigned int b:4;
};
Run Code Online (Sandbox Code Playgroud)

c linux structure bit-fields

6
推荐指数
2
解决办法
847
查看次数

为什么printf()在以下代码中打印0而不是10?

如果我编译并运行以下代码,则打印0而不是10.

#include<stdio.h>
main()
{
    int Var=10;
   {
     char Var=Var;
     printf("%d",Var);
   }
}
Run Code Online (Sandbox Code Playgroud)

为什么这是打印0,为什么不是10?

c linux variables

6
推荐指数
2
解决办法
432
查看次数

为什么要定义一个直接使用的宏?(请参阅说明我想要的确切内容)

我正在遍历linux内核代码.我发现一个宏被定义为#define __async_inline __always_inline.我搜索过__always_inline,发现了以下声明#define __always_inline inline.我的问题是为什么他们需要这样做?他们可以直接使用inline而不是这个宏吗?

c macros linux-kernel

5
推荐指数
2
解决办法
122
查看次数

以下哪一个宏是安全的,为什么?

为获得最多两个数字,我有以下宏

#define max(a,b) ((a) > (b) ? (a) : (b))

#define maxint(a,b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
Run Code Online (Sandbox Code Playgroud)

以上两者之间有什么区别.哪一个更好用,为什么.我在这里找到了这些宏的信息.但无法理解它.

c gcc c-preprocessor

5
推荐指数
2
解决办法
217
查看次数

我可以在dma_sync_single_for_cpu之后调用dma_unmap_single吗?

我有一个情况我需要调用dma_unmap_singledma_sync_single_for_cpu.以下是我的情景.

  1. 使用分配缓冲区的内存 kmalloc()
  2. 映射使用缓冲到设备dma_map_singleDMA_FROM_DEVICE方向.
  3. 收到数据包后,使用获取缓冲区所有权dma_sync_single_for_cpu.
  4. 经过一段时间后,如果内核中的其他一些函数使用相同的缓冲区,则从设备中使用dma_unmap_singleDMA_FROM_DEVICE方向的unmap缓冲区.

以上所有步骤都可以接受吗?

c device-driver linux-device-driver linux-kernel dma

5
推荐指数
1
解决办法
732
查看次数