LCOV - code coverage report
Current view: top level - core - device.h (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 1 1 100.0 %
Date: 2019-08-23 13:36:53 Functions: 1 1 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 2 4 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : #pragma once
       3                 :            : 
       4                 :            : #include "unit.h"
       5                 :            : 
       6                 :            : typedef struct Device Device;
       7                 :            : 
       8                 :            : /* A mask specifying where we have seen the device currently. This is a bitmask because the device might show up
       9                 :            :  * asynchronously from each other at various places. For example, in very common case a device might already be mounted
      10                 :            :  * before udev finished probing it (think: a script setting up a loopback block device, formatting it and mounting it
      11                 :            :  * in quick succession). Hence we need to track precisely where it is already visible and where not. */
      12                 :            : typedef enum DeviceFound {
      13                 :            :         DEVICE_NOT_FOUND   = 0,
      14                 :            :         DEVICE_FOUND_UDEV  = 1 << 0, /* The device has shown up in the udev database */
      15                 :            :         DEVICE_FOUND_MOUNT = 1 << 1, /* The device has shown up in /proc/self/mountinfo */
      16                 :            :         DEVICE_FOUND_SWAP  = 1 << 2, /* The device has shown up in /proc/swaps */
      17                 :            :         DEVICE_FOUND_MASK  = DEVICE_FOUND_UDEV|DEVICE_FOUND_MOUNT|DEVICE_FOUND_SWAP,
      18                 :            : } DeviceFound;
      19                 :            : 
      20                 :            : struct Device {
      21                 :            :         Unit meta;
      22                 :            : 
      23                 :            :         char *sysfs;
      24                 :            : 
      25                 :            :         /* In order to be able to distinguish dependencies on different device nodes we might end up creating multiple
      26                 :            :          * devices for the same sysfs path. We chain them up here. */
      27                 :            :         LIST_FIELDS(struct Device, same_sysfs);
      28                 :            : 
      29                 :            :         DeviceState state, deserialized_state;
      30                 :            :         DeviceFound found, deserialized_found, enumerated_found;
      31                 :            : 
      32                 :            :         bool bind_mounts;
      33                 :            : 
      34                 :            :         /* The SYSTEMD_WANTS udev property for this device the last time we saw it */
      35                 :            :         char **wants_property;
      36                 :            : };
      37                 :            : 
      38                 :            : extern const UnitVTable device_vtable;
      39                 :            : 
      40                 :            : void device_found_node(Manager *m, const char *node, DeviceFound found, DeviceFound mask);
      41                 :            : bool device_shall_be_bound_by(Unit *device, Unit *u);
      42                 :            : 
      43   [ +  -  -  + ]:      78384 : DEFINE_CAST(DEVICE, Device);

Generated by: LCOV version 1.14