summaryrefslogtreecommitdiffstats
path: root/libc/README
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:28:35 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:28:35 -0800
commit1dc9e472e19acfe6dc7f41e429236e7eef7ceda1 (patch)
tree3be0c520fae17689bbf5584e1136fb820caef26f /libc/README
parent1767f908af327fa388b1c66883760ad851267013 (diff)
downloadbionic-1dc9e472e19acfe6dc7f41e429236e7eef7ceda1.zip
bionic-1dc9e472e19acfe6dc7f41e429236e7eef7ceda1.tar.gz
bionic-1dc9e472e19acfe6dc7f41e429236e7eef7ceda1.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'libc/README')
-rw-r--r--libc/README53
1 files changed, 53 insertions, 0 deletions
diff --git a/libc/README b/libc/README
new file mode 100644
index 0000000..4e29f12
--- /dev/null
+++ b/libc/README
@@ -0,0 +1,53 @@
+Welcome to Bionic, Android 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.