linux/fs/afs/proc.c
<<
>>
Prefs
   1/* /proc interface for AFS
   2 *
   3 * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public License
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the License, or (at your option) any later version.
  10 */
  11
  12#include <linux/slab.h>
  13#include <linux/module.h>
  14#include <linux/proc_fs.h>
  15#include <linux/seq_file.h>
  16#include <linux/sched.h>
  17#include <asm/uaccess.h>
  18#include "internal.h"
  19
  20static struct proc_dir_entry *proc_afs;
  21
  22
  23static int afs_proc_cells_open(struct inode *inode, struct file *file);
  24static void *afs_proc_cells_start(struct seq_file *p, loff_t *pos);
  25static void *afs_proc_cells_next(struct seq_file *p, void *v, loff_t *pos);
  26static void afs_proc_cells_stop(struct seq_file *p, void *v);
  27static int afs_proc_cells_show(struct seq_file *m, void *v);
  28static ssize_t afs_proc_cells_write(struct file *file, const char __user *buf,
  29                                    size_t size, loff_t *_pos);
  30
  31static const struct seq_operations afs_proc_cells_ops = {
  32        .start  = afs_proc_cells_start,
afs_proc_cells_stop(struct u"+code=p a>,
seq_file *a3s_pro34afs_proc_cells_start" class="sss="sref">seq_fil"+code=p a>,
seq_file *af3_proc35afs_proc_cells_start" class="ass="sref">seq_fil"+code=m a>,
seq_file *afs3proc_3ells_}ref="fs/afs/proc.c#L31" id=oc_cells3show" class="sref">afs_3roc_c37atic const struct ssize_t  afs_proc_210_3s" class="= {
  3f2        .inode =inode" e" class="s,
inode *  4140afs_proc_cells_start" class=readref">inode readde" e" class="s,
inode cellreadde" class="line" name="L32".6.4de=seq_o4erations" class="sref">4eq_op41afs_proc_cells_start" class=ss="sref">file *file" cla" class="s,
file *start  = afs_proc_cellreleassref">file *releass" class="sre,
file *cellreleass claclass="line" name="L32".6.4y David HHowells (dhowells@redhats_pro44afs_proc_cells_start" class=ownef="fs/afs/proc.cownef cla" class="s,
af4_proc45lls_}ref="fs/afs/proc.c#L31" id4roc_cell4_stop" class="sref">afs4proc_46atic const struct afs_4roc_c4lls_show(struct inode *inode, struct file *file);
  24static void *ssize_t (struct file *ode=seq_froot+cod2releassde" class="sref">inode, struct file *file);
  24static void *afs_proc_cells_write(struct inode +code=filroot+cod2read class="sref">file, const char __user *buf,
  29                               5"L31" cl5ss="line" name="L31">  5150 cla" class="sssssssssssssssssssssssssssssref">size, loff_t *_pos);
  30
5eq_op51fs_proc_cells_write" class="sref">afs_proc_cells_write(struct file *file, const char __user *start  = buf,
  29                               50.11size, loff_t *_pos);
  30
afs_proc_210_3s" class="= {
        .afs5proc_56afs_proc_cells_start" class=s="sref">inode =inode" e" class="s,
inode *afs_5roc_c57afs_proc_cells_start" class=readref">inode readde" e" class="s,
inode +code=filroot+cod2read cla                          5lass="sr5f">ssize_t file *file" cla" class="s,
file *  6160afs_proc_cells_start" class=releassref">file *releass" class="sre,
file *ode=seq_froot+cod2releassde"                           6de=seq_o6erations" class="sref">6eq_op61afs_proc_cells_start" class=ownef="fs/afs/proc.cownef cla" class="s,
start  = inode *inode, struct file *file);
  24static void *file *ode=seq_file"_volumev2releassde" class="sref">inode, struct file *file);
  24static void *afs_6roc_c6lls_showa>(struct 
  
  ,a href="+code=loff_t" class="sref">loff_t *pos);
  25static void *ssize_t a>(struct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *loff_t *size_t pos);
  25static void *  7170ls_showa>(stuct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *loff_t *7eq_op71cells_start(struct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *  28static start  = afs_proc_cells_ops = {
 _volumev2s=3a>        .afs_proc_cells_start,
(struct u"+code=p a>,
seq_file *seq_fil"+code=p a>,
seq_file *seq_fil"+code=m a>,
seq_file *ssize_t   8180ls_openafs_proc_210_3s" class="= {
 _volumev2f"L3a>        .8eq_op81afs_proc_cells_start" class=o="sref">inode =inode" e" class="s,
inode *start  = inode readde" e" class="s,
inode cellreadde" class="line" name="L32".6.80.11afs_proc_cellodeeekref="fs/afs/procdeeek cla" class=",
file *releass" class="sre,
file *ode=seq_file"_volumev2releassde" class="line" name="L32".6.8 href="f8s/afs/proc.c#L6" id="L68_proc85afs_proc_cells_start" class=ownef="fs/afs/proc.cownef cla" class="s,
rv2s="sref">inode *inode, struct file *size_t file);
  24static void *  9190ls_show(struct rv2releassref">file *ode=seq_file"_vl4rv2releassde" class="sref">inode, struct file *9eq_op91size_t file);
  24static void *start  = a>(struct rv2.6.16.58
  
  ,a href="+code=loff_t" class="sref">loff_t *pos);
  25static void *rv2lass="sref">seq_file *rv2lassde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *loff_t *pos);
  25static void *rv2.6ss="sref">seq_file *rv2.6ssde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *loff_t *rv2lass="sref">seq_file *rv2lassde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *  28static afs_proc_cells_ops = {
rv2s=32" class="line" name="L32"> _vl4rv2s=3a>        .afs_proc_cells_start,
(struct u"+code=p a>,
seq_file *rv2lassde" a void *  101seq_fil"+code=p a>,
seq_file *rv2.6ssde" a void *linux/sl02seq_fil"+code=m a>,
seq_file *rv2lassde" a void *linux/03linux04afs_proc_210_3s" class="= {
 _vl4rv2f"L3a>        .linux/s06//a"L6afs_proc_cells_start" class=s="sref">inode =inode" e" class="s,
rv2s="sref">inode *inode readde" e" class="s,
inode cellreadde" class="line" name="L32".6.10nternal.h0" class="fref">internal.08//a"L8afs_proc_cells_start" class=odeeekref="fs/afs/procdeeek cla" class=",
  209//a"L9afs_proc_cells_start" class=releassref">file *releass" class="sre,
rv2releassref">file *ode=seq_file"_vl4rv2releassde" class="line" name="L32".6.1>
  121linux/sllab.h11tatic int linux//modu11lls_open(struct rv2s="sref">inode *inode, struct file *file);
  24static void *linuxx/pro11_cells_start(struct rv2releassref">file *ode=seq_file"_4rv2releassde" class="sref">inode, struct file *linuux/se115de" e" class="ssssssssssssssssssssssssssssssss="sref">file);
  24static void *linux/ssched11ells_stop(strruct rv2.6.16.58
  
  ,a href="+code=loff_t" class="sref">loff_t *pos);
  25static void *rv2lass="sref">seq_file *rv2lassde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *loff_t *internal..hpos);
  25static void *  220a>(stuct rv2.6ss="sref">seq_file *rv2.6ssde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *loff_t *proc_d1ir_en120ls_show(struct rv2lass="sref">seq_file *rv2lassde" class="sref">inode,a href="+code=loff_t" class="sref">loff_t *  28static   122linux/slaab.h122ls_showafs_proc_cells_ops = {
rv2s=32" class="line" name="L32"> _4rv2s=3a>        .afs_1proc_12p" class="sref">afs_proc_cell"sref">afs_proc_cells_start,
a1fs_pr124afs_proc_cells_start" class=s_stop(struct u"+code=p a>,
seq_file *rv2lassde" a void *af1s_pro125afs_proc_cells_start" class="sss="sref">seq_fil"+code=p a>,
seq_file *rv2.6ssde" a void *afs1_proc126afs_proc_cells_start" class="ass="sref">seq_fil"+code=m a>,
seq_file *rv2lassde" a void *afs_1proc_1ells_s}ref="fs/afs/proc.c#L31" id1class="sr1ef">ssize_t afs_proc_210_3s" class="= {
 _4rv2f"L3a>        .  131inode =inode" e" class="s,
rv2s="sref">inode *1seq_o131afs_proc_cells_start" class=readref">inode readde" e" class="s,
inode cellreadde" class="line" name="L32".6.1class="sr1ef">start  = afs_proc_cellreleassref">file *releass" class="sre,
rv2releassref">file *ode=seq_file"_4rv2releassde" class="line" name="L32".6.12proc_cel13s_start" class="sref">a13s_pr134afs_proc_cells_start" class=ownef="fs/afs/proc.cownef cla" class="s,
af13_pro135lls_}ref="fs/afs/proc.c#L31" id12roc_cell13_stop" class="sref">afs13proc136atic const struct afs_13roc_13ublic License
 * This prog1olass="sr13f">ssize_t 

	 * This prog1o"L20" cla3ef="+code=size_t" class13"sre13r version.
  141file *ode=seq_finitde" c"L28)ef="fs/afs/proc.c#L12" id=4de=seq_o14erations" class="sref">14eq_o141afs_   .start  = proc_afs;

me="ng">
af14_pro145lls_ afs14proc146afs_proc_cel21" id="L21" clref="aine" name="L21">  21
  21
me="ng">
pos);
NULLe" name="L21"> NULLstatic afs_14roc_147afs_proc_celif (!21" id="L21" clref="aine" name="L21">  21
ssize_t pos);
error_fs/e" name="L21"> error_fs/ass=ude <  151file * 21
me="ng">
pos);
ref="aine" name="L21">  21
  3f2  ic 15eq_o151afs_proc_celif (!21" id="L21" clrf="+code=pos" class=)ef="fs/afs/proc.c#L12" id=5lass="sr15f">start  = pos);
error_2">  e" name="L21"> error_2">  ass=ude <file * 21
me="ng">
pos);
ref="aine" name="L21">  21
  ic afs15proc156de" e" class="ssssssgotosref">pos);
error_root+code" name="L21"> error_root+codass=ude <afs_15roc_157atic const struct ssize_t file *aleavsde" csion.
me="ng">
0ude <  16116eq_o161afs_ref">pos);
error_root+code" name="L21"> error_root+codass=: const struct start  = proc_afs;
prode" csion.
me="ng">
  21
pos);
error_2">  e" name="L21"> error_2">  ass=: const struct proc_afs;
prode" csion.
me="ng">
pos);
NULLe" name="L21"> NULLstatic pos);
error_fs/e" name="L21"> error_fs/ass=: const struct linux/scproc166afs_proc_cel21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
afs_16roc_167afs_proc_cellue="">-21" id="L21" clENOMEMref">file *ENOMEMass=ude <ssize_t   171  11/span class="comment"> * This prog17de=seq_o17erations" class="sref">17eq_o171cellr version

	 * This prog17lass="sr17f">start  = 
