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 24920 : static inline int device_read_db(sd_device *device) { 73 24920 : 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);