Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中printk的原子长度的打印格式是什么_C_Linux_Linux Kernel_Operating System_System Calls - Fatal编程技术网

C中printk的原子长度的打印格式是什么

C中printk的原子长度的打印格式是什么,c,linux,linux-kernel,operating-system,system-calls,C,Linux,Linux Kernel,Operating System,System Calls,我试图打印一个原子长度值,但找不到使用它的正确格式,因此无法打印实际信息。我试过了 struct zone *mzone; atomic_long_t l; for_each_zone(mzone); l=mzone ->vm_stat[NR_ACTIVE_ANON]; printk(KERN EMERG "NR_ACTIVE_ANON: %lu",l); 及 但不管怎样,我得到的都是0。我也尝试过原子读取,但它需要一个结构指针原子读取 注意在代码中的每一行的末尾。它可能不应该在那里

我试图打印一个原子长度值,但找不到使用它的正确格式,因此无法打印实际信息。我试过了

struct zone *mzone;
atomic_long_t l; 
for_each_zone(mzone);
l=mzone ->vm_stat[NR_ACTIVE_ANON];
printk(KERN EMERG "NR_ACTIVE_ANON: %lu",l); 

但不管怎样,我得到的都是0。我也尝试过原子读取,但它需要一个结构指针原子读取

  • 注意
    在代码中的每一行的
    末尾。它可能不应该在那里

  • 您应该使用
    atomic\u long\u read()
    ,这是对的。只要给它一个它想要的指针。原子类型不需要使用一些奇特的
    printk()
    格式(而且没有)。以下是一个例子:

    #包括(参见“原子变量”部分)

  • 如果不顾一切,代码可以
    无符号字符buf[sizeof l];memcpy(buf和l、sizeof l)
    然后打印
    buf[]
    。您会将数据视为字节的海洋。但也许这就是
    atomic_long_t
    的意义所在,将其视为字节的海洋而不是整数。@chux我很确定原子类型的意义在于避免在多线程环境中使用锁
    atomic_long_t
    的使用不是问题所在。帖子要求如何打印它的值。@chux可能是
    之后的
    会导致0?出现该问题?。。无论如何,开发人员应该坚持使用原子API。原子变量没有特殊的
    printk
    格式。否则我们会看到的。
    printk(KERN EMERG "NR_ACTIVE_ANON: %ld",l);