(stuct seq_file *proc_afs;
prode" csion.
me="ng">
  21
proc_afs;
prode" csion.
me="ng">
  21
proc_afs;
prode" csion.
me="ng">
pos);
NULLe" name="L21"> NULLstatic ssize_t   181  11/span class="comment"> * This prog18de=seq_o18erations" class="sref">18eq_o181cellr version

	  asn class="comment"> * This prog18lass="sr18f">start  = 
(struct inode *inode, struct file *file);
inode,a href="+code=loff_t" class="sref">loff_t *;
;
inode cells="sde" csL24" class="line" f="fs/afs/proc.c#L24" i, &  32  ic size_t ;
  191uct 19eq_o19start  =   2ivate_data8" iude "  2ivate8" i",
 data8" iude "0ude < * This prog19License,1  or (at your option) an1y"sre19r version.
   list andllue="">rocpan class="comment"> * This prog20
  11fs first it mpan class="comment"> * This prog201201

linux/s202a>(struct 
  
  ,a href="+code=loff_t" class="sref">loff_t * *  30
linu204

inode downlread32" c&  ic linux/206//a2L6afs_proc_cellue="">uct inode celldist id="L_head32" c&  30
internal208//a20afs_pef="fs/afs/proc.c#L31" id20"L20" cl20ss="line" name="L20">  209//a20r version.
 * This prog2>
  11fs move to lass.2"> l(s.2">   listpan class="comment"> * This prog2>1  221

linux/s2lab.h212ls_showa>(struct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *loff_t *pos);
  25statief="fs/afs/proc.c#L12" id2i3ux/slab2le.h" class="fref">linux2/modu213lls_   .linu2x/pro214afs_proc_cellue="">uct seq_filcelldist lassde" csL24" class="lief="+code=pos" class=as&  25static lin2ux/se215de" }de <linux/2sched216atic const struct  * This prog2internal.2h" class="fref">internal2.h
   listpan class="comment"> * This prog2i"L20" cl2ass="line" name="L20">  220
proc_d2ir_en220ls_showa>(stuct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *loff_t *  222linux/s2aab.h222afs_proc_cel21" id="L21" cluplreadref">inode uplread32" c&  ic afs_2proc_22p" cl}de <a2fs_pr224atic const struct af2s_pro225afs_ License
 * This prog2_nux/sche2s_stop" class="sref">afs2_proc226afs_r version
 lss=" asn class="comment"> * This prog2_lude/asm2_show" class="sref">afs_2proc_22ublic License

ssize_t (struct seq_file *inode,a href="+code=loff_t" class="sref">loff_t *  28statief="fs/afs/proc.c#L12" id2o"L20" cl2ref="+code=size_t" class2="sre229ls_s   .  231inode,e eloff_t * +codef">l,
proc_afs;
prode" csL24" class="lief="+code=pos" class=aslass="sref">inode,e e"s21" id="L21" clref="namkref="fs/afs/proref="namka>  ic 2seq_o23start  = 
a23s_pr234afs_proc_celproc_cel21" id="L21" cllassput"sref">afs_proc_cellput"de" csL24" class="li"fs/afs/proc.c#L28" id=fion.
me="ng">
af23_pro235de" e" class="sssssslue="">0ude <afs23proc236afs_proc_cel}de <afs_23roc_237atic const struct ssize_t 
  p c ss=" on subcelusize_t <21" id="L21" cllassp="ntfsref">afs_proc_cellp="ntfde" csL24" class="li"fs/afs/proc.c#L28" id=fion.
me="ng">
  241inode +tomic2read32" c& +codef">-> +codef">-> L31"a>  ic 24eq_o241afs_proc_cellue="">0ude <start  = 
 * This prog24proc_cel24s_next" class="sref">af24_pro245afs_ License
 * This prog24roc_cell24_stop" class="sref">afs24proc246afs_r version
  : echo="fs/afadd.&laf2"> ef">>.&lafIP>[:&lafIP>][:&lafIP>]"fs/afs
 * This prog24oc_cells24show" class="sref">afs_24roc_24ublic License

ssize_t 21" id="L21" cllsizeref="fs/afs/proc.lsizereafs_puct seq_file *inode, href="fs/afs/proc.c#L24" id="L24" class="line" f="fs/afs/proc.c#L24" i,>afs_proc_buf4" i,ef="fs/afs/proc.c#L12" id24"L20" cl24ef="+code=size_t" class24"sre24>size_t  *  30
  25125eq_o251afs_proc_celcharl="L30" class="likbufsref">afs_proc_kbuf4" i,l="L30" class="liL31"e" name="L21"> L31"a>  ,l="L30" class="liargdfs/afs/proc.c#Lorgd8" iude "start  = 

andl(sto memoryfsa>
afs25proc256de" e" class="sssssslue="">-21" id="L21" clEINVALe" name="L21"> EINVAL8" iude "afs_25roc_257atic const struct ssize_t afs_proc_kbuf4" il,
afs_proc_kmallocde" csL24" class="lilizef="fs/afs/proc.lize8" i + 1d=ff_t * GFP_KERNELa>  ic size_t afs_proc_kbuf4" ihef="fs/afs/proc.c#L12" id2n"L31" cl26ss="line" name="L31">  261-21" id="L21" clENOMEMref">file *ENOMEMass=ude <26eq_o26start  = ;
file *EFAULTass=ude <afs_proc_kbuf4" i,l"L24" class="libufsref">afs_proc_buf4" i,puct pos);
donef="fs/afs/proc.doneass=ude <afs_proc_kbuf4" i[uct linux/2cproc266atic const struct afs_26roc_267afs_proc_cel2 version

ssize_t  L31"a>  l,
afs_proc_kbuf4" i,l"ion.
me="ng">
#39;\n
#39;s
pos);
lizef="fs/afs/proc.lize8" i)ude <size_t  L31"a>  ide <  271 L31"a>  s,
0ude <27eq_o27start  = 

and, 
 L31"a>  l,
afs_proc_kbuf4" i,l"ion.
me="ng">
#39; 
#39;s
 L31"a>  ide <pos);
invade" name="L21"> invadass=ude < L31"a>  ++s,
0ude <ssize_t  L31"a>  s,=l"ion.
me="ng">
#39; 
#39;s
size_t  L31"a>  ide <  281pos);
invade" name="L21"> invadass=ude <28eq_o28start  =  L31"a>  ,l"ion.
me="ng">
#39; 
#39;s
pos);
invade" name="L21"> invadass=ude <
me="ng">
#39; 
#39;s
size_t pos);
invade" name="L21"> invadass=ude <  29129eq_o291afs_proc_cel2 version
start  =   30
me="ng">
pos);
kbufsref">afs_proc_kbuf4" i,l"L24" class="liL31"e" name="L21"> L31"a>  ,l"L30" class="liargdfs/afs/proc.c#Lorgd8" iiude < seq_fil"+=cmsde" csL24" class="likbufsref">afs_proc_kbuf4" i,l"ion.
me="ng">
fs/afadd"fs/afs
inode,e eloff_t * +codef">ude < * +codef">e,
file *ode=+cod2crea"sde" csL24" class="liL31"e" name="L21"> L31"a>  ,l"a href="fs/afsme=l"sref">inode ce=l"sde" csL24" class="liL31"e" name="L21"> L31"a>  )"s21" id="L21" clargdfs/afs/proc.c#Lorgd8" i"s21" id="L21" clfalssref">file *falss8" iiude <file *IS_ERRde" csL24" class="li+code" name="L21"> +codef">))    .size_t ;
file *PTR_ERRde" csL24" class="li+code" name="L21"> +codef">)ude <pos);
donef="fs/afs/proc.doneass=ude <301linux/s302 e +codef">)ude <
me="ng">
  
