linux密码weak,linux中__weak关键字
在linux的驱动代码中经常可以看到__weak去修饰一个函数或者变量,大多是用来修饰函数。它的作用有两个:
1.weak 顾名思义是“弱”的意思,所以如果函数名称前面加上__weak 修饰符,我们一般称这个函数为**“弱函数”**。加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。
2.__weak 在回调函数的时候经常用到。这样的好处是,系统默认定义了一个空的回调函数,保证编译器不会报错。同时,如果用户自己要定义用户回调函数,那么只需要重新定义即可,不需要考虑函数重复定义的问题,使用非常方便
在linux/init/main.c中有函数smp_setup_processor_id
void __init __weak smp_setup_processor_id(void)
{
}
2.6.30内核中ARM结构没有额外定义smp_setup_processor_id(),所以ARM结构不执行任何操作。
n-ubuntu05@nubuntu05:linux-2.6.30.4$ grep -rn smp_setup_processor_id ./*
./arch/sparc/kernel/smp_64.c:1182:void __init smp_setup_processor_id(void)
./include/linux/smp.h:188:void smp_setup_processor_id(void);
./init/main.c:528:void __init __weak smp_setup_processor_id(void)
./init/main.c:541:smp_setup_processor_id();
v4.9内核在*./arch/arm/kernel/setup.c*中定义了smp_setup_processor_id():
584 void __init smp_setup_processor_id(void)
585 {
586 int i;
587 u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0;
588 u32 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
589
590 cpu_logical_map(0) = cpu;
591 for (i = 1; i < nr_cpu_ids; ++i)
592 cpu_logical_map(i) = i == cpu ? 0 : i;
593
594 /*
595 * clear __my_cpu_offset on boot CPU to avoid hang caused by
596 * using percpu variable early, for example, lockdep will
597 * access percpu variable inside lock_release
598 */
599 set_my_cpu_offset(0);
600
601 pr_info("Booting Linux on physical CPU 0x%x\n", mpidr);
602 }
由于linux/init/main.c中定义的函数有__weak属性,所以ARM使用的是*./arch/arm/kernel/setup.c*中定义的smp_setup_processor_id
v4.9其他结构中相关定义:
n-ubuntu05@nubuntu05:v4.9$ grep -rn smp_setup_processor_id ./*
./arch/arm64/kernel/setup.c:95:void __init smp_setup_processor_id(void)
./arch/s390/kernel/smp.c:930:void __init smp_setup_processor_id(void)
./arch/sparc/kernel/smp_64.c:1238:void __init smp_setup_processor_id(void)
./arch/arm/kernel/devtree.c:147: * to override the map created in smp_setup_processor_id().
./arch/arm/kernel/devtree.c:185: * logical map created in smp_setup_processor_id() can be overridden
./arch/arm/kernel/setup.c:584:void __init smp_setup_processor_id(void)
./include/linux/smp.h:197:void smp_setup_processor_id(void);
./init/main.c:452:void __init __weak smp_setup_processor_id(void)
./init/main.c:487:smp_setup_processor_id();
linux密码weak,linux中__weak关键字相关推荐
- linux中__weak关键字的作用
在linux的驱动代码中经常可以看到__weak去修饰一个函数或者变量,大多是用来修饰函数. 它的作用有两个: 1.weak 顾名思义是"弱"的意思,所以如果函数名称前面加上__w ...
- sabayon linux 密码,Sabayon Linux 19.03 新版本增加全盘加密,基于Gentoo
经过几个月的沉默,基于Gentoo的Sabayon Linux操作系统终于收到了一个新版本,其中包含最新的映像,不仅带来了Gentoo Linux存储库的更新组件,还带来了新功能和急需的改进. 在全新 ...
- 分分钟破解linux密码以及linux常见问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 linux常见问题 一.修改主机名为server.local 二.将虚拟机的网络连接模式分别调换成仅主机模式.nat模式.桥接模式并获 ...
- stm32_HAL库中__weak修饰符
前言, 在 HAL 库中,很多回调函数前面使用__weak 修饰符. weak 顾名思义是"弱"的意思,所以如果函数名称前面加上__weak 修饰符,我们一般称这个函数为" ...
- linux tcb,在Linux中从潜藏密码迁移至tcb怎么做?
潜藏密码作为Linux产品的既定事实标准已经有好多年了,md5密码的运用亦是如此.但是,运用传统的潜藏密码要领也有不足之处,甚至md5也不像以前那么安全了. 潜藏密码文件的一个缺点就是,任意一个须要查 ...
- linux查找某时间后的关键字,linux - 查找指定时间的文件及文件中的关键字
Linux查找某个时间内的文件 1.? n天内修改的(-ctime) find . -type f -ctime -1| xargs ls –l 说明: (1) -type f 只搜索文件,不包含文件 ...
- Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置
Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置 grep [选项]... PATTERN [FILE]... grep -C N,(N代表一个整数)是搜索关键字出现位置,并且 ...
- linux 日志中查找关键字
linux 日志中查找关键字 1.查看日志前 n行: cat 文件名 | head -n 数量 demo: cat test.log | head -n 200 # 查看test.log前200行 2 ...
- 在Windows, Mac, Linux三种系统中分别获取wifi密码的方式
在Windows, Mac, Linux三种系统中分别获取wifi密码的方式 1. Windows netsh wlan show profile name=wifi名称 key=clear | fi ...
- linux vim 搜索关键词,在Vim/Vi中搜索关键字就这么简单
原标题:在Vim/Vi中搜索关键字就这么简单 本文描述了如何在Vim / Vi中执行搜索操作. Vim或其前身Vi预装在macOS和大多数Linux发行版上.搜索文本是处理文件时最常见的任务之一.当您 ...
最新文章
- 常见的“公共标志和说明”英文表达
- 防止一个进程被多次启动
- 广东汕尾2021年高考成绩查询,广东汕尾2021年高考英语听说考试成绩查询入口
- 全球及中国血液透析行业发展规模与前景动态调研报告2022版
- ExtJs Ext.TaskMgr定时刷新数据源
- android auto错位,recyclerview 的item布局错乱
- 仙剑4按键取钱的东东。
- NodeJs .net core connect Azure service bus
- mysql对null排序_mysql中null值的排序问题分析_MySQL
- 【渝粤题库】陕西师范大学201451 中国法制史作业
- php+控制器+数据库,Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法_PHP...
- 推荐召回体系化建设与排序优化实践
- Spring零配置之@Configuration注解详解。
- centos7 安装VNC Server
- PowerDesigner16.5汉化破解版安装教程(含安装文件、汉化包、破解文件)
- 从零基础入门Tensorflow2.0 ----七、34 embedding rnn
- WDSR:Wide Activation for Efficient and Accurate Image Super-Resolution
- sourceTree git工作流无法结束
- 4、STYLE-------------labview宝典
- 互联网服务器使用ipset 和iptables禁止国外IP访问