小编Mat*_*ieu的帖子

在AWK中转换日期

我有一个包含许多文本列的文件,包括一行的时间戳Fri Jan 02 18:23,我需要将该日期转换为MM/DD/YYYY HH:MM格式.

我一直在尝试使用带有awk getline的标准"date"工具来进行转换,但我无法弄清楚如何以预期的格式将字段传递给'date'命令(引用"或") s,)因为getline也需要用引号括起来的命令字符串.

就像是 "date -d '$1 $2 $3 $4' +'%D %H:%M'" | getline var

现在我考虑一下,我想我真正想问的是如何将awk变量嵌入到字符串中.

awk command-line datetime

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

如何编写多个slave i2c客户端设备驱动程序?

我正在尝试为嵌入式主板开发驱动程序.驱动程序应该为v4l2打开一个接口,并使用i2c与2个设备通信.司机将充当主人.

我似乎无法理解i2c_device_id数组和i2c_add_driver函数是如何工作的.我阅读了内核源代码中的文档,但它对多个从属客户端没有帮助.

  • 我必须有两个独立的探头功能吗?
  • 我必须打i2c_add_driver两次电话吗?
  • 如果不是,我将如何能够保存两个不同的客户端,以便能够将不同的字节发送到不同的地址.

我在这里粘贴我的代码.我试图实例化两个i2c_drivers,调用i2c_driver_add两次并单独实现i2c探测.该代码无法正常工作,告诉我第二次foo1 调用时已经注册i2c_add_driver.

i2c1在我的dts文件中定义了两个块,如:

