인터페이스 요구사항

이 페이지에서는 Android의 원활한 작동에 필요한 Linux 커널 인터페이스의 하위 집합을 설명합니다. 이러한 인터페이스의 존재 여부와 정확성은 공급업체 테스트 모음(VTS)의 일부로 테스트됩니다. 이 하위 집합은 시간이 지남에 따라 확장되어 Android 커널 인터페이스의 많은 부분을 포함하게 됩니다.

시스템 호출

모든 시스템 호출은 동일한 버전의 업스트림 Linux 커널에서처럼 같은 서명 및 의미 체계를 제공해야 합니다.

prctl

Android는 지원되는 커널 버전에 관한 업스트림 prctl 연산 외에 추가 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 OOP에 대한 커널의 동작을 제어하는 읽기-쓰기 파일입니다.
/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 시스템에서 RT 작업을 실행할 수 있는, sched_rt_period_us를 기준으로 한 시간의 양이 포함된 읽기/쓰기 파일입니다.
/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 프로세스가 가질 수 있는 메모리 맵 영역의 최대 개수가 포함된 읽기/쓰기 파일입니다.
/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 단일 시도에서 스왑으로부터 연속 페이지를 읽는 최대 페이지 수를 제어하는 읽기/쓰기 파일입니다.
/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 바인더 기기 파일입니다.
/dev/hwbinder 하드웨어 바인더 기기 파일입니다.
/dev/tun 범용 TUN/TAP 기기 파일입니다.
/dev/xt_qtaguid QTAGUID 넷필터 기기 파일입니다.

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

이 프레임워크는 /sys/fs/selinux에서 selinuxfs를 마운트합니다.

경로 설명
/sys/fs/selinux/checkreqprot mmapmprotect 호출 시 selinux 보호가 검사되는 방식을 판단하는 바이너리 플래그가 포함된 읽기/쓰기 파일입니다.
/sys/fs/selinux/null selinux에서 사용하도록 null 기기를 읽고 씁니다.
/sys/fs/selinux/policy selinux 정책을 바이너리 형식으로 포함하는 읽기 전용 파일입니다.