gpt4 book ai didi

c - 如何注册和取消注册中断事件

转载 作者:行者123 更新时间:2023-11-30 19:49:44 24 4
gpt4 key购买 nike

它不是标准C,我试图用C开发应用程序。这是场景:它就像处理器的功耗模式实现,这样当处理器从 sleep 中唤醒时,就会生成一个中断,所以如果我当时有一个事件回调,我可以唤醒我的其他模块来执行其过程。为此,我尝试使用静态分配来访问内存池来实现链表,以便在注册回调时,它存储在内存池。因此,当回调被触发时,它会向注册的模块发送事件通知。

但我不知道如何实现它。请提供实现方法

最佳答案

你的意思是信号吗?就像当你遇到崩溃或被零除时一样?这是捕获信号的 posix 示例:

void abortHandler( int signum, siginfo_t* si, void* unused )
{
const char* name = NULL;
switch( signum )
{
case SIGABRT: name = "SIGABRT"; break;
case SIGSEGV: name = "SIGSEGV"; break;
case SIGBUS: name = "SIGBUS"; break;
case SIGILL: name = "SIGILL"; break;
case SIGFPE: name = "SIGFPE"; break;
case SIGPIPE: name = "SIGPIPE"; break;
}

if ( name )
printf( "Caught signal %d (%s)\n", signum, name );
else
printf( "Caught signal %d\n", signum );
}

void trapSignals()
{
struct sigaction sa;
sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = abortHandler;
sigemptyset( &sa.sa_mask );

sigaction( SIGABRT, &sa, NULL );
sigaction( SIGSEGV, &sa, NULL );
sigaction( SIGBUS, &sa, NULL );
sigaction( SIGILL, &sa, NULL );
sigaction( SIGFPE, &sa, NULL );
sigaction( SIGPIPE, &sa, NULL );
}

关于c - 如何注册和取消注册中断事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11470658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com