-- proc fs/proc/ (implementações de alguns arquivos também) Documentation/filesystem/proc.txt (apenas descrição de alguns arquivos) struct file_operations (já visto em char device) #include PDE (proc dir entry) - detalhe de implementação pde = create_proc_entry(name, mode, parent); pde->proc_fops = &fops; Propenso a corrida. remove_proc_entry(name, parent); proc_mkdir(name, parent); proc_mkdir_mode(name, mode, parent); proc_create(name, mode, parent, fops); proc_net_mkdir(net, name, parent); proc_net_remove(net, name); proc_net_fops_create(net, name, mode, fops); struct net * serve para limitar a um net_namespace apenas. -- seq_file fs/seq_file.c #include Documentation/filesystems/seq_file.txt struct seq_operations ops = { .start, .next, .stop, .show, }; void * start(struct seq_file *, loff_t *pos); void * next(struct seq_file *, void *, loff_t *pos); void stop(struct seq_file *, void *); int show(struct seq_file *, void *v); int seq_printf(struct seq_file *, fmt, ...); int open(struct inode *inode, struct file *fp) { return seq_open(fp, &seq_ops); } .read = seq_read, .llseek = seq_lseek, .release = seq_release, -- seq_list_start seq_list_start_head int single_open(struct file *, show, void *data); single_release int show(struct seq_file *, void *); seq_list_next