diff options
author | Android Partner Docs <noreply@android.com> | 2017-08-22 10:41:24 -0700 |
---|---|---|
committer | Clay Murphy <claym@google.com> | 2017-08-22 15:01:44 -0700 |
commit | f16c42333aa6b2de30a344dd68246d4a33d93e7d (patch) | |
tree | 311af599312cacb21c888aeae828cae59b0d64a1 /en/devices/architecture/kernel/reqs-interfaces.html | |
parent | 04426e67ca3ee557a0083f9b3c6ba789021bd7a0 (diff) | |
download | source.android.com-f16c42333aa6b2de30a344dd68246d4a33d93e7d.tar.gz |
Docs: Changes to source.android.com
- 166080694 Devsite localized content from translation request a3d5a7... by Android Partner Docs <noreply@android.com>
- 166079245 Remove duplicate TOC entry to oob-users.html. by mheco <mheco@google.com>
- 166002955 Update builds for Oreo by Android Partner Docs <noreply@android.com>
- 165977566 Fixing bad conversion by hvm <hvm@google.com>
- 165977199 Edit links to point to public source files in AOSP. by cqn <cqn@google.com>
- 165962883 Add codename to CTS downloads page. by gdimino <gdimino@google.com>
- 165955117 Integration of O branch into mainline. by gdimino <gdimino@google.com>
- 165638251 Update July public Android security bulletin to remove QC... by Android Partner Docs <noreply@android.com>
- 165638198 Update June public Android security bulletin to remove QC... by Android Partner Docs <noreply@android.com>
- 165638174 Update May public Android security bulletin to remove QC ... by Android Partner Docs <noreply@android.com>
- 165638096 Update April public Android security bulletin to remove Q... by Android Partner Docs <noreply@android.com>
- 165528993 Update to Keymaster 2 and remove requirements language by daroberts <daroberts@google.com>
- 165511119 Add Bluetooth verification / debug information by cqn <cqn@google.com>
- 165491345 Fixed link broken by file rename. by cqn <cqn@google.com>
- 165381648 Fixed broken image paths and renamed HCI Requirements file. by cqn <cqn@google.com>
- 165365185 Created high-level Bluetooth directory and added HTML ver... by cqn <cqn@google.com>
- 165335694 Devsite localized content from translation request 66a39c... by Android Partner Docs <noreply@android.com>
- 165246927 Update August 2017 bulletin with CVE-2017-0687 by daroberts <daroberts@google.com>
PiperOrigin-RevId: 166080694
Change-Id: I2d3a8d77fa6a66c2099f13ba2e864545328fd17a
Diffstat (limited to 'en/devices/architecture/kernel/reqs-interfaces.html')
-rw-r--r-- | en/devices/architecture/kernel/reqs-interfaces.html | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/en/devices/architecture/kernel/reqs-interfaces.html b/en/devices/architecture/kernel/reqs-interfaces.html new file mode 100644 index 00000000..82349f7b --- /dev/null +++ b/en/devices/architecture/kernel/reqs-interfaces.html @@ -0,0 +1,273 @@ +<html devsite> + <head> + <title>Interface Requirements</title> + <meta name="project_path" value="/_project.yaml" /> + <meta name="book_path" value="/_book.yaml" /> + </head> + <body> + <!-- + Copyright 2017 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<p>This page describes a subset of the Linux kernel interfaces on which Android +relies to function properly. The presence and correctness of these interfaces is +tested as part of the <a href="/devices/tech/vts/index.html">Vendor Test Suite +(VTS)</a>. This subset will grow over time to contain a larger portion of +Android kernel interfaces.</p> + +<h2 id="system-calls">System calls</h2> +<p>System calls are expected to provide the same signatures and semantics as in +the upstream Linux kernel.</p> + +<p>ARM64 system calls required by bionic per +<code>bionic/libc/SYSCALLS.txt</code>:</p> + +<table> +<tr> +<td class="devsite-click-to-copy">accept4, acct, adjtimex, bind, brk, capget, capset, chdir, chroot, clock_adjtime, clock_getres, clock_gettime, clock_nanosleep, clock_settime, close, connect, delete_module, dup3, dup, epoll_create1, epoll_ctl, epoll_pwait, eventfd2, execve, exit, exit_group, faccessat, fadvise64, fallocate, fchdir, fchmodat, fchmod, fchownat, fchown, fcntl, fdatasync, fgetxattr, flistxattr, flock, fremovexattr, fsetxattr, fstat, newfstatat, fstatfs, fsync, ftruncate, getcpu, getcwd, getdents64, getegid, geteuid, getgid, getgroups, getitimer, getpeername, getpgid, getpid, getppid, getpriority, getresgid, getresuid, getrlimit, getrusage, getsid, getsockname, getsockopt, gettimeofday, getuid, getxattr, init_module, inotify_add_watch, inotify_init1, inotify_rm_watch, ioctl, kill, syslog, lgetxattr, linkat, listen, listxattr, llistxattr, lremovexattr, lseek, lsetxattr, madvise, mincore, mkdirat, mknodat, mlockall, mlock, mmap, mount, mprotect, mremap, msync, munlockall, munlock, munmap, nanosleep, openat, personality, pipe2, ppoll, prctl, pread64, preadv, prlimit64, process_vm_readv, process_vm_writev, pselect6, ptrace, pwrite64, pwritev, quotactl, readahead, readlinkat, read, readv, reboot, recvfrom, recvmmsg, recvmsg, removexattr, renameat, rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, rt_sigsuspend, rt_sigtimedwait, sched_getaffinity, sched_getparam, sched_get_priority_max, sched_get_priority_min, sched_getscheduler, sched_rr_get_interval, sched_setaffinity, sched_setparam, sched_setscheduler, sched_yield, sendfile, sendmmsg, sendmsg, sendto, setdomainname, setfsgid, setfsuid, setgid, setgroups, sethostname, setitimer, setns, setpgid, setpriority, setregid, setresgid, setresuid, setreuid, setrlimit, setsid, setsockopt, set_tid_address, settimeofday, setuid, setxattr, shutdown, sigaltstack, signalfd4, socketpair, socket, splice, statfs, swapoff, swapon, symlinkat, sync_file_range, sync, sysinfo, tee, tgkill, timer_create, timer_delete, timerfd_create, timerfd_gettime, timerfd_settime, timer_getoverrun, timer_gettime, timer_settime, times, truncate, umask, umount2, uname, unlinkat, unshare, utimensat, vmsplice, wait4, waitid, write, writev</td> +</tr></table> + +<p>ARM32 system calls required by bionic per +<code>bionic/libc/SYSCALLS.txt</code>:</p> + +<table> +<tr> +<td class="devsite-click-to-copy">accept4, acct, adjtimex, arm_fadvise64_64, bind, brk, cacheflush, capget, capset, chdir, chroot, clock_adjtime, clock_getres, clock_gettime, clock_nanosleep, clock_settime, close, connect, delete_module, dup3, dup, epoll_create1, epoll_ctl, epoll_pwait, eventfd2, execve, exit, exit_group, faccessat, fallocate, fchdir, fchmodat, fchmod, fchownat, fchown32, fcntl64, fdatasync, fgetxattr, flistxattr, flock, fremovexattr, fsetxattr, fstat64, fstatat64, fstatfs64, fsync, ftruncate64, getcpu, getcwd, getdents64, getegid32, geteuid32, getgid32, getgroups32, getitimer, getpeername, getpgid, getpid, getppid, getpriority, getresgid32, getresuid32, ugetrlimit, getrusage, getsid, getsockname, getsockopt, gettimeofday, getuid32, getxattr, init_module, inotify_add_watch, inotify_init1, inotify_rm_watch, ioctl, kill, syslog, lgetxattr, linkat, listen, listxattr, llistxattr, _llseek, lremovexattr, lseek, lsetxattr, madvise, mincore, mkdirat, mknodat, mlockall, mlock, mmap2, mount, mprotect, mremap, msync, munlockall, munlock, munmap, nanosleep, openat, personality, pipe2, ppoll, prctl, pread64, preadv, prlimit64, process_vm_readv, process_vm_writev, pselect6, ptrace, pwrite64, pwritev, quotactl, readahead, readlinkat, read, readv, reboot, recvfrom, recvmmsg, recvmsg, removexattr, renameat, rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, rt_sigsuspend, rt_sigtimedwait, sched_getaffinity, sched_getparam, sched_get_priority_max, sched_get_priority_min, sched_getscheduler, sched_rr_get_interval, sched_setaffinity, sched_setparam, sched_setscheduler, sched_yield, sendfile64, sendfile, sendmmsg, sendmsg, sendto, setdomainname, setfsgid, setfsuid, setgid32, setgroups32, sethostname, setitimer, setns, setpgid, setpriority, setregid32, setresgid32, setresuid32, setreuid32, setrlimit, setsid, setsockopt, set_tid_address, settimeofday, set_tls, setuid32, setxattr, shutdown, sigaction, sigaltstack, signalfd4, socketpair, socket, splice, statfs64, swapoff, swapon, symlinkat, sync_file_range2, sync, sysinfo, tee, tgkill, timer_create, timer_delete, timerfd_create, timerfd_gettime, timerfd_settime, timer_getoverrun, timer_gettime, timer_settime, times, truncate64, truncate, umask, umount2, uname, unlinkat, unshare, utimensat, vmsplice, wait4, waitid, write, writev</td> +</tr></table> + +<p>The system calls listed below are made by bypassing bionic:</p> + +<table> + <tr> + <th style="width:20%">All Architectures</th> + <td>gettid, futex, clone, rt_sigreturn, rt_tgsigqueueinfo, restart_syscall, +getrandom, perf_event_open, syncfs, tkill, seccomp</td> + </tr> + <tr> + <th>arm</th> + <td>vfork, sigreturn, pipe, access, stat64, lstat64, open, getdents, eventfd, +epoll_wait, readlink, epoll_create, creat, unlink</td> + </tr> + <tr> + <th>arm64</th> + <td>pivot_root, ioprio_get, ioprio_set</td> + </tr> +</table> + +<aside class="note"><strong>Note:</strong> x86 and x86_64 system calls will be +added in a future release.</aside> + +<h3 id="prctl">prctl</h3> +<p>In addition to the upstream <code>prctl</code> operations for supported +kernel versions, Android relies on additional <code>prctl</code> operations, the +implementation of which can be found in the android-common kernel.</p> + +<pre class="prettyprint"> +PR_SET_TIMERSLACK_PID +PR_SET_VMA +</pre> + +<h2 id="filesystems">Filesystems</h2> +<p>The Linux kernel exports interfaces via several filesystems. Android expects +these interfaces to communicate the same information, in the same format, and +provide the same semantics as in the upstream Linux kernel. For interfaces that +do not exist upstream, the appropriate behavior is dictated by the corresponding +branch of the Android common kernel.</p> + +<h3 id="procfs">procfs</h3> +<table> + <tr> + <th>Path</th> + <th>Description</th> + </tr> + <tr> + <td><code>/proc/cmdline</code></td> + <td>Read-only file containing command line arguments passed to the kernel. + </td> + </tr> + <tr> + <td><code>/proc/config.gz</code></td> + <td>Read-only file containing kernel build configuration.</td> + </tr> + <tr> + <td><code>/proc/cpuinfo</code></td> + <td>Read-only file containing architecture-specific CPU details.</td> + </tr> + <tr> + <td><code>/proc/kmsg</code></td> + <td>Read-only file showing kernel messages in real time.</td> + </tr> + <tr> + <td><code>/proc/meminfo</code></td> + <td>Read-only file showing memory subsystem details.</td> + </tr> + <tr> + <td><code>/proc/modules</code></td> + <td>Read-only file containing information about loaded kernel modules.</td> + </tr> + <tr> + <td><code>/proc/mounts</code></td> + <td>Symlink to <code>/proc/self/mounts</code>, which is a read-only file + listing information about the mounted filesystems.</td> + </tr> + <tr> + <td><code>/proc/net/xt_qtaguid/ctrl</code></td> + <td>Read-write file providing information about tagged sockets.</td> + </tr> + <tr> + <td><code>/proc/self/maps</code></td> + <td>Read-only file containing the currently mapped memory regions and + permissions.</td> + </tr> + <tr> + <td><code>/proc/stat</code></td> + <td>Read-only file containing various kernel and system statistics.</td> + </tr> + <tr> + <td><code>/proc/sys/kernel/kptr_restrict</code></td> + <td>Read-write file that determines whether kernel pointers are printed in + <code>proc</code> files and other interfaces.</td> + </tr> + <tr> + <td><code>/proc/sys/kernel/randomize_va_space</code></td> + <td>Read-write file that determines the address layout randomization policy + for the system.</td> + </tr> + <tr> + <td><code>/proc/sys/vm/mmap_min_addr</code></td> + <td>Read-write file that determines the minimum address than can be + <code>mmap</code>'d.</td> + </tr> + <tr> + <td><code>/proc/sys/vm/mmap_rnd_bits</code></td> + <td>Read-write file that specifies the amount of randomness in + <code>mmap</code>'d addresses.</td> + </tr> + <tr> + <td><code>/proc/sys/vm/mmap_rnd_compat_bits</code></td> + <td>Read-write file that specifies the amount of randomness in + <code>mmap</code>'d addresses.</td> + </tr> + <tr> + <td><code>/proc/sys/vm/overcommit_memory</code></td> + <td>Read-write file that determines the kernel virtual memory accounting + mode.</td> + </tr> + <tr> + <td><code>/proc/uid_cputime/remove_uid_range</code></td> + <td>Write-only file that, when written, removes UIDs from being shown in + <code>/proc/uid_cputime/show_uid_stat</code>.</td> + </tr> + <tr> + <td><code>/proc/uid_cputime/show_uid_stat</code></td> + <td>Read-only file containing the time a UID's processes spent in user and + kernel space.</td> + </tr> + <tr> + <td><code>/proc/version</code></td> + <td>Read-only file containing a string describing the kernel version.</td> + </tr> + <tr> + <td><code>/proc/vmallocinfo</code></td> + <td>Read-only file containing <code>vmalloc</code>'d ranges.</td> + </tr> + <tr> + <td><code>/proc/zoneinfo</code></td> + <td>Read-only file containing information about memory zones.</td> + </tr> +</table> + +<h3 id="dev">dev</h3> + +<table> + <tr> + <th>Path</th> + <th>Description</th> + </tr> + <tr> + <td><code>/dev/ashmem</code></td> + <td>Anonymous shared memory device file.</td> + </tr> + <tr> + <td><code>/dev/binder</code></td> + <td>Binder device file.</td> + </tr> + <tr> + <td><code>/dev/hwbinder</code></td> + <td>Hardware binder device file.</td> + </tr> + <tr> + <td><code>/dev/tun</code></td> + <td>Universal TUN/TAP device file.</td> + </tr> + <tr> + <td><code>/dev/xt_qtaguid</code></td> + <td>QTAGUID netfilter device file.</td> + </tr> +</table> + +<h3 id="sysfs">sysfs</h3> +<table> + <tr> + <th>Path</th> + <th>Description</th> + </tr> + <tr> + <td><code>/sys/devices/system/cpu/online</code></td> + <td>Read-only file showing ranges of CPUs that are currently online.</td> + </tr> + <tr> + <td><code>/sys/kernel/wakeup_reasons/last_resume_reason</code></td> + <td>Read-only file showing a textual description of why the system exited the + last instance of suspend.</td> + </tr> + <tr> + <td><code>/sys/devices/system/cpu/kernel_max</code></td> + <td>Read-only file showing the maximum CPU index supported by the kernel. + </td> + </tr> +</table> + +<h3 id="selinuxfs">selinuxfs</h3> +<p>The framework mounts <code>selinuxfs</code> at <code>/sys/fs/selinux</code>. +</p> + +<table> + <tr> + <th>Path</th> + <th>Description</th> + </tr> + <tr> + <td><code>/sys/fs/selinux/checkreqprot</code></td> + <td>Read/write file containing a binary flag that determines how selinux + protections are checked on <code>mmap</code> and <code>mprotect</code> calls. + </td> + </tr> + <tr> + <td><code>/sys/fs/selinux/null</code></td> + <td>Read/write null device for use by selinux.</td> + </tr> + <tr> + <td><code>/sys/fs/selinux/policy</code></td> + <td>Read-only file containing the selinux policy in binary form.</td> + </tr> +</table> + +<aside class="note"><strong>Note:</strong> For details on SELinux in Android +8.0, see <a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for +Android 8.0</a>.</aside> + + </body> +</html> |