草庐IT

linux - ARM linux 和交叉工具链问题

我的arm工具链可能有问题,但也许还有其他地方我做错了。我有中国制造的开发板qq2440使用Samsungs3c2440ARM9uC。我将Ubuntux86与nativegcc(4.3.3)和交叉编译版本arm-unknown-linux-uclibc-gcc(crosstool-NG-1.3.2)4.3.2一起使用我遵循了http://blog.leshak.ru/english/pages/how-to-install-u-boot-linux-2629-rootfsjffs2-busybox-1132-into-nand-qq2440/中的教程并为该主板使用了Leshak的内核补

linux - 嵌入式linux驱动加载

我正在为嵌入式linux(ARM)开发设备驱动程序。如何编译作为内核一部分生成的KO文件,以某种方式在启动时加载模块?这是我第一次需要将驱动程序编译到内核中,而不是作为可加载模块。所以我不确定该怎么做。谢谢,拉蒙。 最佳答案 对于你的第一个问题,我假设你想将你的驱动程序静态地构建到内核镜像中(而不是作为一个模块)。首先,您在drivers目录中选择一个要放置驱动程序文件的目录。假设您想将文件放在drivers/char/中。将您的文件复制到此目录中。drivers/char/目录下会有一个Kconfig文件,打开它并在endmenu

linux - 嵌入式linux驱动加载

我正在为嵌入式linux(ARM)开发设备驱动程序。如何编译作为内核一部分生成的KO文件,以某种方式在启动时加载模块?这是我第一次需要将驱动程序编译到内核中,而不是作为可加载模块。所以我不确定该怎么做。谢谢,拉蒙。 最佳答案 对于你的第一个问题,我假设你想将你的驱动程序静态地构建到内核镜像中(而不是作为一个模块)。首先,您在drivers目录中选择一个要放置驱动程序文件的目录。假设您想将文件放在drivers/char/中。将您的文件复制到此目录中。drivers/char/目录下会有一个Kconfig文件,打开它并在endmenu

linux - 全局偏移表结构

全局偏移表(ELF)的结构如何。我试图了解动态链接。谁能告诉我得到的数据结构是什么样子的。我不知何故从未在网上找到它。 最佳答案 这是特定于操作系统和平台的,但对于x86/x64Linux,全局偏移表只是一堆函数地址。其中每个符号都有一个条目。在解析符号之前,地址(用于函数)指向过程链接表(PLT),但随后更新为指向实际函数位置。 关于linux-全局偏移表结构,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

linux - 全局偏移表结构

全局偏移表(ELF)的结构如何。我试图了解动态链接。谁能告诉我得到的数据结构是什么样子的。我不知何故从未在网上找到它。 最佳答案 这是特定于操作系统和平台的,但对于x86/x64Linux,全局偏移表只是一堆函数地址。其中每个符号都有一个条目。在解析符号之前,地址(用于函数)指向过程链接表(PLT),但随后更新为指向实际函数位置。 关于linux-全局偏移表结构,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

linux - 为什么 flush_dcache_page() 在 linux 内核中什么都不做?

我发现flush_dcache_page()在x86arch上的linux内核中没有执行任何操作,如下所示include/asm-generic/cacheflush.hLine17#defineflush_dcache_page(page)do{}while(0)我认为x86arch上有缓存刷新指令“CLFLUSH”,它可以用于此页面刷新。但是flush_dcache_page()并不像上面的源代码那样运行任何CPU指令。为什么flush_dcache_page()在x86架构上不运行任何指令?是否保证将dcache中的一个page写入主存? 最佳答案

linux - 为什么 flush_dcache_page() 在 linux 内核中什么都不做?

我发现flush_dcache_page()在x86arch上的linux内核中没有执行任何操作,如下所示include/asm-generic/cacheflush.hLine17#defineflush_dcache_page(page)do{}while(0)我认为x86arch上有缓存刷新指令“CLFLUSH”,它可以用于此页面刷新。但是flush_dcache_page()并不像上面的源代码那样运行任何CPU指令。为什么flush_dcache_page()在x86架构上不运行任何指令?是否保证将dcache中的一个page写入主存? 最佳答案

c - 阻塞的系统调用不会让 SIGKILL 终止进程

我有一个关于内核线程间信号传播的问题。场景是这样的:从用户空间应用程序进行系统调用,内核在系统调用中创建一个线程(我们将其命名为thread1)。现在在那个线程1中,内核正在while循环中循环并且它被阻塞了。主线程也在while循环中循环。如果我执行“kill-9”,应用程序将无法正常退出。即使/proc条目仍然存在。虽然/proc//fd文件夹变空了。如果我在主线程的while循环中放置以下代码,它会正确捕获信号并退出。如果我只在thread1的while循环中放入following,主线程仍然不会退出。if(signal_pending(current)){return;}您能否

c - 阻塞的系统调用不会让 SIGKILL 终止进程

我有一个关于内核线程间信号传播的问题。场景是这样的:从用户空间应用程序进行系统调用,内核在系统调用中创建一个线程(我们将其命名为thread1)。现在在那个线程1中,内核正在while循环中循环并且它被阻塞了。主线程也在while循环中循环。如果我执行“kill-9”,应用程序将无法正常退出。即使/proc条目仍然存在。虽然/proc//fd文件夹变空了。如果我在主线程的while循环中放置以下代码,它会正确捕获信号并退出。如果我只在thread1的while循环中放入following,主线程仍然不会退出。if(signal_pending(current)){return;}您能否

c - 从 Linux 内核模块的文件描述符获取文件名/路径?

在linux内核模块中有没有办法从unsignedintfd获取文件名/路径?我知道这个答案:HowcanIgetafilenamefromafiledescriptorinsideakernelmodule?但如果我正确理解代码,我还需要一个structfiles_struct。编辑:请停止投票,因为它不是重复的。我正在寻求一种方法来从内核模块获取纯C中的文件名/路径,而不是使用系统工具。换句话说:在/procself/fd/上运行readlink不是一个好的答案。编辑2:内核的系统调用readssize_tread(intfd,void*buf,size_tcount);有3个参数