linux/include/linux/linkmode.h
<<
>>
Prefs
   1#ifndef __LINKMODE_H
   2#define __LINKMODE_H
   3
   4#include <linux/bitmap.h>
   5#include <linux/ethtool.h>
   6#include <uapi/linux/ethtool.h>
   7
   8static inline void linkmode_zero(unsigned long *dst)
   9{
  10        bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);
  11}
  12
  13static inline void linkmode_copy(unsigned long *dst, const unsigned long *src)
  14{
  15        bitmap_copy(dst, src, __ETHTOOL_LINK_MODE_MASK_NBITS);
  16}
  17
  18static inline void linkmode_and(unsigned long *dst, const unsigned long *a,
  19                                const unsigned long *b)
  20{
  21        bitmap_and(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
  22}
  23
  24static inline void linkmode_or(unsigned long *dst, const unsigned long *a,
  25                                const unsigned long *b)
  26{
  27        bitmap_or(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
  28}
  29
  30static inline bool linkmode_empty(const unsigned long *src)
  31{
  32        return bitmap_empty(src, __ETHTOOL_LINK_MODE_MASK_NBITS);
  33}
  34
  35static inline int linkmode_andnot(unsigned long *dst, const unsigned long *src1,
  36                                  const unsigned long *src2)
  37{
  38        return bitmap_andnot(dst, src1, src2,  __ETHTOOL_LINK_MODE_MASK_NBITS);
  39}
  40
  41static inline void linkmode_set_bit(int nr, volatile unsigned long *addr)
  42{
  43        __set_bit(nr, addr);
  44}
  45
  46static inline void linkmode_set_bit_array(const int *array, int array_size,
  47                                          unsigned long *addr)
  48{
  49        int i;
  50
  51        for (i = 0; i < array_size; i++)
  52                linkmode_set_bit(array[i], addr);
  53}
  54
  55static inline void linkmode_clear_bit(int nr, volatile unsigned long *addr)
  56{
  57        __clear_bit(nr, addr);
  58}
  59
  60static inline void linkmode_mod_bit(int nr, volatile unsigned long *addr,
  61                                    int set)
  62{
  63        if (set)
  64                linkmode_set_bit(nr, addr);
  65        else
  66                linkmode_clear_bit(nr, addr);
  67}
  68
  69static inline void linkmode_change_bit(int nr, volatile unsigned long *addr)
  70{
  71        __change_bit(nr, addr);
  72}
  73
  74static inline int linkmode_test_bit(int nr, volatile unsigned long *addr)
  75{
  76        return test_bit(nr, addr);
  77}
  78
  79static inline int linkmode_equal(const unsigned long *src1,
  80                                 const unsigned long *src2)
  81{
  82        return bitmap_equal(src1, src2, __ETHTOOL_LINK_MODE_MASK_NBITS);
  83}
  84
  85#endif /* __LINKMODE_H */
  86