tools/usb/usbip/libsrc/usbip_host_common.h
Source file repositories/reference/linux-study-clean/tools/usb/usbip/libsrc/usbip_host_common.h
File Facts
- System
- Linux kernel
- Corpus path
tools/usb/usbip/libsrc/usbip_host_common.h- Extension
.h- Size
- 2681 bytes
- Lines
- 93
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
stdint.hlibudev.herrno.hlist.husbip_common.hsysfs_utils.h
Detected Declarations
struct usbip_host_driverstruct usbip_host_driver_opsstruct usbip_host_driverstruct usbip_exported_devicefunction usbip_driver_openfunction usbip_driver_closefunction usbip_refresh_device_listfunction usbip_get_device
Annotated Snippet
struct usbip_host_driver_ops {
int (*open)(struct usbip_host_driver *hdriver);
void (*close)(struct usbip_host_driver *hdriver);
int (*refresh_device_list)(struct usbip_host_driver *hdriver);
struct usbip_exported_device * (*get_device)(
struct usbip_host_driver *hdriver, int num);
int (*read_device)(struct udev_device *sdev,
struct usbip_usb_device *dev);
int (*read_interface)(struct usbip_usb_device *udev, int i,
struct usbip_usb_interface *uinf);
int (*is_my_device)(struct udev_device *udev);
};
struct usbip_host_driver {
int ndevs;
/* list of exported device */
struct list_head edev_list;
const char *udev_subsystem;
struct usbip_host_driver_ops ops;
};
struct usbip_exported_device {
struct udev_device *sudev;
int32_t status;
struct usbip_usb_device udev;
struct list_head node;
struct usbip_usb_interface uinf[];
};
/* External API to access the driver */
static inline int usbip_driver_open(struct usbip_host_driver *hdriver)
{
if (!hdriver->ops.open)
return -EOPNOTSUPP;
return hdriver->ops.open(hdriver);
}
static inline void usbip_driver_close(struct usbip_host_driver *hdriver)
{
if (!hdriver->ops.close)
return;
hdriver->ops.close(hdriver);
}
static inline int usbip_refresh_device_list(struct usbip_host_driver *hdriver)
{
if (!hdriver->ops.refresh_device_list)
return -EOPNOTSUPP;
return hdriver->ops.refresh_device_list(hdriver);
}
static inline struct usbip_exported_device *
usbip_get_device(struct usbip_host_driver *hdriver, int num)
{
if (!hdriver->ops.get_device)
return NULL;
return hdriver->ops.get_device(hdriver, num);
}
/* Helper functions for implementing driver backend */
int usbip_generic_driver_open(struct usbip_host_driver *hdriver);
void usbip_generic_driver_close(struct usbip_host_driver *hdriver);
int usbip_generic_refresh_device_list(struct usbip_host_driver *hdriver);
int usbip_export_device(struct usbip_exported_device *edev, int sockfd);
struct usbip_exported_device *usbip_generic_get_device(
struct usbip_host_driver *hdriver, int num);
#endif /* __USBIP_HOST_COMMON_H */
Annotation
- Immediate include surface: `stdint.h`, `libudev.h`, `errno.h`, `list.h`, `usbip_common.h`, `sysfs_utils.h`.
- Detected declarations: `struct usbip_host_driver`, `struct usbip_host_driver_ops`, `struct usbip_host_driver`, `struct usbip_exported_device`, `function usbip_driver_open`, `function usbip_driver_close`, `function usbip_refresh_device_list`, `function usbip_get_device`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.