重庆公司核名在哪个网站,seo域名综合查询,东莞中高端网站建设,班级优化大师免费下载电脑版这是微信群里面的一个群友提的问题#xff0c;原问题如下#xff1a;今天遇到一个面试问题 请教各位老哥 中断服务程序能否malloc #xff1f;为什么#xff1f;我回答是 不行 因为中断服务程序应该要尽量简短#xff0c;且执行完中断服务程序会跳出中断函数#xff0c… 这是微信群里面的一个群友提的问题原问题如下今天遇到一个面试问题 请教各位老哥 中断服务程序能否malloc 为什么我回答是 不行 因为中断服务程序应该要尽量简短且执行完中断服务程序会跳出中断函数要进行释放。 但是从面试官得反应我应该是回答错了或者没回答到点子上。还望不吝赐教中断相关的文章漫画-Linux中断子系统综述一文看尽 linux对中断处理的前世今生Linux中断申请Linux中断子系统之Workqueue中断是分为上半部和下半部的不管是上半部还是下半部我们都需要注意一些事情---- 中断要尽快执行完---- 中断函数要可以重入重入相关文章你应该关心函数重入的问题简单说下函数可以重入的这个问题重入的引入是因为多线程导致的有内核的系统都是多任务系统既然是多任务系统如果一个函数被多个任务调用就需要保护全局变量只有局部变量的函数是没有重入的问题的哈。从内核里面截取的malloc源码static void *malloc(int size)
{void *p;if (size 0)return NULL;if (!malloc_ptr)malloc_ptr free_mem_ptr;malloc_ptr (malloc_ptr 3) ~3; /* Align */p (void *)malloc_ptr;malloc_ptr size;if (free_mem_end_ptr malloc_ptr free_mem_end_ptr)return NULL;malloc_count;return p;
}很明显里面有全局变量而且这个全局变量没有加锁保护这种函数如果在中断服务函数里面如果中断被多次触发那就比较出现问题了还有一个情况如果malloc失败了呢是不是要退出中断我们知道中断是不能return的啊。我的一点自己见解欢迎大佬们评论说出自己的观点 推荐阅读 专辑|Linux文章汇总 专辑|程序人生 专辑|C语言嵌入式Linux微信扫描二维码关注我的公众号