net/core/dev.c: convert /proc/net/softnet_stat to seq_file
PATCH 1/1 net/core/dev.c: convert /proc/net/softnet_stat to seq_file
Hi David,
Please pull from:
master.kernel.org:/home/acme/BK/net-2.5
Now there are five outstanding changesets.
- Arnaldo
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
[email protected], 2002-11-24 21:11:03-02:00, [email protected]
o net/core/dev.c: convert /proc/net/softnet_stat to seq_file
dev.c | 100 ++++++++++++++++++++++++++++++++++++++----------------------- wireless.c | 5 --- 2 files changed, 63 insertions(+), 42 deletions(-)
net/core/dev.c +63 -37
@@ -1796,45 +1796,49 @@return 0 ; } -static int dev_proc_stats (char *buffer,char **start,off_t offset, -int length,int *eof,void *data) +static struct netif_rx_stats *softnet_get_online (loff_t *pos) { -int i; -int len =0 ; +struct netif_rx_stats *rc =NULL ; -for (i =0 ; i <NR_CPUS ; i++) { -if (!cpu_online (i)) -continue ; - - len +=sprintf (buffer + len,"%08x %08x %08x %08x %08x %08x " -"%08x %08x %08x\n" , - netdev_rx_stat[i].total, - netdev_rx_stat[i].dropped, - netdev_rx_stat[i].time_squeeze, - netdev_rx_stat[i].throttled, - netdev_rx_stat[i].fastroute_hit, - netdev_rx_stat[i].fastroute_success, - netdev_rx_stat[i].fastroute_defer, - netdev_rx_stat[i].fastroute_deferred_out, -#if 0 - netdev_rx_stat[i].fastroute_latency_reduction -#else - netdev_rx_stat[i].cpu_collision -#endif - ); - } +while (*pos <NR_CPUS ) +if (cpu_online (*pos)) { + rc = &netdev_rx_stat[*pos]; +break ; + }else + ++*pos; +return rc; +} - len -= offset; +static void *softnet_seq_start (struct seq_file *seq,loff_t *pos) +{ +return softnet_get_online (pos); +} -if (len > length) - len = length; -if (len <0 ) - len =0 ; +static void *softnet_seq_next (struct seq_file *seq,void *v,loff_t *pos) +{ + ++*pos; +return softnet_get_online (pos); +} - *start = buffer + offset; - *eof =1 ; +static void softnet_seq_stop (struct seq_file *seq,void *v) +{ +} -return len; +static int softnet_seq_show (struct seq_file *seq,void *v) +{ +struct netif_rx_stats *s = v; + +seq_printf (seq,"%08x %08x %08x %08x %08x %08x %08x %08x %08x\n" , + s->total, s->dropped, s->time_squeeze, s->throttled, + s->fastroute_hit, s->fastroute_success, s->fastroute_defer, + s->fastroute_deferred_out, +#if 0 + s->fastroute_latency_reduction +#else + s->cpu_collision +#endif + ); +return 0 ; }static struct seq_operations dev_seq_ops = {
@@ -1856,12 +1860,29 @@ .release = seq_release, }; +static struct seq_operations softnet_seq_ops = { + .start = softnet_seq_start, + .next = softnet_seq_next, + .stop = softnet_seq_stop, + .show = softnet_seq_show, +}; + +static int softnet_seq_open (struct inode *inode,struct file *file) +{ +return seq_open (file, &softnet_seq_ops); +} + +static struct file_operations softnet_seq_fops = { + .open = softnet_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; +#ifdef WIRELESS_EXT extern int wireless_proc_init (void ); -extern int wireless_proc_exit (void );#else #define wireless_proc_init () 0 -#define wireless_proc_exit ()#endif static int __init dev_proc_init (void )
@@ -1873,12 +1894,17 @@if (!p) goto out; p->proc_fops = &dev_seq_fops; -if (wireless_proc_init ()) + p =create_proc_entry ("softnet_stat" ,S_IRUGO , proc_net); +if (!p) goto out_dev; -create_proc_read_entry ("net/softnet_stat" ,0 ,0 , dev_proc_stats,NULL ); + p->proc_fops = &softnet_seq_fops; +if (wireless_proc_init ()) + goto out_softnet; rc =0 ; out:return rc; +out_softnet: +remove_proc_entry ("softnet_stat" , proc_net); out_dev:remove_proc_entry ("dev" , proc_net); goto out;
net/core/wireless.c +0 -5
@@ -406,11 +406,6 @@ rc = -ENOMEM ; return rc; } - -void __init wireless_proc_exit (void ) -{ -remove_proc_entry ("wireless" , proc_net); -}#endif /* CONFIG_PROC_FS */ /************************** IOCTL SUPPORT **************************/
===================================================================
This BitKeeper patch contains the following changesets:
1.862
## Wrapped with gzip_uu ##
begin 664 bkpatch21921 M'XL(`,-<X3T``\U76T_;2!1^]OR*6="B4'*9\=UA4[6EJVY5U"(03\O*,N,Q ML7\QIX$V)K_OF?&<2A"5NT*S6$C'WNYSO?C)-=?%[Q<FA$;,+1+OY#5')H M,)%S)M-9U&=BTK\L07$J!"@&8S'A@P]?!CF7/;/O(-"<1)*-\8R7U="@?6LA MD?<%'QJGOW\Z/WY_BM!HA(_&47[%S[C$HQ&2HIQ%65R]B^0X$WE?EE%>3;C4 M.>N%:6T28L*?0SV+.&Y-76)[-:,QI9%->4Q,VW=MI,I_MUKV2A1*3=L$;]NI M'6KY!'W$M.^[)B;F@-*!:6.3#BD=$JM'S"$A>&U0?&#B'D$?\'_;P!%B6&" M=<!$R0<QG_79$$-R%;B05$*ID?5"*1L(:5C"24@"M^$R9IQM$7#$T%+CIY MA!GU?O"%$(D(>HL+-<#U?2TJO$U+GO&JZK.V0Y<0ZEIN;1'B6[47N8X=,-MB M8L=;SV8&\/I65F4.$'MVI[I0%';\5Y&[BGH@>/7U/2H7?N6XP6)SV+;C2^M MX*62'B,]J<9T@X!J-J\I7?'Z?\!N[NW8J=X;M;$#6Q+\]Q=9CD9.L%VEA/< M<WY&EC=T^(9[Y:U^VM/ULWB%>3_:),.\O#U26^?%Z]@GXO376%?FJ@M+:) M"?13[6]'YVH:^&>Y?V,,VTVU::9ZHBO&2?U@@";Z#/U12*5.*4X4J64R95 M^#0)RSM=3X7?M.5=P;_(LS3GG4PD22CQFT)4^Q#-)^8\F@71CUQ2F+_GI^ M?'RH71P8CO(Q'>PCXW8,#>..BHA_PU]/PZ.3\[-]9.#F9:0)[K!BVA:@,^_C M[\@P#!UW#[(!'&VZ/Y7!7X=*?5GRZ%I=/6">55R)#@Z4&F0EE],RQR4[1^J M*-/#34T>MEM49B*-'T%0LP%%*3OS+MMA@0F_Z>(E9+XO,JS!4%FT:0-(!VDM M$S;9QK0YO]N4M3&>/4^_VNGV.BR[&:/E8&NICN7N1;&]#)6YB3>'4ZV+QM)< M+L<;B]N7XVTB506SGQVB"S``WZ*$Z$E'.^_\2OP[_"\_+O*=+C#F%;UWDHA MHZRKKN)2%6/];5,)SRL;J:<_\T;P;@44F:@7G@F$90III*'XU1VER75E#$X M?U>D,4]XN2Z5I0\#N&NBW:!_V2-519)GK/[$P!G53D:'=.\L92;1DFLBRM M&ET>IXE6[C]R@ARJ&3D^IL'*2:@%04O(Q6Y6IJ:*!3R,)>^W@UP_6R'0%=] MQ5F\HE2RKG84Q:I.R;0.2/%,^2Y+.\[ M.T^?/#M=?!9^/CW_]*V+M0TH%$O4R?M+H8]YSY_'].%\,(K>6VTW;W=O%8*Y M;_O%HTF<YJGL[,/!;EP)>-0!B<.YGV:A3Z':)\*A&M)$S+:6_:3:Q6\L-N;L 5NII.1@0>S68"W_7^`?"]WH_0#0``
`
end