小编Nue*_*ino的帖子

我需要一个事件来检测Internet连接/断开连接

我们正在开发一个.NET应用程序,其中一个要求是监视系统是否连接到Internet.

我们能够获得"以太网电缆断开"的.NET事件,但如果调制解调器被重置,则此事件不会被触发.我不想继续ping一些URL来完成这项工作,因为它会增加相当大的性能开销.是否有任何.NET事件可以检查系统是否连接到互联网?

系统托盘中有一个图标,当系统未连接到互联网时,该图标显示交叉标志或有限连接标志.这表明Windows知道,我想陷阱那个事件.

.net c# events windows-7

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

共享内存的限制如何在Linux上运行

我正在研究共享内存上的Linux内核限制

/proc/sys/kernel/shmall
Run Code Online (Sandbox Code Playgroud)

指定可以分配的最大页面数.将此数字视为x,将页面大小视为p.我假设"x*p"字节是系统范围共享内存的限制.

现在我写了一个小程序来创建一个共享内存段,并且我连接到该共享内存段两次,如下所示

shm_id = shmget(IPC_PRIVATE, 4*sizeof(int), IPC_CREAT | 0666);

if (shm_id < 0) {
    printf("shmget error\n");
    exit(1);
}
printf("\n The shared memory created is %d",shm_id);

ptr = shmat(shm_id,NULL,0);
ptr_info = shmat(shm_id,NULL,0);
Run Code Online (Sandbox Code Playgroud)

在上面的程序ptrptr_info不同.因此共享内存映射到我的进程地址空间中的2个虚拟地址.

当我这样做时,ipcs它看起来像这样

...
0x00000000 1638416    sun        666        16000000   2 
...
Run Code Online (Sandbox Code Playgroud)

现在我的问题已达到上述shmall限制x * p.此限制是否适用于为每个共享内存段分配的所有虚拟内存的总和?或者此限制是否适用于物理内存?

物理内存在这里只是一个(共享内存),当我做2时,上面的程序shmat存在两倍于我的进程地址空间中分配的内存量.如果shmat在单个共享内存段上连续执行,这个限制很快就会出现?

linux ipc shared-memory linux-kernel

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

是否有任何内核工具可用于以合理的准确度测量中断延迟?

我正在尝试测量各种Linux内核的中断延迟中的抖动(启用了RT补丁等).我知道最好的方法是使用示波器来实现这一点,通过GPIO引脚产生中断并在中断服务程序中切换另一个GPIO引脚,但我想知道是否有任何Linux内核工具来做这个,并且可能是我可以比较这些数字.

interrupt linux-kernel interrupt-handling

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

在ARM皮层A-9的U-boot中启用中断

我正在尝试在uboot中配置GPIO中断,这是为了测试中断响应时间而无需任何操作系统干预(裸机).我能够配置引脚复用并成功设置GPIO引脚的中断.

我的问题是关于注册中断服务程序.我看到我的平台的中断向量表位于地址0xFFFF0000(我读了系统控制寄存器以找出这个).GPIO的中断ID为56,我刚刚计算了中断服务程序应该驻留的地址,并尝试用指向我的ISR例程的指针写入地址.这是正确的做法吗?或者我必须自己处理所有其他事情,如上下文保存等?

注意:我使用的是ARM Cortex A-9.

编辑:

基于我通过代码的答案,我有以下问题.的定义

我的架构的do_irq(arm v7)没有做太多,CONFIG_USE_IRQ对我来说不起作用,因为没有为我定义像arch_interrupt_init这样的函数.所以我可以得出结论,我的架构不支持中断.现在,如果我必须自己定义我需要实现的所有功能,以使其工作?由于这只是我项目的一小部分,我想看看能否做到这一点是可行的.我只是想知道这是否需要几行代码或者需要一些努力来实现这种中断支持.

arm interrupt interrupt-handling u-boot

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

ARM Cortex A9中的处理器间中断(如何在Linux中为软件生成的中断(ARM)编写处理程序?)

我读到ARM中软件生成的中断被用作处理器间中断.我还可以看到其中5个中断已经在使用中.我也知道ARM提供了16个软件生成的中断.

在我的应用程序中,我正在运行ARM-cortex内核和Linux上的裸机应用程序.我想将运行裸机应用程序的核心数据传递给运行Linux的核心.我计划将数据复制到片上存储器(共享),然后我将在Core(运行linux)上触发一个SGI来指示一些数据可供它处理.现在我能够从核心(运行裸机应用程序)生成SGI.但是为了处理linux端的中断,我不确定SGI IRQ号是免费的,我也不确定我是否可以直接使用IRQ号(一般SGI是0-15).有没有人知道如何在Linux中为SGI编写处理程序?

编辑: 这是上述文本的重新措辞,因为该问题因SSCE原因而被关闭.Cortex-A CPU用于多CPU系统.ARM 通用中断控制器(GIC)监视所有全局中断并将它们分派给特定的CPU.为了使各个CPU相互发信号,软件生成中断(SGI)从一个核心发送到另一个核心; 这使用外围专用中断(PPI).这个问题是,

如何实现可以接收SGI作为PPI的Linux内核驱动程序?

arm linux-kernel interrupt-handling

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

什么是遗留中断?

我正在研究一个项目,我试图找出如何在ARM体系结构的全局中断控制器中处理中断.我正在使用pl390中断控制器.我看到有一条线被称为遗留中断,它绕过了分配器逻辑.假设可以将2个中断编程为传统中断.任何人都可以帮助解释遗留中断究竟是什么吗?我试着在网上搜索没有任何运气.

arm interrupt interrupt-handling

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