diff options
| author | Andreas Färber | 2013-08-23 20:07:28 +0200 |
|---|---|---|
| committer | Andreas Färber | 2013-08-30 20:14:38 +0200 |
| commit | 77cbb28a5b90dbd183e1139734bcc2ac9ecbdd6a (patch) | |
| tree | 4cafe128e6bdaec2e2f992782d73039f337c6b0e /xbzrle.c | |
| parent | intel-hda: Pass size to hda_codec_bus_init() (diff) | |
| download | qemu-77cbb28a5b90dbd183e1139734bcc2ac9ecbdd6a.tar.gz qemu-77cbb28a5b90dbd183e1139734bcc2ac9ecbdd6a.tar.xz qemu-77cbb28a5b90dbd183e1139734bcc2ac9ecbdd6a.zip | |
ipack: Pass size to ipack_bus_new_inplace()
shot/ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.tar.gz'>ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.tar.gz
ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.tar.xz
ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.zip
ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.tar.xz
ipxe-e71b83b22b3ce8ddb6b5ba91948c5a1b937ef0fb.zip
[interface] Expand object interface to allow for polymorphic interfaces
We have several types of object interface at present (data-xfer, job
control, name resolution), and there is some duplication of
functionality between them. For example, job_done(), job_kill() and
xfer_close() are almost isomorphic to each other.
This updated version of the object interface mechanism allows for each
interface to export an arbitrary list of supported operations.
Advantages include:
Operations methods now receive a pointer to the object, rather than
a pointer to the interface. This allows an object to, for example,
implement a single close() method that can handle close() operations
from any of its exposed interfaces.
The close() operation is implemented as a generic operation (rather
than having specific variants for data-xfer, job control, etc.).
This will allow functions such as monojob_wait() to be used to wait
for e.g. a name resolution to complete.
The amount of boilerplate code required in objects is reduced, not
least because it is no longer necessary to include per-interface
methods that simply use container_of() to derive a pointer to the
object and then tail-call to a common per-object method.
The cost of adding new operations is reduced; adding a new data-xfer
operation such as stat() no longer incurs the penalty of adding a
.stat member to the operations table of all existing data-xfer
interfaces.
The data-xfer, job control and name resolution interfaces have not yet
been updated to use the new interface mechanism, but the code will
still compile and run.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/command.h')
0 files changed, 0 insertions, 0 deletions
