Bionic---The README from the bionic/libc

Welcome to Bionic, Android's small and custom C library for the Android
platform.

Bionic is mainly a port of the BSD C library to our Linux kernel with the
following additions/changes:

- no support for locales
- no support for wide chars (i.e. multi-byte characters)
- its own smallish implementation of pthreads based on Linux futexes
- support for x86, ARM and ARM thumb CPU instruction sets and kernel interfaces

Bionic is released under the standard 3-clause BSD License

Bionic doesn't want to implement all features of a traditional C library, we only
add features to it as we need them, and we try to keep things as simple and small
as possible. Our goal is not to support scaling to thousands of concurrent threads
on multi-processors machines; we're running this on cell-phones, damnit !!

Note that Bionic doesn't provide a libthread_db or a libm implementation.

Adding new syscalls:
====================

Bionic provides the gensyscalls.py Python script to automatically generate syscall
stubs from the list defined in the file SYSCALLS.TXT. You can thus add a new syscall
by doing the following:

- edit SYSCALLS.TXT
- add a new line describing your syscall, it should look like:

   return_type  syscall_name(parameters)    syscall_number

- in the event where you want to differentiate the syscall function from its entry name,
  use the alternate:

   return_type  funcname:syscall_name(parameters)  syscall_number

- additionally, if the syscall number is different between ARM and x86, use:

   return_type  funcname[:syscall_name](parameters)   arm_number,x86_number

- a syscall number can be -1 to indicate that the syscall is not implemented on
  a given platform, for example:

   void   __set_tls(void*)   arm_number,-1

the comments in SYSCALLS.TXT contain more information about the line format

You can also use the 'checksyscalls.py' script to check that all the syscall
numbers you entered are correct. It does so by looking at the values defined in
your Linux kernel headers. The script indicates where the values are incorrect
and what is expected instead.

时间: 2025-01-24 01:08:01

Bionic---The README from the bionic/libc的相关文章

使用libhybris,glibc和bionic共存时的TLS冲突的问题

如无特殊说明,系统为linux,架构为x86 32bit,使用glibc,通过libhybris调用android bionic的驱动.android版本5.1.0_r1.   一.什么是TLS TLS的全称是Thread Local Storage,是指进程中每一个线程都独有的变量,名字相同,但是读写互不影响.最常见的TLS之一就是errno,每一个线程都有自己的errno,保存着该线程的最近一次函数调用错误原因,别的线程干啥都不会影响到这个线程的errno,防止别的线程覆盖该线程的errno

解析libcurl在android下的移植、编译与测试_Android

由于项目需要在NDK中使用网络开发,对于c语言网络开发来说,libcurl库是个很不错的选择,但android系统中并没有自带该库,所以就得自己移植了.下面是移植步骤:1.  下载curl源码 我这里下载的是curl-7.22.0,源码下载地址为:http://curl.haxx.se/download.html2. 准备android源码编译环境,android源码应已全部编译过,具体细节这里不详述,我这里使用的是android2.2 froyo源码树. 3.  在android中编译curl

在android中增加curl的解决方法_Android

curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP.HTTPS.FTP等多种常用不常用协议的实现.在curl最新版本的官方源代码中其实已经包括了android的编译文件(Android.mk),不过要想编译通过还需要做一些工作. 我所使用的curl版本是7.20.0,android源代码版本是eclair 2.1.首先将curl解压到external目录下,将目录名称改为curl(不改也可以,不过android的习惯是不带版本号,入乡随俗吧). (1) 首先要创建一个头文件curl

在android中增加curl的解决方法

curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP.HTTPS.FTP等多种常用不常用协议的实现.在curl最新版本的官方源代码中其实已经包括了android的编译文件(Android.mk),不过要想编译通过还需要做一些工作. 我所使用的curl版本是7.20.0,android源代码版本是eclair 2.1.首先将curl解压到external目录下,将目录名称改为curl(不改也可以,不过android的习惯是不带版本号,入乡随俗吧). (1) 首先要创建一个头文件curl

解析libcurl在android下的移植、编译与测试

由于项目需要在NDK中使用网络开发,对于c语言网络开发来说,libcurl库是个很不错的选择,但android系统中并没有自带该库,所以就得自己移植了.下面是移植步骤:1.  下载curl源码 我这里下载的是curl-7.22.0,源码下载地址为:http://curl.haxx.se/download.html 2. 准备android源码编译环境,android源码应已全部编译过,具体细节这里不详述,我这里使用的是android2.2 froyo源码树. 3.  在android中编译cur

为什么说 A11 Bionic 芯片才是整个苹果发布会真正的亮点?

在已经尘埃落定的这场苹果发布会中,真正的亮点是什么? iPhone X 的全面屏高大上,可惜"齐刘海"逼死强迫症:刷脸解锁的 Face ID 取代了 Home 按键和 Touch ID,却让人担心由此带来的隐私问题,交互上似乎也不容易适应:无线充电也有了,但又不支持远距离--这些本来都应该是这场发布会的亮点,却总是有所折扣,让熬夜追随的观众找不到某种酣畅淋漓的快感. 但在雷锋网(公众号:雷锋网)看来,如果我们把目光转向 iPhone 8/Plus 和 iPhone X 机身内部的全新

Ubuntu Linux---GNU libc库

除了libc和libm库,UNIX系统库没有其他标准的命名规范.Linux上的一些系统库可能和UNIX平台上库的名称不同,这就需要知道Linux上各库所包含和支持的功能.表3-2根据所支持的功能列举了一些Linux系统库. 下面列出了GNU libc库所包含的库文件以及对应的描述(注释5): - ld.so,为使用了共享库的可执行程序提供的一个辅助程序; - libBrokenLocal.[a,so],Mozilla等应用程序用以解决被破坏的locale的库文件; - libSegFault.s

为项目编写Readme.MD文件

了解一个项目,恐怕首先都是通过其Readme文件了解信息.如果你以为Readme文件都是随便写写的那你就错了.github,oschina git gitcafe的代码托管平台上的项目的Readme.MD文件都是有其特有的语法的.称之为Markdown语法.基本规则如下: Markdown 语法速查表 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文字格式 **这是文字粗体格式** *这是

uboot2011.09源代码ReadMe译文

# # (C) Copyright 2000 - 2011 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. #查看建立这个工程的文件列表人 # #这个程序是自由软件,你可以重新分配它或者修改它在GNU通用公共许可证以由自由软件基#金会发布:第二版或者任何之后的版本. #本程序是分布在希望它是有用的,但没有任何保证:甚至没有隐含保证. #查看 GNU通用公共许可证对于更多的细节. #你应该收到一份GNU通用公共许可证随着这个程序:如果