auto make System.map to C header file

简介: #!/bin/bash # auto make System.map to C header file # 说明: # 该脚本主要是将Linux内核生成的System.map文件中的符号、地址存入结构体中, # 目前认为也许可以在内核驱动中直接调用对应的函数。
#!/bin/bash

#                    auto make System.map to C header file
# 说明:
#     该脚本主要是将Linux内核生成的System.map文件中的符号、地址存入结构体中,
# 目前认为也许可以在内核驱动中直接调用对应的函数。以前在学习裸板开发中就有
# 使用Uboot中提供的printf来写程序的先例,那么这里应该也是可以的,不过这里没
# 有什么实用性,因为5W个函数,但这个结构体就要用掉进200kByte空间。
# 
#                                          2016-3-19 深圳 南山平山村 曾剑锋

if [ $# -ne 1 ]; then
    echo "USAGE:"
    echo "    systemMap.sh <your system.Map file>"
    exit -1
fi

cat > systemMap.h << EOF
#ifndef __SYSTEM_MAP_H__
#define __SYSTEM_MAP_H__

typedef struct System_header {
EOF

cat $1 | awk '{print "\t unsigned int "$3";"}' | sort | uniq | grep -v "[\.&]" >> systemMap.h

cat >> systemMap.h << EOF
} System_header;

System_header system_header = {
EOF

cat $1 | awk '{print $3 " \t= " "0x"$1","}' | sort -n -k1 | uniq | grep -v "[\.&]" | sed -e "s/^/\\t\./g" >> systemMap.h 

cat >> systemMap.h << EOF
};
#endif // __SYSTEM_MAP_H__
EOF

# cat systemMap.h
#     #ifndef __SYSTEM_MAP_H__
#     #define __SYSTEM_MAP_H__
#     
#     typedef struct System_header {
#          unsigned int a_aidl_bdis_tmr;
#          unsigned int aalg_list;
#          unsigned int ablkcipher_decrypt;
#          unsigned int ablkcipher_decrypt_done;
#          unsigned int ablkcipher_encrypt;
#          unsigned int ablkcipher_encrypt_done;
#          ......
#     } System_header;
#     
#     System_header system_header = {
#         .a_aidl_bdis_tmr     = 0xc0a62660,
#         .aalg_list     = 0xc09f2a28,
#         .ablkcipher_decrypt     = 0xc04c3568,
#         .ablkcipher_decrypt_done     = 0xc04c1480,
#         .ablkcipher_encrypt     = 0xc04c34d4,
#         .ablkcipher_encrypt_done     = 0xc04c14f0,
#         ......
#     };
#     #endif // __SYSTEM_MAP_H_

 

目录
相关文章
基于宜搭的“设备报修”实践案例
设备报修是各企业、学校、医院等单位必不可少的应用场景,包括设备管理、用户报修、报修单管理、派单管理、维修管理等。那么,如何利用宜搭+钉钉实现高效的设备报修管理呢?
基于宜搭的“设备报修”实践案例
|
Kubernetes 容器 Perl
【kubernetes】解决:pvc 一直处于Terminating 无法删除的问题
【kubernetes】解决:pvc 一直处于Terminating 无法删除的问题
1638 0
|
JSON 网络协议 开发工具
对已有的docker容器添加新的目录映射, 端口映射,环境变量,dns等
docker容器已经建立并运行, 需要在已有容器上添加新的目录映射,端口映射,环境变量等
3329 0
|
12月前
|
人工智能 运维 监控
阿里云联合中国信通院等单位发布首个云计算智能化可观测性能力成熟度模型标准
推动行业智能化落地,阿里云联合中国信通院及国内头部云厂商、观测厂商、各行业建设方,历时近 5 个月,共同编制《云计算智能化可观测性能力成熟度模型》,以规范和指导云计算环境下的智能可观测性建设实践,为企业实施云环境下的智能化可观测能力建设提供指导。
653 100
|
监控 负载均衡 Nacos
Nacos的权限控制
【6月更文挑战第29天】Nacos的权限控制
846 2
|
安全 算法 Oracle
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
1301 0
|
存储 缓存 Java
详解Zookeeper(铲屎官)在众多中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心解决方案
`ZooKeeper `是一个**开放源码的分布式协调服务**,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于` Zookeeper` 实现诸如**数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列**等功能。
23773 11
详解Zookeeper(铲屎官)在众多中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心解决方案
|
缓存
如何提高多线程程序的cpu利用率
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情。在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行。然后,事情确实你发现创建多线程根本没有让程序快多少,也没有提高多少cpu利用率,甚至可能让cpu利用率下降。
2489 0
|
存储 网络协议 大数据
腾讯云主机安装COSFS工具并使用COS对象存储
腾讯云主机安装COSFS工具并使用COS对象存储
1145 0
腾讯云主机安装COSFS工具并使用COS对象存储
|
存储 Kubernetes 调度
k8s教程(Volume篇)-StorageClass详解
k8s教程(Volume篇)-StorageClass详解
1729 0