小编Ins*_*ges的帖子

Linux:我怎么知道导出设备节点的模块?

如果有一个/ dev设备节点及其主要/次要编号,我如何知道导出该节点的内核模块名称?

linux linux-device-driver

23
推荐指数
1
解决办法
9144
查看次数

如何从用户空间与Linux内核模块通信而不会乱丢/ dev新节点?

从用户空间与内核模块通信的方式有哪些?通过通信,我的意思是在内核模块和用户空间进程之间发送信息和命令.

我目前知道两种方式:

  1. 已发布设备节点上的打开/关闭/读取/写入/ ioctl.
  2. 读/导出和挂钩/ proc文件.

更具体地说,有人可以建议与内核模块进行通信的最佳方式,该内核模块实际上并不驱动任何硬件,因此不应该使用仅针对ioctl调用存在的存根节点乱丢/ dev吗?我主要需要检查其各种状态变量,并向其发送带有请求类型标记的数据块,并查看请求是否成功.

linux linux-device-driver linux-kernel

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

NSSecureTextField和死角(变音符号等)

我注意到一种非常奇怪的行为.要键入元音变形元音,您必须首先键入一个死字符选项+ u,然后输入将是变音元素的实际元音,例如选项+ u然后'a'将打印ä.对于使用不同的死焦组合的重音等也是如此.

正常的NSTextField接受这些字符没问题.但是NSSecureTextField只删除了死信,只接受了以下内容.而不是'ä'它只会得到'a',因为它掉了选项+你.如果你有一个mac,你可以在任何系统密码字段上实际尝试.而不是密码中的任何元音,只需使用相应的死字符组合键入重音或变音符号.密码将匹配,因为已删除死char.

现在对于我的应用程序来说这是完全不可接受的,因为我正在处理在Windows和Linux上创建密码的实体,其中变音符号已经通过.由于我无法在Mac上的NSSecureTextField中键入变音符号,即使我知道它也无法提供正确的密码!

问题是之前有没有人遇到过这个问题?怎么解决这个问题?谷歌搜索发现了几个没有答案的邮件列表问题:http://lists.apple.com/archives/student-dev/2006/Apr/msg00052.htmlhttp://lists.apple.com/archives /cocoa-dev/2008/Oct/msg02369.html

cocoa

9
推荐指数
1
解决办法
422
查看次数

线程安全的数据结构设计

我必须设计一个在多线程环境中使用的数据结构.基本API很简单:插入元素,删除元素,检索元素,检查元素是否存在.结构的实现使用隐式锁定来保证单个API调用的原子性.在我实现这一点后,很明显,我真正需要的是几个API调用的原子性.例如,如果调用者在尝试插入元素之前需要检查元素是否存在,即使每个单独的API调用都是原子的,他也不能原子地执行此操作:

if(!data_structure.exists(element)) {
   data_structure.insert(element);
}
Run Code Online (Sandbox Code Playgroud)

这个例子有些尴尬,但基本的一点是,在我们从原子上下文返回后,我们不能再信任"exists"调用的结果(生成的程序集清楚地显示了两次调用之间上下文切换的次要机会).

我目前要解决的问题是通过数据结构的公共API公开锁.这样客户端就必须明确锁定东西,但至少他们不必创建自己的锁.是否有一个更好的常见解决方案来解决这些问题?只要我们参与其中,您能否就线程安全设计提供一些好的文献?

编辑:我有一个更好的例子.假设元素检索返回引用或指向存储元素的指针而不是它的副本.在调用返回后,如何保护调用者以安全地使用此指针\引用?如果您认为不返回副本是一个问题,那么请考虑深层副本,即应该还复制其指向内部的另一个对象的对象.

谢谢.

multithreading synchronization data-structures

8
推荐指数
1
解决办法
6360
查看次数

为什么gcc movl到同一个寄存器?

对于这段C代码:

uint64_t roundUp(uint64_t value, uint32_t blockSize) 
{
    return (value + blockSize - 1) & ~(blockSize - 1);
}
Run Code Online (Sandbox Code Playgroud)

gcc 4.6 -O3生成以下程序集:

roundUp(unsigned long, unsigned int):
.LFB0:
    .cfi_startproc
    movl    %esi, %edx
    movl    %esi, %esi
    leaq    -1(%rdi,%rsi), %rax
    negl    %edx
    andl    %edx, %eax
    ret
    .cfi_endproc
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么要这样做?

movl    %esi, %esi
Run Code Online (Sandbox Code Playgroud)

assembly

8
推荐指数
1
解决办法
193
查看次数

源代码浏览,理解和阅读工具

我主要是C和C++程序员,我经常需要快速理解非常大的代码库(gcc,linux内核)的结构.我想知道在这方面是否有任何工具可以提供帮助.我对调用图,整个项目的数据结构参考,包括依赖图,快速符号位置等特别感兴趣.我知道ctags和cscope,但我正在寻找具有更多可视化的东西,如调用图,可以快速定位定义函数的一部分,在特定的调用中根图形,反转它(即定位对给定函数的所有调用),等等.

c call-graph

7
推荐指数
2
解决办法
1541
查看次数

OpenCL:运行CPU/GPU多个设备

我想用OpenCL多个设备在GPU和CPU上运行并行任务.AMD SDK的标准示例在此主题上并不十分清楚.您能否就此主题提供任何其他教程或示例建议?任何建议都可以.

谢谢.

opencl

6
推荐指数
2
解决办法
9991
查看次数

Mac OS X Service类应用程序的关键字是什么?

我需要在Mac OS X上构建一个在后台运行的应用程序,无窗口,并在菜单栏的右上角提供状态图标.它应该在用户启动的特定操作(不是在系统启动时)启动,并且仅通过状态栏图标进行交互.

在Windows上,这非常接近Unix上的服务 - 守护进程.我应该在Mac文档中搜索什么?我只需要几个关键字.

macos cocoa

5
推荐指数
1
解决办法
480
查看次数

为不同的工具栏大小更改 NSToolbar 图标

NSToolbar 可以有两种尺寸,由用户使用“使用小尺寸”菜单项控制。常规工具栏大小要求每个项目使用 32x32 图标大小,而小尺寸使用 24x24。我不希望图标默认缩放,因为每个工具栏大小都有一对图标。相反,我希望图标在用户更改工具栏大小时自动切换到其他大小。

现在,IB 对于每个工具栏项只有一个图像字段。有没有办法自动更改图标大小,或者我是否必须继承 NSToolbar 并手动响应大小更改并修复每个项目的图标?

cocoa

5
推荐指数
1
解决办法
2900
查看次数

OpenCL:仅运行基于CPU的内核的单个实例

我有两个OpenCL内核:第一个是并行任务,第二个是线性(LZW).第一个是并行的,在GPU上运行,第二个是线性的,在CPU上运行.我有一个多核CPU,我真的只想在单核上运行一个内核实例,而不是在2+核上运行2+实例.这不是生产所必需的,而是我关于各种类型任务执行的学术研究.

我现在使用的相当愚蠢的方法是:

if (global_id == 0) then execute(); 
else do_nothing();
Run Code Online (Sandbox Code Playgroud)

有比这更好的方法吗?

谢谢.

opencl

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

简单的源代码编辑器

你能为Windows和Mac建议一个简单的光源代码编辑器吗?

我不希望它必须将文件来自整个项目带入上下文或提供任何项目管理或集成调试功能.我只是想在单个源代码文件中快速但内容丰富地查看一些语法突出显示,我厌倦了每次都要等待VS或Xcode启动.例如,在Linux下我会使用Kate或Vim,所以首选类似的东西.

editor

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