chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b03e89c
)
libudev: enumerate - split new() and scan()
author
Kay Sievers
<kay.sievers@vrfy.org>
Mon, 29 Sep 2008 00:00:17 +0000
(
02:00
+0200)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Mon, 29 Sep 2008 00:00:17 +0000
(
02:00
+0200)
test/udev-test.pl
patch
|
blob
|
history
udev/lib/exported_symbols
patch
|
blob
|
history
udev/lib/libudev-device.c
patch
|
blob
|
history
udev/lib/libudev-enumerate.c
patch
|
blob
|
history
udev/lib/libudev.h
patch
|
blob
|
history
udev/lib/test-libudev.c
patch
|
blob
|
history
udev/udevadm-info.c
patch
|
blob
|
history
diff --git
a/test/udev-test.pl
b/test/udev-test.pl
index 27ff2a7ce0353c3b72f6c7b6fbba3fe959b16b21..d7357d713d9602d27d601a4043eb19182c16b538 100755
(executable)
--- a/
test/udev-test.pl
+++ b/
test/udev-test.pl
@@
-1,6
+1,6
@@
#!/usr/bin/perl
#!/usr/bin/perl
-# udev
-
test
+# udev
test
#
# Provides automated testing of the udev binary.
# The whole test is self contained in this file, except the matching sysfs tree.
#
# Provides automated testing of the udev binary.
# The whole test is self contained in this file, except the matching sysfs tree.
@@
-14,7
+14,7
@@
# After creation and removal the result is checked against the
# expected value and the result is printed.
#
# After creation and removal the result is checked against the
# expected value and the result is printed.
#
-# Copyright (C) 2004-200
6
Kay Sievers <kay.sievers@vrfy.org>
+# Copyright (C) 2004-200
8
Kay Sievers <kay.sievers@vrfy.org>
# Copyright (C) 2004 Leann Ogasawara <ogasawara@osdl.org>
use warnings;
# Copyright (C) 2004 Leann Ogasawara <ogasawara@osdl.org>
use warnings;
diff --git
a/udev/lib/exported_symbols
b/udev/lib/exported_symbols
index 1877f32e8910ea253439a94be91c35d51731d585..21b433e9f5f33a1d0d89955355ef52d7100b1a14 100644
(file)
--- a/
udev/lib/exported_symbols
+++ b/
udev/lib/exported_symbols
@@
-31,8
+31,9
@@
udev_device_get_driver
udev_device_get_devnum
udev_device_get_seqnum
udev_device_get_attr_value
udev_device_get_devnum
udev_device_get_seqnum
udev_device_get_attr_value
-udev_enumerate_new_from_devices
-udev_enumerate_new_from_subsystems
+udev_enumerate_new
+udev_enumerate_scan_devices
+udev_enumerate_scan_subsystems
udev_enumerate_ref
udev_enumerate_unref
udev_enumerate_get_udev
udev_enumerate_ref
udev_enumerate_unref
udev_enumerate_get_udev
diff --git
a/udev/lib/libudev-device.c
b/udev/lib/libudev-device.c
index 3437d69798706cd8c3730d25df34ad932845bd50..4d000292f28a7a07d962f02bd51f7009d43cbf1b 100644
(file)
--- a/
udev/lib/libudev-device.c
+++ b/
udev/lib/libudev-device.c
@@
-295,7
+295,7
@@
struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, de
{
char path[UTIL_PATH_SIZE];
const char *type_str;
{
char path[UTIL_PATH_SIZE];
const char *type_str;
- struct udev_enumerate *enumerate;
+ struct udev_enumerate *
udev_
enumerate;
struct udev_list_entry *list_entry;
struct udev_device *device = NULL;
struct udev_list_entry *list_entry;
struct udev_device *device = NULL;
@@
-312,14
+312,16
@@
struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, de
if (util_resolve_sys_link(udev, path, sizeof(path)) == 0)
return udev_device_new_from_syspath(udev, path);
if (util_resolve_sys_link(udev, path, sizeof(path)) == 0)
return udev_device_new_from_syspath(udev, path);
+ udev_enumerate = udev_enumerate_new(udev);
+ if (udev_enumerate == NULL)
+ return NULL;
+
/* fallback to search sys devices for the major/minor */
if (type == 'b')
/* fallback to search sys devices for the major/minor */
if (type == 'b')
-
enumerate = udev_enumerate_new_from_devices(udev
, "block", NULL);
+
udev_enumerate_scan_devices(udev_enumerate
, "block", NULL);
else if (type == 'c')
else if (type == 'c')
- enumerate = udev_enumerate_new_from_devices(udev, "!block", NULL);
- if (enumerate == NULL)
- return NULL;
- udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
+ udev_enumerate_scan_devices(udev_enumerate, "!block", NULL);
+ udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(udev_enumerate)) {
struct udev_device *device_loop;
device_loop = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry));
struct udev_device *device_loop;
device_loop = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry));
@@
-338,7
+340,7
@@
struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, de
udev_device_unref(device_loop);
}
}
udev_device_unref(device_loop);
}
}
- udev_enumerate_unref(enumerate);
+ udev_enumerate_unref(
udev_
enumerate);
return device;
}
return device;
}
diff --git
a/udev/lib/libudev-enumerate.c
b/udev/lib/libudev-enumerate.c
index 272b2981fe41106d5c6cdad3b1dfad38e34322c1..266164ae517ebfebe4da97cc34b9af44749b7728 100644
(file)
--- a/
udev/lib/libudev-enumerate.c
+++ b/
udev/lib/libudev-enumerate.c
@@
-167,7
+167,13
@@
static int devices_delay(struct udev *udev, const char *syspath)
return 0;
}
return 0;
}
-static struct udev_enumerate *enumerate_new(struct udev *udev)
+/**
+ * udev_enumerate_new:
+ * @udev: udev library context
+ *
+ * Returns: an enumeration context
+ **/
+struct udev_enumerate *udev_enumerate_new(struct udev *udev)
{
struct udev_enumerate *udev_enumerate;
{
struct udev_enumerate *udev_enumerate;
@@
-182,15
+188,15
@@
static struct udev_enumerate *enumerate_new(struct udev *udev)
}
/**
}
/**
- * udev_enumerate_
new_from
_devices:
- * @udev
: udev library
context
+ * udev_enumerate_
scan
_devices:
+ * @udev
_enumerate: udev enumeration
context
* @subsystem: the list of names of subsystems to look for devices
*
* @subsystem: the list of names of subsystems to look for devices
*
- * Returns:
an enumeration context
+ * Returns:
0 on success.
**/
**/
-
struct udev_enumerate *udev_enumerate_new_from_devices(struct udev *udev
, const char *subsystem, ...)
+
int udev_enumerate_scan_devices(struct udev_enumerate *udev_enumerate
, const char *subsystem, ...)
{
{
- struct udev
_enumerate *udev_enumerate
;
+ struct udev
*udev = udev_enumerate_get_udev(udev_enumerate)
;
va_list vargs;
const char *arg;
char base[UTIL_PATH_SIZE];
va_list vargs;
const char *arg;
char base[UTIL_PATH_SIZE];
@@
-199,12
+205,8
@@
struct udev_enumerate *udev_enumerate_new_from_devices(struct udev *udev, const
struct list_node subsystem_exclude_list;
struct udev_list_entry *list_entry;
struct list_node subsystem_exclude_list;
struct udev_list_entry *list_entry;
- if (udev == NULL)
- return NULL;
-
- udev_enumerate = enumerate_new(udev);
if (udev_enumerate == NULL)
if (udev_enumerate == NULL)
- return
NUL
L;
+ return
-EINVA
L;
va_start(vargs, subsystem);
list_init(&subsystem_include_list);
va_start(vargs, subsystem);
list_init(&subsystem_include_list);
@@
-247,10
+249,11
@@
struct udev_enumerate *udev_enumerate_new_from_devices(struct udev *udev, const
int exclude_block = (udev_list_entry_get_by_name(exclude_list, "block") != NULL);
if (include_block && !exclude_block) {
int exclude_block = (udev_list_entry_get_by_name(exclude_list, "block") != NULL);
if (include_block && !exclude_block) {
- info(udev, "searching '/block/*
/*
' dir\n");
+ info(udev, "searching '/block/*' dir\n");
/* scan disks */
devices_scan_subsystem(udev, "/block", NULL, NULL, &udev_enumerate->devices_list);
/* scan partitions */
/* scan disks */
devices_scan_subsystem(udev, "/block", NULL, NULL, &udev_enumerate->devices_list);
/* scan partitions */
+ info(udev, "searching '/block/*/*' dir\n");
devices_scan_subsystems(udev, "/block", NULL,
NULL, NULL,
&udev_enumerate->devices_list);
devices_scan_subsystems(udev, "/block", NULL,
NULL, NULL,
&udev_enumerate->devices_list);
@@
-266,22
+269,24
@@
struct udev_enumerate *udev_enumerate_new_from_devices(struct udev *udev, const
if (devices_delay(udev, udev_list_entry_get_name(list_entry)))
list_entry_move_to_end(list_entry);
}
if (devices_delay(udev, udev_list_entry_get_name(list_entry)))
list_entry_move_to_end(list_entry);
}
- return
udev_enumerate
;
+ return
0
;
}
}
-struct udev_enumerate *udev_enumerate_new_from_subsystems(struct udev *udev)
+/**
+ * udev_enumerate_scan_subsystems:
+ * @udev_enumerate: udev enumeration context
+ *
+ * Returns: 0 on success.
+ **/
+int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enumerate)
{
{
- struct udev
_enumerate *udev_enumerate
;
+ struct udev
*udev = udev_enumerate_get_udev(udev_enumerate)
;
char base[UTIL_PATH_SIZE];
struct stat statbuf;
const char *subsysdir;
char base[UTIL_PATH_SIZE];
struct stat statbuf;
const char *subsysdir;
- if (udev == NULL)
- return NULL;
-
- udev_enumerate = enumerate_new(udev);
if (udev_enumerate == NULL)
if (udev_enumerate == NULL)
- return
NUL
L;
+ return
-EINVA
L;
util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
util_strlcat(base, "/subsystem", sizeof(base));
util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
util_strlcat(base, "/subsystem", sizeof(base));
@@
-295,5
+300,5
@@
struct udev_enumerate *udev_enumerate_new_from_subsystems(struct udev *udev)
devices_scan_subsystems(udev, subsysdir, "/drivers",
NULL, NULL,
&udev_enumerate->devices_list);
devices_scan_subsystems(udev, subsysdir, "/drivers",
NULL, NULL,
&udev_enumerate->devices_list);
- return
udev_enumerate
;
+ return
0
;
}
}
diff --git
a/udev/lib/libudev.h
b/udev/lib/libudev.h
index 29c4a47e51475af27aa6dc0cfc3990d02d401255..427fed7f61417a310bf85a2f63071071226d90e9 100644
(file)
--- a/
udev/lib/libudev.h
+++ b/
udev/lib/libudev.h
@@
-94,11
+94,12
@@
extern struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev
/* sys enumeration */
struct udev_enumerate;
/* sys enumeration */
struct udev_enumerate;
-extern struct udev_enumerate *udev_enumerate_new_from_devices(struct udev *udev, const char *subsystem, ...);
-extern struct udev_enumerate *udev_enumerate_new_from_subsystems(struct udev *udev);
+extern struct udev_enumerate *udev_enumerate_new(struct udev *udev);
extern struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate);
extern struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate);
extern void udev_enumerate_unref(struct udev_enumerate *udev_enumerate);
extern struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate);
extern struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate);
extern void udev_enumerate_unref(struct udev_enumerate *udev_enumerate);
+extern int udev_enumerate_scan_devices(struct udev_enumerate *udev_enumerate, const char *subsystem, ...);
+extern int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enumerate);
extern struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate);
#endif
extern struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate);
#endif
diff --git
a/udev/lib/test-libudev.c
b/udev/lib/test-libudev.c
index 8ef7a6e3bd95178facaa1001ff8f0f4bf9d6af78..0f45413d505867b5eea313b3529628055d4c5e44 100644
(file)
--- a/
udev/lib/test-libudev.c
+++ b/
udev/lib/test-libudev.c
@@
-242,7
+242,7
@@
int main(int argc, char *argv[], char *envp[])
{ "version", 0, NULL, 'V' },
{}
};
{ "version", 0, NULL, 'V' },
{}
};
- struct udev_enumerate *enumerate;
+ struct udev_enumerate *
udev_
enumerate;
const char *syspath = "/devices/virtual/mem/null";
const char *subsystem = NULL;
const char *socket = "@/org/kernel/udev/monitor";
const char *syspath = "/devices/virtual/mem/null";
const char *subsystem = NULL;
const char *socket = "@/org/kernel/udev/monitor";
@@
-306,39
+306,44
@@
int main(int argc, char *argv[], char *envp[])
test_device_parents(udev, syspath);
printf("enumerate '%s'\n", subsystem == NULL ? "<all>" : subsystem);
test_device_parents(udev, syspath);
printf("enumerate '%s'\n", subsystem == NULL ? "<all>" : subsystem);
-
enumerate = udev_enumerate_new_from_devices(udev, subsystem, NULL
);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new(udev
);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- test_enumerate_print_list(enumerate);
- udev_enumerate_unref(enumerate);
+ udev_enumerate_scan_devices(udev_enumerate, subsystem, NULL);
+ test_enumerate_print_list(udev_enumerate);
+ udev_enumerate_unref(udev_enumerate);
printf("enumerate 'block'\n");
printf("enumerate 'block'\n");
-
enumerate = udev_enumerate_new_from_devices(udev, "block", NULL
);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new(udev
);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- test_enumerate_print_list(enumerate);
- udev_enumerate_unref(enumerate);
+ udev_enumerate_scan_devices(udev_enumerate, "block", NULL);
+ test_enumerate_print_list(udev_enumerate);
+ udev_enumerate_unref(udev_enumerate);
printf("enumerate '!block'\n");
printf("enumerate '!block'\n");
-
enumerate = udev_enumerate_new_from_devices(udev, "!block", NULL
);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new(udev
);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- test_enumerate_print_list(enumerate);
- udev_enumerate_unref(enumerate);
+ udev_enumerate_scan_devices(udev_enumerate, "!block", NULL);
+ test_enumerate_print_list(udev_enumerate);
+ udev_enumerate_unref(udev_enumerate);
printf("enumerate 'pci, mem, vc'\n");
printf("enumerate 'pci, mem, vc'\n");
-
enumerate = udev_enumerate_new_from_devices(udev, "pci", "mem", "vc", NULL
);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new(udev
);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- test_enumerate_print_list(enumerate);
- udev_enumerate_unref(enumerate);
+ udev_enumerate_scan_devices(udev_enumerate, "pci", "mem", "vc", NULL);
+ test_enumerate_print_list(udev_enumerate);
+ udev_enumerate_unref(udev_enumerate);
printf("enumerate 'subsystem'\n");
printf("enumerate 'subsystem'\n");
-
enumerate = udev_enumerate_new_from_subsystems
(udev);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new
(udev);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- test_enumerate_print_list(enumerate);
- udev_enumerate_unref(enumerate);
+ udev_enumerate_scan_subsystems(udev_enumerate);
+ test_enumerate_print_list(udev_enumerate);
+ udev_enumerate_unref(udev_enumerate);
test_monitor(udev, socket);
out:
test_monitor(udev, socket);
out:
diff --git
a/udev/udevadm-info.c
b/udev/udevadm-info.c
index e470ff624da662997ae1865ad965ca4eaa18cfad..0a774b057f83a694c66e69c108750a1f907d1b2d 100644
(file)
--- a/
udev/udevadm-info.c
+++ b/
udev/udevadm-info.c
@@
-183,13
+183,14
@@
static int stat_device(const char *name, int export, const char *prefix)
static int export_devices(struct udev *udev)
{
static int export_devices(struct udev *udev)
{
- struct udev_enumerate *enumerate;
+ struct udev_enumerate *
udev_
enumerate;
struct udev_list_entry *list_entry;
struct udev_list_entry *list_entry;
-
enumerate = udev_enumerate_new_from_devices(udev, NULL
);
- if (enumerate == NULL)
+
udev_enumerate = udev_enumerate_new(udev
);
+ if (
udev_
enumerate == NULL)
return -1;
return -1;
- udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
+ udev_enumerate_scan_devices(udev_enumerate, NULL);
+ udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(udev_enumerate)) {
struct udev_device *device;
device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry));
struct udev_device *device;
device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry));
@@
-199,7
+200,7
@@
static int export_devices(struct udev *udev)
udev_device_unref(device);
}
}
udev_device_unref(device);
}
}
- udev_enumerate_unref(enumerate);
+ udev_enumerate_unref(
udev_
enumerate);
return 0;
}
return 0;
}