diff --git a/libmpathutil/mt-udev-wrap.h b/libmpathutil/mt-udev-wrap.h index f23282100..20690c21b 100644 --- a/libmpathutil/mt-udev-wrap.h +++ b/libmpathutil/mt-udev-wrap.h @@ -2,89 +2,99 @@ #define MT_LIBUDEV_WRAP_HPP #include "mt-libudev.h" -#define udev_ref(udev) mt_udev_ref(udev) -#define udev_unref(udev) mt_udev_unref(udev) -#define udev_new() mt_udev_new() +#define MT_NO_CANCEL(call) \ + ({ \ + int __oldstate; \ + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &__oldstate); \ + __typeof__(call) __ret = (call); \ + pthread_setcancelstate(__oldstate, NULL); \ + pthread_testcancel(); \ + __ret; \ + }) -#define udev_list_entry_get_next(list_entry) mt_udev_list_entry_get_next(list_entry) -#define udev_list_entry_get_by_name(list_entry, name) mt_udev_list_entry_get_by_name(list_entry, name) -#define udev_list_entry_get_name(list_entry) mt_udev_list_entry_get_name(list_entry) -#define udev_list_entry_get_value(list_entry) mt_udev_list_entry_get_value(list_entry) +#define udev_ref(udev) MT_NO_CANCEL(mt_udev_ref(udev)) +#define udev_unref(udev) MT_NO_CANCEL(mt_udev_unref(udev)) +#define udev_new() MT_NO_CANCEL(mt_udev_new()) + +#define udev_list_entry_get_next(list_entry) MT_NO_CANCEL(mt_udev_list_entry_get_next(list_entry)) +#define udev_list_entry_get_by_name(list_entry, name) MT_NO_CANCEL(mt_udev_list_entry_get_by_name(list_entry, name)) +#define udev_list_entry_get_name(list_entry) MT_NO_CANCEL(mt_udev_list_entry_get_name(list_entry)) +#define udev_list_entry_get_value(list_entry) MT_NO_CANCEL(mt_udev_list_entry_get_value(list_entry)) #define udev_list_entry_foreach(list_entry, first_entry) \ for (list_entry = first_entry; \ list_entry; \ list_entry = udev_list_entry_get_next(list_entry)) -#define udev_device_new_from_syspath(udev, syspath) mt_udev_device_new_from_syspath(udev, syspath) -#define udev_device_new_from_devnum(udev, type, devnum) mt_udev_device_new_from_devnum(udev, type, devnum) +#define udev_device_new_from_syspath(udev, syspath) MT_NO_CANCEL(mt_udev_device_new_from_syspath(udev, syspath)) +#define udev_device_new_from_devnum(udev, type, devnum) MT_NO_CANCEL(mt_udev_device_new_from_devnum(udev, type, devnum)) #define udev_device_new_from_subsystem_sysname(udev, subsystem, sysname) \ - mt_udev_device_new_from_subsystem_sysname(udev, subsystem, sysname) -#define udev_device_new_from_device_id(udev, id) mt_udev_device_new_from_device_id(udev, id) -#define udev_device_new_from_environment(udev) mt_udev_device_new_from_environment(udev) + MT_NO_CANCEL(mt_udev_device_new_from_subsystem_sysname(udev, subsystem, sysname)) +#define udev_device_new_from_device_id(udev, id) MT_NO_CANCEL(mt_udev_device_new_from_device_id(udev, id)) +#define udev_device_new_from_environment(udev) MT_NO_CANCEL(mt_udev_device_new_from_environment(udev)) -#define udev_device_ref(udev_device) mt_udev_device_ref(udev_device) -#define udev_device_unref(udev_device) mt_udev_device_unref(udev_device) -#define udev_device_get_udev(udev_device) mt_udev_device_get_udev(udev_device) -#define udev_device_get_parent(udev_device) mt_udev_device_get_parent(udev_device) +#define udev_device_ref(udev_device) MT_NO_CANCEL(mt_udev_device_ref(udev_device)) +#define udev_device_unref(udev_device) MT_NO_CANCEL(mt_udev_device_unref(udev_device)) +#define udev_device_get_udev(udev_device) MT_NO_CANCEL(mt_udev_device_get_udev(udev_device)) +#define udev_device_get_parent(udev_device) MT_NO_CANCEL(mt_udev_device_get_parent(udev_device)) #define udev_device_get_parent_with_subsystem_devtype(udev_device, subsystem, devtype) \ - mt_udev_device_get_parent_with_subsystem_devtype(udev_device, subsystem, devtype) -#define udev_device_get_devpath(udev_device) mt_udev_device_get_devpath(udev_device) -#define udev_device_get_subsystem(udev_device) mt_udev_device_get_subsystem(udev_device) -#define udev_device_get_devtype(udev_device) mt_udev_device_get_devtype(udev_device) -#define udev_device_get_syspath(udev_device) mt_udev_device_get_syspath(udev_device) -#define udev_device_get_sysname(udev_device) mt_udev_device_get_sysname(udev_device) -#define udev_device_get_is_initialized(udev_device) mt_udev_device_get_is_initialized(udev_device) -#define udev_device_get_property_value(udev_device, key) mt_udev_device_get_property_value(udev_device, key) -#define udev_device_get_devnum(udev_device) mt_udev_device_get_devnum(udev_device) -#define udev_device_get_seqnum(udev_device) mt_udev_device_get_seqnum(udev_device) -#define udev_device_get_driver(udev_device) mt_udev_device_get_driver(udev_device) -#define udev_device_get_devnode(udev_device) mt_udev_device_get_devnode(udev_device) + MT_NO_CANCEL(mt_udev_device_get_parent_with_subsystem_devtype(udev_device, subsystem, devtype)) +#define udev_device_get_devpath(udev_device) MT_NO_CANCEL(mt_udev_device_get_devpath(udev_device)) +#define udev_device_get_subsystem(udev_device) MT_NO_CANCEL(mt_udev_device_get_subsystem(udev_device)) +#define udev_device_get_devtype(udev_device) MT_NO_CANCEL(mt_udev_device_get_devtype(udev_device)) +#define udev_device_get_syspath(udev_device) MT_NO_CANCEL(mt_udev_device_get_syspath(udev_device)) +#define udev_device_get_sysname(udev_device) MT_NO_CANCEL(mt_udev_device_get_sysname(udev_device)) +#define udev_device_get_is_initialized(udev_device) MT_NO_CANCEL(mt_udev_device_get_is_initialized(udev_device)) +#define udev_device_get_property_value(udev_device, key) MT_NO_CANCEL(mt_udev_device_get_property_value(udev_device, key)) +#define udev_device_get_devnum(udev_device) MT_NO_CANCEL(mt_udev_device_get_devnum(udev_device)) +#define udev_device_get_seqnum(udev_device) MT_NO_CANCEL(mt_udev_device_get_seqnum(udev_device)) +#define udev_device_get_driver(udev_device) MT_NO_CANCEL(mt_udev_device_get_driver(udev_device)) +#define udev_device_get_devnode(udev_device) MT_NO_CANCEL(mt_udev_device_get_devnode(udev_device)) #define udev_device_get_sysattr_value(udev_device, sysattr) \ - mt_udev_device_get_sysattr_value(udev_device, sysattr) + MT_NO_CANCEL(mt_udev_device_get_sysattr_value(udev_device, sysattr)) #define udev_device_set_sysattr_value(udev_device, sysattr, value) \ - mt_udev_device_set_sysattr_value(udev_device, sysattr, value) + MT_NO_CANCEL(mt_udev_device_set_sysattr_value(udev_device, sysattr, value)) -#define udev_device_get_devlinks_list_entry(udev_device) mt_udev_device_get_devlinks_list_entry(udev_device) -#define udev_device_get_properties_list_entry(udev_device) mt_udev_device_get_properties_list_entry(udev_device) -#define udev_device_get_tags_list_entry(udev_device) mt_udev_device_get_tags_list_entry(udev_device) -#define udev_device_get_current_tags_list_entry(udev_device) mt_udev_device_get_current_tags_list_entry(udev_device) -#define udev_device_get_sysattr_list_entry(udev_device) mt_udev_device_get_sysattr_list_entry(udev_device) +#define udev_device_get_devlinks_list_entry(udev_device) MT_NO_CANCEL(mt_udev_device_get_devlinks_list_entry(udev_device)) +#define udev_device_get_properties_list_entry(udev_device) MT_NO_CANCEL(mt_udev_device_get_properties_list_entry(udev_device)) +#define udev_device_get_tags_list_entry(udev_device) MT_NO_CANCEL(mt_udev_device_get_tags_list_entry(udev_device)) +#define udev_device_get_current_tags_list_entry(udev_device) MT_NO_CANCEL(mt_udev_device_get_current_tags_list_entry(udev_device)) +#define udev_device_get_sysattr_list_entry(udev_device) MT_NO_CANCEL(mt_udev_device_get_sysattr_list_entry(udev_device)) -#define udev_monitor_new_from_netlink(udev, name) mt_udev_monitor_new_from_netlink(udev, name) -#define udev_monitor_ref(udev_monitor) mt_udev_monitor_ref(udev_monitor) -#define udev_monitor_unref(udev_monitor) mt_udev_monitor_unref(udev_monitor) -#define udev_monitor_enable_receiving(udev_monitor) mt_udev_monitor_enable_receiving(udev_monitor) -#define udev_monitor_get_fd(udev_monitor) mt_udev_monitor_get_fd(udev_monitor) -#define udev_monitor_receive_device(udev_monitor) mt_udev_monitor_receive_device(udev_monitor) +#define udev_monitor_new_from_netlink(udev, name) MT_NO_CANCEL(mt_udev_monitor_new_from_netlink(udev, name)) +#define udev_monitor_ref(udev_monitor) MT_NO_CANCEL(mt_udev_monitor_ref(udev_monitor)) +#define udev_monitor_unref(udev_monitor) MT_NO_CANCEL(mt_udev_monitor_unref(udev_monitor)) +#define udev_monitor_enable_receiving(udev_monitor) MT_NO_CANCEL(mt_udev_monitor_enable_receiving(udev_monitor)) +#define udev_monitor_get_fd(udev_monitor) MT_NO_CANCEL(mt_udev_monitor_get_fd(udev_monitor)) +#define udev_monitor_receive_device(udev_monitor) MT_NO_CANCEL(mt_udev_monitor_receive_device(udev_monitor)) #define udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, subsystem, devtype) \ - mt_udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, subsystem, devtype) + MT_NO_CANCEL(mt_udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, subsystem, devtype)) #define udev_monitor_set_receive_buffer_size(udev_monitor, size) \ - mt_udev_monitor_set_receive_buffer_size(udev_monitor, size) + MT_NO_CANCEL(mt_udev_monitor_set_receive_buffer_size(udev_monitor, size)) -#define udev_enumerate_new(udev) mt_udev_enumerate_new(udev) -#define udev_enumerate_unref(udev_enumerate) mt_udev_enumerate_unref(udev_enumerate) +#define udev_enumerate_new(udev) MT_NO_CANCEL(mt_udev_enumerate_new(udev)) +#define udev_enumerate_unref(udev_enumerate) MT_NO_CANCEL(mt_udev_enumerate_unref(udev_enumerate)) #define udev_enumerate_add_match_subsystem(udev_enumerate, subsystem) \ - mt_udev_enumerate_add_match_subsystem(udev_enumerate, subsystem) + MT_NO_CANCEL(mt_udev_enumerate_add_match_subsystem(udev_enumerate, subsystem)) #define udev_enumerate_add_nomatch_subsystem(udev_enumerate, subsystem) \ - mt_udev_enumerate_add_nomatch_subsystem(udev_enumerate, subsystem) + MT_NO_CANCEL(mt_udev_enumerate_add_nomatch_subsystem(udev_enumerate, subsystem)) #define udev_enumerate_add_match_sysattr(udev_enumerate, sysattr, value) \ - mt_udev_enumerate_add_match_sysattr(udev_enumerate, sysattr, value) + MT_NO_CANCEL(mt_udev_enumerate_add_match_sysattr(udev_enumerate, sysattr, value)) #define udev_enumerate_add_nomatch_sysattr(udev_enumerate, sysattr, value) \ - mt_udev_enumerate_add_nomatch_sysattr(udev_enumerate, sysattr, value) + MT_NO_CANCEL(mt_udev_enumerate_add_nomatch_sysattr(udev_enumerate, sysattr, value)) #define udev_enumerate_add_match_property(udev_enumerate, property, value) \ - mt_udev_enumerate_add_match_property(udev_enumerate, property, value) -#define udev_enumerate_add_match_tag(udev_enumerate, tag) mt_udev_enumerate_add_match_tag(udev_enumerate, tag) + MT_NO_CANCEL(mt_udev_enumerate_add_match_property(udev_enumerate, property, value)) +#define udev_enumerate_add_match_tag(udev_enumerate, tag) MT_NO_CANCEL(mt_udev_enumerate_add_match_tag(udev_enumerate, tag)) #define udev_enumerate_add_match_parent(udev_enumerate, parent) \ - mt_udev_enumerate_add_match_parent(udev_enumerate, parent) + MT_NO_CANCEL(mt_udev_enumerate_add_match_parent(udev_enumerate, parent)) #define udev_enumerate_add_match_is_initialized(udev_enumerate) \ - mt_udev_enumerate_add_match_is_initialized(udev_enumerate) + MT_NO_CANCEL(mt_udev_enumerate_add_match_is_initialized(udev_enumerate)) #define udev_enumerate_add_syspath(udev_enumerate, syspath) \ - mt_udev_enumerate_add_syspath(udev_enumerate, syspath) + MT_NO_CANCEL(mt_udev_enumerate_add_syspath(udev_enumerate, syspath)) -#define udev_enumerate_scan_devices(udev_enumerate) mt_udev_enumerate_scan_devices(udev_enumerate) +#define udev_enumerate_scan_devices(udev_enumerate) MT_NO_CANCEL(mt_udev_enumerate_scan_devices(udev_enumerate)) #define udev_enumerate_scan_device(udev_enumerate, syspath) \ - mt_udev_enumerate_scan_device(udev_enumerate, syspath) -#define udev_enumerate_get_list_entry(udev_enumerate) mt_udev_enumerate_get_list_entry(udev_enumerate) + MT_NO_CANCEL(mt_udev_enumerate_scan_device(udev_enumerate, syspath)) +#define udev_enumerate_get_list_entry(udev_enumerate) MT_NO_CANCEL(mt_udev_enumerate_get_list_entry(udev_enumerate)) #endif