&i2c1 {

...
    foo0: foo0@00 {
        compatible = "bar,foo0";
        reg = <0x00>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ipu1_2>;
        clocks = <&clks IMX6QDL_CLK_CKO>;
        clock-names = "csi_mclk";
        DOVDD-supply = <&vgen4_reg>; /* 1.8v */
        AVDD-supply = <&vgen3_reg>;  /* 2.8v, on rev C board is VGEN3,
                        on rev B board is VGEN5 */
        DVDD-supply = <&vgen2_reg>;  /* …
Run Code Online (Sandbox Code Playgroud)

c linux client kernel i2c

10
推荐指数
1
解决办法
3581
查看次数

致命错误:jni_md.h:没有这样的文件或目录#include"jni_md.h"

gcc在ubuntu上执行命令以生成JNI的.a或.so文件时,低于openjdk 8/oraclejdk8的错误.

$gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include -c MainImpl1.c -o MainImpl1.o

In file included from MainImpl1.c:1:0:
/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
 #include "jni_md.h"
                ^
compilation terminated.

$gcc -I/usr/lib/jvm/java-8-oracle/include -c MainImpl1.c -o MainImpl1.o

In file included from MainImpl1.c:1:0:
/usr/lib/jvm/java-8-oracle/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
 #include "jni_md.h"
                ^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我已经给出了生成.a文件的示例,但同样也出现了.so文件生成问题.

但是同样的gcc命令适用于openjdk7/oraclejdk7.

这是什么问题?

c c++ java linux gcc

9
推荐指数
1
解决办法
9235
查看次数

atof() 用于 float 而不是 double

atof() 返回一个双精度值,当我将它分配给一个浮点值时会产生一个警告(是的,我绝对必须使用浮点数)。

所以我的问题是:是否有一个atof()-variant 可用,它返回一个普通的浮点数?或者我是否必须通过演员表来解决这个问题 - 这会很遗憾,因为它浪费了资源来创建一个会立即被丢弃的替身。

c atof ansi-c

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

“ get_user_pages”如何工作(对于Linux驱动程序)

在Linux PCI驱动程序上工作,现在我正尝试使用分散/聚集为DMA编写代码。

到目前为止,我已经了解到,要直接从用户空间访问DMA数据,我们需要将用户空间页面固定到内核空间。

为此,我们拥有get_user_pages,其完整定义如下:

int get_user_pages(struct task_struct * tsk,  
    struct mm_struct * mm,  
    unsigned long start,  
    int nr_pages,  
    int write,  
    int force,  
    struct page ** pages,  
    struct vm_area_struct ** vmas);
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是关于struct page ** pages。在这里,我们需要为分配内存(kcalloc用于ex),pages然后再调用get_user_pages吗?

我的第二个问题是关于unsigned long start,在手册页上说“起始用户地址”,这是否意味着,如果我在用户空间中声明一个指针,例如int *p,我应该传递给内核空间的“起始用户地址”是p

我的第三个问题也与有关unsigned long start,如果我对第二个问题的理解正确,那么我们如何确保该地址恰好在页面的开头?

所以这三个问题,谢谢你的推进。

c linux kernel-module linux-device-driver linux-kernel

6
推荐指数
1
解决办法
5199
查看次数

变量名,C 中运行时的函数参数

是否可以在 C 程序中在运行时知道函数参数和变量的名称类型?例如,如果我有一个函数:

int abc(int x, float y , somestruct z ){
    char a;
    int b ;
}
Run Code Online (Sandbox Code Playgroud)

我可以知道在这个函数内部abc(),参数和变量的名称是什么,在这种情况下它的x, y, z, ab它们的类型是int, float, somestruct, char, int

说是否还有另一个功能:

float some_func(specialstruct my_struct, int index){

} 
Run Code Online (Sandbox Code Playgroud)

我应该知道参数 name 是my_structindex类型是specialstruct, int

我在运行时需要这些信息?

我可以访问基指针和返回地址,是否可以使用上述指针获取所需信息。

我能够使用返回地址和dladdr()函数提取函数名称。

我明白了GDB,所以应该可以提取这些信息?

c linux gdb bfd dladdr

6
推荐指数
1
解决办法
488
查看次数

cmake 是否可以选择避免使用未定义的变量(如 bash set-u)

确实有cmake一种在使用未定义变量时生成错误的机制,有点set -ubash.

我有一个由多个文件组成的大项目CMakeLists.txt,代表约 1500 行,因此使用这种结构相当困难:if(NOT DEFINED VAR_NAME)

在理想的世界中,以下内容CMakeLists.txt可能会失败。

cmake_minimum_required(VERSION 3.13)
message(STATUS "Will delete ${DIR}/${FILE}")
Run Code Online (Sandbox Code Playgroud)
  • 这样的选择存在吗?(我不这么认为,但是cmake文档很大,我可能错过了)
  • 这种行为是否在项目路线图上?

cmake

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

C中的安全文件删除

C中的安全文件删除

我需要安全删除C中的文件,这是我做的:

  1. fopen获得的文件句柄
  2. 使用lseek/ 计算大小ftell
  3. 根据当前时间/或文件大小获取随机种子
  4. 从一个循环中将(size)字节写入文件,每次迭代写入256字节
  5. fflush/ fclose文件句柄
  6. 重新打开文件并重新执行步骤3-6 10到15次
  7. 重命名该文件,然后将其删除

这是怎么做的?因为我在橡皮擦中读到了"Gutmann 25 pass"的名字,所以我猜25是文件被覆盖的次数,'Gutmann'是随机化算法?

c file-io

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

设置CPU关联后,udp_recv cpu使用量增加

我写了一个简单的udp_recv测试演示,我发现了一个奇怪的事情

如果我将CPU亲和力设置为cpu0,则cpu使用率为5%,但在设置与其他cpu的亲和性后,cpu使用率增加到9%~12%,特别设置为cpu20,cpu使用率超过25%!

perf -e cpu-lock top -p xxxx用来检查火锅功能.
当我设置亲和力时cpu0,cpu使用率是5%,我得到了这个:

Samples: 20K of event 'cpu-clock', Event count (approx.): 742033834  
 20.41%  [kernel]      [k] fget_light
 11.84%  [kernel]      [k] copy_user_enhanced_fast_string
  8.63%  [kernel]      [k] sock_recvmsg
  6.49%  [kernel]      [k] _raw_spin_unlock_irqrestore
  5.81%  [kernel]      [k] aa_revalidate_sk
  3.93%  [kernel]      [k] SYSC_recvfrom
  3.85%  [kernel]      [k] sockfd_lookup_light
  3.47%  [kernel]      [k] udp_recvmsg
Run Code Online (Sandbox Code Playgroud)

然后我设置CPU亲和力cpu5,CPU使用率是10%,我得到了这个:

Samples: 1K of event 'cpu-clock', Event count (approx.): 286637653
 13.33%  [kernel]      [k] copy_user_enhanced_fast_string
 10.51%  [kernel]      [k] _raw_spin_unlock_irqrestore
  7.02%  [kernel] …
Run Code Online (Sandbox Code Playgroud)

c udp affinity linux-kernel

5
推荐指数
0
解决办法
319
查看次数

如何在Windows上包含外部C库

我是C语言的新手,我试图包括一个外部库,而不使用任何IDE,仅在Windows cmd 上使用文本编辑器minGW编译器。在这种情况下,该库是我真正想了解的过程,不仅限于该库libPNG

如果有更好的方法(更简单)来执行此操作,我也想知道。

c external include

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