/usr/include/linux/proc_fs.h
jak następuje:
struct proc_dir_entry { unsigned short low_ino; unsigned short namelen; const char *name; mode_t mode; nlink_t nlink; uid_t uid; gid_t gid; unsigned long size; struct inode_operations * proc_iops; struct file_operations * proc_fops; get_info_t *get_info; struct module *owner; /* jeśli procfs jest używany wew. modułu */ /* ustaw to na THIS_MODULE */ struct proc_dir_entry *next, *parent, *subdir; void *data; read_proc_t *read_proc; write_proc_t *write_proc; atomic_t count; /* licznik użycia */ int deleted; /* czy jest usunięty */ kdev_t rdev; };
Ze struktur takich zbudowane jest całe drzewo plików i katalogów
proc-a, a także linków i całej reszty obiektów, które znajdują sią w
tym systemie plików. Wyjątkiem są tu katalogi procesów (bo trzeba nam
wiedzieć, że katalog /proc
jest w dużej części zaludniony właśnie
plikami i katalogami odpowiadającymi poszczególnym procesom), gdyż wszystkie
one korzystają z tej samej gałęzi drzewa struktur proc_dir_entry
.
Poszczególne katalogi procesów są rozróżniane na podstawie funkcji dostępu
do katalogu (tzw. czytacz-a, o którym będzie napisane dalej), czyli
jeżeli czytany jest katalog zawierający strukturę proc_dir_entry
katalogu jakiegos procesu, to odpowiednia funkcja read_dir
interfejsu
vfs zinterpretuje to dla każdego aktualnie działającego procesu zo osobna.