1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright © 2008-2012 Kay Sievers <kay@vrfy.org>
6 Copyright © 2014 Tom Gundersen <teg@jklm.no>
16 bool parent_set
; /* no need to try to reload parent */
18 OrderedHashmap
*properties
;
19 Iterator properties_iterator
;
20 uint64_t properties_generation
; /* changes whenever the properties are changed */
21 uint64_t properties_iterator_generation
; /* generation when iteration was started */
23 /* the subset of the properties that should be written to the db */
24 OrderedHashmap
*properties_db
;
26 Hashmap
*sysattr_values
; /* cached sysattr values */
28 Set
*sysattrs
; /* names of sysattrs */
29 Iterator sysattrs_iterator
;
30 bool sysattrs_read
; /* don't try to re-read sysattrs once read */
33 Iterator tags_iterator
;
34 uint64_t tags_generation
; /* changes whenever the tags are changed */
35 uint64_t tags_iterator_generation
; /* generation when iteration was started */
36 bool property_tags_outdated
; /* need to update TAGS= property */
39 Iterator devlinks_iterator
;
40 uint64_t devlinks_generation
; /* changes whenever the devlinks are changed */
41 uint64_t devlinks_iterator_generation
; /* generation when iteration was started */
42 bool property_devlinks_outdated
; /* need to update DEVLINKS= property */
45 char **properties_strv
; /* the properties hashmap as a strv */
46 uint8_t *properties_nulstr
; /* the same as a nulstr */
47 size_t properties_nulstr_len
;
48 bool properties_buf_outdated
; /* need to reread hashmap */
56 bool sysname_set
; /* don't reread sysname */
64 bool subsystem_set
; /* don't reread subsystem */
65 char *driver_subsystem
; /* only set for the 'drivers' subsystem */
66 bool driver_subsystem_set
; /* don't reread subsystem */
68 bool driver_set
; /* don't reread driver */
73 uint64_t usec_initialized
;
79 bool uevent_loaded
; /* don't reread uevent */
80 bool db_loaded
; /* don't reread db */
82 bool sealed
; /* don't read more information from uevent/db */
83 bool db_persist
; /* don't clean up the db when switching from initrd to real root */
86 typedef enum DeviceAction
{
92 DEVICE_ACTION_OFFLINE
,
96 _DEVICE_ACTION_INVALID
= -1,
99 int device_new_aux(sd_device
**ret
);
100 int device_add_property_aux(sd_device
*device
, const char *key
, const char *value
, bool db
);
101 int device_add_property_internal(sd_device
*device
, const char *key
, const char *value
);
102 int device_read_uevent_file(sd_device
*device
);
103 int device_read_db_aux(sd_device
*device
, bool force
);
105 int device_set_syspath(sd_device
*device
, const char *_syspath
, bool verify
);
106 int device_set_ifindex(sd_device
*device
, const char *ifindex
);
107 int device_set_devmode(sd_device
*device
, const char *devmode
);
108 int device_set_devname(sd_device
*device
, const char *_devname
);
109 int device_set_devtype(sd_device
*device
, const char *_devtype
);
110 int device_set_devnum(sd_device
*device
, const char *major
, const char *minor
);
111 int device_set_subsystem(sd_device
*device
, const char *_subsystem
);
112 int device_set_driver(sd_device
*device
, const char *_driver
);
113 int device_set_usec_initialized(sd_device
*device
, const char *initialized
);
115 DeviceAction
device_action_from_string(const char *s
) _pure_
;
116 const char *device_action_to_string(DeviceAction a
) _const_
;