标签: linux-device-driver

Linux堆栈大小

我正在寻找linux内核中堆栈的良好描述,但我发现很难找到任何有用的东西.

我知道大多数系统的堆栈限制为4k,其他系统的堆栈限制为8k.我假设每个内核线程/下半部分都有自己的堆栈.我也听说如果一个中断发生,它会使用当前线程的堆栈,但是我找不到任何关于这个的文档.我正在寻找的是如何分配堆栈,如果有任何好的调试例程(我怀疑特定问题的堆栈溢出,我想知道是否有可能将内核编译为警察堆栈大小等).

linux linux-device-driver linux-kernel

38
推荐指数
3
解决办法
4万
查看次数

arm-eabi arm-gnueabi和gnueabi-hf编译器之间的区别

arm-eabi,gnueabi和gnueabi-hf交叉编译器有什么区别.我发现很难选择编译器.是否有针对arm的本机编译器?

linux gcc arm linux-device-driver linux-kernel

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

谁调用了驱动程序的probe()

如何probe()调用电话?谁叫它?根据我的理解,__init()寄存器driver然后以某种方式probe()被调用到register设备数据irq等.它究竟发生了什么?

我正在研究触摸屏驱动程序及其__init注册本身i2c driver.然后探测期望i2c_client数据返回null.我想跟踪它被填满的地方.

linux-device-driver linux-kernel

35
推荐指数
3
解决办法
3万
查看次数

Linux内核设备驱动程序编程

我想学习linux内核设备驱动程序编程.所以任何人都可以在这里发布好的教程页面或链接.我是linux内核环境的新手.我已经搜索了它,但我不知道如何开始以及阅读哪一个以便于理解基础知识.提前致谢.

linux-device-driver

35
推荐指数
2
解决办法
3万
查看次数

与`mknod`相反的是什么?

我正在学习从内核模块编程指南编写字符设备驱动程序,并用于mknod创建一个节点/dev以与我的驱动程序通信.

但是,在检查联机帮助页并观察这rmnod是一个不存在的命令之后,我找不到任何明显的删除方法.

什么是扭转效果mknod并正确删除创建的节点的正确方法/dev

command-line kernel-module linux-device-driver linux-kernel mknod

35
推荐指数
1
解决办法
2万
查看次数

Linux操作系统类的内容

我将在即将到来的学期担任操作系统课程的助教.实验室将专门处理Linux内核.

  1. 您认为Linux内核的哪些概念/组件在课堂上最重要?
  2. 您遗漏的研究涵盖了您所希望的内容?

有关Linux内核或整体操作系统设计的任何建议都将非常感激.

c linux linux-device-driver linux-kernel

34
推荐指数
3
解决办法
1082
查看次数

如何以编程方式获取Linux内核页面大小

我正在为IA64开发Linux模块.我目前的问题是驱动程序使用PAGE_SIZE和PAGE_SHIFT宏进行dma页面分配.我遇到的问题是编译驱动程序的机器不是需要运行驱动程序的机器.因此,如果编译机器上的PAGE_SIZE为2 ^ 14K且目标机器为2 ^ 16K,则驱动程序将失败.

我不想把这个问题变成关于在不运行模块的机器上编译模块的"最佳实践"问题.我理解这个问题.我发现人们大多使用getpagesize()或sysconf(_SC_PAGE_SIZE).这两个选项不在ia64内核头文件中,因此我无法使用它们.还有另一种方法可以获得运行时PAGE_SIZE吗?

我正在看的选项:

  • 在/ proc中读取一些文件?
  • 系统调用?
  • 让我通过推理计算PAGE_SIZE的其他函数(例如ORDER,getpageshift等)?
  • 其他?

memory-management linux-device-driver dma

33
推荐指数
5
解决办法
4万
查看次数

proc_create()内核模块的示例

有人可以举个proc_create()例子吗?

早些时候他们create_proc_entry()在内核中使用但现在他们正在使用proc_create().

linux-device-driver linux-kernel

32
推荐指数
3
解决办法
6万
查看次数

从硬件本身查找原始MAC地址

Os:REDHAT LINUX Linux管理:2.6.18.8-1#

这是否可以直接从NIC读取MAC地址?我有下面的代码,但它只是从上面的层读取,但不是卡本身!

我试图弄清楚如何在我的linux机箱上找到以太网NIC的原始MAC地址.我知道如何找到用ifconfig当前的MAC地址,但如果该地址已更改,比如说使用 'ifconfig eth0 hw ether uu:vv:ww:yy:xx:zz',或者我设置"永久"使用它vi /etc/sysconfig/network-scripts/ifcfg-eth0.这个文件......我可以成功地UPREBOOT也.我怎么找原件?必须有一种方法来找到它,因为它仍然永久地刻录到卡中,但我找不到一个工具来读取刻录的地址.它有什么用途或命令吗?我想为它编写C代码.但在上述情况下不知道如何做到这一点.

**下面的代码给出了我当前的 MAC但不是原始的MAC

#include <stdio.h>              /* Standard I/O */
#include <stdlib.h>             /* Standard Library */
#include <errno.h>              /* Error number and related */


#define ENUMS
#include <sys/socket.h>
#include <net/route.h>
#include <net/if.h>
#include <features.h>           /* for the glibc version number */
#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
#include <netpacket/packet.h>
#include <net/ethernet.h>       /* the L2 protocols */
#else
#include <asm/types.h>
#include <linux/if_packet.h> …
Run Code Online (Sandbox Code Playgroud)

sockets linux mac-address linux-device-driver linux-kernel

30
推荐指数
5
解决办法
7万
查看次数

用户空间与内核空间驱动程序

我正在寻找一个PWM驱动程序.我知道有两种方法可以控制硬件驱动程序:

  1. 用户空间驱动程序
  2. 内核空间驱动程序

如果一般(不考虑PWM驱动程序的情况),我们必须决定是去用户空间还是内核空间驱动程序.那么除了这些因素我们还要考虑哪些因素?

  1. 用户空间驱动程序可以直接将mmap()/ dev/mem内存存储到其虚拟地址空间,无需上下文切换.
  2. 用户空间驱动程序不能实现中断处理程序(它们必须轮询中断).
  3. 用户空间驱动程序无法执行DMA(因为可以从内核空间分配具有DMA功能的内存).

linux linux-device-driver linux-kernel embedded-linux

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