Files
systemd/src/libudev/test-udev-device-thread.c
T
Zbigniew Jędrzejewski-Szmek bc52deda4b tests: drop calls to unsetenv SYSTEMD_MEMPOOL
Coverity was complaining that we don't check the return value, which we stopped
doing in 772e0a76f3.

But it seems that we don't want those calls at all. The test was originally
added with the call in a6ee01caf3, but I don't
see why we should override this. If the user wants to execute the test with
mempool disabled, we shouldn't ignore that.

Coverity CID#1444464, CID#1444466.
2021-03-26 15:54:58 +01:00

52 lines
1.5 KiB
C

/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include "libudev.h"
#define handle_error_errno(error, msg) \
({ \
errno = abs(error); \
perror(msg); \
EXIT_FAILURE; \
})
static void* thread(void *p) {
struct udev_device **d = p;
*d = udev_device_unref(*d);
return NULL;
}
int main(int argc, char *argv[]) {
struct udev_device *loopback;
struct udev_list_entry *entry, *e;
pthread_t t;
int r;
loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo");
if (!loopback)
return handle_error_errno(errno, "Failed to create loopback device object");
entry = udev_device_get_properties_list_entry(loopback);
udev_list_entry_foreach(e, entry)
printf("%s=%s\n", udev_list_entry_get_name(e), udev_list_entry_get_value(e));
r = pthread_create(&t, NULL, thread, &loopback);
if (r != 0)
return handle_error_errno(r, "Failed to create thread");
r = pthread_join(t, NULL);
if (r != 0)
return handle_error_errno(r, "Failed to wait thread finished");
if (loopback)
return handle_error_errno(r, "loopback device is not unref()ed");
return 0;
}