/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.