インターフェースの要件

このページでは、Android が正しく動作するために必要な Linux カーネル インターフェースのサブセットについて説明します。これらのインターフェースの存在と正確性は、ベンダー テストスイート(VTS)によってテストされます。このサブセットは徐々に拡大し、Android カーネル インターフェースの大きな部分を占めるようになります。

システムコール

システムコールはすべて、同じバージョンのアップストリームの Linux カーネルと同じシグネチャとセマンティクスを提供することが想定されています。

prctl

サポートされているカーネル バージョンのアップストリームの prctl オペレーションに加えて、Android では追加の prctl オペレーションが必要です。その実装は android-common カーネルにあります。

PR_SET_TIMERSLACK_PID
PR_SET_VMA

ファイルシステム

Linux カーネルは、複数のファイルシステムを通じてインターフェースを提供しています。Android は、これらのインターフェースが、アップストリームの Linux カーネルと同じ情報を同じ形式でやり取りし、同じセマンティクスを提供することを想定しています。アップストリームに存在しないインターフェースの場合、適切な動作は Android 共通カーネルの対応するブランチによって決定されます。

procfs

インターフェース 説明
/proc/asound/ 現在構成されている ALSA ドライバのリスト(読み取り専用ファイル)。
/proc/cmdline カーネルに渡されたコマンドライン引数(読み取り専用ファイル)。
/proc/config.gz カーネルビルド構成(読み取り専用ファイル)。
/proc/cpuinfo アーキテクチャ固有の CPU の詳細(読み取り専用ファイル)。
/proc/diskstats ブロック デバイスの I/O 統計情報(読み取り専用ファイル)。
/proc/filesystems 現在カーネルでサポートされているファイルシステムの一覧(読み取り専用ファイル)。
/proc/kmsg リアルタイムのカーネル メッセージ(読み取り専用ファイル)。
/proc/loadavg CPU と IO のロード アベレージ(読み取り専用ファイル)。
/proc/meminfo メモリ サブシステムの詳細(読み取り専用ファイル)。
/proc/misc その他のメジャー デバイスに登録されているその他のドライバの一覧(読み取り専用ファイル)。
/proc/modules 読み込まれているカーネル モジュールに関する情報(読み取り専用ファイル)。
/proc/mounts /proc/self/mounts(マウントされているファイルシステムに関する情報を列挙する読み取り専用ファイル)へのシンボリック リンク。
/proc/net ネットワーク スタックのさまざまなパラメータ(ディレクトリ)。
/proc/net/xt_qtaguid/ タグ付きソケットに関する情報(読み書き可能なファイル)。
/proc/pagetypeinfo ページ アロケータ情報(読み取り専用ファイル)。
/proc/stat カーネルとシステムのさまざまな統計情報(読み取り専用ファイル)。
/proc/swaps スワップ領域の使用率(読み取り専用ファイル)。このファイルはオプションです。ファイルが存在する場合にのみ VTS で内容と権限が検証されます
/proc/sys/abi/swp ARM のサポート終了となった SWP 命令の動作(読み書き可能なファイル)。
/proc/sys/fs/pipe-max-size 個々のパイプバッファのサイズの最大バイト数(読み書き可能なファイル)。
/proc/sys/fs/protected_hardlinks ハードリンクを作成する際の動作(読み書き可能なファイル)。
/proc/sys/fs/protected_symlinks シンボリック リンクを作成する際の動作(読み書き可能なファイル)。
/proc/sys/fs/suid_dumpable setuid されたバイナリや、保護または汚染されたバイナリのコアダンプ モード(読み書き可能なファイル)。
/proc/sys/kernel/core_pattern コアダンプのファイル名のパターン(読み書き可能なファイル)。
/proc/sys/kernel/core_pipe_limit 同時にコアをユーザーアプリにパイプで出力できるクラッシュ プロセスの数(読み書き可能なファイル)。
/proc/sys/kernel/dmesg_restrict 特権のないユーザーに dmesg へのアクセスを許すかどうか(読み書き可能なファイル)。
/proc/sys/kernel/domainname システムの YP / NIS ドメイン名(読み書き可能なファイル)。
/proc/sys/kernel/hostname システムのホスト名(読み書き可能なファイル)。
/proc/sys/kernel/hung_task_timeout_secs タスクが応答しなくなってからハングしたと判断されるまでのタイムアウトの制御(読み書き可能なファイル)。このファイルはオプションです。ファイルが存在する場合にのみ VTS で内容と権限が検証されます
/proc/sys/kernel/kptr_restrict カーネル ポインタを proc ファイルやその他のインターフェースに出力するかどうか(読み書き可能なファイル)。
/proc/sys/kernel/modules_disabled カーネル モジュールの読み込みを許すかどうか(読み書き可能なファイル)。
/proc/sys/kernel/panic_on_oops oops に関するカーネルの動作(読み書き可能なファイル)。
/proc/sys/kernel/perf_event_max_sample_rate パフォーマンス イベントの最高サンプリング レート(読み書き可能なファイル)。
/proc/sys/kernel/perf_event_paranoid 特権のないユーザーによるパフォーマンス イベント システムの使用許可(読み書き可能なファイル)。
/proc/sys/kernel/pid_max PID 割り当てのラップ値(読み書き可能なファイル)。
/proc/sys/kernel/random/boot_id ブートごとの新しいランダム ID(読み取り専用ファイル)。
/proc/sys/kernel/randomize_va_space システムのアドレス配置ランダム化ポリシー(読み書き可能なファイル)。
/proc/sys/kernel/sched_child_runs_first 新たにフォークされたタスクを親タスクよりも優先してスケジュールするかどうか(読み書き可能なファイル)。
/proc/sys/kernel/sched_latency_ns タスクがスケジュールされるまでのレイテンシの最大値(ナノ秒単位)(読み書き可能なファイル)。
/proc/sys/kernel/sched_rt_period_us システム全体の RT 実行制限で使用される期間(マイクロ秒単位)(読み書き可能なファイル)。
/proc/sys/kernel/sched_rt_runtime_us sched_rt_period_us を基準にした、システムが RT タスクを実行できる時間(読み書き可能ファイル)。
/proc/sys/kernel/sched_tunable_scaling sched_latency_ns をスケジューラが CPU 数に基づいて自動的に調整するかどうか(読み書き可能なファイル)。
/proc/sys/kernel/sched_wakeup_granularity_ns タスク B がタスク A をプリエンプトするのに、タスク A の仮想ランタイムがタスク B よりもどれだけ長ければよいか(ナノ秒単位)(読み書き可能なファイル)。
/proc/sys/kernel/sysrq sysrq キーで呼び出すことができる機能の制御(読み書き可能なファイル)。
/proc/sys/net/* ネットワーク スタックのさまざまなパラメータ(ディレクトリ)。
/proc/sysrq-trigger sysrq 機能の起動(書き込み専用ファイル)。
/proc/sys/vm/dirty_background_ratio 使用可能メモリ(空きページと回収可能ページ)の合計に対する、バックグラウンド カーネル フラッシャーのスレッドがダーティデータの書き出しを開始するページ数の割合(読み書き可能なファイル)。
/proc/sys/vm/dirty_expire_centisecs カーネル フラッシャー スレッドによる書き出しの対象となるダーティデータの経過時間(読み書き可能なファイル)。
/proc/sys/vm/drop_caches カーネルにキャッシュを強制的に破棄させるために使用(読み書き可能なファイル)。
/proc/sys/vm/extra_free_kbytes バックグラウンド回収(kswapd)が開始される空きメモリ量のしきい値と、プロセスの割り当てにより直接回収が発生する空きメモリ量のしきい値との間の間隔(読み書き可能なファイル)。このファイルはオプションです。ファイルが存在する場合にのみ VTS で内容と権限が検証されます
/proc/sys/vm/max_map_count 1 つのプロセスで持つことのできるメモリマップ領域の数の上限(読み書き可能なファイル)。
/proc/sys/vm/mmap_min_addr mmap ができる最小アドレス(読み書き可能なファイル)。
/proc/sys/vm/mmap_rnd_bits mmap されたアドレスの乱雑度(読み書き可能なファイル)。
/proc/sys/vm/mmap_rnd_compat_bits mmap されたアドレスの乱雑度(読み書き可能なファイル)。
/proc/sys/vm/overcommit_memory カーネル仮想メモリの評価モード(読み書き可能なファイル)。
/proc/sys/vm/page-cluster スワップから 1 回で読み込む連続ページの最大ページ数(読み書き可能なファイル)。
/proc/uid_cputime/remove_uid_range 書き込まれても /proc/uid_cputime/show_uid_stat の表示から除外される UID(書き込み専用ファイル)。
/proc/uid_cputime/show_uid_stat UID のプロセスがユーザー空間で実行された時間とカーネル空間で実行された時間(読み取り専用ファイル)。
/proc/uid_io/stats システム内の UID ごとの I/O 統計情報の一覧(読み取り専用ファイル)。
/proc/uid_procstat/set UID をフォアグラウンドまたはバックグラウンドに設定(書き込み専用ファイル)。
/proc/uid_time_in_state 各 UID のプロセスが各周波数で実行された時間(読み取り専用ファイル)。このファイルはオプションです。ファイルが存在する場合にのみ VTS で内容と権限が検証されます
/proc/uptime システムが実行されている時間(読み取り専用ファイル)。
/proc/version カーネルのバージョンを表す文字列(読み取り専用ファイル)。
/proc/vmallocinfo vmalloc されている範囲(読み取り専用ファイル)。
/proc/vmstat カーネルからの仮想メモリの統計情報(読み取り専用ファイル)。
/proc/zoneinfo メモリゾーンに関する情報(読み取り専用ファイル)。

dev

インターフェース 説明
/dev/ashmem 無名共有メモリのデバイス ファイル。
/dev/binder binder のデバイス ファイル。
/dev/hwbinder ハードウェア binder のデバイス ファイル。
/dev/tun ユニバーサル TUN/TAP のデバイス ファイル。
/dev/xt_qtaguid QTAGUID netfilter のデバイス ファイル。

sysfs

インターフェース 説明
/sys/class/net/*/mtu 各インターフェースの最大送信単位(読み書き可能なファイル)。
/sys/class/rtc/*/hctosys 特定の rtc がブート時と再開時にシステム時刻を提供しているかどうか(読み取り専用ファイル)。
/sys/devices/system/cpu/ CPU の構成と周波数に関する情報(ディレクトリ)。
/sys/kernel/wakeup_reasons 最後の中断の時刻と再開の理由(読み取り専用ファイルのディレクトリ)。
/sys/power/state システムのスリープ状態(読み書き可能なファイル)。
/sys/power/wake_lock アクティブな wake lock(読み書き可能なファイル)。
/sys/power/wake_unlock 非アクティブな wake lock(読み書き可能なファイル)。
/sys/power/wakeup_count wakeup イベントが同時に到着することを考慮してシステムをスリープ状態にするために使用(読み書き可能ファイル)。

selinuxfs

このフレームワークは selinuxfs/sys/fs/selinux にマウントします。

パス 説明
/sys/fs/selinux/checkreqprot mmapmprotect の呼び出しで selinux の保護がどのようにチェックされるかを決定する 2 値のフラグ(読み書き可能なファイル)。
/sys/fs/selinux/null selinux が使用するための読み書き可能な null デバイス。
/sys/fs/selinux/policy バイナリ形式の selinux ポリシー(読み取り専用ファイル)。