1.4. 2023-10日志#
1.4.1. 2023-10-18#
新员工遇到一个assert出错的问题,拿一个地址与0比较,"void *"变量要先先转换为整型数据 后才能与整形数据比较。上周有同事提到可以用chartGPT来帮忙找BUG,那么是否能找出问题 所在呢?
void *addr = (void *)0xffffffffffffffff;
void *map_fail = (void *)0;
assert_err_return(addr > map_fail)
找出上面C代码的BUG
2023/10/17 21:46:53
这段代码试图比较两个指针的值,但是这种比较在ℂ语言中是未定义的行为。C语言标准并没有定义指针之间
的大小比较,除非它们指向同一个数组或者同一个结构体的成员。在这种情况下,比较的结果可能会因编译
器或者平台的不同而不同。
另外, assert_err_return 并不是C语言的标准函数或宏,可能是用户自定义的,但在这段代码中并没有给
出定义,所以也可能会导致编译错误。
如果你想比较两个指针的值,你应该先各它们转换为整数类型,例如 uintptr_t,然后再进行比较。但是请
注意,这种做法并不是完全可移植的,因为C语言标准并没有保证指针和任何整数类型有相同的大小。
然后再让google的bard与号称使用chatGPT的new bing,结果他们的结果都没有chatGPT好。
lmbenchmark编译的方法:
git clone git@code-sh2.rnd.huawei.com:kernel_test/benchmark_project.git
cd XXX/benchmark_project/
patch -p1 < patch/lmbench3/0001-lmbench3-Fix-the-compile-bug.patch
arm64:
./runtest.sh --compile-t stream,lmbench3,libMicro-0.4.0,netperf-2.7.0,unixbench,fio-3.12 --compile-s no --compile-a aarch64 --compile-o XXX/benchmark_bin
x86:
./runtest.sh --compile-t stream,lmbench3,libMicro-0.4.0,netperf-2.7.0,unixbench,fio-3.12 --compile-s no --compile-a x86 --compile-o /XXX/benchmark_bin
cd /XXX/benchmark_bin
./runtest.sh --test-t stream,lmbench3,libMicro-0.4.0,netperf-2.7.0,unixbench,fio-3.12 --test-l 5 --test-h 9.84.1.18 --test-u root --test-p Huawei12#$ --test-o /XXX/benchmark_bin > runtest.log
性能优化start app 一直在运行,ldconfig进行D状态达1S,阻塞了启动时间。 根据经验,ldconfig会去读squashfs中的数据,而此场景的squashfs的镜像都是保存在nand flash上的HFFS上。 通过squashfs的流程分析是因为加了大锁导致HFFS的性能变差。
ssh隧道命令
ssh -L 44444:192.168.122.6:22 -N -f -C -g chenyi@10.67.174.191
- -N
不用执行远端的命令。这个功能对于端口转发非常有用。
- -f
让ssh在后台执行。
- -C
所有的数据(stdin,stdout,stderr, 转发x11的数据,TCP和unix域的连接)都压缩
- -g
允许远程主机连接到本地转发的端口