FreeBSD: world (FreeBSD 6.1): df ('getmntinfo' system call)

|

FreeBSD의 모든 기본 시스템 바이너리들의 소스는 설치시에 Developer를 선택함으로써 설치가 가능하다. (라고 알고 있다;)
이렇게 설치된 FreeBSD는 /usr/src 디렉토리에 아래에 보면 이런 식으로 디렉토리들이 만들어져 있고,

elenoa-freebsd# ls -F /usr/src
COPYRIGHT               contrib/                release/
LOCKS                   crypto/                 rescue/
MAINTAINERS             etc/                    sbin/
Makefile                games/                  secure/
Makefile.inc1           gnu/                    share/
ObsoleteFiles.inc       include/                sys/
README                  kerberos5/              tools/
UPDATING                lib/                    usr.bin/
bin/                    libexec/                usr.sbin/
elenoa-freebsd#

각각 디렉토리에 해당하는 소스가 포함되어 있다. 즉, /bin 디렉토리에 들어있는 바이너리들은 /usr/src/bin/ 아래에 해당 바이너리의 이름과 같은 디렉토리명으로 그 소스가 존재하게 된다.

Linux의 core-utility 소스와 FreeBSD의 core-utility 소스를 비교해보면, Linux는 많은 플랫폼의 다른 system call들을 지원하기 위해서 system call을 wrapper로 감싸 별도의 라이브러리 형식을 만들었던 반면, FreeBSD의 core-utility 소스는 아주 간단하게 되어 있다. 다른 플랫폼을 위한 #define 구문도 없다. (또한 소스도 매우 보기가 쉽다.)


And