template <class D, template <typename> class... Mixins>
class Device
Defined at line 404 of file ../../src/lib/ddktl/include/ddktl/device.h
Device is templated on the list of mixins that define which DDK device
methods are implemented. Note that internal::base_device *must* be the
left-most base class in order to ensure that its constructor runs before the
mixin constructors. This ensures that ddk_device_proto_ is zero-initialized
before setting the fields in the mixins.
Public Methods
zx_status_t DdkAdd (const char * name, device_add_args_t args)
Defined at line 406 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkAdd (const DeviceAddArgs & args)
Defined at line 426 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkAdd (const char * name, uint32_t flags)
Defined at line 428 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkAddCompositeNodeSpec (const char * name, const CompositeNodeSpec & spec)
Defined at line 432 of file ../../src/lib/ddktl/include/ddktl/device.h
void DdkAsyncRemove ()
Schedules the removal of the device and its descendents.
Each device will evenutally have its unbind hook (if implemented) and release hook invoked.
Defined at line 438 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename Service, typename = std::enable_if_t<fidl::IsServiceV<Service>>>
zx::result<> DdkAddService (fidl::ServiceInstanceHandler<fidl::internal::ChannelTransport> handler)
AddService allows a driver to advertise a FIDL service.
The intended use is for drivers to use this to advertise services to non-drivers.
It is only really supported in the compat shim, where it adds the service to the outgoing
directory that the compat shim maintains.
The service is added to the outgoing directory of the parent device, which
for compat drivers will always exist.
|handler| is the handler for the service.
Defined at line 453 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkGetMetadata (uint32_t type, void * buf, size_t buf_len, size_t * actual)
Defined at line 473 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkGetFragmentMetadata (const char * name, uint32_t type, void * buf, size_t buf_len, size_t * actual)
Defined at line 479 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_status_t DdkGetFragmentProtocol (const char * name, uint32_t proto_id, void * out)
Defined at line 486 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename Protocol, typename = std::enable_if_t<fidl::IsProtocolV<Protocol>>>
zx::result<fidl::ClientEnd<Protocol>> DdkConnectNsProtocol ()
Defined at line 491 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename Protocol, typename = std::enable_if_t<fidl::IsProtocolV<Protocol>>>
zx::result<fidl::ClientEnd<Protocol>> DdkConnectNsProtocol (zx_device_t * parent)
Defined at line 496 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember, typename = std::enable_if_t<fidl::IsServiceMemberV<ServiceMember>>>
zx::result<fidl::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFidlProtocol ()
Defined at line 512 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember, typename = std::enable_if_t<fidl::IsServiceMemberV<ServiceMember>>>
zx::result<fidl::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFidlProtocol (zx_device_t * parent)
Defined at line 521 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember, typename = std::enable_if_t<fidl::IsServiceMemberV<ServiceMember>>>
zx::result<fidl::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFragmentFidlProtocol (const char * fragment_name)
Defined at line 530 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember, typename = std::enable_if_t<fidl::IsServiceMemberV<ServiceMember>>>
zx::result<fidl::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFragmentFidlProtocol (zx_device_t * parent, const char * fragment_name)
Defined at line 540 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember>
zx::result<fdf::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectRuntimeProtocol ()
Defined at line 560 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember, typename = std::enable_if_t<fidl::IsServiceMemberV<ServiceMember>>>
zx::result<fdf::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFragmentRuntimeProtocol (const char * fragment_name)
Defined at line 571 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember>
zx::result<fdf::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectRuntimeProtocol (zx_device_t * parent)
Defined at line 580 of file ../../src/lib/ddktl/include/ddktl/device.h
template <typename ServiceMember>
zx::result<fdf::ClientEnd<typename ServiceMember::ProtocolType>> DdkConnectFragmentRuntimeProtocol (zx_device_t * parent, const char * fragment_name)
Defined at line 589 of file ../../src/lib/ddktl/include/ddktl/device.h
const char * name ()
Defined at line 609 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_device_t * zxdev ()
The opaque pointer representing this device.
Defined at line 612 of file ../../src/lib/ddktl/include/ddktl/device.h
zx_device_t * parent ()
The opaque pointer representing the device's parent.
Defined at line 614 of file ../../src/lib/ddktl/include/ddktl/device.h
Protected Methods
void Device<D, Mixins...> (zx_device_t * parent)
Defined at line 617 of file ../../src/lib/ddktl/include/ddktl/device.h