我有问题的免费分配的文件描述符,它总是零!
例如:
$ cat /proc/sys/fs/file-nr
4448 0 1529806
AFAIK,这意味着:
4448 is total alocated file descriptors
0 is total of free alocated file descriptors
1529806 is the total limit of the system
此外,我还规定了以下限制:
$ ulimit -a
core file size (blocks, -c) 0
data seg size
我正在使用ioctl()从块设备(Scsi)读取数据。
我注意到,当我读取1024扇区时,ioctl完成时没有任何问题。当我读取2048时,过了很长一段时间后,它返回ENOMEM (errno=12),这甚至没有列在可能的错误列表中(请参阅)
我已经tripple检查了我传递的缓冲区大小是否合适,所以这不可能是这种情况--没有缓冲区溢出。
那么,我如何才能知道使用ioctl读取的最大缓冲区大小?
编辑1
一些附加信息可能会对您有所帮助:
Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
Red Hat Enterpr
目前,我有一个Linux2.6内核模块,它通过pci_get_device()和pci_read_config_dword()访问某个设备。将来,该模块将被修改为,也会工作一台似乎没有PCI总线的机器(/sys/ bus /pci不存在),但是在一个固定的已知地址上有特定的设备。现在,我希望one模块二进制没有在两台机器上工作的参数。为了能够在非PCI机器上加载模块,我认为我必须避免使用pci_get_device()等;因此,我必须以其他方式在PCI机器上获得所需的配置空间信息。我可以在init_module()中从init_module()中读取它,但我认为让内核模块读取文件被认为是错误的
我有一台安装了fedora linux的台式机。我使用的内核是3.9.4。我需要重新编译我的3.9.4内核以支持CAN总线。
我的内核源代码在这里:
[root@localhost 3.9.4-200.fc18.x86_64]# pwd
/usr/src/kernels/3.9.4-200.fc18.x86_64
然后我-- make menuconfig --更改了配置。
在-- make之后出现错误。
[root@localhost 3.9.4-200.fc18.x86_64]# make
make[1]: *** No rule to make target `/usr/src/kern