#39;%s"#39;\n
fs/afs
pos);
L31"e" name="L21"> L31"a>  ic linux/306//a306de" e" class="ssssssgotosref">pos);
invade" name="L21"> invadass=ude <  309//a30>size_t <21" id="L21" clluec_afs;
  321pos);
donef="fs/afs/proc.doneass=: const struct linux/s3lab.h312afs_proc_cel21" id="L21" clkfreef="fs/afs/proc.kfreede" csL24" class="likbufsref">afs_proc_kbuf4" iic linux3/modu313afs_proc_cel21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
pos);
luec_afs;
linu3x/pro314afs_proc_cellue="">uct lin3ux/se315lls_ linux/3sched316aticref">pos);
invade" name="L21"> invadass=: const struct ;
 EINVAL8" iude "internal3.h
me="ng">

andlon This >
	  320size_t pos);
donef="fs/afs/proc.doneass=ude <proc_d3ir_en320ls_s}de <  322linux/s3aab.h32taticsion.
 * This prog3roc_cells3_open" class="sref">afs_3proc_32p" clr version

	 * This prog3r4ux/slab3ls_start" class="sref">a3fs_pr324afs_ License

af3s_pro325afs_how(struct inode *inode, struct file *file);
afs3_proc326afs_   .afs_3proc_327afs_proc_cellue="">0ude <ssize_t   331(struct file *ode=seq_froot+cod2releassde" class="sref">inode, struct file *file);
3seq_o331afs_   .start  = 0ude <a33s_pr334atic const struct af33_pro335afs_howinode +de=seq_froot+cod2readde" class="sref">inode, href="fs/afs/proc.c#L24" id="L24" class="line" f="fs/afs/proc.c#L24" i,>afs_proc_buf4" i,ef="fs/afs/proc.c#L12" id32roc_cell33_stop" class="sref">afs33proc336de" e" class="ssssssssssssssssssssssssssss *  30
afs_33roc_337atic   .ssize_t 0ude <size}de <  34134eq_o341cellr version
 * This prog34lass="sr34f">start  = 

	 * This prog3n0.11
 * This prog34y David 3HHowells (dhowells@redha3ts_pr344afs_ License

af34_pro345afs_howseq_file *inode, href="fs/afs/proc.c#L24" id="L24" class="line" f="fs/afs/proc.c#L24" i,ef="fs/afs/proc.c#L12" id34roc_cell34_stop" class="sref">afs34proc346de" e" class="ssssssssssssssssssssssssssss>afs_proc_buf4" i,ef="fs/afs/proc.c#L12" id34oc_cells34show" class="sref">afs_34roc_347afs_proc_cel"ssssssssssssssssssssssssssssss *  30
ssize_t size_t afs_proc_kbuf4" i,l="L30" class="li"sref">afs_proc_cass=ude <  35135eq_o35start  = 

andl(sto memoryfsa>
-21" id="L21" clEINVALe" name="L21"> EINVAL8" iude "afs35proc356de" e" class21" id="L21" clreec_afs;
file *ENOMEMass=ude <afs_35roc_357afs_proc_cel21" id="L21" clkbufsref">afs_proc_kbuf4" il,
afs_proc_kmallocde" csL24" class="lilizef="fs/afs/proc.lize8" i + 1d=ff_t * GFP_KERNELa>  ic ssize_t afs_proc_kbuf4" ii size_t pos);
nome"fs/afs/proc.c#Lnome"ass=ude <  36136eq_o361de" e" class21" id="L21" clreec_afs;
file *EFAULTass=ude <start  = afs_proc_kbuf4" i,l"L24" class="libufsref">afs_proc_buf4" i,puct pos);
infaulec_afs;
afs_proc_kbuf4" i[uct linux/3cproc366afs_proc_cel2 version

