1 /* SPDX-License-Identifier: LGPL-2.1+ */
17 OrderedHashmap
*properties
;
18 Iterator properties_iterator
;
19 uint64_t properties_generation
; /* changes whenever the properties are changed */
20 uint64_t properties_iterator_generation
; /* generation when iteration was started */
22 /* the subset of the properties that should be written to the db */
23 OrderedHashmap
*properties_db
;
25 Hashmap
*sysattr_values
; /* cached sysattr values */
27 Set
*sysattrs
; /* names of sysattrs */
28 Iterator sysattrs_iterator
;
31 Iterator tags_iterator
;
32 uint64_t tags_generation
; /* changes whenever the tags are changed */
33 uint64_t tags_iterator_generation
; /* generation when iteration was started */
36 Iterator devlinks_iterator
;
37 uint64_t devlinks_generation
; /* changes whenever the devlinks are changed */
38 uint64_t devlinks_iterator_generation
; /* generation when iteration was started */
46 char **properties_strv
; /* the properties hashmap as a strv */
47 uint8_t *properties_nulstr
; /* the same as a nulstr */
48 size_t properties_nulstr_len
;
56 char *driver_subsystem
; /* only set for the 'drivers' subsystem */
61 uint64_t usec_initialized
;
67 bool parent_set
:1; /* no need to try to reload parent */
68 bool sysattrs_read
:1; /* don't try to re-read sysattrs once read */
69 bool property_tags_outdated
:1; /* need to update TAGS= property */
70 bool property_devlinks_outdated
:1; /* need to update DEVLINKS= property */
71 bool properties_buf_outdated
:1; /* need to reread hashmap */
72 bool sysname_set
:1; /* don't reread sysname */
73 bool subsystem_set
:1; /* don't reread subsystem */
74 bool driver_subsystem_set
:1; /* don't reread subsystem */
75 bool driver_set
:1; /* don't reread driver */
76 bool uevent_loaded
:1; /* don't reread uevent */
77 bool db_loaded
; /* don't reread db */
79 bool is_initialized
:1;
80 bool sealed
:1; /* don't read more information from uevent/db */
81 bool db_persist
:1; /* don't clean up the db when switching from initrd to real root */
84 typedef enum DeviceAction
{
90 DEVICE_ACTION_OFFLINE
,
94 _DEVICE_ACTION_INVALID
= -1,
97 int device_new_aux(sd_device
**ret
);
98 int device_add_property_aux(sd_device
*device
, const char *key
, const char *value
, bool db
);
99 int device_add_property_internal(sd_device
*device
, const char *key
, const char *value
);
100 int device_read_uevent_file(sd_device
*device
);
102 int device_set_syspath(sd_device
*device
, const char *_syspath
, bool verify
);
103 int device_set_ifindex(sd_device
*device
, const char *ifindex
);
104 int device_set_devmode(sd_device
*device
, const char *devmode
);
105 int device_set_devname(sd_device
*device
, const char *_devname
);
106 int device_set_devtype(sd_device
*device
, const char *_devtype
);
107 int device_set_devnum(sd_device
*device
, const char *major
, const char *minor
);
108 int device_set_subsystem(sd_device
*device
, const char *_subsystem
);
109 int device_set_driver(sd_device
*device
, const char *_driver
);
110 int device_set_usec_initialized(sd_device
*device
, usec_t when
);
112 DeviceAction
device_action_from_string(const char *s
) _pure_
;
113 const char *device_action_to_string(DeviceAction a
) _const_
;