2023-10日志
^^^^^^^^^^^^^^^^^^^^^^^

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 
    允许远程主机连接到本地转发的端口
