chiark / gitweb /
libudev: monitor - use SOCK_NONBLOCK
[elogind.git] / libudev / libudev-monitor.c
index d890b4b142bd5f1dba57ce8fb02712ad20715784..85ab23bdd4aba8b5e2be1dae8f8f56908aebd3d1 100644 (file)
@@ -117,7 +117,7 @@ static struct udev_monitor *udev_monitor_new(struct udev *udev)
  *
  * Returns: a new udev monitor, or #NULL, in case of an error
  **/
-struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char *socket_path)
+UDEV_EXPORT struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char *socket_path)
 {
        struct udev_monitor *udev_monitor;
        struct stat statbuf;
@@ -178,7 +178,7 @@ struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const c
                return NULL;
 
        if (fd < 0) {
-               udev_monitor->sock = socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_KOBJECT_UEVENT);
+               udev_monitor->sock = socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT);
                if (udev_monitor->sock == -1) {
                        err(udev, "error getting socket: %m\n");
                        free(udev_monitor);
@@ -225,7 +225,7 @@ struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const c
  *
  * Returns: a new udev monitor, or #NULL, in case of an error
  **/
-struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char *name)
+UDEV_EXPORT struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char *name)
 {
        return udev_monitor_new_from_netlink_fd(udev, name, -1);
 }
@@ -261,7 +261,7 @@ static inline void bpf_jmp(struct sock_filter *inss, unsigned int *i,
  *
  * Returns: 0 on success, otherwise a negative error value.
  */
-int udev_monitor_filter_update(struct udev_monitor *udev_monitor)
+UDEV_EXPORT int udev_monitor_filter_update(struct udev_monitor *udev_monitor)
 {
        struct sock_filter ins[512];
        struct sock_fprog filter;
@@ -373,7 +373,7 @@ int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct
  *
  * Returns: 0 on success, otherwise a negative error value.
  */
-int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
+UDEV_EXPORT int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
 {
        int err = 0;
        const int on = 1;
@@ -430,7 +430,7 @@ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
  *
  * Returns: 0 on success, otherwise -1 on error.
  */
-int udev_monitor_set_receive_buffer_size(struct udev_monitor *udev_monitor, int size)
+UDEV_EXPORT int udev_monitor_set_receive_buffer_size(struct udev_monitor *udev_monitor, int size)
 {
        if (udev_monitor == NULL)
                return -1;
@@ -454,7 +454,7 @@ int udev_monitor_disconnect(struct udev_monitor *udev_monitor)
  *
  * Returns: the passed udev monitor
  **/
-struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor)
+UDEV_EXPORT struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor)
 {
        if (udev_monitor == NULL)
                return NULL;
@@ -471,7 +471,7 @@ struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor)
  * will be released.
  *
  **/
-void udev_monitor_unref(struct udev_monitor *udev_monitor)
+UDEV_EXPORT void udev_monitor_unref(struct udev_monitor *udev_monitor)
 {
        if (udev_monitor == NULL)
                return;
@@ -494,7 +494,7 @@ void udev_monitor_unref(struct udev_monitor *udev_monitor)
  *
  * Returns: the udev library context
  **/
-struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor)
+UDEV_EXPORT struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor)
 {
        if (udev_monitor == NULL)
                return NULL;
@@ -509,7 +509,7 @@ struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor)
  *
  * Returns: the socket file descriptor
  **/
-int udev_monitor_get_fd(struct udev_monitor *udev_monitor)
+UDEV_EXPORT int udev_monitor_get_fd(struct udev_monitor *udev_monitor)
 {
        if (udev_monitor == NULL)
                return -1;
@@ -570,7 +570,7 @@ tag:
  *
  * Returns: a new udev device, or #NULL, in case of an error
  **/
-struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monitor)
+UDEV_EXPORT struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monitor)
 {
        struct udev_device *udev_device;
        struct msghdr smsg;
@@ -823,14 +823,14 @@ int udev_monitor_send_device(struct udev_monitor *udev_monitor,
  *
  * Returns: 0 on success, otherwise a negative error value.
  */
-int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype)
+UDEV_EXPORT int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype)
 {
        if (udev_monitor == NULL)
                return -EINVAL;
        if (subsystem == NULL)
                return -EINVAL;
        if (udev_list_entry_add(udev_monitor->udev,
-                               &udev_monitor->filter_subsystem_list, subsystem, devtype, 0, 0) == NULL)
+                               &udev_monitor->filter_subsystem_list, subsystem, devtype, 0) == NULL)
                return -ENOMEM;
        return 0;
 }
@@ -847,14 +847,14 @@ int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_mo
  *
  * Returns: 0 on success, otherwise a negative error value.
  */
-int udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const char *tag)
+UDEV_EXPORT int udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const char *tag)
 {
        if (udev_monitor == NULL)
                return -EINVAL;
        if (tag == NULL)
                return -EINVAL;
        if (udev_list_entry_add(udev_monitor->udev,
-                               &udev_monitor->filter_tag_list, tag, NULL, 0, 0) == NULL)
+                               &udev_monitor->filter_tag_list, tag, NULL, 0) == NULL)
                return -ENOMEM;
        return 0;
 }
@@ -867,7 +867,7 @@ int udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const c
  *
  * Returns: 0 on success, otherwise a negative error value.
  */
-int udev_monitor_filter_remove(struct udev_monitor *udev_monitor)
+UDEV_EXPORT int udev_monitor_filter_remove(struct udev_monitor *udev_monitor)
 {
        static struct sock_fprog filter = { 0, NULL };