#include #include #include #include #include #include "config_driver.h" #include "dm_wrapper.h" static int fd; status_t init_dm_wrapper(void) { static const char device[] = "/dev/" DM_DEVICE_NAME; fd = open(device, 0); if (fd < 0) return errno; return B_OK; } status_t uninit_dm_wrapper(void) { close(fd); return B_OK; } status_t get_child(void) { struct dm_ioctl_data params; params.magic = DM_GET_CHILD; params.attr = NULL; return ioctl(fd, params.magic, ¶ms, sizeof(params)); } status_t get_next_child(void) { struct dm_ioctl_data params; params.magic = DM_GET_NEXT_CHILD; params.attr = NULL; return ioctl(fd, params.magic, ¶ms, sizeof(params)); } status_t get_parent(void) { struct dm_ioctl_data params; params.magic = DM_GET_PARENT; params.attr = NULL; return ioctl(fd, params.magic, ¶ms, sizeof(params)); } status_t dm_get_next_attr(void) { struct dm_ioctl_data params; params.magic = DM_GET_NEXT_ATTRIBUTE; params.attr = NULL; return ioctl(fd, params.magic, ¶ms, sizeof(params)); } status_t dm_retrieve_attr(struct dev_attr *attr) { struct dm_ioctl_data params; params.magic = DM_RETRIEVE_ATTRIBUTE; params.attr = attr; return ioctl(fd, params.magic, ¶ms, sizeof(params)); }