Linux SMP 相关 api

本文介绍了Linux内核中用于在多核CPU上并行执行函数的几个关键函数,包括on_each_cpu、smp_call_function、smp_call_function_many、smp_call_function_any和smp_call_function_single。这些函数允许开发者在特定的CPU核心上或者所有核心上同步或异步地执行函数,对于理解和优化多核系统性能至关重要。
摘要由CSDN通过智能技术生成

NOTE:

在所有的core上执行函数func,info是传递给func的参数

void on_each_cpu(smp_call_func_t func, void *info, int wait);

在给定cpumask中所有的core上执行函数func,info是传递给func的参数

void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait);

除了当前调用的core外所有的core都执行

void smp_call_function(smp_call_func_t func, void *info, int wait);

在指定的cpumask所对应的core上执行,但是要除去当前调用的core

void smp_call_function_many(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait);

在指定的cpumask所对应的core中的其中一个core上执行一次

int smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, void *info, int wait);

在指定的cpuid上执行一次

int smp_call_function_single(int cpuid, smp_call_func_t func, void *info, int wait);

在内核空间中,定义了几个全局cpumask变量。

  • cpu_possible_mask- has bit ‘cpu’ set iff cpu is populatable
  • cpu_present_mask - has bit ‘cpu’ set iff cpu is populated
  • cpu_online_mask - has bit ‘cpu’ set iff cpu available to scheduler
  • cpu_active_mask - has bit ‘cpu’ set iff cpu available to migration

转载自:Linux SMP 多核调用示例 (koyst.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值