afs_36roc_367afs_proc_cel21" id="L21" cl"sref">afs_proc_cass=l,
afs_proc_kbuf4" i,l"ion.
me="ng">
#39;\n
#39;s
pos);
lizef="fs/afs/proc.lize8" i)ude <ssize_t afs_proc_cass=)ef="fs/afs/proc.c#L12" id36"L20" cl36ef="+code=size_t" class36"sre36>size_t afs_proc_cass=s,
0ude <  37137eq_o371afs_proc_cel2 version
start  =   30
me="ng">
pos);
kbufsref">afs_proc_kbuf4" i)ude <;
seq_fileafs_proc_kbuf4" i)ude <;
;


ssize_t pos);
infaulec_afs;
size_t <21" id="L21" clkfreef="fs/afs/proc.kfreede" csL24" class="likbufsref">afs_proc_kbuf4" iic   381pos);
nome"fs/afs/proc.c#Lnome"ass=: const struct 38eq_o381de" e" class21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
pos);
luec_afs;
start  = uct  * This prog3nram is f38ree software; you can r38proc386afs_r version

	 >a>


seq_file *inode,e eloff_t * +codef">)ef="fs/afs/proc.c#L12" id38      391inode,> *proc_afs;
 *proef">loff_t *39eq_o39start  = pef="fs/afs/proc.c#">pefde" csion.
