get_cpu()/put_cpu()函数对
2017-05-23 12:05
344 查看
功能:通过get_cpu()/put_cpu()函数禁止/启用任务的抢占,获取cpu id
kernel中的解释:
/*
* Even if we don’t have any preemption, we need preempt disable/enable
* to be barriers, so that we don’t have things like get_user/put_user
* that can cause faults and scheduling migrate into our preempt-protected
* region.
*/
即使当前没有任何的抢占,我们也需要对抢占进行disable/enable,这样的话就不会向get_user/put_user那样导致错误迁移进我们对抢占进行保护的区域。
1.get_cpu() :禁止任务抢占
2.put_cpu() : 启用任务抢占
例子:
kernel中的解释:
/*
* Even if we don’t have any preemption, we need preempt disable/enable
* to be barriers, so that we don’t have things like get_user/put_user
* that can cause faults and scheduling migrate into our preempt-protected
* region.
*/
即使当前没有任何的抢占,我们也需要对抢占进行disable/enable,这样的话就不会向get_user/put_user那样导致错误迁移进我们对抢占进行保护的区域。
1.get_cpu() :禁止任务抢占
#define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define smp_processor_id() raw_smp_processor_id()
2.put_cpu() : 启用任务抢占
#define put_cpu() preempt_enable()
例子:
get_cpu(); on_each_cpu(setup_broadcast_timer, (void *)true, 1); put_cpu();
#define on_each_cpu(func,info,retry,wait) ({ local_irq_disable(); func(info); local_irq_enable(); 0; })
static void setup_broadcast_timer(void *arg) { unsigned long reason = (unsigned long)arg; int cpu = raw_smp_processor_id(); reason = reason ? CLOCK_EVT_NOTIFY_BROADCAST_ON : CLOCK_EVT_NOTIFY_BROADCAST_OFF; clockevents_notify(reason, &cpu); }
相关文章推荐
- copy_to_user,copy_from_user,get_user,put_user函数比较
- 转帖 copy_to_user,copy_from_user,get_user和put_user函数详解
- copy_to_user,copy_from_user,get_user,put_user函数比较
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- copy_to_user,copy_from_user,get_user,put_user函数比较
- copy_to_user,copy_from_user,get_user,put_user函数用法比较
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- copy_to_user,copy_from_user,get_user和put_user函数实现
- 【php】PHP中file_get_contents()与file_put_contents()函数细节详解
- copy_to_user,copy_from_user,get_user,put_user函数比较
- PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- copy_to_user,copy_from_user,get_user,put_user函数比较
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
- php-cgi(php-fpm) CPU 100% 与 file_get_contents 函数的关系