linux/tools/include/uapi/linux/const.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2/* const.h: Macros for dealing with constants.  */
   3
   4#ifndef _UAPI_LINUX_CONST_H
   5#define _UAPI_LINUX_CONST_H
   6
   7/* Some constant macros are used in both assembler and
   8 * C code.  Therefore we cannot annotate them always with
   9 * 'UL' and other type specifiers unilaterally.  We
  10 * use the following macros to deal with this.
  11 *
  12 * Similarly, _AT() will cast an expression with a type in C, but
  13 * leave it unchanged in asm.
  14 */
  15
  16#ifdef __ASSEMBLY__
  17#define _AC(X,Y)        X
  18#define _AT(T,X)        X
  19#else
  20#define __AC(X,Y)       (X##Y)
  21#define _AC(X,Y)        __AC(X,Y)
  22#define _AT(T,X)        ((T)(X))
  23#endif
  24
  25#define _UL(x)          (_AC(x, UL))
  26#define _ULL(x)         (_AC(x, ULL))
  27
  28#define _BITUL(x)       (_UL(1) << (x))
  29#define _BITULL(x)      (_ULL(1) << (x))
  30
  31#define __ALIGN_KERNEL(x, a)            __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
  32#define __ALIGN_KERNEL_MASK(x, mask)    (((x) + (mask)) & ~(mask))
  33
  34#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
  35
  36#endif /* _UAPI_LINUX_CONST_H */
  37