小编tal*_*len的帖子

如何在 Linux 中分配大的连续内存区域

是的,我最终会将它用于 DMA,但暂时将一致性放在一边。我有 64 位 BAR 寄存器,因此,AFAIK,所有 RAM(例如高于 4G)都可用于 DMA。

我正在寻找大约 64MB 的连续 RAM。是的,很多。

Ubuntu 16 和 18 具有CONFIG_CMA=y但未CONFIG_DMA_CMA在内核编译时设置。

我注意到,如果两者都设置(在内核构建时),我可以简单地调用dma_alloc_coherent,但是,出于逻辑原因,重新编译内核是不可取的。

这些机器将始终具有至少 32GB 的 RAM,不运行任何占用大量内存的东西,并且内核模块将在启动后不久加载,然后 RAM 变得明显碎片化,而且,AFAIK,没有其他东西使用 CMA。

我已经设置了内核参数 CMA=1G。(并尝试过 256M 和 512M)

# dmesg | grep cma
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.170 root=UUID=2b25933c-e10c-4833-b5b2-92e9d3a33fec ro cma=1G
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.170 root=UUID=2b25933c-e10c-4833-b5b2-92e9d3a33fec ro cma=1G
[    0.000000] Memory: 65612056K/67073924K available (8604K kernel code, 1332K rwdata, 3972K rodata, 1484K init, 1316K bss, 1461868K reserved, 0K cma-reserved)
Run Code Online (Sandbox Code Playgroud)

我试过了 …

allocation linux-kernel dma contiguous

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

在各种编译器和优化级别下在c中存储bool

简单的示例程序:

#include <stdio.h>
main()
{
    bool tim = true;
    bool rob = false;
    bool mike = true;

    printf("%d, %d, %d\n", tim, rob, mike);

}
Run Code Online (Sandbox Code Playgroud)

使用gcc编译器,根据查看程序集输出,它的appearers将每个bool存储为单个字节中的一个位:

0x4004fc <main()+8>          movb      $0x1,-0x3(%rbp)
0x400500 <main()+12>         movb      $0x0,-0x2(%rbp)
0x400504 <main()+16>         movb      $0x1,-0x1(%rbp)
Run Code Online (Sandbox Code Playgroud)

但是,如果一个开启优化,是否有一个优化级别会导致gcc将这些bool存储为一个字节中的位,或者是否必须将bool放在一些bool和short int的并集中?其他编译器?我试过'-Os',但我必须承认我不能做出输出反汇编的正面或反面.

c compiler-construction gcc icc

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

APP_STL:= gnustl_static在Android NDK 8c到8e中被破坏

这对8b工作正常但是从8c开始我得到:

rm -f ./libs/armeabi/lib*.so ./libs/armeabi-v7a/lib*.so ./libs/mips/lib*.so ./libs/x86/lib*.so
rm -f ./libs/armeabi/gdbserver ./libs/armeabi-v7a/gdbserver ./libs/mips/gdbserver ./libs/x86/gdbserver
rm -f ./libs/armeabi/gdb.setup ./libs/armeabi-v7a/gdb.setup ./libs/mips/gdb.setup ./libs/x86/gdb.setup
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver
install -p /home/tallen/eclipse/android-ndk-r8e/prebuilt/android-arm/gdbserver/gdbserver ./libs/armeabi-v7a/gdbserver
Gdbsetup       : libs/armeabi-v7a/gdb.setup
echo "set solib-search-path ./obj/local/armeabi-v7a" > ./libs/armeabi-v7a/gdb.setup
echo "directory /home/tallen/eclipse/android-ndk-r8e/platforms/android-8/arch-arm/usr/include /home/tallen/eclipse/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++ /home/tallen/eclipse/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.6/include /home/tallen/eclipse/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include jni/NG1.4 jni/NG2.4" >> ./libs/armeabi-v7a/gdb.setup
SharedLibrary  : libngapi1_4.so
/home/tallen/eclipse/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ -Wl,-soname,libngapi1_4.so -shared --sysroot=/home/tallen/eclipse/android-ndk-r8e/platforms/android-8/arch-arm ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/config.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/ngroute.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/ngreversegeocode.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/ngugeosearch.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/ngpoifinder.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/ngumap.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUDataSource.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUBase.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUCameraBehavior.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUGeocode.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUImageCommon.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGULocationHandler.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGULocationInfo.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUMapContext.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUMapSettings.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUMapTools.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUNaviInfoManager.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUPoiSearch.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUPoiTypeManager.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUReverseGeocode.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGURoute.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUStatusDecoder.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/UnitFormatter.o ./obj/local/armeabi-v7a/objs-debug/ngapi1_4/NGUMapView.o /home/tallen/eclipse/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a -lgcc -no-canonical-prefixes …
Run Code Online (Sandbox Code Playgroud)

android g++ android-ndk

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