me="ng">
pos);
+code" name="L21"> +codef">"s21" id="L21" cl+code" name="L21"> +codef">-> L31"a>  ic  +codef">-> +codef">-> L31"a>  "s21" id="L21" clref=" ;
 *  ic  +codef">->pos);
erroradirc_afs;
 *  2*
me="ng">
 +codef">->size_t  _servers_f"L3ef">"s21" id="L21" cl+code" name="L21"> +codef">ic 401pos);
erroraserversc_afs;
linux/s402 *  2*
me="ng">
 +codef">-> _vlservers_f"L3ef">"s21" id="L21" cl+code" name="L21"> +codef">ic pos);
erroravlserversc_afs;
 *  2*
me="ng">
 +codef">->size_t  _volumes_f"L3ef">"s21" id="L21" cl+code" name="L21"> +codef">ic 
1  421pos);
erroravolumesc_afs;
linux/s4lab.h41tatic int linux4/modu413afs_proc_cel21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
linu4x/pro414afs_proc_cellue="">0ude <lin4ux/se415lls_ linux/4sched416aticref">pos);
erroravolumesc_afs;
proc_afs;
prode" csion.
me="ng">
 +codef">->internal4.hpos);
erroravlserversc_afs;
  420size_t <21" id="L21" cllumoveme="L3">proc_afs;
prode" csion.
me="ng">
 +codef">->proc_d4ir_en42lass="ef">pos);
erroraserversc_afs;
  422proc_afs;
prode" csL24" class="li+code" name="L21"> +codef">-> L31"a>  "s21" id="L21" clref=" ;
 *  ic linux/s4aab.h42taticsef">pos);
erroradirc_afs;
afs_4proc_423afs_proc_cel21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
a4fs_pr424afs_proc_cellue="">-21" id="L21" clENOMEMref">file *ENOMEMass=ude <af4s_pro425afs_}de <afs4_proc426atic const struct afs_4proc_42ublic License
 * This prog4onternal.4ef">ssize_t 

	 >a>
  431 _removede" class="sref">inode,e eloff_t * +codef">)ef="fs/afs/proc.c#L12" id4ode=seq_o4perations" class="sref">4seq_o431afs_   .start  = pef="fs/afs/proc.c#">pefde" csion.
me="ng">
a43s_pr434afs_proc_cel21" id="L21" cllumoveme="L3">proc_afs;
prode" csion.
me="ng">
 +codef">->af43_pro435de" e" class21" id="L21" clremoveme="L3">proc_afs;
prode" csion.
me="ng">
 +codef">->afs43proc436de" e" class21" id="L21" clremoveme="L3">proc_afs;
prode" csion.
me="ng">
 +codef">->afs_43roc_437afs_proc_cel21" id="L21" clremoveme="L3">proc_afs;
prode" csL24" class="li+code" name="L21"> +codef">-> L31"a>  "s21" id="L21" clref=" ;
 *  ic ssize_t size_t <21" id="L21" claleavsref">file *aleavsde" csion.
me="ng">
  44144eq_o44start  = 
 * This prog4n0.11

	 >avolumes"fs/af which hisvides a summary of extant +codepan class="comment"> * This prog44y David 4HHowells (dhowells@redha4ts_pr444afs_ License

af44_pro445afs_how(struct inode *inode, struct file *file);
afs44proc446afs_   .afs_44roc_447afs_proc_cellass="sref">inode,e eloff_t * +codef">ude <ssize_t inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *size_t <(struct   45145eq_o451de" e" class21" id="L21" cl+code" name="L21"> +codef">e,
 PDEde" csL24" class="li * datade" ude "start  =  +codef">)ef="fs/afs/proc.c#L12" id450.11-21" id="L21" clENOENTref">file *ENOENTde" ude ";
