1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
CVSID:$Id$
This document is the TODO list for the HAL project. Feel free to add/remove
entries if you get an idea or implement one of the tasks.
Short term issues
- Add void PropertyModified(string key, bool is_added, bool is_removed)
and deprecate Property[Added,Removed,Changed]
- Make all optional properties from the spec available but with empty values
- Add infrastructure so updates to several properties happen as a single
transaction
- Make sure device is not added to GDL before all the key properties as
specified in the spec is there
- Add dbus_bool_t* not_found to all get functions in libhal
- Possible bug: PropertyAdded being called several times
- Possible bug: DeviceAdded/DeviceRemoved being called several time on a
device?
- veryify that we got all the necessary hardware parameters for
physical busses, e.g. pci, usb... We won't really know before people
start using HAL though
- add device persistency across invocations of the hal daemon so we
don't have to scan N fdi files for M devices, resulting in N*M scans
- fix all property string values to be UTF8 compliant
- add Lock()/Unlock() methods to the network API (and libhal) for obtaining
exclusive device access (useful for burning CD's)
- fix memory leaks; especially those when getting strings from D-BUS
[ongoing, partially resolved (libhal seems clean, still need to audit
hald)]
- add a device representing the computer system with properties on kernel
name, version, xserver version etc. Make all devices that currently doesn't
have a parent, children of this
- extend .fdi file format to be able to reference the device representing
the computer system and match on e.g. kernel.name and kernel.version, so
as to merge properties dependent on that
- replace mii ethernet monitoring with netlink sockets
- figure a way to detect block.device (e.g. /udev/hda2, already we know
major:minor) when detecting a block device on hald startup.
The hotplug case is already solved by receiving a signal from udev. Might
need to modify udev to be able to do something like
'udev --get-device --major <num> --minor <num>'
- until available in sysfs, parse /proc/sys/dev/cdrom/info, to provide
information about capabilities of optical discs such as CD-RW, DVD etc.
Partially resolved
- work more on packaging, put some daemon-fork-fu into hald and make it
read a configuration file, make initscripts for various distros and make
hald run as a unprivileged dedicated user
More long term issues
- signing of fdi files
- add code/scripts for regression testing
- access control logic (only daddy can use daddy's camera etc.). To come
from distros?
- network transparency; think diskless X terminals with USB ports
integrated into the desktop environment running on a LTSP server
- get HAL to work on other OS'es than those based on Linux 2.6
- lots of other 'crazy ideas'
Fishy issues we need to work around, and don't yet do in a perfectly
reliable way (Linux 2.6 specific)
- userspace is faster than kernel when hotplugging, so sometimes certain
attrs are missing; should be addressed in libsysfs 0.4. Seems also to
be a problem with /proc/bus/usb/devices; sometimes information derived
from /p/b/u/d such as USB version and USB speed is missing because of
this issue
- input hotplugging not giving same range of attrs as on detection time;
need support for input in sysfs
- various key bus-specific properties missing all over the place,
especially for SCSI (I also need SCSI hardware to test with)
- sysfs is missing key information only available in /proc such as USB
version and speed (/proc/bus/usb/devices), model of IDE disk (e.g.
/proc/ide/hda/model), optical drive caps (/proc/sys/dev/cdrom/info).
Until this is fixed we have to read stuff from /proc.
|