blob: 6a4dfe39df89fb7e5fbcf7f6d52eafbd3e831fb3 [file] [log] [blame]
Eric Andersenb186d981999-12-03 09:19:54 +00001TODO list for busybox in no particular order. Just because something
2is listed here doesn't mean that it is going to be added to busybox,
3or that doing so is even a good idea. It just means that I _might_ get
4around to it some time. If you have any good ideas, please let me know.
Eric Andersen394f7641999-11-23 21:38:12 +00005
Erik Andersen1c5b2581999-12-16 20:59:36 +00006* login/sulogin/passwd/getty/etc are part of tinylogin, and so are not
Erik Andersen94f5e0b2000-05-01 19:10:52 +00007 needed or wanted in busybox (or else I'd have to link to libcrypt).
Erik Andersen1c5b2581999-12-16 20:59:36 +00008
Erik Andersen31638212000-01-15 22:28:50 +00009* Networking apps are probably going to be split out some time soon into a
Erik Andersen330fd2b2000-05-19 05:35:19 +000010 separate package (named perhaps netkit-tiny?). This would remove the
11 following items from BusyBox: hostid, hostname, nc, nslookup, telnet,
12 and ping. nfs mounting and syslogd (when it supports network logging)
13 will remain in BusyBox.
Erik Andersen31638212000-01-15 22:28:50 +000014
Eric Andersenb186d981999-12-03 09:19:54 +000015 -Erik
16
17-----------
Eric Andersenbefda6e1999-11-25 08:06:22 +000018
Eric Andersen485b9551999-12-07 23:14:59 +000019* dnsdomainname
Erik Andersen9ffdaa62000-02-11 21:55:04 +000020* traceroute/netstat
Eric Andersenb186d981999-12-03 09:19:54 +000021* hwclock
Eric Andersenb186d981999-12-03 09:19:54 +000022* stty
Erik Andersen95c1c1e2000-04-14 21:45:29 +000023* tftp
24* ftp
Mark Whitley0a027e62000-05-08 23:25:59 +000025* group/commonize strings, remove dups (for i18n, l10n)
Erik Andersenfac10d72000-02-07 05:29:42 +000026
Erik Andersene2729152000-02-18 21:34:17 +000027-----------------------
28
Erik Andersenf378fce2000-05-01 19:27:17 +000029Running the following:
30
Erik Andersen12d1b372000-05-01 19:50:37 +000031 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
32 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
Erik Andersenf378fce2000-05-01 19:27:17 +000033
34reveals the list of all external (i.e. libc) things that BusyBox depends on.
35It would be a very nice thing to reduce this list to an absolute minimum, and
36then create a microLibc to provide these functions. There is no good reason
37for GNU libc to be so big. I'm sure it can be a lot better.
38
Erik Andersen9b7d9642000-05-01 19:49:20 +000039(BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
40
Erik Andersen5afc8642000-05-02 00:07:56 +000041Most wanted list:
42
43 [andersen@slag busybox]$ grep -l getgroups *.[ch]
44 test.c
45
46Policy violation. getgroups uses libc nss, which is unlikely
47to be present in an embedded system.
48
Erik Andersenf378fce2000-05-01 19:27:17 +000049-----------------------
50
Erik Andersen7c4b2f32000-02-29 21:49:22 +000051Compile with debugging on, run 'nm --size-sort ./busybox'
52and then start with the biggest things and make them smaller...
53
Erik Andersen7c4b2f32000-02-29 21:49:22 +000054-----------------------
55
Erik Andersen029011b2000-03-04 21:19:32 +000056
Erik Andersen029011b2000-03-04 21:19:32 +000057 I think that the add_inode &c in utility.c needs to also stow the
58 st_dev field, and that du.c should NOT call `reset_inode_list'
59 because there can be hard links from inside one argv/ to inside
60 another argv/. du.c probably ought to have an -x switch like GNU du
61 does also...
62
63
Erik Andersen298854f2000-03-23 01:09:18 +000064------------------------------------------------------------------
65
Eric Andersen926e0e32000-06-05 05:33:00 +000066An interesting email listing some apps that use /proc. BusyBox
67tries to avoid /proc as mush as is possible, so this stuff is
68interesting (to me at least):
69
Erik Andersen298854f2000-03-23 01:09:18 +000070
71Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
72From: Riley Williams <rhw@MemAlpha.CX>
73X-Sender: rhw@moo.cus.org.uk
74To: almesber@lrc.di.epfl.ch
75Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
76 Linux Kernel <linux-kernel@vger.rutgers.edu>
77Subject: Re: What /proc should contain [was: /proc/driver/microcode]
78In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
79Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
80Sender: owner-linux-kernel@vger.rutgers.edu
81Precedence: bulk
82
83Hi there.
84
85 >> Nope, most /proc access is does via programs written in C.
86
87 > That varies a lot from file to file. E.g. I haven't seen any
88 > programs that are specificly designed to read /proc/atm/* yet,
89 > and I know of only one (fuser) that reads /proc/mounts,
90 > extracting only partial information (just to pick two examples
91 > that I'm quite familiar with).
92
93As a point of reference, here's a slightly tweaked analysis of the
94programs on the system I'm reading your mail on. Basically, I ran the
95following script...
96
97 Q> #!/bin/bash
98 Q> function use() {
99 Q> for Z in $* ; do
100 Q> strings $Z | grep /proc | sed "s=^=$Z ="
101 Q> done
102 Q> }
103 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
104
105...and then went through it removing comments and print format
106strings. Replace /proc with /dev and you'd soon have an equivalent
107list for that - although I can report that such is MUCH larger...
108
109There are three programs therein that refer to /proc/mounts ...
110
111 /bin/mount
112 /bin/umount
113 /usr/bin/eject
114
115...and, as you stated, none that refer to /proc/atm on this system.
116However, as this is a RedHat Linux 5.0 based system, that's not
117necessarily an up to date reference thereto...
118
119Here's the list anyway...
120
121/bin/kill /proc/%d/cmdline
122/bin/kill /proc/%d/stat
123
124/bin/mount /proc/devices
125/bin/mount /proc/filesystems
126/bin/mount /proc/mounts
127
128/bin/netstat /proc/net
129/bin/netstat /proc/net/appletalk
130/bin/netstat /proc/net/ax25
131/bin/netstat /proc/net/ax25_route
132/bin/netstat /proc/net/dev
133/bin/netstat /proc/net/ip_masquerade
134/bin/netstat /proc/net/ipx
135/bin/netstat /proc/net/ipx_route
136/bin/netstat /proc/net/netstat
137/bin/netstat /proc/net/nr
138/bin/netstat /proc/net/nr_neigh
139/bin/netstat /proc/net/nr_nodes
140/bin/netstat /proc/net/raw
141/bin/netstat /proc/net/route
142/bin/netstat /proc/net/rt_cache
143/bin/netstat /proc/net/snmp
144/bin/netstat /proc/net/tcp
145/bin/netstat /proc/net/udp
146/bin/netstat /proc/net/unix
147
148/bin/umount /proc/devices
149/bin/umount /proc/mounts
150
151/sbin/arp /proc/net/appletalk
152/sbin/arp /proc/net/arp
153/sbin/arp /proc/net/ax25
154/sbin/arp /proc/net/ipx
155/sbin/arp /proc/net/nr
156/sbin/arp /proc/net/unix
157
158/sbin/cardctl /proc/devices
159
160/sbin/cardmgr /proc/devices
161
162/sbin/fdisk /proc/ide/%s/media
163/sbin/fdisk /proc/scsi/scsi
164
165/sbin/getty /proc/version
166
167/sbin/ifconfig /proc/net
168/sbin/ifconfig /proc/net/appletalk
169/sbin/ifconfig /proc/net/ax25
170/sbin/ifconfig /proc/net/dev
171/sbin/ifconfig /proc/net/ipx
172/sbin/ifconfig /proc/net/nr
173/sbin/ifconfig /proc/net/unix
174
175/sbin/ifup /proc/sys/kernel/modprobe
176
177/sbin/ipchains /proc/net/ip_fwchains
178/sbin/ipchains /proc/net/ip_fwnames
179/sbin/ipchains /proc/net/ip_masquerade
180/sbin/ipchains /proc/sys/net/ipv4/ip_forward
181
182/sbin/ipmaddr /proc/net/dev_mcast
183/sbin/ipmaddr /proc/net/igmp
184/sbin/ipmaddr /proc/net/igmp6
185
186/sbin/iptunnel /proc/net/dev
187
188/sbin/killall5 /proc/%s/cmdline
189/sbin/killall5 /proc/%s/exe
190/sbin/killall5 /proc/%s/stat
191/sbin/killall5 /proc/version
192
193/sbin/klogd /proc/kmsg
194
195/sbin/lsmod /proc/modules
196
197/sbin/modprobe /proc/modules
198
199/sbin/pidof /proc/%s/cmdline
200/sbin/pidof /proc/%s/exe
201/sbin/pidof /proc/%s/stat
202/sbin/pidof /proc/version
203
204/sbin/probe /proc/pci
205
206/sbin/rarp /proc/net/ax25
207/sbin/rarp /proc/net/nr
208/sbin/rarp /proc/net/rarp
209
210/sbin/rmmod /proc/modules
211
212/sbin/rmmod.static /proc/modules
213
214/sbin/route /proc/net/appletalk
215/sbin/route /proc/net/ax25
216/sbin/route /proc/net/ax25_route
217/sbin/route /proc/net/ipx
218/sbin/route /proc/net/ipx_route
219/sbin/route /proc/net/nr
220/sbin/route /proc/net/nr_neigh
221/sbin/route /proc/net/nr_nodes
222/sbin/route /proc/net/route
223/sbin/route /proc/net/rt_cache
224/sbin/route /proc/net/unix
225
226/sbin/scsi_info /proc/scsi
227/sbin/scsi_info /proc/scsi/%s
228/sbin/scsi_info /proc/scsi/scsi
229
230/sbin/slattach /proc/net/ax25
231/sbin/slattach /proc/net/nr
232
233/sbin/swapoff /proc/swaps
234
235/sbin/swapon /proc/swaps
236
237/sbin/uugetty /proc/version
238
239/usr/bin/dig /proc/
240/usr/bin/dig /proc/interrupts
241/usr/bin/dig /proc/meminfo
242/usr/bin/dig /proc/rtc
243/usr/bin/dig /proc/self/status
244/usr/bin/dig /proc/stat
245
246/usr/bin/dnsquery /proc/
247/usr/bin/dnsquery /proc/interrupts
248/usr/bin/dnsquery /proc/meminfo
249/usr/bin/dnsquery /proc/rtc
250/usr/bin/dnsquery /proc/self/status
251/usr/bin/dnsquery /proc/stat
252
253/usr/bin/eject /proc/mounts
254
255/usr/bin/emacs /proc/loadavg
256
257/usr/bin/fetchmail /proc/net/dev
258
259/usr/bin/free /proc/meminfo
260
261/usr/bin/gmake /proc/loadavg
262
263/usr/bin/gpm-root /proc/loadavg
264/usr/bin/gpm-root /proc/meminfo
265
266/usr/bin/host /proc/
267/usr/bin/host /proc/interrupts
268/usr/bin/host /proc/meminfo
269/usr/bin/host /proc/rtc
270/usr/bin/host /proc/self/status
271/usr/bin/host /proc/stat
272
273/usr/bin/hoststat /proc/loadavg
274
275/usr/bin/hwdiag /proc/cpuinfo
276/usr/bin/hwdiag /proc/pci
277/usr/bin/hwdiag /proc/scsi/scsi
278/usr/bin/hwdiag /proc/version
279
280/usr/bin/lsdev /proc/dma
281/usr/bin/lsdev /proc/interrupts
282/usr/bin/lsdev /proc/ioports
283
284/usr/bin/mailq /proc/loadavg
285
286/usr/bin/make /proc/loadavg
287
288/usr/bin/mcookie /proc/loadavg
289/usr/bin/mcookie /proc/stat
290
291/usr/bin/newaliases /proc/loadavg
292
293/usr/bin/nslookup /proc/
294/usr/bin/nslookup /proc/interrupts
295/usr/bin/nslookup /proc/meminfo
296/usr/bin/nslookup /proc/rtc
297/usr/bin/nslookup /proc/self/status
298/usr/bin/nslookup /proc/stat
299
300/usr/bin/nsupdate /proc/
301/usr/bin/nsupdate /proc/interrupts
302/usr/bin/nsupdate /proc/meminfo
303/usr/bin/nsupdate /proc/rtc
304/usr/bin/nsupdate /proc/self/status
305/usr/bin/nsupdate /proc/stat
306
307/usr/bin/pgp /proc/version
308/usr/bin/pgpe /proc/version
309/usr/bin/pgpk /proc/version
310/usr/bin/pgps /proc/version
311/usr/bin/pgpv /proc/version
312
313/usr/bin/procinfo /proc/cmdline
314/usr/bin/procinfo /proc/devices
315/usr/bin/procinfo /proc/dma
316/usr/bin/procinfo /proc/filesystems
317/usr/bin/procinfo /proc/interrupts
318/usr/bin/procinfo /proc/loadavg
319/usr/bin/procinfo /proc/meminfo
320/usr/bin/procinfo /proc/modules
321/usr/bin/procinfo /proc/stat
322/usr/bin/procinfo /proc/uptime
323/usr/bin/procinfo /proc/version
324
325/usr/bin/purgestat /proc/loadavg
326
327/usr/bin/screen /proc/loadavg
328
329/usr/bin/strace /proc/%d/stat
330
331/usr/bin/top /proc/cpuinfo
332/usr/bin/top /proc/meminfo
333/usr/bin/top /proc/stat
334
335/usr/bin/vmstat /proc/%s/stat
336/usr/bin/vmstat /proc/meminfo
337/usr/bin/vmstat /proc/stat
338
339/usr/sbin/atd /proc/loadavg
340
341/usr/sbin/dnskeygen /proc/
342/usr/sbin/dnskeygen /proc/interrupts
343/usr/sbin/dnskeygen /proc/meminfo
344/usr/sbin/dnskeygen /proc/rtc
345/usr/sbin/dnskeygen /proc/self/status
346/usr/sbin/dnskeygen /proc/stat
347
348/usr/sbin/fuser /proc/%d/stat
349/usr/sbin/fuser /proc/net/%s
350/usr/sbin/fuser /proc/net/unix
351
352/usr/sbin/in.identd /proc/net/tcp
353
354/usr/sbin/irpd /proc/
355/usr/sbin/irpd /proc/interrupts
356/usr/sbin/irpd /proc/meminfo
357/usr/sbin/irpd /proc/rtc
358/usr/sbin/irpd /proc/self/status
359/usr/sbin/irpd /proc/stat
360
361/usr/sbin/named /proc/
362/usr/sbin/named /proc/interrupts
363/usr/sbin/named /proc/meminfo
364/usr/sbin/named /proc/rtc
365/usr/sbin/named /proc/self/status
366/usr/sbin/named /proc/stat
367
368/usr/sbin/named-xfer /proc/
369/usr/sbin/named-xfer /proc/interrupts
370/usr/sbin/named-xfer /proc/meminfo
371/usr/sbin/named-xfer /proc/rtc
372/usr/sbin/named-xfer /proc/self/status
373/usr/sbin/named-xfer /proc/stat
374
375/usr/sbin/readprofile /proc/profile
376
377/usr/sbin/rwhod /proc/loadavg
378/usr/sbin/rwhod /proc/uptime
379
380/usr/sbin/sendmail /proc/loadavg
381
382/usr/sbin/setconsole /proc/openprom/options
383/usr/sbin/setconsole /proc/openprom/options/${console}-mode
384/usr/sbin/setconsole /proc/openprom/options/input-device
385/usr/sbin/setconsole /proc/openprom/options/output-device
386
387Best wishes from Riley.
388
389 * Copyright (C) 1999, Memory Alpha Systems.
390 * All rights and wrongs reserved.
391
392+----------------------------------------------------------------------+
393| There is something frustrating about the quality and speed of Linux |
394| development, ie., the quality is too high and the speed is too high, |
395| in other words, I can implement this XXXX feature, but I bet someone |
396| else has already done so and is just about to release their patch. |
397+----------------------------------------------------------------------+
398 * http://www.memalpha.cx/Linux/Kernel/
399
400
401-
402To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
403the body of a message to majordomo@vger.rutgers.edu
404Please read the FAQ at http://www.tux.org/lkml/
405