LCOV - code coverage report
Current view: top level - drivers/net/ethernet/aquantia/atlantic - aq_utils.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 16 16 100.0 %
Date: 2022-04-01 13:59:58 Functions: 2 2 100.0 %
Branches: 4 6 66.7 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0-only */
       2                 :            : /*
       3                 :            :  * aQuantia Corporation Network Driver
       4                 :            :  * Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved
       5                 :            :  */
       6                 :            : 
       7                 :            : /* File aq_utils.h: Useful macro and structures used in all layers of driver. */
       8                 :            : 
       9                 :            : #ifndef AQ_UTILS_H
      10                 :            : #define AQ_UTILS_H
      11                 :            : 
      12                 :            : #include "aq_common.h"
      13                 :            : 
      14                 :         29 : static inline void aq_utils_obj_set(atomic_t *flags, u32 mask)
      15                 :            : {
      16                 :         29 :         unsigned long flags_old, flags_new;
      17                 :            : 
      18                 :         29 :         do {
      19                 :         29 :                 flags_old = atomic_read(flags);
      20                 :         29 :                 flags_new = flags_old | (mask);
      21         [ -  + ]:         58 :         } while (atomic_cmpxchg(flags, flags_old, flags_new) != flags_old);
      22                 :         29 : }
      23                 :            : 
      24                 :         28 : static inline void aq_utils_obj_clear(atomic_t *flags, u32 mask)
      25                 :            : {
      26                 :         28 :         unsigned long flags_old, flags_new;
      27                 :            : 
      28                 :         28 :         do {
      29                 :         28 :                 flags_old = atomic_read(flags);
      30                 :         28 :                 flags_new = flags_old & ~(mask);
      31         [ -  + ]:         56 :         } while (atomic_cmpxchg(flags, flags_old, flags_new) != flags_old);
      32                 :         28 : }
      33                 :            : 
      34                 :      34193 : static inline bool aq_utils_obj_test(atomic_t *flags, u32 mask)
      35                 :            : {
      36         [ +  + ]:      19385 :         return atomic_read(flags) & mask;
      37                 :            : }
      38                 :            : 
      39                 :            : #endif /* AQ_UTILS_H */

Generated by: LCOV version 1.14