Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : #include <inttypes.h> 5 : : #include <stdbool.h> 6 : : #include <sys/stat.h> 7 : : #include <sys/types.h> 8 : : 9 : : #include "sd-device.h" 10 : : 11 : : #include "macro.h" 12 : : 13 : : typedef enum DeviceAction { 14 : : DEVICE_ACTION_ADD, 15 : : DEVICE_ACTION_REMOVE, 16 : : DEVICE_ACTION_CHANGE, 17 : : DEVICE_ACTION_MOVE, 18 : : DEVICE_ACTION_ONLINE, 19 : : DEVICE_ACTION_OFFLINE, 20 : : DEVICE_ACTION_BIND, 21 : : DEVICE_ACTION_UNBIND, 22 : : _DEVICE_ACTION_MAX, 23 : : _DEVICE_ACTION_INVALID = -1, 24 : : } DeviceAction; 25 : : 26 : : int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len); 27 : : int device_new_from_strv(sd_device **ret, char **strv); 28 : : int device_new_from_stat_rdev(sd_device **ret, const struct stat *st); 29 : : 30 : : int device_get_id_filename(sd_device *device, const char **ret); 31 : : 32 : : int device_get_devlink_priority(sd_device *device, int *priority); 33 : : int device_get_watch_handle(sd_device *device, int *handle); 34 : : int device_get_devnode_mode(sd_device *device, mode_t *mode); 35 : : int device_get_devnode_uid(sd_device *device, uid_t *uid); 36 : : int device_get_devnode_gid(sd_device *device, gid_t *gid); 37 : : int device_get_action(sd_device *device, DeviceAction *action); 38 : : int device_get_seqnum(sd_device *device, uint64_t *seqnum); 39 : : 40 : : void device_seal(sd_device *device); 41 : : void device_set_is_initialized(sd_device *device); 42 : : void device_set_watch_handle(sd_device *device, int fd); 43 : : void device_set_db_persist(sd_device *device); 44 : : void device_set_devlink_priority(sd_device *device, int priority); 45 : : int device_ensure_usec_initialized(sd_device *device, sd_device *device_old); 46 : : int device_add_devlink(sd_device *device, const char *devlink); 47 : : int device_add_property(sd_device *device, const char *property, const char *value); 48 : : int device_add_tag(sd_device *device, const char *tag); 49 : : void device_remove_tag(sd_device *device, const char *tag); 50 : : void device_cleanup_tags(sd_device *device); 51 : : void device_cleanup_devlinks(sd_device *device); 52 : : 53 : : uint64_t device_get_properties_generation(sd_device *device); 54 : : uint64_t device_get_tags_generation(sd_device *device); 55 : : uint64_t device_get_devlinks_generation(sd_device *device); 56 : : 57 : : int device_properties_prepare(sd_device *device); 58 : : int device_get_properties_nulstr(sd_device *device, const uint8_t **nulstr, size_t *len); 59 : : int device_get_properties_strv(sd_device *device, char ***strv); 60 : : 61 : : int device_rename(sd_device *device, const char *name); 62 : : int device_shallow_clone(sd_device *old_device, sd_device **new_device); 63 : : int device_clone_with_db(sd_device *old_device, sd_device **new_device); 64 : : int device_copy_properties(sd_device *device_dst, sd_device *device_src); 65 : : int device_new_from_synthetic_event(sd_device **new_device, const char *syspath, const char *action); 66 : : 67 : : int device_tag_index(sd_device *dev, sd_device *dev_old, bool add); 68 : : int device_update_db(sd_device *device); 69 : : int device_delete_db(sd_device *device); 70 : : int device_read_db_internal_filename(sd_device *device, const char *filename); /* For fuzzer */ 71 : : int device_read_db_internal(sd_device *device, bool force); 72 : 98292 : static inline int device_read_db(sd_device *device) { 73 : 98292 : return device_read_db_internal(device, false); 74 : : } 75 : : 76 : : DeviceAction device_action_from_string(const char *s) _pure_; 77 : : const char *device_action_to_string(DeviceAction a) _const_; 78 : : void dump_device_action_table(void);