Bionic C 库概述(Bionic Overview)

Bionic C库是Android的默认C库,它以简化为核心,提供内核功能的轻量级封装。文章介绍了其架构、syscall stub的生成过程、time_t和off_t的数据类型处理,以及时区管理和include路径等关键点。
摘要由CSDN通过智能技术生成

一、核心思想:简单化

即C库应该只提供对内核功能的轻量级封装,不应该过于智能化,考虑太多的边界条件。

Bionic这个词表明它一部分来自BSD,一部分来自Linux。它的源码主要是BSD C库的代码片段,加上一些Linux相关的比特位,用来处理线程、信号等问题。


二、架构

Bionic目前支持x86和arm指令集。理论上讲,可以支持更多的架构,不过需要做一些工作。


三、Syscall stub

每个系统调用函数都是用一段小型汇编码(即 syscall stub)实现的,这些 syscall stub 是由 tools/gensyscall.py 通过读取 SYSCALL.html 生成的。

SYSCALL.html 包含要生成的 syscall stub ,相应的系统调用号(x86与arm不同),及相应的签名。

如果你想修改SYSCALL.html,可以利用 tools/checksyscalls.py 来比较SYSCALL.html 和 Linux内核头文件。当发现无效的系统调用号时,就会报告错误。


四、time_t 和 off_t

在32位CPU上,Linux内核定义 time_t 为 32位。但是将 time_t 定义为 64位或许更好,因为可以解决 bug Y2038。但是Linux内核维护人员Y2038不紧急,所以time_t依然是32位。

但是,Bionic提供了time64.h 这个头文件,定义了 time64_t 类型,和相应的函数 mktime64()、localtime64(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值