summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2012-05-15 22:57:58 +0200
committerKay Sievers <kay@vrfy.org>2012-05-15 23:06:26 +0200
commit20bbd54f603994a3cc211d2795de16550882ed8d (patch)
treede65aaa655d6c3d50d52c7c5db8607fc83a550a8
parent6e92b23f0d6dd398848376bbaf47e54a90ed3389 (diff)
udev: libudev - bump soname, remove deprecated functions, introduce symbol versions
-rw-r--r--Makefile.am12
-rw-r--r--TODO8
-rw-r--r--docs/libudev/libudev-sections.txt3
-rw-r--r--src/libudev/libudev-device.c7
-rw-r--r--src/libudev/libudev-enumerate.c7
-rw-r--r--src/libudev/libudev-monitor.c24
-rw-r--r--src/libudev/libudev-queue.c15
-rw-r--r--src/libudev/libudev.c52
-rw-r--r--src/libudev/libudev.h13
-rw-r--r--src/libudev/libudev.sym97
10 files changed, 129 insertions, 109 deletions
diff --git a/Makefile.am b/Makefile.am
index a4e3433c3..7c1b43109 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,15 +20,15 @@
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
AM_MAKEFLAGS = --no-print-directory
SUBDIRS = . po
-LIBUDEV_CURRENT=13
-LIBUDEV_REVISION=3
-LIBUDEV_AGE=13
+LIBUDEV_CURRENT=1
+LIBUDEV_REVISION=0
+LIBUDEV_AGE=0
LIBGUDEV_CURRENT=1
LIBGUDEV_REVISION=1
LIBGUDEV_AGE=1
LIBSYSTEMD_LOGIN_CURRENT=2
@@ -1327,22 +1327,24 @@ libudev_la_SOURCES =\
libudev_la_CFLAGS = \
$(AM_CFLAGS) \
-fvisibility=hidden
libudev_la_LDFLAGS = \
$(AM_LDFLAGS) \
- -version-info $(LIBUDEV_CURRENT):$(LIBUDEV_REVISION):$(LIBUDEV_AGE)
+ -version-info $(LIBUDEV_CURRENT):$(LIBUDEV_REVISION):$(LIBUDEV_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym
libudev_la_LIBADD = \
libsystemd-shared.la
pkgconfiglib_DATA += \
src/libudev/libudev.pc
EXTRA_DIST += \
- src/libudev/libudev.pc.in
+ src/libudev/libudev.pc.in \
+ src/libudev/libudev.sym
CLEANFILES += \
src/libudev/libudev.pc
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
libudev-install-move-hook:
diff --git a/TODO b/TODO
index a3b416555..5d18a64b1 100644
--- a/TODO
+++ b/TODO
@@ -84,20 +84,12 @@ Features:
* udev: find a way to tell udev to not cancel firmware requests when running in initramfs
* udev: scsi_id -> sg3_utils -> kill scsi_id
* udev: add trigger --subsystem-match=usb/usb_device device
-* udev: libudev.so.1
- - use symbol versioning
- - always return object with *_unref()
- - remove deprecated symbols
- - udev_monitor_from_socket()
- - udev_queue_get_failed_list_entry()
- - udev_get_{dev,sys,run}_path()
-
* allow configuration of console width/height in vconsole.conf
* fstab should take priority over units in /usr
* cleanup syslog 'priority' vs. 'level' wording
diff --git a/docs/libudev/libudev-sections.txt b/docs/libudev/libudev-sections.txt
index 31f356f29..9f41ca6ac 100644
--- a/docs/libudev/libudev-sections.txt
+++ b/docs/libudev/libudev-sections.txt
@@ -7,15 +7,12 @@ udev_unref
udev_new
udev_set_log_fn
udev_get_log_priority
udev_set_log_priority
udev_get_userdata
udev_set_userdata
-udev_get_sys_path
-udev_get_dev_path
-udev_get_run_path
</SECTION>
<SECTION>
<FILE>libudev-list</FILE>
<TITLE>udev_list</TITLE>
udev_list_entry
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
index 9ef4610a6..f0aab5d46 100644
--- a/src/libudev/libudev-device.c
+++ b/src/libudev/libudev-device.c
@@ -1020,19 +1020,19 @@ _public_ struct udev_device *udev_device_ref(struct udev_device *udev_device)
* @udev_device: udev device
*
* Drop a reference of a udev device. If the refcount reaches zero,
* the resources of the device will be released.
*
**/
-_public_ void udev_device_unref(struct udev_device *udev_device)
+_public_ struct udev_device *udev_device_unref(struct udev_device *udev_device)
{
if (udev_device == NULL)
- return;
+ return NULL;
udev_device->refcount--;
if (udev_device->refcount > 0)
- return;
+ return udev_device;
if (udev_device->parent_device != NULL)
udev_device_unref(udev_device->parent_device);
free(udev_device->syspath);
free(udev_device->sysname);
free(udev_device->devnode);
free(udev_device->subsystem);
@@ -1046,12 +1046,13 @@ _public_ void udev_device_unref(struct udev_device *udev_device)
free(udev_device->driver);
free(udev_device->devpath_old);
free(udev_device->id_filename);
free(udev_device->envp);
free(udev_device->monitor_buf);
free(udev_device);
+ return NULL;
}
/**
* udev_device_get_devpath:
* @udev_device: udev device
*
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
index 9e6f4677e..671bfd7bc 100644
--- a/src/libudev/libudev-enumerate.c
+++ b/src/libudev/libudev-enumerate.c
@@ -109,21 +109,21 @@ _public_ struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_e
* udev_enumerate_unref:
* @udev_enumerate: context
*
* Drop a reference of an enumeration context. If the refcount reaches zero,
* all resources of the enumeration context will be released.
**/
-_public_ void udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
+_public_ struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
{
unsigned int i;
if (udev_enumerate == NULL)
- return;
+ return NULL;
udev_enumerate->refcount--;
if (udev_enumerate->refcount > 0)
- return;
+ return udev_enumerate;
udev_list_cleanup(&udev_enumerate->sysattr_match_list);
udev_list_cleanup(&udev_enumerate->sysattr_nomatch_list);
udev_list_cleanup(&udev_enumerate->subsystem_match_list);
udev_list_cleanup(&udev_enumerate->subsystem_nomatch_list);
udev_list_cleanup(&udev_enumerate->sysname_match_list);
udev_list_cleanup(&udev_enumerate->properties_match_list);
@@ -131,12 +131,13 @@ _public_ void udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
udev_device_unref(udev_enumerate->parent_match);
udev_list_cleanup(&udev_enumerate->devices_list);
for (i = 0; i < udev_enumerate->devices_cur; i++)
free(udev_enumerate->devices[i].syspath);
free(udev_enumerate->devices);
free(udev_enumerate);
+ return NULL;
}
/**
* udev_enumerate_get_udev:
* @udev_enumerate: context
*
diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
index 5f448e6d4..96506fe58 100644
--- a/src/libudev/libudev-monitor.c
+++ b/src/libudev/libudev-monitor.c
@@ -94,29 +94,12 @@ static struct udev_monitor *udev_monitor_new(struct udev *udev)
udev_monitor->udev = udev;
udev_list_init(udev, &udev_monitor->filter_subsystem_list, false);
udev_list_init(udev, &udev_monitor->filter_tag_list, true);
return udev_monitor;
}
-/**
- * udev_monitor_new_from_socket:
- * @udev: udev library context
- * @socket_path: unix socket path
- *
- * This function is removed from libudev and will not do anything.
- *
- * Returns: #NULL
- **/
-struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char *socket_path);
-_public_ struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char *socket_path)
-{
- udev_err(udev, "udev_monitor_new_from_socket() does not do anything; please migrate to netlink\n");
- errno = ENOSYS;
- return NULL;
-}
-
struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const char *name, int fd)
{
struct udev_monitor *udev_monitor;
unsigned int group;
if (udev == NULL)
@@ -415,24 +398,25 @@ _public_ struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor
*
* Drop a reference of a udev monitor. If the refcount reaches zero,
* the bound socket will be closed, and the resources of the monitor
* will be released.
*
**/
-_public_ void udev_monitor_unref(struct udev_monitor *udev_monitor)
+_public_ struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monitor)
{
if (udev_monitor == NULL)
- return;
+ return NULL;
udev_monitor->refcount--;
if (udev_monitor->refcount > 0)
- return;
+ return udev_monitor;
if (udev_monitor->sock >= 0)
close(udev_monitor->sock);
udev_list_cleanup(&udev_monitor->filter_subsystem_list);
udev_list_cleanup(&udev_monitor->filter_tag_list);
free(udev_monitor);
+ return NULL;
}
/**
* udev_monitor_get_udev:
* @udev_monitor: udev monitor
*
diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c
index 81f40db20..15a7f558b 100644
--- a/src/libudev/libudev-queue.c
+++ b/src/libudev/libudev-queue.c
@@ -90,21 +90,22 @@ _public_ struct udev_queue *udev_queue_ref(struct udev_queue *udev_queue)
* udev_queue_unref:
* @udev_queue: udev queue context
*
* Drop a reference of a udev queue context. If the refcount reaches zero,
* the resources of the queue context will be released.
**/
-_public_ void udev_queue_unref(struct udev_queue *udev_queue)
+_public_ struct udev_queue *udev_queue_unref(struct udev_queue *udev_queue)
{
if (udev_queue == NULL)
- return;
+ return NULL;
udev_queue->refcount--;
if (udev_queue->refcount > 0)
- return;
+ return udev_queue;
udev_list_cleanup(&udev_queue->queue_list);
free(udev_queue);
+ return NULL;
}
/**
* udev_queue_get_udev:
* @udev_queue: udev queue context
*
@@ -466,14 +467,6 @@ _public_ struct udev_list_entry *udev_queue_get_queued_list_entry(struct udev_qu
}
}
fclose(queue_file);
return udev_list_get_entry(&udev_queue->queue_list);
}
-
-struct udev_list_entry *udev_queue_get_failed_list_entry(struct udev_queue *udev_queue);
-_public_ struct udev_list_entry *udev_queue_get_failed_list_entry(struct udev_queue *udev_queue)
-{
- udev_err(udev_queue->udev, "udev_queue_get_failed_list_entry() does not return anything; failed events are not recorded\n");
- errno = ENOSYS;
- return NULL;
-}
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
index a0ec39d02..5b754a22a 100644
--- a/src/libudev/libudev.c
+++ b/src/libudev/libudev.c
@@ -219,21 +219,22 @@ _public_ struct udev *udev_ref(struct udev *udev)
* @udev: udev library context
*
* Drop a reference of the udev library context. If the refcount
* reaches zero, the resources of the context will be released.
*
**/
-_public_ void udev_unref(struct udev *udev)
+_public_ struct udev *udev_unref(struct udev *udev)
{
if (udev == NULL)
- return;
+ return NULL;
udev->refcount--;
if (udev->refcount > 0)
- return;
+ return udev;
udev_list_cleanup(&udev->properties_list);
free(udev);
+ return NULL;
}
/**
* udev_set_log_fn:
* @udev: udev library context
* @log_fn: function to be called for logging messages
@@ -280,57 +281,12 @@ _public_ void udev_set_log_priority(struct udev *udev, int priority)
udev->log_priority = priority;
snprintf(num, sizeof(num), "%u", udev->log_priority);
udev_add_property(udev, "UDEV_LOG", num);
}
-/**
- * udev_get_sys_path:
- * @udev: udev library context
- *
- * Returns always "/sys"; deprecated, will be removed in a future version.
- *
- * Returns: the sys mount point
- **/
-_public_ const char *udev_get_sys_path(struct udev *udev)
-{
- if (udev == NULL)
- return NULL;
- return "/sys";
-}
-
-/**
- * udev_get_dev_path:
- * @udev: udev library context
- *
- * Returns always "/dev"; deprecated, will be removed in a future version.
- *
- * Returns: the device directory path
- **/
-_public_ const char *udev_get_dev_path(struct udev *udev)
-{
- if (udev == NULL)
- return NULL;
- return "/dev";
-}
-
-/**
- * udev_get_run_path:
- * @udev: udev library context
- *
- * Returns always "/run/udev"; deprecated, will be removed in a future version.
- *
- * Returns: the runtime directory path
- **/
-_public_ const char *udev_get_run_path(struct udev *udev)
-{
- if (udev == NULL)
- return NULL;
- return "/run/udev";
-}
-
struct udev_list_entry *udev_add_property(struct udev *udev, const char *key, const char *value)
{
if (value == NULL) {
struct udev_list_entry *list_entry;
list_entry = udev_get_properties_list_entry(udev);
diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h
index 79842e69d..86439849b 100644
--- a/src/libudev/libudev.h
+++ b/src/libudev/libudev.h
@@ -25,23 +25,20 @@ extern "C" {
*
* reads the udev config and system environment
* allows custom logging
*/
struct udev;
struct udev *udev_ref(struct udev *udev);
-void udev_unref(struct udev *udev);
+struct udev *udev_unref(struct udev *udev);
struct udev *udev_new(void);
void udev_set_log_fn(struct udev *udev,
void (*log_fn)(struct udev *udev,
int priority, const char *file, int line, const char *fn,
const char *format, va_list args));
int udev_get_log_priority(struct udev *udev);
void udev_set_log_priority(struct udev *udev, int priority);
-const char *udev_get_sys_path(struct udev *udev);
-const char *udev_get_dev_path(struct udev *udev);
-const char *udev_get_run_path(struct udev *udev);
void *udev_get_userdata(struct udev *udev);
void udev_set_userdata(struct udev *udev, void *userdata);
/*
* udev_list
*
@@ -68,13 +65,13 @@ const char *udev_list_entry_get_value(struct udev_list_entry *list_entry);
* udev_device
*
* access to sysfs/kernel devices
*/
struct udev_device;
struct udev_device *udev_device_ref(struct udev_device *udev_device);
-void udev_device_unref(struct udev_device *udev_device);
+struct udev_device *udev_device_unref(struct udev_device *udev_device);
struct udev *udev_device_get_udev(struct udev_device *udev_device);
struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *syspath);
struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, dev_t devnum);
struct udev_device *udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname);
struct udev_device *udev_device_new_from_environment(struct udev *udev);
/* udev_device_get_parent_*() does not take a reference on the returned device, it is automatically unref'd with the parent */
@@ -107,13 +104,13 @@ int udev_device_has_tag(struct udev_device *udev_device, const char *tag);
* udev_monitor
*
* access to kernel uevents and udev events
*/
struct udev_monitor;
struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor);
-void udev_monitor_unref(struct udev_monitor *udev_monitor);
+struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monitor);
struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor);
/* kernel and udev generated events over netlink */
struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char *name);
/* bind socket */
int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor);
int udev_monitor_set_receive_buffer_size(struct udev_monitor *udev_monitor, int size);
@@ -130,13 +127,13 @@ int udev_monitor_filter_remove(struct udev_monitor *udev_monitor);
* udev_enumerate
*
* search sysfs for specific devices and provide a sorted list
*/
struct udev_enumerate;
struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate);
-void udev_enumerate_unref(struct udev_enumerate *udev_enumerate);
+struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev_enumerate);
struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate);
struct udev_enumerate *udev_enumerate_new(struct udev *udev);
/* device properties filter */
int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem);
int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem);
int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value);
@@ -157,13 +154,13 @@ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *ude
* udev_queue
*
* access to the currently running udev events
*/
struct udev_queue;
struct udev_queue *udev_queue_ref(struct udev_queue *udev_queue);
-void udev_queue_unref(struct udev_queue *udev_queue);
+struct udev_queue *udev_queue_unref(struct udev_queue *udev_queue);
struct udev *udev_queue_get_udev(struct udev_queue *udev_queue);
struct udev_queue *udev_queue_new(struct udev *udev);
unsigned long long int udev_queue_get_kernel_seqnum(struct udev_queue *udev_queue);
unsigned long long int udev_queue_get_udev_seqnum(struct udev_queue *udev_queue);
int udev_queue_get_udev_is_active(struct udev_queue *udev_queue);
int udev_queue_get_queue_is_empty(struct udev_queue *udev_queue);
diff --git a/src/libudev/libudev.sym b/src/libudev/libudev.sym
new file mode 100644
index 000000000..47683ecda
--- /dev/null
+++ b/src/libudev/libudev.sym
@@ -0,0 +1,97 @@
+/***
+ This file is part of systemd.
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+***/
+
+LIBUDEV_183 {
+global:
+ udev_device_get_action;
+ udev_device_get_devlinks_list_entry;
+ udev_device_get_devnode;
+ udev_device_get_devnum;
+ udev_device_get_devpath;
+ udev_device_get_devtype;
+ udev_device_get_driver;
+ udev_device_get_is_initialized;
+ udev_device_get_parent;
+ udev_device_get_parent_with_subsystem_devtype;
+ udev_device_get_properties_list_entry;
+ udev_device_get_property_value;
+ udev_device_get_seqnum;
+ udev_device_get_subsystem;
+ udev_device_get_sysattr_list_entry;
+ udev_device_get_sysattr_value;
+ udev_device_get_sysname;
+ udev_device_get_sysnum;
+ udev_device_get_syspath;
+ udev_device_get_tags_list_entry;
+ udev_device_get_udev;
+ udev_device_get_usec_since_initialized;
+ udev_device_has_tag;
+ udev_device_new_from_devnum;
+ udev_device_new_from_environment;
+ udev_device_new_from_subsystem_sysname;
+ udev_device_new_from_syspath;
+ udev_device_ref;
+ udev_device_unref;
+ udev_enumerate_add_match_is_initialized;
+ udev_enumerate_add_match_parent;
+ udev_enumerate_add_match_property;
+ udev_enumerate_add_match_subsystem;
+ udev_enumerate_add_match_sysattr;
+ udev_enumerate_add_match_sysname;
+ udev_enumerate_add_match_tag;
+ udev_enumerate_add_nomatch_subsystem;
+ udev_enumerate_add_nomatch_sysattr;
+ udev_enumerate_add_syspath;
+ udev_enumerate_get_list_entry;
+ udev_enumerate_get_udev;
+ udev_enumerate_new;
+ udev_enumerate_ref;
+ udev_enumerate_scan_devices;
+ udev_enumerate_scan_subsystems;
+ udev_enumerate_unref;
+ udev_get_log_priority;
+ udev_get_userdata;
+ udev_list_entry_get_by_name;
+ udev_list_entry_get_name;
+ udev_list_entry_get_next;
+ udev_list_entry_get_value;
+ udev_monitor_enable_receiving;
+ udev_monitor_filter_add_match_subsystem_devtype;
+ udev_monitor_filter_add_match_tag;
+ udev_monitor_filter_remove;
+ udev_monitor_filter_update;
+ udev_monitor_get_fd;
+ udev_monitor_get_udev;
+ udev_monitor_new_from_netlink;
+ udev_monitor_new_from_socket;
+ udev_monitor_receive_device;
+ udev_monitor_ref;
+ udev_monitor_set_receive_buffer_size;
+ udev_monitor_unref;
+ udev_new;
+ udev_queue_get_kernel_seqnum;
+ udev_queue_get_queue_is_empty;
+ udev_queue_get_queued_list_entry;
+ udev_queue_get_seqnum_is_finished;
+ udev_queue_get_seqnum_sequence_is_finished;
+ udev_queue_get_udev;
+ udev_queue_get_udev_is_active;
+ udev_queue_get_udev_seqnum;
+ udev_queue_new;
+ udev_queue_ref;
+ udev_queue_unref;
+ udev_ref;
+ udev_set_log_fn;
+ udev_set_log_priority;
+ udev_set_userdata;
+ udev_unref;
+ udev_util_encode_string;
+local:
+ *;
+};