Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <pthread.h> 4 : : #include <stdbool.h> 5 : : #include <stdio.h> 6 : : #include <stdlib.h> 7 : : 8 : : #include "libudev.h" 9 : : 10 : : #include "macro.h" 11 : : 12 : 4 : static void* thread(void *p) { 13 : 4 : struct udev_device **d = p; 14 : : 15 [ - + ]: 4 : assert_se(!(*d = udev_device_unref(*d))); 16 : : 17 : 4 : return NULL; 18 : : } 19 : : 20 : 4 : int main(int argc, char *argv[]) { 21 : : struct udev_device *loopback; 22 : : pthread_t t; 23 : : 24 [ - + ]: 4 : assert_se(unsetenv("SYSTEMD_MEMPOOL") == 0); 25 : : 26 [ - + ]: 4 : assert_se(loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo")); 27 : : 28 [ - + ]: 4 : assert_se(udev_device_get_properties_list_entry(loopback)); 29 : : 30 [ - + ]: 4 : assert_se(pthread_create(&t, NULL, thread, &loopback) == 0); 31 [ - + ]: 4 : assert_se(pthread_join(t, NULL) == 0); 32 : : 33 [ - + ]: 4 : assert_se(!loopback); 34 : : 35 : 4 : return 0; 36 : : }