]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/libudev/test-udev-device-thread.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
10 #define handle_error_errno(error, msg) \
17 static void* thread(void *p
) {
18 struct udev_device
**d
= p
;
20 *d
= udev_device_unref(*d
);
25 int main(int argc
, char *argv
[]) {
26 struct udev_device
*loopback
;
27 struct udev_list_entry
*entry
, *e
;
31 loopback
= udev_device_new_from_syspath(NULL
, "/sys/class/net/lo");
33 return handle_error_errno(errno
, "Failed to create loopback device object");
35 entry
= udev_device_get_properties_list_entry(loopback
);
36 udev_list_entry_foreach(e
, entry
)
37 printf("%s=%s\n", udev_list_entry_get_name(e
), udev_list_entry_get_value(e
));
39 r
= pthread_create(&t
, NULL
, thread
, &loopback
);
41 return handle_error_errno(r
, "Failed to create thread");
43 r
= pthread_join(t
, NULL
);
45 return handle_error_errno(r
, "Failed to wait thread finished");
48 return handle_error_errno(r
, "loopback device is not unref()ed");