このページでは、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 | mmap と mprotect の呼び出しで selinux の保護がどのようにチェックされるかを決定する 2 値のフラグ(読み書き可能なファイル)。 |
/sys/fs/selinux/null | selinux が使用するための読み書き可能な null デバイス。 |
/sys/fs/selinux/policy | バイナリ形式の selinux ポリシー(読み取り専用ファイル)。 |