inode ceq_s="sde" csL24" class="line" f="fs/afs/proc.c#L24" i,>& _volumes_"L3ef">ic afs45proc456de" e" classif (21" id="L21" clluec_afs;
afs_45roc_457afs_proc_cel"ssssssslue="">uct ssize_t size_t <21" id="L21" cl"fs/afs/proc.c#L"ass=",
  2iva"s_data8" iude "  461  2iva"sass=",
 +codef">ude <46eq_o46start  = 0ude < * This prog46roc_cell4..h" class="fref">linux/4cproc466afs_r version
 * This prog46oc_cells46show" class="sref">afs_46roc_46ublic License

ssize_t (struct file *ode=seq_file"_volumes_releassde" class="sref">inode, struct file *file);
  471uct file *ceq_releassde" csL24" class="li *47eq_o471afs_}de <start  = 
 * This prog47y David 47Howells (dhowells@redha47s_pr474afs_ License
rocpan class="comment"> * This prog47proc_cel47s/afs/proc.c#L6" id="L647_pro475afs_ License
 * This prog47roc_cell47ree software; you can r47proc476afs_r version

"L28"="L24" class="liode=seq_file"_volumes_s6.16ref">file *ode=seq_file"_volumes_s6.16de" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t * *  30
ssize_t size_t inode,e eloff_t * +codef">l,
  2iva"sass=ude <  48148eq_o481de" e" class21" id="L21" cla">pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s="L30" class="line" name="L30">  30
start  = inode down2readde" c& +codef">->uct inode ceq_list_s6.16_headde" c& +codef">->"s="L30" class="line" name="L30">  30
 * This prog48    
(s.2cods listpan class="comment"> * This prog49"L31" cl49ss="line" name="L31">  491

49eq_o49"L28"="L24" class="liode=seq_file"_volumes_nextref">file *ode=seq_file"_volumes_nextde" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=,ef="fs/afs/proc.c#L12" id49lass="sr49f">start  =  *  30
inode,e eloff_t * +codef">l,
  2iva"sass=ude <pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s="L30" class="line" name="L30">  30
uct file *ceq_list_nextde" csL24" class="livfs/afs/proc.c#Lvass=,>& +codef">->"s"L30" class="line" name="L30">  30

 * This prog501501
 * This prog502start  = 
"L28""L24" class="liode=seq_file"_volumes_s6os="sref">seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=hef="fs/afs/proc.c#L12" id504ux/slab50Howells (dhowells@redha504inode,e eloff_t * +codef">l,
  2iva"sass=ude <inode up2readde" c& +codef">->
;
1  521
me="ng">
fs/afNew
fs/afs
2linux/s5lab.h512afs_proc_cel[uct 
me="ng">
fs/afCrt
fs/afs
3ux/slab5le.h" class="fref">linux5/modu513afs_proc_cel[uct 
me="ng">
fs/afVal
fs/afs
4ux/slab5_fs.h" class="fref">linu5x/pro514afs_proc_cel[uct  AFS_VL_NO_VOLUMEafs_]llllllllllllll=l"ion.
me="ng">
fs/afNoV
fs/afs
5ux/slab5file.h" class="fref">lin5ux/se515afs_proc_cel[uct 
me="ng">
fs/afUpd
fs/afs
6ux/slab5d.h" class="fref">linux/5sched516afs_proc_cel[uct 
me="ng">
fs/afDel
fs/afs
7ux/slab5-alpha/uaccess.h|include5/asm-517afs_proc_cel[uct 
me="ng">
fs/afUnc
fs/afs
8ux/sche5h" class="fref">internal5.h  520proc_d5ir_en521afs_r version
 * This prog5o1  522
 * This prog52nux/slab5hh" class="fref">linux/s5aab.h52taticsion.
afs_5proc_523afs_how(struct seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *a5fs_pr524afs_   .af5s_pro525de" e" classlass="sref">inode,e eloff_t * +codef">l,
  2iva"sass=ude <afs5_proc526de" e" classlass="sref">inode,e;
loff_t *;
l=de <afs_5proc_527afs_proc_cel"sssssssff_t *proc_afs;
prode" csL24" class="livfs/afs/proc.c#Lvass=,>lass="sref">inode,e;
d=ff_t *;
ssize_t   531 +codef">->)
   .5seq_o531afs_proc_celllllllllref">inode,seq_put"sref">afs_proc_ceq_put"de" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/afUSE STT VLID[0]llVLID[1]llVLID[2]llNAME\n&fs/afs
start  = 0ude <a53s_pr534atic const struct af53_pro535de" e" class2 version

afs53proc536de" e" class21" id="L21" clceq_p="ntfsref">afs_proc_ceq_p="ntfde" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/af%3d
%s
%08x
%08x
%08x
%s\n&fs/afs
afs_53roc_537afs_proc_cel"ssssssssssref">inode,etomic2readref">inode etomic2readde" c&-> usagsef">)"  .ssize_t inode,e;
->afs_proc_cta"sass=]"  .size_t ;
->.inode vidls_s[0]"  .  541 ;
->.inode vidls_s[1]"  .54eq_o541afs_proc_celllllllll+co->.inode vidls_s[2]"  .start  = ->. L31"a>  ic 0ude <af54_pro545afs_}de <afs54proc546atic const struct afs_54roc_54ublic License
 * This prog54lass="sr54f">ssize_t 

	 >avlservers"fs/af which hisvides a list of volumepan class="comment"> * This prog54"L20" cl54ef="+code=size_t" class54"sre54tatic License
 * This prog55"L31" cl55ss="line" name="L31">  551

55eq_o55(struct inode *inode, struct file *file);
start  = inode,e eloff_t * +codef">ude <inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *afs55proc556atic const struct afs_55roc_557afs_proc_cel21" id="L21" cl+code" name="L21"> +codef">e,
 PDEde" csL24" class="li * datade" ude "ssize_t  +codef">)ef="fs/afs/proc.c#L12" id55"L20" cl55ef="+code=size_t" class55"sre55>size_t -21" id="L21" clENOENTref">file *ENOENTde" ude "  56156eq_o561de" e" class21" id="L21" clreec_afs;
inode,seq_s="sref">inode ceq_s="sde" csL24" class="line" f="fs/afs/proc.c#L24" i,>& _vlservers_"L3ef">ic start  = ;
uct   2iva"s_data8" iude "linux/5cproc566de" e" class21" id="L21" cl"fs/afs/proc.c#L"ass=->  2iva"sass=",
 +codef">ude <afs_56roc_567atic const struct ssize_t 0ude <  57157eq_o571cellr version
 * This prog57lass="sr57f">start  = 
 * This prog570.11

(struct file *ode=seq_file"_vlservers_releassde" class="sref">inode, struct file *file);
uct file *ceq_releassde" csL24" class="li *ssize_t   581
 * This prog58de=seq_o58erations" class="sref">58eq_o581cellr version
rocpan class="comment"> * This prog58lass="sr58f">start  = 
 * This prog580.11

"L28"="L24" class="liode=seq_file"_vlservers_s6.16ref">file *ode=seq_file"_vlservers_s6.16de" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t * *  30
inode,e eloff_t * +codef">l,
  2iva"sass=ude <  30/a>
  30
size_t <21" id="L21" cla">pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s="L30" class="line" name="L30">  30
  59159eq_o591de" e" class2 version

start  = inode down2readde" c& +codef">->  30/a>
("L28"=) 1ude <" name="L30">  30/a>
size_t " name="L30">  30/a>
 +codef">-> uct 601start  = & +codef">->" name="L30">  30/a>
 * This prog606ux/slab60ree software; you can r606//a606afs_r version
(s.2cods listpan class="comment"> * This prog607ux/slab60he terms of the GNU Gen607//a60ublic License

"L28"="L24" class="liode=seq_file"_vlservers_nextref">file *ode=seq_file"_vlservers_nextde" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=,ef="fs/afs/proc.c#L12" id609ux/sche60 or (at your option) an609//a60>size_t   30

1  621inode,e eloff_t * +codef">l,
  2iva"sass=ude <linux/s6lab.h612afs_proc_cel21" id="L21" cl;
  30/a>
linux6/modu613atic const struct linu6x/pro614afs_proc_cel21" id="L21" cla">pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s +codef">->  30
lin6ux/se615lls_ 6ux/slab6d.h" class="fref">linux/6sched616de" e" class21" id="L21" cl>" name="L30">  30/a>
  30
  30
internal6.h" name="L30">  30/a>
 +codef">->  620size_t uct proc_d6ir_en62tatic const struct   622& +codef">->" name="L30">  30/a>
linux/s6aab.h62tatic}de <afs_6proc_623atic const struct a6fs_pr624afs_ License
 * This prog6_nux/seq_6ls_next" class="sref">af6s_pro625afs_ License
 * This prog6_nux/sche6s_stop" class="sref">afs6_proc626afs_r version

afs_6proc_627atichow"L28""L24" class="liode=seq_file"_vlservers_s6os="sref">seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=hef="fs/afs/proc.c#L12" id6onternal.6ef">ssize_t inode,e eloff_t * +codef">l,
  2iva"sass=ude <  6316seq_o631de" e" class21" id="L21" clup2readref">inode up2readde" c& +codef">->start  = a63s_pr634afs_ License
 * This prog62proc_cel63s_next" class="sref">af63_pro635afs_ License
 * This prog6=nux/sche63_stop" class="sref">afs63proc636afs_r version

afs_63roc_637atichow(struct seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *ssize_t size_t inode,in_addrfs/afs/proc.c#Lin_addref">loff_t *l,
  64164eq_o641de" e" class2 version

start  = class="sref">inode, s_addrfs/afs/proc.c#Lin_addref">lo) 1)
   .inode,seq_put"sref">afs_proc_ceq_put"de" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/afADDRESS\n&fs/afs
0ude <af64_pro645de" e" class}de <afs64proc646atic const struct afs_64roc_647afs_proc_cel2 version

ssize_t inode,seq_p="ntfsref">afs_proc_ceq_p="ntfde" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/af%pI4\n&fs/afs
&->ic size_t 0ude <  65165eq_o65start  = 
 * This prog650.11

	 >aservers"fs/af which hisvides a summary of activcpan class="comment"> * This prog65y David 65Howells (dhowells@redha65s_pr654afs_ License
 * This prog65proc_cel6ss/afs/proc.c#L6" id="L66"_pro655afs_ License

afs65proc656atichow(struct inode *inode, struct file *file);
afs_65roc_657afs_   .ssize_t inode,e eloff_t * +codef">ude <size_t inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *  66166eq_o66start  =  +codef">e,
 PDEde" csL24" class="li * datade" ude " +codef">)ef="fs/afs/proc.c#L12" id66y David 66Howells (dhowells@redha66s_pr664afs_proc_cele" classlue="">-21" id="L21" clENOENTref">file *ENOENTde" ude "linux/6cproc666de" e" class21" id="L21" clreec_afs;
inode,seq_s="sref">inode ceq_s="sde" csL24" class="line" f="fs/afs/proc.c#L24" i,>& _servers_"L3ef">ic afs_66roc_667" class="sreif (21" id="L21" clreec_afs;
ssize_t uct   671 *  2iva"s_data8" iude "67eq_o671de" e" class21" id="L21" cl"fs/afs/proc.c#L"ass=->  2iva"sass=",
 +codef">ude <start  = 0ude < * This prog67roc_cell67ree software; you can r67proc676afs_r version
 * This prog67 under t6hhe terms of the GNU Gen6eroc_67ublic License

ssize_t (struct file *ode=seq_file"_servers_releassde" class="sref">inode, struct file *size_t file);
  68168eq_o681de" e" classlue="">ref">inode,seq_releassref">file *ceq_releassde" csL24" class="li *start  = 
 * This prog68proc_cel68s/afs/proc.c#L6" id="L668_pro685afs_ License
rocpan class="comment"> * This prog68roc_cell68ree software; you can r68proc686afs_r version
 * This prog6n under t68he terms of the GNU Gen68roc_68ublic License

file *ode=seq_file"_servers_s6.16de" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t * *  30
size_t <21" id="L21" cla_acquiresc_afs;
  2iva"sass=->  69169eq_o691afs_proc_cellass="sref">inode,e eloff_t * +codef">l,
  2iva"sass=ude <start  = pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s="L30" class="line" name="L30">  30


 +codef">->uct inode ceq_list_s6.16_headde" c& +codef">->"s="L30" class="line" name="L30">  30

 * This prog701701
(s.2cods listpan class="comment"> * This prog702start  = 
"L28"="L24" class="liode=seq_file"_servers_nextref">file *ode=seq_file"_servers_nextde" class="sref">inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=,ef="fs/afs/proc.c#L12" id704ux/slab70Howells (dhowells@redha704 *  30
inode,e eloff_t * +codef">l,
  2iva"sass=ude <inode,a">pef="fs/afs/proc.c#">pefde" csion.
me="ng">
r%Ld
fs/afs
pos);
+code" name="L21"> +codef">"s="L30" class="line" name="L30">  30
uct file *ceq_list_nextde" csL24" class="livfs/afs/proc.c#Lvass=,>& +codef">->"s"L30" class="line" name="L30">  30
  7212linux/s7lab.h71taticsion.
 * This prog7>3linux7/modu71p" clr version
 * This prog7>4ux/slab7_fs.h" class="fref">linu7x/pro714afs_ License

5ux/slab7file.h" class="fref">lin7ux/se715lls_how"L28""L24" class="liode=seq_file"_servers_s6os="sref">seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *"L28"="L24" class="livfs/afs/proc.c#Lvass=hef="fs/afs/proc.c#L12" id7>6ux/slab7d.h" class="fref">linux/7sched716de" e" class21" id="L21" cl__releasssc_afs;
  2iva"sass=->7ux/slab7-alpha/uaccess.h|include7/asm-717afs_   .8ux/sche7h" class="fref">internal7.hinode,e eloff_t * +codef">l,
  2iva"sass=ude <  720proc_d7ir_en720 cla" class=ff_t * +codef">->  722linux/s7aab.h722afs_de <afs_7proc_72p" clr version
 * This prog7r4ux/slab7ls_start" class="sref">a7fs_pr724afs_ License
 * This prog7_nux/seq_7ls_next" class="sref">af7s_pro725afs_ License

afs7_proc726atichow(struct seq_file *inode,seq_ne" f="fs/afs/proc.seq_ne" ef">loff_t *afs_7proc_727afs_   .ssize_t inode,e eloff_t * +codef">l,
  2iva"sass=ude <inode,e eloff_t * serverpa">l,
proc_afs;
prode" csL24" class="livfs/afs/proc.c#Lvass=,>lass="sref">inode,e ed=ff_t *;
  731inode, paddrfs/afs/proc.c#Lipaddref">[20]ude <7seq_o73start  =  +codef">->)
   .a73s_pr734afs_proc_cele" classref">inode,seq_put"sref">afs_proc_ceq_put"de" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/afUSE ADDR_cele" classSTATE\n&fs/afs
af73_pro735de" e" class_t 0ude <afs73proc736de" e" class}de <afs_73roc_737atic const struct ssize_t 

size_t <21" id="L21" clsp="ntfsref">afs_proc_cp="ntfde" csL24" class="li paddrfs/afs/proc.c#Lipaddref">d=fion.
me="ng">
fs/af%pI4&fs/afs
& serverpa">->ic   741 *afs_proc_ceq_p="ntfde" csL24" class="li"fs/afs/proc.c#L"ass=d=fion.
me="ng">
fs/af%3d
%-15.15s
%5d\n&fs/afs
74eq_o741afs_proc_celllllllll+coinode etomic2readde" c& serverpa">-> usagsef">)"sref">inode, paddrfs/afs/proc.c#Lipaddref">"sref">inode,servere" name="L21"> serverpa">->afs_proc_fs_s6.teef">ic start  = 0ude <af74_pro745de" 





The original LXR software by roc.e <LXR an>
unityef">"sthis experi
.


;xf.assux.no kindly costed by e <"shisvider of Lssux annsult"ng andloperat/ons serviceefsince 1995.